pythinker-code 0.30.0__tar.gz → 0.31.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.30.0 → pythinker_code-0.31.0}/PKG-INFO +25 -24
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/README.md +24 -23
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/pyproject.toml +1 -1
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/CHANGELOG.md +12 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/code_reviewer.yaml +5 -3
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/security_reviewer.yaml +6 -3
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/app.py +29 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/__init__.py +19 -4
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/config.py +44 -7
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/session_recap.py +108 -9
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/agent.py +19 -7
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/approval.py +64 -10
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +37 -29
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/pythinkersoul.py +4 -1
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/__init__.py +4 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/agent/description.md +2 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/__init__.py +7 -3
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/markdown.py +27 -14
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/echo.py +14 -3
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/motion.py +76 -30
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/prompt.py +28 -5
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selectors/settings.py +12 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/slash.py +10 -22
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +2 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +5 -7
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +1 -1
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +1 -1
- pythinker_code-0.31.0/src/pythinker_code/ui/shell/tool_renderers/skill.py +84 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +2 -2
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +137 -22
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +17 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +46 -12
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +17 -9
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/theme.py +25 -21
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/pyinstaller.py +5 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/rich/markdown.py +32 -41
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/rich/syntax.py +32 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/_baseUniq-BpBZwHN_.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/_baseUniq-DC1S-iCZ.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/arc-DP9ud60-.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/arc-CNIxC9rp.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-DTfdSqNy.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-D22AlBUK.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-C2G2Cu29.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-DVpSAL1I.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-ComToUA5.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-DY7MqqYI.js +1 -1
- pythinker_code-0.31.0/src/pythinker_code/web/static/assets/channel-DYd7h4UI.js +1 -0
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-D96vnFIw.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-B_-G4pwz.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-B0qnyDND.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-B_k2a5Jq.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DcgAnCnn.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-MBuDy8EG.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-CMZQpCjP.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-DfmDFpc4.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-DKHRIomN.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-C1QitF6h.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-laZOaFx9.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-B8pwIVZJ.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-B1jKxOKI.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-BageYt4Z.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-yIThlDNj.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-DhaLY-N2.js +1 -1
- pythinker_code-0.31.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-C4KNVG4M.js +1 -0
- pythinker_code-0.31.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-C4KNVG4M.js +1 -0
- pythinker_code-0.31.0/src/pythinker_code/web/static/assets/clone-Drzw88ja.js +1 -0
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-CHP42Z9a.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-CNl1SkHd.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-CQ1HXW6x.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-DhjvW-0t.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/cytoscape.esm-C9FIomKi.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/cytoscape.esm-BP8Niknm.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-C2_b9bSH.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-BmhRJqGX.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-nEM7k0TB.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-B973QVta.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-WrdMaUNh.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-cZ4eUsCm.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-DS3U5Zjh.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-BvfODp16.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-BcWzCeiC.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-CK_SQro3.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-DdjIyGyT.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-BaBdXQpa.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-DqtkXHa6.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-JygtVfFR.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-c-pctF5V.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-DqHdVsF_.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/graph-fAmhffdU.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/graph-CqNFO2CC.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/index-BgmeZfYh.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/index--MUKtzM2.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/index-D82Jkou6.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/index-DtuQ8kEJ.js +2 -2
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/index-D4RsU1W9.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/index-LuO0e-kY.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-DRLS8TXt.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-Cg2t3pTH.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-BUtWQT7p.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-D9UsLYjz.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-DnSOvMIT.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-B1ccdtFp.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/layout-B56R08kx.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/layout-CWAKOsro.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/linear-B7Z5u4Ef.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/linear-Bi5qHtyA.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-CBRFGpvi.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-CIhTmKgJ.js +7 -7
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/mermaid.core-BuhofBVT.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/mermaid.core-BSyEijZn.js +5 -5
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/min-C3PE9D8T.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/min-DcfRBc53.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-DBKiQrtd.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-CwWyeU_z.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-kQOSbgTo.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-DFRPs9ex.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-j4UapWXo.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-DZ11KGHj.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-C1ZQuL0D.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-DgcpMAX5.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-CX5TCpHV.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-C_VstXTy.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-DFM_2rnO.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-OQ6FDYjg.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-BATCmOry.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-BlkYAfhC.js +1 -1
- pythinker_code-0.31.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-D-CmmJDB.js +1 -0
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-CcwzUm5O.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-v6F5SqKJ.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-DHL8NzIM.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-DxTEDpFb.js +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-Bz9jd22K.js → pythinker_code-0.31.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-C-t5auMI.js +1 -1
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/index.html +1 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/channel-D7XKNUp-.js +0 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-C5iasCpX.js +0 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-C5iasCpX.js +0 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/clone-qwIL_iPW.js +0 -1
- pythinker_code-0.30.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-D7KeOreI.js +0 -1
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/LICENSE +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/NOTICE +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/review.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/system.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agentspec.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/openai.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/agent_runner.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/manager.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/vis.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/feedback.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/feedback_repo.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/hooks/events.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/hooks/runner.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/memory/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/memory/consolidation.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/memory/harvest.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/memory/recall.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/memory/recap.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/memory/retriever.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/memory/sanitize.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/native.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/project_memory.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/scratchpad.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/session_state.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/deliberation.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/slash.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/soul/toolset.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/discovery.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/models.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/runner.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/subagents/store.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/config.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/thinking.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/read.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/read.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/replace.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/file/write.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/memory/memory.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/shell/bash.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/debug.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selector.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/setup.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/startup.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/update.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/api/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/api/sessions.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/api/statistics.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/api/system.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/app.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/vis/static/index.html +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-YVZJy7__.css +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/install.ps1 +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/install.sh +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/wire/server.py +0 -0
- {pythinker_code-0.30.0 → pythinker_code-0.31.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.31.0
|
|
4
4
|
Summary: Pythinker Code is your next CLI agent.
|
|
5
5
|
Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
|
|
6
6
|
Author: Mohamed Elkholy
|
|
@@ -115,14 +115,15 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
118
|
-
## 🆕 What's New in 0.
|
|
118
|
+
## 🆕 What's New in 0.31.0
|
|
119
119
|
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
123
|
-
- **
|
|
120
|
+
- **Release promotion no longer stalls when the Homebrew tap is broken.** The `promote-release` workflow now gates only on platform assets and PyPI; a lagging or broken Homebrew tap emits a warning annotation but no longer blocks the GitHub Release from reaching Latest.
|
|
121
|
+
- **Calmer, theme-aligned TUI rendering.** Transcript, recap, and tool-header output now use theme-standardized activity colors, and Markdown tables render as a bordered grid (wide tables no longer collapse into a stacked-record list).
|
|
122
|
+
- **Auto-mode tool approval fails closed when unattended.** In auto/non-interactive runs, actions still needing approval are denied with guidance instead of waiting indefinitely; the `auto_deliberate_destructive_actions` setting extends this backstop to interactive `--yolo` sessions.
|
|
123
|
+
- **Yolo + auto mode hardened against silent over-reach.** Entering plan mode requires confirmation in interactive `--yolo` sessions; a new `--no-yolo` flag overrides yolo globally; resuming a yolo/auto session surfaces a startup warning.
|
|
124
|
+
- **`pythinker review` validates finding evidence.** Reviewflow assembles prompts from a shared security-knowledge manifest and validates findings without failing the whole review on invalid ones.
|
|
124
125
|
|
|
125
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
126
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.31.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
126
127
|
|
|
127
128
|
|
|
128
129
|
---
|
|
@@ -212,7 +213,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
212
213
|
|
|
213
214
|
| Platform | Recommended install | Artifact source |
|
|
214
215
|
|---|---|---|
|
|
215
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
216
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.31.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
216
217
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
217
218
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
218
219
|
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
|
|
@@ -240,7 +241,7 @@ pythinker # start the interactive TUI
|
|
|
240
241
|
|
|
241
242
|
### 🪟 Windows — native installer
|
|
242
243
|
|
|
243
|
-
`PythinkerSetup-0.
|
|
244
|
+
`PythinkerSetup-0.31.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
244
245
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
245
246
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
246
247
|
the change. **No UAC prompt.**
|
|
@@ -251,13 +252,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
251
252
|
|
|
252
253
|
# Or manually download the installer + checksum from the Releases page,
|
|
253
254
|
# verify with Get-FileHash, then run:
|
|
254
|
-
.\PythinkerSetup-0.
|
|
255
|
+
.\PythinkerSetup-0.31.0.exe
|
|
255
256
|
|
|
256
257
|
# Open a fresh PowerShell
|
|
257
258
|
pythinker --version
|
|
258
259
|
```
|
|
259
260
|
|
|
260
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
261
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.31.0.exe /ALLUSERS`
|
|
261
262
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
262
263
|
|
|
263
264
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -308,26 +309,26 @@ attached to every GitHub Release.
|
|
|
308
309
|
|
|
309
310
|
```sh
|
|
310
311
|
# Debian / Ubuntu (x86_64)
|
|
311
|
-
sudo dpkg -i pythinker-code_0.
|
|
312
|
+
sudo dpkg -i pythinker-code_0.31.0_amd64.deb
|
|
312
313
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
313
314
|
|
|
314
315
|
# Debian / Ubuntu (ARM64)
|
|
315
|
-
sudo dpkg -i pythinker-code_0.
|
|
316
|
+
sudo dpkg -i pythinker-code_0.31.0_arm64.deb
|
|
316
317
|
|
|
317
318
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
318
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
319
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
320
|
-
sha256sum -c pythinker-code-0.
|
|
319
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.x86_64.rpm
|
|
320
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.x86_64.rpm.sha256
|
|
321
|
+
sha256sum -c pythinker-code-0.31.0.x86_64.rpm.sha256
|
|
321
322
|
# Fedora / RHEL:
|
|
322
|
-
sudo dnf install ./pythinker-code-0.
|
|
323
|
+
sudo dnf install ./pythinker-code-0.31.0.x86_64.rpm
|
|
323
324
|
# openSUSE:
|
|
324
|
-
sudo zypper install ./pythinker-code-0.
|
|
325
|
+
sudo zypper install ./pythinker-code-0.31.0.x86_64.rpm
|
|
325
326
|
|
|
326
327
|
# Fedora / RHEL (aarch64)
|
|
327
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
328
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
329
|
-
sha256sum -c pythinker-code-0.
|
|
330
|
-
sudo dnf install ./pythinker-code-0.
|
|
328
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.aarch64.rpm
|
|
329
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.aarch64.rpm.sha256
|
|
330
|
+
sha256sum -c pythinker-code-0.31.0.aarch64.rpm.sha256
|
|
331
|
+
sudo dnf install ./pythinker-code-0.31.0.aarch64.rpm
|
|
331
332
|
```
|
|
332
333
|
|
|
333
334
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -336,8 +337,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
336
337
|
**Verify before install:**
|
|
337
338
|
|
|
338
339
|
```sh
|
|
339
|
-
sha256sum -c pythinker-code_0.
|
|
340
|
-
sha256sum -c pythinker-code-0.
|
|
340
|
+
sha256sum -c pythinker-code_0.31.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
341
|
+
sha256sum -c pythinker-code-0.31.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
341
342
|
```
|
|
342
343
|
|
|
343
344
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -50,14 +50,15 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
## 🆕 What's New in 0.
|
|
53
|
+
## 🆕 What's New in 0.31.0
|
|
54
54
|
|
|
55
|
-
- **
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
- **
|
|
55
|
+
- **Release promotion no longer stalls when the Homebrew tap is broken.** The `promote-release` workflow now gates only on platform assets and PyPI; a lagging or broken Homebrew tap emits a warning annotation but no longer blocks the GitHub Release from reaching Latest.
|
|
56
|
+
- **Calmer, theme-aligned TUI rendering.** Transcript, recap, and tool-header output now use theme-standardized activity colors, and Markdown tables render as a bordered grid (wide tables no longer collapse into a stacked-record list).
|
|
57
|
+
- **Auto-mode tool approval fails closed when unattended.** In auto/non-interactive runs, actions still needing approval are denied with guidance instead of waiting indefinitely; the `auto_deliberate_destructive_actions` setting extends this backstop to interactive `--yolo` sessions.
|
|
58
|
+
- **Yolo + auto mode hardened against silent over-reach.** Entering plan mode requires confirmation in interactive `--yolo` sessions; a new `--no-yolo` flag overrides yolo globally; resuming a yolo/auto session surfaces a startup warning.
|
|
59
|
+
- **`pythinker review` validates finding evidence.** Reviewflow assembles prompts from a shared security-knowledge manifest and validates findings without failing the whole review on invalid ones.
|
|
59
60
|
|
|
60
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
61
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.31.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
61
62
|
|
|
62
63
|
|
|
63
64
|
---
|
|
@@ -147,7 +148,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
147
148
|
|
|
148
149
|
| Platform | Recommended install | Artifact source |
|
|
149
150
|
|---|---|---|
|
|
150
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
151
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.31.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
151
152
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
152
153
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
153
154
|
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
|
|
@@ -175,7 +176,7 @@ pythinker # start the interactive TUI
|
|
|
175
176
|
|
|
176
177
|
### 🪟 Windows — native installer
|
|
177
178
|
|
|
178
|
-
`PythinkerSetup-0.
|
|
179
|
+
`PythinkerSetup-0.31.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
179
180
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
180
181
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
181
182
|
the change. **No UAC prompt.**
|
|
@@ -186,13 +187,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
186
187
|
|
|
187
188
|
# Or manually download the installer + checksum from the Releases page,
|
|
188
189
|
# verify with Get-FileHash, then run:
|
|
189
|
-
.\PythinkerSetup-0.
|
|
190
|
+
.\PythinkerSetup-0.31.0.exe
|
|
190
191
|
|
|
191
192
|
# Open a fresh PowerShell
|
|
192
193
|
pythinker --version
|
|
193
194
|
```
|
|
194
195
|
|
|
195
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
196
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.31.0.exe /ALLUSERS`
|
|
196
197
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
197
198
|
|
|
198
199
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -243,26 +244,26 @@ attached to every GitHub Release.
|
|
|
243
244
|
|
|
244
245
|
```sh
|
|
245
246
|
# Debian / Ubuntu (x86_64)
|
|
246
|
-
sudo dpkg -i pythinker-code_0.
|
|
247
|
+
sudo dpkg -i pythinker-code_0.31.0_amd64.deb
|
|
247
248
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
248
249
|
|
|
249
250
|
# Debian / Ubuntu (ARM64)
|
|
250
|
-
sudo dpkg -i pythinker-code_0.
|
|
251
|
+
sudo dpkg -i pythinker-code_0.31.0_arm64.deb
|
|
251
252
|
|
|
252
253
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
253
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
254
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
255
|
-
sha256sum -c pythinker-code-0.
|
|
254
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.x86_64.rpm
|
|
255
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.x86_64.rpm.sha256
|
|
256
|
+
sha256sum -c pythinker-code-0.31.0.x86_64.rpm.sha256
|
|
256
257
|
# Fedora / RHEL:
|
|
257
|
-
sudo dnf install ./pythinker-code-0.
|
|
258
|
+
sudo dnf install ./pythinker-code-0.31.0.x86_64.rpm
|
|
258
259
|
# openSUSE:
|
|
259
|
-
sudo zypper install ./pythinker-code-0.
|
|
260
|
+
sudo zypper install ./pythinker-code-0.31.0.x86_64.rpm
|
|
260
261
|
|
|
261
262
|
# Fedora / RHEL (aarch64)
|
|
262
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
263
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
264
|
-
sha256sum -c pythinker-code-0.
|
|
265
|
-
sudo dnf install ./pythinker-code-0.
|
|
263
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.aarch64.rpm
|
|
264
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.31.0/pythinker-code-0.31.0.aarch64.rpm.sha256
|
|
265
|
+
sha256sum -c pythinker-code-0.31.0.aarch64.rpm.sha256
|
|
266
|
+
sudo dnf install ./pythinker-code-0.31.0.aarch64.rpm
|
|
266
267
|
```
|
|
267
268
|
|
|
268
269
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -271,8 +272,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
271
272
|
**Verify before install:**
|
|
272
273
|
|
|
273
274
|
```sh
|
|
274
|
-
sha256sum -c pythinker-code_0.
|
|
275
|
-
sha256sum -c pythinker-code-0.
|
|
275
|
+
sha256sum -c pythinker-code_0.31.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
276
|
+
sha256sum -c pythinker-code-0.31.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
276
277
|
```
|
|
277
278
|
|
|
278
279
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -15,6 +15,18 @@ GitHub Releases page; `0.8.0` is the new starting line.
|
|
|
15
15
|
|
|
16
16
|
## Unreleased
|
|
17
17
|
|
|
18
|
+
## 0.31.0 (2026-06-02)
|
|
19
|
+
|
|
20
|
+
### What changed in this release
|
|
21
|
+
|
|
22
|
+
- **Release promotion no longer stalls when the Homebrew tap is broken.** The `promote-release` workflow now gates only on platform assets and PyPI; a lagging or broken Homebrew tap emits a warning annotation and step summary note but no longer blocks the GitHub Release from reaching Latest.
|
|
23
|
+
- **Calmer, theme-aligned TUI rendering.** Transcript, recap, and tool-header output now use theme-standardized activity colors instead of hardcoded values, and Markdown tables render as a bordered grid (wide tables no longer collapse into a stacked-record list).
|
|
24
|
+
- **Auto-mode tool approval fails closed when unattended.** In auto/non-interactive runs, an action that still needs approval under the active safe-mode/trust policy is denied with guidance instead of waiting indefinitely for an absent user, and outside-workspace writes are never auto-approved. A destructive auto-approved action is now bounced once for deliberation whenever no user is present (regardless of config), so the obvious `--yolo --auto` combination is no longer more dangerous than the `autonomous_coding` profile; the `auto_deliberate_destructive_actions` setting extends that backstop to interactive `--yolo` sessions, where a user is present but approvals are skipped.
|
|
25
|
+
- **Yolo + auto mode hardened against silent over-reach.** Entering plan mode now requires confirmation in an interactive `--yolo` session (matching exit), so the plan-review checkpoint is preserved when a user is present. A `--yolo` run no longer clears or persists the workspace's safe-mode/trust state. A new `--no-yolo` flag forces yolo off for a run — overriding the `--yolo` flag, the `default_yolo` config, and any resumed session state. Resuming a session that restores yolo and/or auto now surfaces a startup warning so it is never silent.
|
|
26
|
+
- **`pythinker review` validates finding evidence.** Reviewflow assembles prompts from a shared security-knowledge manifest and validates findings, handling invalid ones without failing the whole review.
|
|
27
|
+
|
|
28
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.31.0`, or use the native installer for your OS (see the README install table).
|
|
29
|
+
|
|
18
30
|
## 0.30.0 (2026-06-02)
|
|
19
31
|
|
|
20
32
|
### What changed in this release
|
{pythinker_code-0.30.0 → pythinker_code-0.31.0}/src/pythinker_code/agents/default/code_reviewer.yaml
RENAMED
|
@@ -7,20 +7,22 @@ agent:
|
|
|
7
7
|
|
|
8
8
|
Role and scope:
|
|
9
9
|
- Perform read-only, evidence-first review of the current repository diff.
|
|
10
|
-
- Use `pythinker review diff` by default; add `--with-security` when the parent requests security coverage.
|
|
10
|
+
- Use `pythinker review diff` by default for bounded branch/diff review; add `--with-security` when the parent requests security coverage.
|
|
11
|
+
- For repo-wide, long-running, resumable, or feature-slice review requests, prefer the stateful flow: `pythinker review init`, `pythinker review map`, then `pythinker review review --limit <n> --jobs <n>` followed by `report`/`next`/`show`/`triage` as needed.
|
|
11
12
|
- Use `pythinker review describe`, `suggest`/`improve`, `ask`, `ask-line`, `labels`, `changelog`, `docs`, `compliance`, `help-docs`, `similar-issues`, `tools`, or `config` only when the parent explicitly asks for that artifact/helper.
|
|
12
13
|
- For code-reviewr parity requests, prefer local read-only options such as `--labels-file`, `--extra-instructions`, `--best-practices-file`, `--min-score`, `--docs-style`, `--symbol`, `--pr-url`, and `--issues-dir` instead of provider publishing.
|
|
13
14
|
- Do not edit files, commit, stage, push, approve, merge, or publish provider comments.
|
|
14
15
|
|
|
15
16
|
Tool policy:
|
|
16
|
-
- Prefer `pythinker review diff --format json --no-save` so results are structured and do not write run state.
|
|
17
|
+
- Prefer `pythinker review diff --format json --no-save` for one-shot diff review so results are structured and do not write run state.
|
|
18
|
+
- Use stateful Reviewflow only when persistence, resumability, feature-slice coverage, or explicit fix/revalidate follow-up is part of the task.
|
|
17
19
|
- If persistence is requested, omit `--no-save` and report where run state was written.
|
|
18
20
|
- If the requested base ref fails, report the exact blocker instead of guessing another branch unless the parent gave fallback instructions.
|
|
19
21
|
- Read files only to verify a load-bearing finding or command failure.
|
|
20
22
|
|
|
21
23
|
Review discipline:
|
|
22
24
|
- If `.pythinker/review-guidelines.md` exists, read it before scoring findings.
|
|
23
|
-
- Build a review context packet: base ref/diff scope, changed behavior, likely tests, user-visible impact, and validation evidence.
|
|
25
|
+
- Build a review context packet: base ref/diff scope or Reviewflow feature IDs, changed behavior, likely tests, user-visible impact, valid evidence paths, omitted/truncated context, and validation evidence.
|
|
24
26
|
- Flag only issues introduced or made reachable by the diff.
|
|
25
27
|
- Prefer no finding over vague speculation. Every finding must cite concrete evidence and a failure mode.
|
|
26
28
|
|
|
@@ -16,9 +16,12 @@ agent:
|
|
|
16
16
|
Operating rules:
|
|
17
17
|
- If `.pythinker/review-guidelines.md` exists, read it before scoring findings.
|
|
18
18
|
- Read-only by convention. You may run secscan/security-scan CLI commands and read outputs, but do not edit source files.
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
19
|
+
- Choose the smallest scan mode that answers the parent: diff review for changed code, repo-wide scan for discovery, process/revalidate only for model-backed investigation.
|
|
20
|
+
- Diff mode default: `pythinker secscan diff --format json --no-save --fail-on critical`.
|
|
21
|
+
- Repo-wide discovery default: `pythinker security-scan scan --json`; if the project mirror is missing, run `pythinker security-scan init` first.
|
|
22
|
+
- Before deep repo-wide processing, preview state with `pythinker security-scan status` or `pythinker security-scan prompt --limit 1`; keep INFO.md project context short and specific if the parent asks you to improve it.
|
|
23
|
+
- Only run `pythinker security-scan process`, `revalidate`, or `triage` when the parent explicitly asks for model-backed investigation or deep validation; use `--limit`/`--jobs` to bound cost unless told otherwise.
|
|
24
|
+
- Treat matcher hits as leads, not findings. Framework and slug notes are reviewer instincts; still verify source → sink → missing mitigation in code.
|
|
22
25
|
- Check graceful degradation, observability/logging, recovery behavior, structured result/status correctness, and approval/policy mismatches when they affect security posture.
|
|
23
26
|
- Translate JSON output into the structured response block below.
|
|
24
27
|
|
|
@@ -63,6 +63,23 @@ def _safe_git_branch(cwd: str | Path | HostPath) -> str | None:
|
|
|
63
63
|
return branch or None
|
|
64
64
|
|
|
65
65
|
|
|
66
|
+
def _resumed_unsupervised_notice(*, resumed: bool, yolo: bool, auto: bool) -> str | None:
|
|
67
|
+
"""Welcome-banner warning when a resumed session is running unsupervised.
|
|
68
|
+
|
|
69
|
+
Resuming restores ``yolo``/``auto`` from persisted state, so a session can come back
|
|
70
|
+
unattended and, under YOLO, auto-approving actions with no prompt. Surface that
|
|
71
|
+
prominently at startup (it also fires when the modes were passed explicitly on the
|
|
72
|
+
resume command — acceptable over-notification). ``None`` when not a resume or no
|
|
73
|
+
unsupervised mode is active.
|
|
74
|
+
"""
|
|
75
|
+
if not resumed or not (yolo or auto):
|
|
76
|
+
return None
|
|
77
|
+
modes = " + ".join(name for name, active in (("YOLO", yolo), ("auto", auto)) if active)
|
|
78
|
+
if yolo:
|
|
79
|
+
return f"{modes} active — actions auto-approved; toggle with /yolo /auto"
|
|
80
|
+
return "auto active — interactive approvals still required; toggle with /auto"
|
|
81
|
+
|
|
82
|
+
|
|
66
83
|
def _patch_session_id(record: dict[str, Any]) -> None:
|
|
67
84
|
"""Inject the current session ID (from ContextVar) into log records."""
|
|
68
85
|
try:
|
|
@@ -153,6 +170,7 @@ class PythinkerCLI:
|
|
|
153
170
|
thinking_effort: ThinkingEffort | None = None,
|
|
154
171
|
# Run mode
|
|
155
172
|
yolo: bool = False,
|
|
173
|
+
no_yolo: bool = False,
|
|
156
174
|
auto: bool = False,
|
|
157
175
|
runtime_auto: bool = False,
|
|
158
176
|
plan_mode: bool = False,
|
|
@@ -183,6 +201,8 @@ class PythinkerCLI:
|
|
|
183
201
|
Defaults to None.
|
|
184
202
|
yolo (bool, optional): Dangerously skip permission approvals. The user is still
|
|
185
203
|
reachable via ``AskUserQuestion``. Defaults to False.
|
|
204
|
+
no_yolo (bool, optional): Force yolo OFF for this run, overriding the ``yolo``
|
|
205
|
+
flag, config ``default_yolo``, and persisted session state. Defaults to False.
|
|
186
206
|
auto (bool, optional): Invocation-level auto mode (no user is present to answer
|
|
187
207
|
questions or approve actions). Implies auto-approve. Defaults to False.
|
|
188
208
|
runtime_auto (bool, optional): Internal invocation-only auto-mode overlay, used by
|
|
@@ -307,6 +327,7 @@ class PythinkerCLI:
|
|
|
307
327
|
yolo,
|
|
308
328
|
auto=auto,
|
|
309
329
|
runtime_auto=runtime_auto,
|
|
330
|
+
no_yolo=no_yolo,
|
|
310
331
|
skills_dirs=skills_dirs,
|
|
311
332
|
scratchpad_section=scratchpad_section,
|
|
312
333
|
)
|
|
@@ -783,6 +804,14 @@ class PythinkerCLI:
|
|
|
783
804
|
if branch_name:
|
|
784
805
|
welcome_info.append(WelcomeInfoItem(name="Branch", value=branch_name))
|
|
785
806
|
welcome_info.append(WelcomeInfoItem(name="Session", value=self._runtime.session.id))
|
|
807
|
+
if notice := _resumed_unsupervised_notice(
|
|
808
|
+
resumed=self._runtime.resumed,
|
|
809
|
+
yolo=self._runtime.approval.is_yolo(),
|
|
810
|
+
auto=self._runtime.approval.is_auto(),
|
|
811
|
+
):
|
|
812
|
+
welcome_info.append(
|
|
813
|
+
WelcomeInfoItem(name="Mode", value=notice, level=WelcomeInfoItem.Level.WARN)
|
|
814
|
+
)
|
|
786
815
|
try:
|
|
787
816
|
auto_save_path = str(
|
|
788
817
|
shorten_home(HostPath.unsafe_from_local_path(self._runtime.session.context_file))
|
|
@@ -378,6 +378,16 @@ def pythinker(
|
|
|
378
378
|
help="Automatically approve all actions. Default: no.",
|
|
379
379
|
),
|
|
380
380
|
] = False,
|
|
381
|
+
no_yolo: Annotated[
|
|
382
|
+
bool,
|
|
383
|
+
typer.Option(
|
|
384
|
+
"--no-yolo",
|
|
385
|
+
help=(
|
|
386
|
+
"Force yolo OFF for this run, overriding --yolo, config default_yolo, and "
|
|
387
|
+
"any persisted/resumed yolo state. Default: no."
|
|
388
|
+
),
|
|
389
|
+
),
|
|
390
|
+
] = False,
|
|
381
391
|
plan: Annotated[
|
|
382
392
|
bool,
|
|
383
393
|
typer.Option(
|
|
@@ -390,9 +400,11 @@ def pythinker(
|
|
|
390
400
|
typer.Option(
|
|
391
401
|
"--auto",
|
|
392
402
|
help=(
|
|
393
|
-
"Run in auto mode: no user is present
|
|
394
|
-
"
|
|
395
|
-
"
|
|
403
|
+
"Run in auto mode: no user is present and AskUserQuestion is "
|
|
404
|
+
"auto-dismissed. Tool calls are auto-approved only when current "
|
|
405
|
+
"trust/safe-mode policy permits; otherwise approval-required actions "
|
|
406
|
+
"fail closed. Use when running unattended (scripts, CI, scheduled jobs). "
|
|
407
|
+
"Default: no."
|
|
396
408
|
),
|
|
397
409
|
),
|
|
398
410
|
] = False,
|
|
@@ -412,7 +424,9 @@ def pythinker(
|
|
|
412
424
|
"--print",
|
|
413
425
|
help=(
|
|
414
426
|
"Run in print mode (non-interactive). Print mode auto-dismisses "
|
|
415
|
-
"AskUserQuestion and
|
|
427
|
+
"AskUserQuestion and enables invocation-only auto mode; approval-required "
|
|
428
|
+
"tool calls still follow trust/safe-mode policy and fail closed when "
|
|
429
|
+
"approval is unavailable."
|
|
416
430
|
),
|
|
417
431
|
),
|
|
418
432
|
] = False,
|
|
@@ -840,6 +854,7 @@ def pythinker(
|
|
|
840
854
|
thinking=thinking,
|
|
841
855
|
thinking_effort=normalized_thinking_effort,
|
|
842
856
|
yolo=yolo,
|
|
857
|
+
no_yolo=no_yolo,
|
|
843
858
|
auto=auto,
|
|
844
859
|
runtime_auto=ui == "print",
|
|
845
860
|
plan_mode=plan,
|
|
@@ -328,6 +328,39 @@ class TUIConfig(BaseModel):
|
|
|
328
328
|
default=True,
|
|
329
329
|
description="Show a compact recap line after completed interactive shell turns.",
|
|
330
330
|
)
|
|
331
|
+
code_theme: str = Field(
|
|
332
|
+
default="pythinker-ansi",
|
|
333
|
+
description=(
|
|
334
|
+
"Syntax-highlighting theme for assistant code blocks. Default "
|
|
335
|
+
"'pythinker-ansi' keeps the terminal-adaptive, transparent look. "
|
|
336
|
+
"Set to any Pygments style name (e.g. 'monokai', 'material', "
|
|
337
|
+
"'dracula', 'one-dark') to render code fences with that style on a "
|
|
338
|
+
"solid dark background block."
|
|
339
|
+
),
|
|
340
|
+
)
|
|
341
|
+
smooth_streaming: bool = Field(
|
|
342
|
+
default=True,
|
|
343
|
+
description=(
|
|
344
|
+
"Pace streamed assistant text so it reveals smoothly instead of "
|
|
345
|
+
"landing in bursty delta-sized clumps. Keeps up with the model "
|
|
346
|
+
"(bounded catch-up). Set false to reveal each delta immediately."
|
|
347
|
+
),
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
@field_validator("code_theme")
|
|
351
|
+
@classmethod
|
|
352
|
+
def _validate_code_theme(cls, value: str) -> str:
|
|
353
|
+
from pythinker_code.utils.rich.syntax import available_code_themes
|
|
354
|
+
|
|
355
|
+
allowed = available_code_themes()
|
|
356
|
+
if value in allowed:
|
|
357
|
+
return value
|
|
358
|
+
if value.lower() in allowed:
|
|
359
|
+
return value.lower()
|
|
360
|
+
raise ValueError(
|
|
361
|
+
f"Unknown code_theme {value!r}. Choose 'pythinker-ansi' or a Pygments "
|
|
362
|
+
f"style name. Available: {', '.join(allowed)}"
|
|
363
|
+
)
|
|
331
364
|
|
|
332
365
|
|
|
333
366
|
class MCPConfig(BaseModel):
|
|
@@ -374,11 +407,17 @@ class Config(BaseModel):
|
|
|
374
407
|
description=(
|
|
375
408
|
"Controls AskUserQuestion behavior: always ask, ask except in auto mode, "
|
|
376
409
|
"never pause (best judgment), or auto_deliberate (in auto mode, run an "
|
|
377
|
-
"advisor-assisted self-decision instead of dismissing
|
|
378
|
-
"destructive actions once for deliberation)."
|
|
410
|
+
"advisor-assisted self-decision instead of dismissing)."
|
|
379
411
|
),
|
|
380
412
|
)
|
|
381
413
|
)
|
|
414
|
+
auto_deliberate_destructive_actions: bool = Field(
|
|
415
|
+
default=False,
|
|
416
|
+
description=(
|
|
417
|
+
"When true, destructive auto-approved actions are bounced once for agent "
|
|
418
|
+
"deliberation before running. This is independent of AskUserQuestion policy."
|
|
419
|
+
),
|
|
420
|
+
)
|
|
382
421
|
skip_auto_prompt_injection: bool = Field(
|
|
383
422
|
default=False,
|
|
384
423
|
description=(
|
|
@@ -481,12 +520,10 @@ class Config(BaseModel):
|
|
|
481
520
|
if "default_yolo" not in fields_set:
|
|
482
521
|
self.default_yolo = True
|
|
483
522
|
if "ask_user_question_policy" not in fields_set:
|
|
484
|
-
#
|
|
485
|
-
# that is only safe once the profile also enables auto mode (so
|
|
486
|
-
# AskUserQuestion's Entry A self-decision engages and never blocks a
|
|
487
|
-
# headless run waiting for an absent user). Until that auto-from-
|
|
488
|
-
# profile path exists, keep the robust "never" (always dismiss).
|
|
523
|
+
# Preserve no-human AskUserQuestion behavior for headless autonomy.
|
|
489
524
|
self.ask_user_question_policy = "never"
|
|
525
|
+
if "auto_deliberate_destructive_actions" not in fields_set:
|
|
526
|
+
self.auto_deliberate_destructive_actions = True
|
|
490
527
|
elif profile == "plan_only":
|
|
491
528
|
if "default_plan_mode" not in fields_set:
|
|
492
529
|
self.default_plan_mode = True
|