pythinker-code 0.55.0__tar.gz → 0.57.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.
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/PKG-INFO +47 -27
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/README.md +46 -26
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/pyproject.toml +5 -1
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/CHANGELOG.md +45 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/system.md +2 -2
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/manager.py +5 -1
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/worker.py +6 -1
- pythinker_code-0.57.0/src/pythinker_code/benchmark/__init__.py +5 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/activity.py +88 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/__init__.py +1 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/suites/__init__.py +1 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/suites/pythinker-core.json +11 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/suites/pythinker-smoke.json +10 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/__init__.py +1 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-atomic-transfer.json +21 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-dedup-order.json +21 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-explicit-none-metadata.json +21 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-safe-path-join.json +21 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/smoke-add-small-function.json +21 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/smoke-edit-readme.json +20 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/smoke-fix-python-test.json +21 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/commands.py +633 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/compare.py +72 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/discovery.py +169 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/environment.py +74 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/errors.py +57 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/estimate.py +69 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/export.py +69 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/records.py +191 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/redact.py +46 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/report.py +143 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/runner.py +425 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/suites.py +82 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/swe.py +193 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/tasks.py +186 -0
- pythinker_code-0.57.0/src/pythinker_code/benchmark/types.py +11 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/config.py +15 -0
- pythinker_code-0.57.0/src/pythinker_code/soul/dynamic_injections/active_skills.py +131 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/pythinkersoul.py +4 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/slash.py +75 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/display.py +3 -3
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/engine.py +16 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/__init__.py +40 -14
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/focus_model.py +105 -0
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/focus_surface.py +94 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/prompt.py +224 -5
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/slash.py +1 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/sync_output.py +5 -1
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/__init__.py +17 -0
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/components.py +94 -0
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/diff.py +37 -0
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/scene.py +20 -0
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/scheduler.py +23 -0
- pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/width.py +16 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/update_orchestrator.py +10 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/__init__.py +8 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +81 -2
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +109 -7
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +96 -6
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/pyinstaller.py +1 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/slashcmd.py +2 -1
- pythinker_code-0.57.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-CFMeP6t3.js +1 -0
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-DLLSoTpu.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-CMjTHbQr.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-BMip2JLF.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-DbNV66qZ.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/bootstrap-zfqecxAo.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/bootstrap-DHJiVjsg.js +5 -5
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-CTmq_IS4.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-_L7KfhiY.js +1 -1
- pythinker_code-0.57.0/src/pythinker_code/web/static/assets/channel-CIonX3Sg.js +1 -0
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-DZ9aKIQs.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-Dsc-vkPL.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-nRcjvWO-.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-DkPxKRGJ.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-p4jMRqNu.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-DKsi-Xj_.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-BCjC7IyI.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-DusG3GJh.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-D6DdchUd.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-F4_a1a4u.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-D7xaFpY5.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-9L6bDdXh.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-BkjZ9hSg.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-BavSbd1t.js +4 -4
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-BSojGa-z.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-D9NmS9a_.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-BGQB79u6.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-BSMfQ2IM.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-DYA0QmuY.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-r4sJTTgY.js +2 -2
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-R7T05mR0.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-BL7ERbud.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-BNiMhMEH.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-G9jWyqp3.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-CcEuUOFS.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-QBSTZ593.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-DapbJuCk.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-DYANwips.js +1 -1
- pythinker_code-0.57.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-I2Og_7hO.js +1 -0
- pythinker_code-0.57.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-I2Og_7hO.js +1 -0
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-D1LArb8Q.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-uNhBh7Jk.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-xXhE-OZT.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-Cb91t8pu.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-AsQzl1as.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-CLZIVQzB.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-iRrPZ0Ax.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-B6DPBt7v.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-RnY60fk2.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-vb7QYejh.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DGdJ8GDe.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DdFQHXp3.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-CbyRKoIq.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-nJ1_wWcq.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/dist-D0z2kckA.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/dist-D1EQtQ8U.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-bBHr-GVV.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-sZ8vCcB8.js +1 -1
- pythinker_code-0.57.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-Nxb8XybE.js +1 -0
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-CLOhR3l_.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-NagVrMCI.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-CU_TAii8.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-D-1_XhUQ.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-BBkPObG0.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-DT3QZQPP.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-BN8Wzp-s.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-D8r0djS7.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/index-olOEkzgp.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/index-2eH9dBB3.js +2 -2
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/info-J43DQDTF-ClVpw99Z.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/info-J43DQDTF-CsKNLP2n.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-CwXy_rRM.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-CIiPQAr1.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-BQD-_4DR.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-B0xZv1Ps.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-iZ30P8Ge.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-CSiKJ4Vm.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-e--jRi7n.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-BYVbc39d.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/line-D_FSsRgE.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/line-DHysIuAr.js +1 -1
- pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BepD7Trl.js +1 -0
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/mermaid-parser.core-DsHOq9qM.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid-parser.core-1Xw2pmTV.js +2 -2
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/mermaid.core-BDrm7W63.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid.core-yguwm67R.js +3 -3
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-CtkDG9id.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-BzbokPP4.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/packet-YPE3B663-BvuZzsut.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/packet-YPE3B663-DvwZvo4I.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-Ch6VEb1M.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-D3m6fHWL.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-DiWyXXsC.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-Ds6AGwnk.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-DiB8zIUe.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-DX8m3F04.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-QeforG_Z.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-Bma1Der9.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-lGVvwA8b.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-OcYBKZGh.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-MzBMGSLu.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-qZTKBl0U.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-B4_B3aHH.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-Dat3afNR.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-CEd1AKaO.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-C25VdSrM.js +1 -1
- pythinker_code-0.57.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-CH7hdLfc.js +1 -0
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-CL5c_XDm.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-BO52-l4o.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-B8WdOz2P.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-wTS6XClR.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-Bh-QvFT4.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-H-Ce4Zv7.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-CPxet2G9.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-C8VDHwNL.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-Cjh-pB2w.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-CWdFDSTM.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-DVrFQcq7.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-Cl1J0nhW.js +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-BSxRHMDQ.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-DY3utX2b.js +1 -1
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/index.html +1 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-Ji0TtuXL.js +0 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/channel-C2MgjsLm.js +0 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-ByvEWoQt.js +0 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-ByvEWoQt.js +0 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-CWEQMbKI.js +0 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BCkPnhm1.js +0 -1
- pythinker_code-0.55.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-ydn4EzOz.js +0 -1
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/LICENSE +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/NOTICE +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/ask.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/debug.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/planner.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/review.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/scout.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/agentspec.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/app.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/alibaba.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/kimi.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/moonshot.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/_shared.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/browser_flow.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/catalog.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/config_apply.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/constants.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/login.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/models.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/oauth_client.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/z_ai.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/agent_runner.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/dashboard.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/system_prompt.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/sessions.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/statistics.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/system.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/app.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/highlighted-body-OFNGDK62-BxVUIXn9.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/index-DAN_VzOP.css +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/index-DYyxzHPY.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/mermaid-GHXKKRXX-BR6KjYwB.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/index.html +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/feedback.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/feedback_repo.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/events.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/runner.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/client.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/diagnostics.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/framing.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/instance.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/manager.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/plugin_servers.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/protocol.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/recommend.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/service.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/consolidation.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/harvest.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/recall.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/recap.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/retriever.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/sanitize.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/models_dev.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/native.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/artifacts.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/dependency.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/directories.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/install.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/installed.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/integration.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/loader.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/manifest.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/marketplace.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/options.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/policy.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/project_memory.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/project_trust.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/best_practices.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/goal_continuation.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/goal_set.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/goal_wrap_up.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/learn.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/scratchpad.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/session_cleanup.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/session_recap.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/session_state.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/agent-creator/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/cleanup-audit/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/customize-pythinker/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/designer-skill/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/judge-minimum-diff/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/judge-overengineering-review/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/agent.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/api_errors.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/approval.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/deliberation.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/agent_list.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/git_status.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/goal_mode.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/inline_commands.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/lsp_diagnostics.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/model_defense.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/orchestration.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/permissions_state.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/flow_runner.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/live_tokens.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/toolset.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/codenames.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/discovery.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/models.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/runner.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/store.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/usage.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/worktree.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/config.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/names.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/thinking.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/agent/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/replace.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/write.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/goal/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/goal/update_goal.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/formatters.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/schemas.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/symbol_context.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/tool.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/tool.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/list_description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/prompt_description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/read_description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/memory/memory.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/memory/routing_guard.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/progress/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/progress/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/recall/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/recall/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/shell/bash.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/skill/_mcp_bridge.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/suggest/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/suggest/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/tool_search/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/tool_search/tool_search.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/description.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/worktree/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/worktree/enter_worktree.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/worktree/exit_worktree.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/color_utils.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/report_prose_blocks.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/report_update.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/debug.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/echo.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/audit.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/elements.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/fences.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/normalizers.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/renderer.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/streaming.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/motion.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selector.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/code_theme.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/setup.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/startup.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/stats.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/stats_collector.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/stats_pricing.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/statusline.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/implement_judge.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/lsp.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/mcp_resource.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/memory.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/read_media.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/smart_search.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/tool_search.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/worktree.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/update.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_activity.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/alibaba.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_diff_live.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/terminal_background.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/adapters/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/adapters/markdown.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/adapters/task_browser.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/capabilities.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/palettes.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/pythinker_themes.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/registry.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/resolver.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/spec.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/update_policy.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/artifacts.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/file_read_cache.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/gitignore.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/mcp_names.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/media_limits.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/trust.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/abap-CLvhMVsD.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/actionscript-3--17pq3dv.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ada-C5qYipkI.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/andromeeda-vGVdxbeo.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/angular-html-BKhkKBsm.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/angular-ts-CYPbMJCA.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/apache-U0d_L8uA.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/apex-CGTLDQj6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/apl-D7bENxmy.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/applescript-CCn79oCD.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ara-4CJ0cIlV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/arc-8BWbC-0s.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/array-BifhSqXX.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/asciidoc-DE70LPWp.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/asm-Cmm7eHzH.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/astro-B1l9MDUT.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/aurora-x-CDeNXAV0.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/awk-BWXHIvNe.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ayu-dark-DluEY0Gj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ayu-light-C3h-C4tm.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ballerina-B7ZEbQpA.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bat-Bo4NYOV-.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/beancount-D-usSTwE.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/berry-DKpUyyne.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bibtex-Ci_nEsc7.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bicep-CUHmPFLl.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bird2-C2hNVINV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/blade-BlkqRXu6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bootstrap-BhLLvBaE.css +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bsl-BkkzgIyY.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/c-PpPxyn8g.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/c3-CnJL0r0V.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cadence-CQ2zXKGN.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cairo-DLTphjLi.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/character-entities-legacy-Wut6vMuj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chevrons-up-down-Dwo0Il5v.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-C0kf5ycP.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-55IACEB6-QyFAFTWp.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-BSJP7CBP-DIpfLhEz.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-Cyuzqnbw.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-C9D6P7Uq.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-NNHCCRGN-DmZbXBJw.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CyVdgm44.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-XPW4576I-ru3A962d.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/clarity-SemFz856.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/clojure-DqKBuwfJ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cmake-Bj61d0ZC.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cobol-BoXxFQjh.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/codeowners-C8r90Shi.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/codeql-oeQT6MSM.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/coffee-B5TREocO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/common-lisp-Cv5bFMCO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/coq-BrsZFFmf.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-PjRvINHM.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cpp-CVIk4zoB.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/crystal-CvUuUt6_.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/csharp-Ct8U2NOr.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/css-D7o5g6xi.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/csv-Dx-8-gkx.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cue-CE9AQfxI.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cypher-ClKdZ_lG.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cytoscape.esm-jXPf2pm4.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/d-qD-0Kul2.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dagre-Uyq5yTtG.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dark-plus-Cs2F2srj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dart-DkHntEIa.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dax-BkyTk9wS.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/defaultLocale-C8Fc0cco.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/desktop-Dlh5hvp9.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/diff-BDNflWRl.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/diff-Dvab7kiv.css +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/diff-woXpYk--.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dist-B7jLwIkG.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dist-D4B_Bs5p.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dist-reBDvVlc.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/docker-IyjqRm3v.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dotenv-_5a1GRtc.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dracula-BHWKrbxM.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dracula-soft-5eyTD99u.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dream-maker-DW3nJb8Q.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/edge-CmXZi-az.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/elixir-BoRIkjDi.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/elm-Cm7sFdI1.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9PiwqqW.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/erb-DuMAGb6i.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/erlang-Cphh6RMH.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/everforest-dark-sB-x3p7T.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/everforest-light-Df2xbC6M.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fennel-DQxkIbk2.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fish-BJitypiv.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fluent-C03EYrpw.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fsharp-D13ZGOAj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gdresource-C0sCabJj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gdscript-Cp2uCuqX.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gdshader-CBce3t8t.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/genie-CV2tkWYe.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gherkin-DExj1W_8.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/git-commit-BSykSTBG.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/git-rebase-D2tSwjJb.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-C-LZuMrd.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-default-DXG-b-1a.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-light-EUqPIrTm.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-light-default-BXViO-2h.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gleam-CSRkHgEL.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/glimmer-js--VVKNatA.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/glimmer-ts-Bfa_wiNC.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/glsl-MPwHyiXQ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gn-ilITqXS6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gnuplot-7GGW24-e.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/go-BJwz_mda.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/graphlib-C22s9MDV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/graphql-NW854Khs.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/groovy-CacY0gHj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hack-CSl79E5u.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/haml-Dmb1YmHj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/handlebars-Du8DtnRB.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/haskell-D8IpX4py.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/haxe-OTjmBuCE.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hcl-Dh228itO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hjson-CxZEssPk.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hlsl-Cvrh5tZx.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/horizon-CE9ld1lL.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/horizon-bright-Br1oVSNq.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/houston-CsvMBhTu.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/html-Kpl3bQKd.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/html-derivative-BEEWNZ8Y.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/http-HvMG3K54.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hurl-CLh1t2ES.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hxml-B0Qn7Nwc.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hy-CZbG8q4J.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/imba-DsUTQ-LC.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ini-B5eOa1yu.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/init-D6jRqBbL.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/java-Cst_eZTE.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/javascript-i_rUTyCW.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jinja-CaXggA6f.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jison-D9Fg2JgN.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/json-DS5j4FfK.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/json5-BR5RXkoi.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsonc-CYpm1nAK.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsonl-CmCQp5Yx.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsonnet-CJTPZ8u_.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jssm-DXw9l8Rf.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsx-CFyhNHav.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsx-runtime-wSvXh6gi.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/julia-R8NNmfP1.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/just-BhhHYlS8.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/katex-BGaDVET_.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/katex-BorAY7qD.css +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kdl-CsD5j6eV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kotlin-DhhofPvG.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kusto-BUv0MjJC.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/laserwave-C_8bwKvT.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/latex-D5k_uhWv.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/lean-CewbzKMR.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/less-DVTAwKKz.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/lib-BLxG8W6T.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/libesm-8-2luV-1.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/light-plus-DVQuIRkW.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/linear-BktLjFGX.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/liquid-Q0_hzjly.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/llvm-Cm23YOpf.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/log-BNLmms1o.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/logo-Cluzi2Zq.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/lua-VoGSg0xb.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/luau-CNKltnaQ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/make-Dixweg8N.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/markdown-BYOwaDjH.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/marked.esm-DLdcrU5H.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/marko-D_aeUD__.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-Bm3Qr25_.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/matlab-D7qyCx1q.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mdc-BSifqehP.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mdx-DQZ5AkYe.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mermaid-Bk4SNUv9.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/min-dark-BSWPekZh.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/min-light-DDpmG2fV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mipsasm-BMqwQI7S.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mojo-BgCJLMeH.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/monokai-CdkpiU2Y.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/moonbit-CaWjb8XO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/move-B1IS1UjX.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/narrat-_X_XdTYD.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nextflow-Bbiyy34d.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nextflow-groovy-Dc_ddanL.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nginx-CgHaWcsO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/night-owl-DhmEMT88.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nim-BuixXxPS.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nix-IvuFDN5E.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nord-Cb4Vim4T.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nushell-DcLAeLz5.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/objective-c-D1A_Heim.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/objective-cpp-BsSzOQcm.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ocaml-O90oeIOV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/odin-B1RWQWA5.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/one-light-D7Lr4KcI.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/openscad-BUDT5pXO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ordinal-hYBb2elL.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/pascal-4ZHwLPI5.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/path-BWPyau1x.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/perl-BLMySlFJ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/php-Czf_fybR.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/pkl-ot-7Btpt.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/plastic-DQwYfKfQ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/plsql-DGHpHOYJ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/po-BiJDBrnU.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/poimandres-DRFjx7u4.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/polar-C7UOKdEL.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/postcss-BXeXVLqQ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/powerquery-DNMTfnFr.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/powershell-DshXNtvi.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/prisma-BsRQq5mF.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/prolog-iXnhIJG7.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/proto-DB4EqR-F.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/pug-CsZglf8T.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/puppet-CDv2pdJW.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/purescript-9MfHhQsQ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/python-gzcpVVnB.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/qml-DcW_sT3t.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/qmldir-DCQb3MpD.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/qss-Fe1Jh2GI.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/r-D2d3McyU.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/racket-DcIDlBhZ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/raku-B3gFvitq.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/razor-oFpUW61Z.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/red-CJ3rzSJv.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/reg-CRGYupPL.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/regexp-Bu0flJgP.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rel-BtDbiS_P.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/riscv-Ckw8ddFX.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ron-VUp2lXgN.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rose-pine-BthvhNj6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rosmsg-CAekHB0j.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rough.esm-CSKSodPl.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rst-U6Eu7ipE.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ruby-CUQsVT6d.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rust-Cfkwpbl8.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sas-CNBFrLhc.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sass-DXrisJhu.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/scala-DKOlJaKm.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/scheme-DQCgrYNe.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/scss-CPnU-uuv.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sdbl-bTVj8UrX.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/shaderlab-TOUzSsQk.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/shellscript-BbTp1yjG.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/shellsession-BmAC8SMF.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/slack-dark-DnToyrRv.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/slack-ochin-B2OO5cIa.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/smalltalk-B16xEiuN.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/snazzy-light-4G7pJPwS.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/solarized-dark-DV17i1UV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/solarized-light-DSh2HLQt.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/solidity-CKzVLygQ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/soy-CdbyEXp6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/space-separated-tokens-DpjE5PGy.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sparql-D_iOobhT.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/splunk-BC2Px7Mm.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sql-hpBkusIy.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/src-D-NMWEou.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ssh-config-BgfXC-Er.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/stata-DVbvk3qH.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/stylus-B6D30XZt.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/surrealql-DxccxuMd.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/svelte-DzNm5V2w.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/swift-DonLKvLd.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/synthwave-84-nFMaYfgc.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/system-verilog-DJ5XKQeo.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/systemd-BxMlprV5.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/talonscript-CohzipZa.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tasl-DMoTqEGO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tcl-CZd0xW_V.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/templ-CsM0tTsw.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/terraform-DswuEJGm.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tex-B0f_hYr8.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tokyo-night-oM2G3aXe.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/toml-CcmNWLt0.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ts-tags-Bf-FGGvT.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tsv-sltzmVWM.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tsx-DFvk7AwW.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/turtle-ByJddavk.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/twig-VJ4-Ntm0.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/typescript-DHTLvXzV.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/typespec-B88KGewJ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/typst-DI99ib-x.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/v-DETTlOr0.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/v4-DqR3yzBO.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vala-zf12oZj6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vb-Djn5o6TS.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/verilog-CiiDBU1e.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vesper-D5bVUKB1.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vhdl-BroJfC0k.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/viml-DvXPmvsu.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vitesse-black-fwtXNY1n.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vitesse-light-VbXTXTou.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vue-D3dSYZKz.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vue-html-DQch_7VQ.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vue-vine-B67Dz05t.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vyper-CgoNMtux.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wasm-BnjxR4X6.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wasm-ByWQv1Qj.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wenyan-C8pVoKbM.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wgsl-BsKzXJz4.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wikitext-ClFFjSW2.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wit-DdvCle-K.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wolfram-DLL8P-h_.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/xml-C33zriiW.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/xsl-BFS2wyMt.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/yaml-w0rMsuN4.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/zenscript-BnlCZFoB.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/zig-CMLA9XwU.js +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/install.ps1 +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/install.sh +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/server.py +0 -0
- {pythinker_code-0.55.0 → pythinker_code-0.57.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.
|
|
3
|
+
Version: 0.57.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,11 +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.
|
|
118
|
+
## 🆕 What's New in 0.57.0
|
|
119
119
|
|
|
120
|
-
- **
|
|
120
|
+
- **No more ghost/duplicate input prompt while the agent works.** The input card no longer fossilizes above the stream as a second, ghostly prompt; the prompt bar and top border stay visible through turn-start and lazy-load frames; running-agent output renders through a stable diff-rendered scene (ported from Pi); and an experimental Focus TUI mode (`tui.focus_mode`) pins the composer and hides file activity behind a compact live shelf.
|
|
121
|
+
- **Added a native `/benchmark` command suite.** Run deterministic local Pythinker model evaluations with bundled smoke tasks and SWE-style JSONL tasks (`/benchmark:swe`), plus `/benchmark compare`, `/benchmark export`, and `/benchmark discover` actions with replayable artifacts and branded markdown reports.
|
|
122
|
+
- **Hardened benchmark and skill security edges.** SWE verification commands are shape-validated before execution, benchmark discovery requires explicit network opt-in, and active-skill deactivation failures now surface instead of being swallowed.
|
|
121
123
|
|
|
122
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
124
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.57.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
123
125
|
|
|
124
126
|
|
|
125
127
|
---
|
|
@@ -189,6 +191,22 @@ Optional web frontend and visualization frontend ship alongside the CLI for rich
|
|
|
189
191
|
|
|
190
192
|
Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinker models, or your own keys.
|
|
191
193
|
|
|
194
|
+
</td>
|
|
195
|
+
</tr>
|
|
196
|
+
<tr>
|
|
197
|
+
<td width="50%" valign="top">
|
|
198
|
+
|
|
199
|
+
### 📊 Local Benchmarks
|
|
200
|
+
|
|
201
|
+
Run `/benchmark` to execute deterministic local coding tasks through the active Pythinker session, with replayable artifacts and verification reports.
|
|
202
|
+
|
|
203
|
+
</td>
|
|
204
|
+
<td width="50%" valign="top">
|
|
205
|
+
|
|
206
|
+
### 🧪 SWE-Style Fixtures
|
|
207
|
+
|
|
208
|
+
Run trusted local JSONL fixtures with `/benchmark:swe --dataset <path> --trusted-dataset true` when you want SWE-style task inputs without a hosted evaluator.
|
|
209
|
+
|
|
192
210
|
</td>
|
|
193
211
|
</tr>
|
|
194
212
|
</table>
|
|
@@ -209,7 +227,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
209
227
|
|
|
210
228
|
| Platform | Recommended install | Artifact source |
|
|
211
229
|
|---|---|---|
|
|
212
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
230
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.57.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
213
231
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
214
232
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
215
233
|
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
|
|
@@ -237,10 +255,11 @@ pythinker # start the interactive TUI
|
|
|
237
255
|
|
|
238
256
|
### 🪟 Windows — native installer
|
|
239
257
|
|
|
240
|
-
`PythinkerSetup-0.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
258
|
+
`PythinkerSetup-0.57.0.exe` is an Inno Setup wizard. Release builds are signed
|
|
259
|
+
when Authenticode secrets are configured in CI; otherwise the installer ships
|
|
260
|
+
unsigned. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers
|
|
261
|
+
`pythinker` on your user PATH (`HKCU\Environment`), broadcasts
|
|
262
|
+
`WM_SETTINGCHANGE` so new shells see the change. **No UAC prompt.**
|
|
244
263
|
|
|
245
264
|
```powershell
|
|
246
265
|
# One-line install (downloads the native .exe, verifies SHA-256, runs per-user)
|
|
@@ -248,24 +267,24 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
248
267
|
|
|
249
268
|
# Or manually download the installer + checksum from the Releases page,
|
|
250
269
|
# verify with Get-FileHash, then run:
|
|
251
|
-
.\PythinkerSetup-0.
|
|
270
|
+
.\PythinkerSetup-0.57.0.exe
|
|
252
271
|
|
|
253
272
|
# Open a fresh PowerShell
|
|
254
273
|
pythinker --version
|
|
255
274
|
```
|
|
256
275
|
|
|
257
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
276
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.57.0.exe /ALLUSERS`
|
|
258
277
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
259
278
|
|
|
260
279
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
261
|
-
the newest installer, verifies SHA-256, and launches the
|
|
280
|
+
the newest installer, verifies SHA-256, and launches the Inno installer
|
|
262
281
|
with visible progress (`/SILENT /NORESTART /CURRENTUSER /CLOSEAPPLICATIONS /NORESTARTAPPLICATIONS`).
|
|
263
282
|
|
|
264
283
|
**Uninstall:** Apps & Features → *Pythinker Code* → Uninstall reverts both
|
|
265
284
|
the files and the PATH edit.
|
|
266
285
|
|
|
267
|
-
> 🛡 **First-launch SmartScreen warning** —
|
|
268
|
-
>
|
|
286
|
+
> 🛡 **First-launch SmartScreen warning** — Until Authenticode secrets are
|
|
287
|
+
> configured in CI for a release, the installer ships unsigned and Windows shows
|
|
269
288
|
> *"Windows protected your PC."* Click **More info → Run anyway**. Use the
|
|
270
289
|
> published `.sha256` as your integrity check until signing comes online.
|
|
271
290
|
|
|
@@ -312,26 +331,26 @@ attached to every GitHub Release.
|
|
|
312
331
|
|
|
313
332
|
```sh
|
|
314
333
|
# Debian / Ubuntu (x86_64)
|
|
315
|
-
sudo dpkg -i pythinker-code_0.
|
|
334
|
+
sudo dpkg -i pythinker-code_0.57.0_amd64.deb
|
|
316
335
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
317
336
|
|
|
318
337
|
# Debian / Ubuntu (ARM64)
|
|
319
|
-
sudo dpkg -i pythinker-code_0.
|
|
338
|
+
sudo dpkg -i pythinker-code_0.57.0_arm64.deb
|
|
320
339
|
|
|
321
340
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
322
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
323
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
324
|
-
sha256sum -c pythinker-code-0.
|
|
341
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm
|
|
342
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm.sha256
|
|
343
|
+
sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256
|
|
325
344
|
# Fedora / RHEL:
|
|
326
|
-
sudo dnf install ./pythinker-code-0.
|
|
345
|
+
sudo dnf install ./pythinker-code-0.57.0.x86_64.rpm
|
|
327
346
|
# openSUSE:
|
|
328
|
-
sudo zypper install ./pythinker-code-0.
|
|
347
|
+
sudo zypper install ./pythinker-code-0.57.0.x86_64.rpm
|
|
329
348
|
|
|
330
349
|
# Fedora / RHEL (aarch64)
|
|
331
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
332
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
333
|
-
sha256sum -c pythinker-code-0.
|
|
334
|
-
sudo dnf install ./pythinker-code-0.
|
|
350
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm
|
|
351
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm.sha256
|
|
352
|
+
sha256sum -c pythinker-code-0.57.0.aarch64.rpm.sha256
|
|
353
|
+
sudo dnf install ./pythinker-code-0.57.0.aarch64.rpm
|
|
335
354
|
```
|
|
336
355
|
|
|
337
356
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -340,8 +359,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
340
359
|
**Verify before install:**
|
|
341
360
|
|
|
342
361
|
```sh
|
|
343
|
-
sha256sum -c pythinker-code_0.
|
|
344
|
-
sha256sum -c pythinker-code-0.
|
|
362
|
+
sha256sum -c pythinker-code_0.57.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
363
|
+
sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
345
364
|
```
|
|
346
365
|
|
|
347
366
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -681,6 +700,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
|
|
|
681
700
|
| 🌊 **Flows** | `/flow:<name>` executes bundled prompt flows | bundled & user-defined |
|
|
682
701
|
| 🪝 **Hooks** | Observe or block tool execution; integrate policy or automation | hook events API |
|
|
683
702
|
| 🧩 **Plugins** | Installable extension packages | `pythinker plugin` |
|
|
703
|
+
| 📊 **Benchmarks** | Deterministic local coding tasks with verification reports | `/benchmark`, `src/pythinker_code/benchmark/` |
|
|
684
704
|
|
|
685
705
|
---
|
|
686
706
|
|
|
@@ -50,11 +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.
|
|
53
|
+
## 🆕 What's New in 0.57.0
|
|
54
54
|
|
|
55
|
-
- **
|
|
55
|
+
- **No more ghost/duplicate input prompt while the agent works.** The input card no longer fossilizes above the stream as a second, ghostly prompt; the prompt bar and top border stay visible through turn-start and lazy-load frames; running-agent output renders through a stable diff-rendered scene (ported from Pi); and an experimental Focus TUI mode (`tui.focus_mode`) pins the composer and hides file activity behind a compact live shelf.
|
|
56
|
+
- **Added a native `/benchmark` command suite.** Run deterministic local Pythinker model evaluations with bundled smoke tasks and SWE-style JSONL tasks (`/benchmark:swe`), plus `/benchmark compare`, `/benchmark export`, and `/benchmark discover` actions with replayable artifacts and branded markdown reports.
|
|
57
|
+
- **Hardened benchmark and skill security edges.** SWE verification commands are shape-validated before execution, benchmark discovery requires explicit network opt-in, and active-skill deactivation failures now surface instead of being swallowed.
|
|
56
58
|
|
|
57
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
59
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.57.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
58
60
|
|
|
59
61
|
|
|
60
62
|
---
|
|
@@ -124,6 +126,22 @@ Optional web frontend and visualization frontend ship alongside the CLI for rich
|
|
|
124
126
|
|
|
125
127
|
Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinker models, or your own keys.
|
|
126
128
|
|
|
129
|
+
</td>
|
|
130
|
+
</tr>
|
|
131
|
+
<tr>
|
|
132
|
+
<td width="50%" valign="top">
|
|
133
|
+
|
|
134
|
+
### 📊 Local Benchmarks
|
|
135
|
+
|
|
136
|
+
Run `/benchmark` to execute deterministic local coding tasks through the active Pythinker session, with replayable artifacts and verification reports.
|
|
137
|
+
|
|
138
|
+
</td>
|
|
139
|
+
<td width="50%" valign="top">
|
|
140
|
+
|
|
141
|
+
### 🧪 SWE-Style Fixtures
|
|
142
|
+
|
|
143
|
+
Run trusted local JSONL fixtures with `/benchmark:swe --dataset <path> --trusted-dataset true` when you want SWE-style task inputs without a hosted evaluator.
|
|
144
|
+
|
|
127
145
|
</td>
|
|
128
146
|
</tr>
|
|
129
147
|
</table>
|
|
@@ -144,7 +162,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
144
162
|
|
|
145
163
|
| Platform | Recommended install | Artifact source |
|
|
146
164
|
|---|---|---|
|
|
147
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
165
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.57.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
148
166
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
149
167
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
150
168
|
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
|
|
@@ -172,10 +190,11 @@ pythinker # start the interactive TUI
|
|
|
172
190
|
|
|
173
191
|
### 🪟 Windows — native installer
|
|
174
192
|
|
|
175
|
-
`PythinkerSetup-0.
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
193
|
+
`PythinkerSetup-0.57.0.exe` is an Inno Setup wizard. Release builds are signed
|
|
194
|
+
when Authenticode secrets are configured in CI; otherwise the installer ships
|
|
195
|
+
unsigned. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers
|
|
196
|
+
`pythinker` on your user PATH (`HKCU\Environment`), broadcasts
|
|
197
|
+
`WM_SETTINGCHANGE` so new shells see the change. **No UAC prompt.**
|
|
179
198
|
|
|
180
199
|
```powershell
|
|
181
200
|
# One-line install (downloads the native .exe, verifies SHA-256, runs per-user)
|
|
@@ -183,24 +202,24 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
183
202
|
|
|
184
203
|
# Or manually download the installer + checksum from the Releases page,
|
|
185
204
|
# verify with Get-FileHash, then run:
|
|
186
|
-
.\PythinkerSetup-0.
|
|
205
|
+
.\PythinkerSetup-0.57.0.exe
|
|
187
206
|
|
|
188
207
|
# Open a fresh PowerShell
|
|
189
208
|
pythinker --version
|
|
190
209
|
```
|
|
191
210
|
|
|
192
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
211
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.57.0.exe /ALLUSERS`
|
|
193
212
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
194
213
|
|
|
195
214
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
196
|
-
the newest installer, verifies SHA-256, and launches the
|
|
215
|
+
the newest installer, verifies SHA-256, and launches the Inno installer
|
|
197
216
|
with visible progress (`/SILENT /NORESTART /CURRENTUSER /CLOSEAPPLICATIONS /NORESTARTAPPLICATIONS`).
|
|
198
217
|
|
|
199
218
|
**Uninstall:** Apps & Features → *Pythinker Code* → Uninstall reverts both
|
|
200
219
|
the files and the PATH edit.
|
|
201
220
|
|
|
202
|
-
> 🛡 **First-launch SmartScreen warning** —
|
|
203
|
-
>
|
|
221
|
+
> 🛡 **First-launch SmartScreen warning** — Until Authenticode secrets are
|
|
222
|
+
> configured in CI for a release, the installer ships unsigned and Windows shows
|
|
204
223
|
> *"Windows protected your PC."* Click **More info → Run anyway**. Use the
|
|
205
224
|
> published `.sha256` as your integrity check until signing comes online.
|
|
206
225
|
|
|
@@ -247,26 +266,26 @@ attached to every GitHub Release.
|
|
|
247
266
|
|
|
248
267
|
```sh
|
|
249
268
|
# Debian / Ubuntu (x86_64)
|
|
250
|
-
sudo dpkg -i pythinker-code_0.
|
|
269
|
+
sudo dpkg -i pythinker-code_0.57.0_amd64.deb
|
|
251
270
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
252
271
|
|
|
253
272
|
# Debian / Ubuntu (ARM64)
|
|
254
|
-
sudo dpkg -i pythinker-code_0.
|
|
273
|
+
sudo dpkg -i pythinker-code_0.57.0_arm64.deb
|
|
255
274
|
|
|
256
275
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
257
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
258
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
259
|
-
sha256sum -c pythinker-code-0.
|
|
276
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm
|
|
277
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm.sha256
|
|
278
|
+
sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256
|
|
260
279
|
# Fedora / RHEL:
|
|
261
|
-
sudo dnf install ./pythinker-code-0.
|
|
280
|
+
sudo dnf install ./pythinker-code-0.57.0.x86_64.rpm
|
|
262
281
|
# openSUSE:
|
|
263
|
-
sudo zypper install ./pythinker-code-0.
|
|
282
|
+
sudo zypper install ./pythinker-code-0.57.0.x86_64.rpm
|
|
264
283
|
|
|
265
284
|
# Fedora / RHEL (aarch64)
|
|
266
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
267
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
268
|
-
sha256sum -c pythinker-code-0.
|
|
269
|
-
sudo dnf install ./pythinker-code-0.
|
|
285
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm
|
|
286
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm.sha256
|
|
287
|
+
sha256sum -c pythinker-code-0.57.0.aarch64.rpm.sha256
|
|
288
|
+
sudo dnf install ./pythinker-code-0.57.0.aarch64.rpm
|
|
270
289
|
```
|
|
271
290
|
|
|
272
291
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -275,8 +294,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
275
294
|
**Verify before install:**
|
|
276
295
|
|
|
277
296
|
```sh
|
|
278
|
-
sha256sum -c pythinker-code_0.
|
|
279
|
-
sha256sum -c pythinker-code-0.
|
|
297
|
+
sha256sum -c pythinker-code_0.57.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
298
|
+
sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
280
299
|
```
|
|
281
300
|
|
|
282
301
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -616,6 +635,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
|
|
|
616
635
|
| 🌊 **Flows** | `/flow:<name>` executes bundled prompt flows | bundled & user-defined |
|
|
617
636
|
| 🪝 **Hooks** | Observe or block tool execution; integrate policy or automation | hook events API |
|
|
618
637
|
| 🧩 **Plugins** | Installable extension packages | `pythinker plugin` |
|
|
638
|
+
| 📊 **Benchmarks** | Deterministic local coding tasks with verification reports | `/benchmark`, `src/pythinker_code/benchmark/` |
|
|
619
639
|
|
|
620
640
|
---
|
|
621
641
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pythinker-code"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.57.0"
|
|
4
4
|
description = "Pythinker — an agentic CLI developed by Pythoughts-labs."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -76,6 +76,10 @@ dev = [
|
|
|
76
76
|
"pytest>=9.0.3",
|
|
77
77
|
"pytest-asyncio>=1.3.0",
|
|
78
78
|
"pytest-cov>=6.0",
|
|
79
|
+
# Pure-Python VT100/xterm emulator: PTY UI tests feed raw terminal bytes to
|
|
80
|
+
# a virtual screen so they can assert on the *rendered* frame (catching
|
|
81
|
+
# incomplete-erase "ghost" rows), not just the byte stream.
|
|
82
|
+
"pyte>=0.8.2",
|
|
79
83
|
# Pinned: ruff 0.15's formatter reflow fails `make check`. Unpin once the
|
|
80
84
|
# formatting churn is resolved. Mirrored as a Dependabot ignore in
|
|
81
85
|
# .github/dependabot.yml.
|
|
@@ -15,6 +15,51 @@ GitHub Releases page; `0.8.0` is the new starting line.
|
|
|
15
15
|
|
|
16
16
|
## Unreleased
|
|
17
17
|
|
|
18
|
+
## 0.57.0 (2026-07-05)
|
|
19
|
+
|
|
20
|
+
- **No more ghost/duplicate input prompt while the agent works.** After
|
|
21
|
+
submitting a prompt, the input card no longer fossilizes above the stream as
|
|
22
|
+
a second, ghostly prompt. The prompt bar and top border now stay visible
|
|
23
|
+
through turn-start and lazy-load frames, and running-agent output renders
|
|
24
|
+
through a stable diff-rendered scene (ported from Pi) so the input card no
|
|
25
|
+
longer jumps. An experimental Focus TUI mode (`tui.focus_mode`) pins the
|
|
26
|
+
composer and hides file activity behind a compact live shelf for a cleaner
|
|
27
|
+
fullscreen view, and active subagent tool work now surfaces in the pinned
|
|
28
|
+
status tail instead of a generic composing spinner.
|
|
29
|
+
- **Added a native `/benchmark` command suite.** Run deterministic local
|
|
30
|
+
Pythinker model evaluations with bundled smoke tasks and SWE-style JSONL
|
|
31
|
+
tasks (`/benchmark:swe`), plus `/benchmark compare`, `/benchmark export`,
|
|
32
|
+
and `/benchmark discover` actions that produce replayable artifacts,
|
|
33
|
+
activity metrics, and branded markdown reports.
|
|
34
|
+
- **Hardened benchmark and skill security edges.** SWE verification commands
|
|
35
|
+
are shape-validated before execution, benchmark discovery requires explicit
|
|
36
|
+
network opt-in, run IDs avoid clock collisions, runtime overrides restore
|
|
37
|
+
after setup failures, and active-skill deactivation failures now surface
|
|
38
|
+
instead of being swallowed. Explicitly invoked skills stay active across
|
|
39
|
+
later turns through a compact reminder until stopped by name or
|
|
40
|
+
"normal mode".
|
|
41
|
+
|
|
42
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.57.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
43
|
+
|
|
44
|
+
## 0.56.0 (2026-07-02)
|
|
45
|
+
|
|
46
|
+
- **Windows shell UI recovers from mid-session console blanking.** The TUI's
|
|
47
|
+
transcript and input box could go blank mid-session until a terminal restart;
|
|
48
|
+
child processes spawned by the Shell tool, background tasks, and `!` commands
|
|
49
|
+
no longer attach to the interactive console (`CREATE_NO_WINDOW`), and the
|
|
50
|
+
prompt renderer now forces an absolute repaint after terminal resizes and
|
|
51
|
+
failed scrollback handoffs instead of diffing against a stale frame.
|
|
52
|
+
- **Workflow progress rendering and lifecycle fixes.** Progress display no
|
|
53
|
+
longer duplicates agents once truncated by the per-phase display cap,
|
|
54
|
+
`agent()` coroutines are no longer leaked when `parallel()` rejects its
|
|
55
|
+
arguments, and a 1000-agent lifetime backstop now guards against runaway
|
|
56
|
+
workflow loops.
|
|
57
|
+
- **Stale update-success notice cleared after downgrading.** Restarting into
|
|
58
|
+
an older Homebrew install no longer leaves a permanent "Restart to apply"
|
|
59
|
+
banner — the `/update` command surfaces again as expected.
|
|
60
|
+
|
|
61
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.56.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
62
|
+
|
|
18
63
|
## 0.55.0 (2026-06-30)
|
|
19
64
|
|
|
20
65
|
- **Local-model reliability fixes for compaction, Qwen3 reasoning, and stuck loops.**
|
|
@@ -127,7 +127,7 @@ Default to `ImplementAndJudge` for non-trivial scoped edits (see §4.4); reserve
|
|
|
127
127
|
|
|
128
128
|
**Background shell** (root agent only). Launch long-running commands via `Shell` with `run_in_background=true` and a short `description`; the system notifies you at terminal states. `TaskList` re-enumerates active tasks (especially after context compaction); `TaskOutput` gives non-blocking snapshots (`block=true` only to intentionally wait); `TaskStop` cancels. After starting a background task, default to returning control to the user. The only task-management slash command for users is `/task` — never invent subcommands like `/task list` or `/tasks`. Subagents and sessions without these tools must not assume background-task control.
|
|
129
129
|
|
|
130
|
-
**Skills (`ReadSkill`).** Load a skill's exact instructions before applying its workflow — mandatory for `review-pr`, `diagnose-ci-failures`, `fix-errors`, `implement-specs`, `spec-driven-implementation`, `check-impl-against-spec`, `resolve-merge-conflicts`, and `create-pr`. Read skill details only when needed, to conserve context. Catalog and scope precedence in §12.
|
|
130
|
+
**Skills (`ReadSkill`).** Load a skill's exact instructions before applying its workflow — mandatory for `review-pr`, `diagnose-ci-failures`, `fix-errors`, `implement-specs`, `spec-driven-implementation`, `check-impl-against-spec`, `resolve-merge-conflicts`, and `create-pr`. If the user explicitly invokes or names a skill as an active mode, keep applying that loaded skill until they ask to stop it or return to normal mode. Read skill details only when needed, to conserve context. Catalog and scope precedence in §12.
|
|
131
131
|
|
|
132
132
|
**Inline `/command` references.** Slash commands execute only as their own message starting with `/`. A `/command` or `/skill:<name>` mentioned mid-message did not auto-run, but it still expresses intent — act on it rather than leading your reply by reporting it as failed. For `/plan`, call `EnterPlanMode` (a real tool in your toolset, not just prose); for `/goal`, pursue the described objective until it is verifiably done; for `/skill:<name>`, load it via `ReadSkill` and apply it; for other guidance commands, apply the equivalent guidance yourself. Mention invoking the real command only when genuinely needed. Never silently drop such a reference.
|
|
133
133
|
|
|
@@ -259,4 +259,4 @@ Skills are reusable, self-contained capability directories, each with a `SKILL.m
|
|
|
259
259
|
|
|
260
260
|
${PYTHINKER_SKILLS}
|
|
261
261
|
|
|
262
|
-
Identify the skills relevant to the current task and read their `SKILL.md` before applying the workflow (§5). If a skill `<name>` has a companion `<name>-local`, treat it as local project specialization applied after the core skill. Read skill details only when needed, to conserve the context window.
|
|
262
|
+
Identify the skills relevant to the current task and read their `SKILL.md` before applying the workflow (§5). If a skill `<name>` has a companion `<name>-local`, treat it as local project specialization applied after the core skill. Read skill details only when needed, to conserve the context window.
|
|
@@ -12,6 +12,7 @@ from pathlib import Path
|
|
|
12
12
|
from typing import TYPE_CHECKING, Any, Literal
|
|
13
13
|
|
|
14
14
|
from pythinker_host.local import local_host
|
|
15
|
+
from pythinker_host.windows import windows_console_detach_flags
|
|
15
16
|
|
|
16
17
|
from pythinker_code.config import BackgroundConfig
|
|
17
18
|
from pythinker_code.notifications import NotificationEvent, NotificationManager
|
|
@@ -243,7 +244,10 @@ class BackgroundTaskManager:
|
|
|
243
244
|
"cwd": str(task_dir),
|
|
244
245
|
}
|
|
245
246
|
if os.name == "nt":
|
|
246
|
-
|
|
247
|
+
# CREATE_NO_WINDOW: don't share the interactive console — a child
|
|
248
|
+
# touching it via the Win32 console API bypasses DEVNULL stdio and
|
|
249
|
+
# can blank the parent TUI until terminal restart.
|
|
250
|
+
kwargs["creationflags"] = windows_console_detach_flags()
|
|
247
251
|
else:
|
|
248
252
|
kwargs["start_new_session"] = True
|
|
249
253
|
|
|
@@ -9,6 +9,8 @@ import time
|
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from typing import Any
|
|
11
11
|
|
|
12
|
+
from pythinker_host.windows import windows_console_detach_flags
|
|
13
|
+
|
|
12
14
|
from pythinker_code.utils.logging import logger
|
|
13
15
|
from pythinker_code.utils.subprocess_env import get_clean_env, scrub_secret_env
|
|
14
16
|
|
|
@@ -185,7 +187,10 @@ async def run_background_task_worker(
|
|
|
185
187
|
"env": scrub_secret_env(get_clean_env()) if spec.scrub_secrets else get_clean_env(),
|
|
186
188
|
}
|
|
187
189
|
if os.name == "nt":
|
|
188
|
-
|
|
190
|
+
# CREATE_NO_WINDOW: don't share the interactive console — a child
|
|
191
|
+
# touching it via the Win32 console API bypasses the redirected
|
|
192
|
+
# stdio and can blank the parent TUI until terminal restart.
|
|
193
|
+
spawn_kwargs["creationflags"] = windows_console_detach_flags()
|
|
189
194
|
else:
|
|
190
195
|
spawn_kwargs["start_new_session"] = True
|
|
191
196
|
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import difflib
|
|
4
|
+
import json
|
|
5
|
+
from collections.abc import Mapping
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import cast
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def summarize_benchmark_activity(
|
|
11
|
+
before: Mapping[str, str],
|
|
12
|
+
after: Mapping[str, str],
|
|
13
|
+
wire_file: Path,
|
|
14
|
+
wire_offset: int,
|
|
15
|
+
) -> dict[str, object]:
|
|
16
|
+
added, removed = _changed_line_counts(before, after)
|
|
17
|
+
tool_calls_by_name = _tool_calls_by_name(wire_file, wire_offset)
|
|
18
|
+
shell_tool_calls = sum(
|
|
19
|
+
count for name, count in tool_calls_by_name.items() if name.casefold() in {"bash", "shell"}
|
|
20
|
+
)
|
|
21
|
+
return {
|
|
22
|
+
"changed_files_count": len(_changed_file_names(before, after)),
|
|
23
|
+
"added_lines": added,
|
|
24
|
+
"removed_lines": removed,
|
|
25
|
+
"tool_calls_by_name": dict(sorted(tool_calls_by_name.items())),
|
|
26
|
+
"shell_tool_calls": shell_tool_calls,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _changed_file_names(before: Mapping[str, str], after: Mapping[str, str]) -> set[str]:
|
|
31
|
+
names = set(before) | set(after)
|
|
32
|
+
return {name for name in names if before.get(name) != after.get(name)}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _changed_line_counts(before: Mapping[str, str], after: Mapping[str, str]) -> tuple[int, int]:
|
|
36
|
+
added = 0
|
|
37
|
+
removed = 0
|
|
38
|
+
for name in sorted(_changed_file_names(before, after)):
|
|
39
|
+
diff = difflib.ndiff(
|
|
40
|
+
before.get(name, "").splitlines(),
|
|
41
|
+
after.get(name, "").splitlines(),
|
|
42
|
+
)
|
|
43
|
+
for line in diff:
|
|
44
|
+
if line.startswith("+ "):
|
|
45
|
+
added += 1
|
|
46
|
+
elif line.startswith("- "):
|
|
47
|
+
removed += 1
|
|
48
|
+
return added, removed
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def _tool_calls_by_name(wire_file: Path, offset: int) -> dict[str, int]:
|
|
52
|
+
counts: dict[str, int] = {}
|
|
53
|
+
if not wire_file.exists():
|
|
54
|
+
return counts
|
|
55
|
+
try:
|
|
56
|
+
with wire_file.open("r", encoding="utf-8", errors="replace") as f:
|
|
57
|
+
f.seek(offset)
|
|
58
|
+
for line in f:
|
|
59
|
+
try:
|
|
60
|
+
raw: object = json.loads(line)
|
|
61
|
+
except json.JSONDecodeError:
|
|
62
|
+
continue
|
|
63
|
+
if not isinstance(raw, dict):
|
|
64
|
+
continue
|
|
65
|
+
message = cast(dict[str, object], raw).get("message")
|
|
66
|
+
if not isinstance(message, dict):
|
|
67
|
+
continue
|
|
68
|
+
message_data = cast(dict[str, object], message)
|
|
69
|
+
if message_data.get("type") != "ToolCall":
|
|
70
|
+
continue
|
|
71
|
+
payload = message_data.get("payload")
|
|
72
|
+
if not isinstance(payload, dict):
|
|
73
|
+
continue
|
|
74
|
+
name = _tool_name(cast(dict[str, object], payload))
|
|
75
|
+
if isinstance(name, str) and name:
|
|
76
|
+
counts[name] = counts.get(name, 0) + 1
|
|
77
|
+
except OSError:
|
|
78
|
+
return {}
|
|
79
|
+
return counts
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _tool_name(payload: Mapping[str, object]) -> str | None:
|
|
83
|
+
function = payload.get("function")
|
|
84
|
+
if isinstance(function, dict):
|
|
85
|
+
name = cast(dict[str, object], function).get("name")
|
|
86
|
+
return name if isinstance(name, str) else None
|
|
87
|
+
legacy_name = payload.get("name")
|
|
88
|
+
return legacy_name if isinstance(legacy_name, str) else None
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Bundled benchmark definitions."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Bundled benchmark suites."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pythinker-core",
|
|
3
|
+
"title": "Pythinker Core Suite",
|
|
4
|
+
"description": "Deterministic local coding tasks covering common agent benchmark failure modes.",
|
|
5
|
+
"tasks": [
|
|
6
|
+
"core-atomic-transfer",
|
|
7
|
+
"core-dedup-order",
|
|
8
|
+
"core-explicit-none-metadata",
|
|
9
|
+
"core-safe-path-join"
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Bundled benchmark tasks."""
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "core-atomic-transfer",
|
|
3
|
+
"title": "Atomic Ledger Transfer",
|
|
4
|
+
"description": "Fix a money-transfer bug without leaving partial state behind.",
|
|
5
|
+
"prompt": "Fix ledger.py. Ledger.transfer(src, dst, amount) must move funds atomically: reject missing source accounts, missing destination accounts, non-positive amounts, and insufficient funds without changing any balance. Keep the public API minimal.",
|
|
6
|
+
"workspace": {
|
|
7
|
+
"files": {
|
|
8
|
+
"ledger.py": "class Ledger:\n def __init__(self, balances):\n self.balances = dict(balances)\n\n def transfer(self, src, dst, amount):\n self.balances[src] -= amount\n if self.balances[src] < 0:\n raise ValueError('insufficient funds')\n self.balances[dst] += amount\n",
|
|
9
|
+
"test_ledger.py": "import pytest\n\nfrom ledger import Ledger\n\n\ndef test_transfer_moves_funds():\n ledger = Ledger({'a': 10, 'b': 1})\n ledger.transfer('a', 'b', 4)\n assert ledger.balances == {'a': 6, 'b': 5}\n\n\ndef test_insufficient_funds_rolls_back():\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises(ValueError):\n ledger.transfer('a', 'b', 5)\n assert ledger.balances == {'a': 3, 'b': 1}\n\n\ndef test_missing_destination_does_not_create_accounts():\n ledger = Ledger({'a': 3})\n with pytest.raises((KeyError, ValueError)):\n ledger.transfer('a', 'missing', 1)\n assert ledger.balances == {'a': 3}\n\n\ndef test_missing_source_rolls_back():\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises((KeyError, ValueError)):\n ledger.transfer('missing', 'b', 1)\n assert ledger.balances == {'a': 3, 'b': 1}\n\n\n@pytest.mark.parametrize('amount', [0, -1])\ndef test_non_positive_amount_rejected(amount):\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises(ValueError):\n ledger.transfer('a', 'b', amount)\n assert ledger.balances == {'a': 3, 'b': 1}\n\n\ndef test_non_positive_amount_checked_before_accounts():\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises(ValueError):\n ledger.transfer('missing', 'b', -1)\n assert ledger.balances == {'a': 3, 'b': 1}\n"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"verification": {
|
|
13
|
+
"type": "command",
|
|
14
|
+
"command": "python -m pytest test_ledger.py -q"
|
|
15
|
+
},
|
|
16
|
+
"limits": {
|
|
17
|
+
"timeout_seconds": 180,
|
|
18
|
+
"max_steps": 60
|
|
19
|
+
},
|
|
20
|
+
"tags": ["core", "python", "state", "deterministic"]
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "core-dedup-order",
|
|
3
|
+
"title": "Stable Deduplication",
|
|
4
|
+
"description": "Preserve first-seen order while removing duplicates.",
|
|
5
|
+
"prompt": "Fix seqkit.py. unique(items) must return unique values from any iterable in first-seen order. It must support unhashable values such as dictionaries and must not mutate the input.",
|
|
6
|
+
"workspace": {
|
|
7
|
+
"files": {
|
|
8
|
+
"seqkit.py": "def unique(items):\n return sorted(set(items))\n",
|
|
9
|
+
"test_seqkit.py": "from seqkit import unique\n\n\ndef test_unique_preserves_first_seen_order():\n assert unique(['b', 'a', 'b', 'c', 'a']) == ['b', 'a', 'c']\n\n\ndef test_unique_supports_unhashable_dicts():\n first = {'id': 1, 'name': 'first'}\n duplicate = {'id': 1, 'name': 'first'}\n second = {'id': 2, 'name': 'second'}\n assert unique([first, duplicate, second, first]) == [first, second]\n\n\ndef test_unique_does_not_mutate_input():\n values = ['b', 'a', 'b']\n assert unique(values) == ['b', 'a']\n assert values == ['b', 'a', 'b']\n\n\ndef test_unique_accepts_generators():\n assert unique(x for x in ['a', 'a', 'b']) == ['a', 'b']\n\n\ndef test_unique_keeps_falsey_values_distinct():\n assert unique([0, False, '', None, 0, None]) == [0, '', None]\n"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"verification": {
|
|
13
|
+
"type": "command",
|
|
14
|
+
"command": "python -m pytest test_seqkit.py -q"
|
|
15
|
+
},
|
|
16
|
+
"limits": {
|
|
17
|
+
"timeout_seconds": 180,
|
|
18
|
+
"max_steps": 60
|
|
19
|
+
},
|
|
20
|
+
"tags": ["core", "python", "algorithm", "deterministic"]
|
|
21
|
+
}
|