pythinker-code 2.1.0__tar.gz → 2.2.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-2.1.0 → pythinker_code-2.2.0}/PKG-INFO +66 -20
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/README.md +62 -16
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/pyproject.toml +3 -1
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/CHANGELOG.md +26 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/oauth.py +2 -2
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/render_utils.py +4 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/prompt.py +5 -3
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/logging.py +2 -2
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/_baseUniq-WdgkyqbT.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/_baseUniq-3b9Vjh1L.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/arc-CXmKbmz7.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/arc-DR3CXZeR.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-YDl9Qkda.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-BQ0-qSoc.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-C9ovno3t.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-Kd0tjFCT.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-BXr41RkG.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-Cw4rqOBn.js +1 -1
- pythinker_code-2.2.0/src/pythinker_code/web/static/assets/channel-CV_6LFjm.js +1 -0
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-DGMZhK43.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-CrDv9tak.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-B5ry842o.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-DmOcpRpp.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-BfRKLjSN.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-ChaFy2yE.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-Do9AJtv7.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-BqW-gG3F.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-CgOlE1IE.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-CubqcuRB.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-gw_IcalK.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-1SSU3xPb.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-VcfL-NQQ.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-ClwSLfPq.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-BMbaKRk3.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-DUb7Xnze.js +1 -1
- pythinker_code-2.2.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-DRifCGzI.js +1 -0
- pythinker_code-2.2.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-DRifCGzI.js +1 -0
- pythinker_code-2.2.0/src/pythinker_code/web/static/assets/clone-BZw9ajX3.js +1 -0
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DKwthXRd.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-CU9M5g3e.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-QvhSyJ47.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-BpIWTq5c.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/cytoscape.esm-DZwBUI1Q.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/cytoscape.esm-vaP_ZthC.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-BDy2l1-g.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-DCC7bVEs.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-BZM3ha9j.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-DC8NtTl0.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-HjR3RK6A.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-BZIGC5xL.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-Mi15ug_w.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-DgJwjM3h.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-jUbIypmc.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-Cmn41NBD.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-CrsXaal5.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-D3I6RCYp.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-BfyinOz_.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-CKI2c4nb.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-SGlWWpCh.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-BC0ty1CW.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/graph-BbnvRGn-.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/graph-CEqyonfn.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/index-BtuEmzQY.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/index-B9Mjc3Gm.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/index-DUqu3OY8.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/index-cEE9hGzb.js +2 -2
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/index-MZ4ra56p.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/index-n9Qz5PAk.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-BQw-PXc-.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-De2sP9Ub.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-Dgy4RQfB.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-DfKYGnYF.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-BLdG3Mfe.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-D3yKysrB.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/layout-hYKYjJNX.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/layout-DPVEoKKe.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/linear-DigdNJRJ.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/linear-BEfJdq4v.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DKXTFYtU.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BMWN6yQ-.js +7 -7
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/mermaid.core-DHZF5iPm.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/mermaid.core-D1FKNjuC.js +5 -5
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/min-DZVTU06Y.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/min-C_AGskQ6.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-BDReDg-s.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-s9jf1xzX.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-BTt06Upj.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-D-oXViLF.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-DFeziBtO.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-DGUqiK6I.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-CETXPBHk.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-CVwILSF5.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-DsLlLqb0.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-D_M1b9Wz.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-BXQGeJH7.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-CBLYLJJI.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-D5_fBCG4.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-ZZg0Md3N.js +1 -1
- pythinker_code-2.2.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-D1YbdDrw.js +1 -0
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-CYrMqdcr.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-B7D4eU3W.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-DdKzgfwQ.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-Cy0XtWQy.js +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-hhd94HEL.js → pythinker_code-2.2.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-BWl1l11O.js +1 -1
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/index.html +1 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/channel-D_ia5WZB.js +0 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-oflluu9m.js +0 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-oflluu9m.js +0 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/clone-CGWjTGh5.js +0 -1
- pythinker_code-2.1.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-B4fITG2H.js +0 -1
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/LICENSE +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/NOTICE +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/agents/default/system.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/agentspec.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/app.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/openai.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/agent_runner.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/manager.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/vis.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/config.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/hooks/events.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/hooks/runner.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/session_state.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/agent.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/approval.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/pythinkersoul.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/slash.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/soul/toolset.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/models.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/runner.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/subagents/store.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/telemetry/config.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/agent/description.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/read.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/read.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/replace.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/file/write.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/shell/bash.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/debug.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/echo.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selector.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/setup.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/slash.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/startup.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/update.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/theme.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/api/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/api/sessions.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/api/statistics.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/api/system.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/app.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-D2MTYyJz.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/index-CezafTt_.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/vis/static/index.html +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2P5VJ9v.css +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/wire/server.py +0 -0
- {pythinker_code-2.1.0 → pythinker_code-2.2.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: 2.
|
|
3
|
+
Version: 2.2.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
|
|
@@ -53,16 +53,16 @@ Requires-Dist: opentelemetry-api>=1.30,<2
|
|
|
53
53
|
Requires-Dist: opentelemetry-sdk>=1.30,<2
|
|
54
54
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.30,<2
|
|
55
55
|
Requires-Python: >=3.12
|
|
56
|
-
Project-URL: Homepage, https://github.com/mohamed-elkholy95/Pythinker-Code
|
|
57
|
-
Project-URL: Repository, https://github.com/mohamed-elkholy95/Pythinker-Code
|
|
58
|
-
Project-URL: Issues, https://github.com/mohamed-elkholy95/Pythinker-Code/issues
|
|
59
56
|
Project-URL: Changelog, https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/CHANGELOG.md
|
|
60
57
|
Project-URL: Documentation, https://github.com/mohamed-elkholy95/Pythinker-Code#readme
|
|
58
|
+
Project-URL: Homepage, https://github.com/mohamed-elkholy95/Pythinker-Code
|
|
59
|
+
Project-URL: Issues, https://github.com/mohamed-elkholy95/Pythinker-Code/issues
|
|
60
|
+
Project-URL: Repository, https://github.com/mohamed-elkholy95/Pythinker-Code
|
|
61
61
|
Description-Content-Type: text/markdown
|
|
62
62
|
|
|
63
63
|
<div align="center">
|
|
64
64
|
|
|
65
|
-
# <img src="
|
|
65
|
+
# <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/logo.png" alt="Pythinker logo" width="42" align="top"> Pythinker Code
|
|
66
66
|
|
|
67
67
|
### *Your terminal-native AI engineering agent.*
|
|
68
68
|
|
|
@@ -71,11 +71,12 @@ Description-Content-Type: text/markdown
|
|
|
71
71
|
|
|
72
72
|
<br />
|
|
73
73
|
|
|
74
|
-
[](https://pypi.org/project/pythinker-code/)
|
|
75
|
-
[](pyproject.toml)
|
|
76
|
-
[](LICENSE)
|
|
77
|
-
[](https://pypi.org/project/pythinker-code/)
|
|
75
|
+
[](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/pyproject.toml)
|
|
76
|
+
[](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE)
|
|
77
|
+
[](https://github.com/mohamed-elkholy95/Pythinker-Code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
|
|
78
78
|
|
|
79
|
+
[](https://pypistats.org/packages/pythinker-code)
|
|
79
80
|
[](https://docs.astral.sh/ruff/)
|
|
80
81
|
[](https://github.com/agentclientprotocol/agent-client-protocol)
|
|
81
82
|
[](https://modelcontextprotocol.io/)
|
|
@@ -93,7 +94,7 @@ Description-Content-Type: text/markdown
|
|
|
93
94
|
|
|
94
95
|
<br /><br />
|
|
95
96
|
|
|
96
|
-
<img src="
|
|
97
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/pythinker-code.gif" alt="Pythinker Code terminal demo" width="860">
|
|
97
98
|
|
|
98
99
|
</div>
|
|
99
100
|
|
|
@@ -109,6 +110,48 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
109
110
|
|
|
110
111
|
---
|
|
111
112
|
|
|
113
|
+
## 🆕 What's New in 2.2.0
|
|
114
|
+
|
|
115
|
+
Animated installer + Windows PATH automation, on top of 2.1.2.
|
|
116
|
+
|
|
117
|
+
- **Tetris-style logo animation** — both `scripts/install.sh` and `scripts/install.ps1` now build the robot-head logo piece-by-piece (walls → top bar → bottom bar → eyes → ears → antenna), settling into the final mark before the install proceeds. Falls back gracefully to the existing static logo when the terminal isn't interactive (`CI=1`, `NO_COLOR`, `TERM=dumb`, redirected stdout, or `PYTHINKER_NO_ANIMATION=1`).
|
|
118
|
+
- **Animation tunables** — `PYTHINKER_LOGO_FRAME_DELAY` / `PYTHINKER_LOGO_STAGGER_DELAY` (bash, seconds) and `PYTHINKER_LOGO_FRAME_DELAY_MS` / `PYTHINKER_LOGO_STAGGER_DELAY_MS` (PowerShell, milliseconds) let you slow down or speed up playback.
|
|
119
|
+
- **Windows: idempotent User PATH write** — `install.ps1` now appends `~/.local/bin` to your User PATH via the registry (`[Environment]::SetEnvironmentVariable`) and broadcasts `WM_SETTINGCHANGE` so future shells pick it up. Re-running the installer is a no-op if the directory is already present.
|
|
120
|
+
|
|
121
|
+
### Carried forward from 2.1.2
|
|
122
|
+
|
|
123
|
+
Windows installer fix on top of 2.1.1.
|
|
124
|
+
|
|
125
|
+
- **Windows installer runs in the current shell** — `scripts/install.ps1` is now invoked via `& $installer` instead of a `powershell -File` subprocess, and the bundled `uv` bootstrap is dot-sourced inside an anonymous scope. PATH updates from `uv` now land in the calling PowerShell session, so `uv`, `uvx`, and `pythinker` are immediately runnable after the installer finishes — no "Open a new shell" dance.
|
|
126
|
+
- **Diagnostic fallback** — if `pythinker` is somehow still not on PATH (e.g., the script was deliberately run as a subprocess), the installer now prints the absolute path to the shim and tells you what to do.
|
|
127
|
+
- **Regression tests** — `tests/test_installation_docs.py` locks in the current-session invocation and the dot-sourced `uv` bootstrap.
|
|
128
|
+
|
|
129
|
+
### Carried forward from 2.1.1
|
|
130
|
+
|
|
131
|
+
Documentation refresh + CI hardening on top of 2.1.0.
|
|
132
|
+
|
|
133
|
+
- **PyPI page rendering** — README image and key file links converted to absolute GitHub URLs so the project page on PyPI renders the logo, demo GIFs, and architecture diagram correctly.
|
|
134
|
+
- **Type-checking on Python 3.14** — `@asynccontextmanager` / `@contextmanager` helpers now use `AsyncGenerator` / `Generator` return annotations; container-walk attribute access is properly cast; selector test helpers narrow `SelectorHeader | SelectorItem` unions.
|
|
135
|
+
- **`render_plain`** — no longer hits Rich's `is_dumb_terminal` size override (CI sets `TERM=dumb`); the explicit `width=` argument is honored everywhere.
|
|
136
|
+
- **License section** — corrected from MIT to Apache-2.0 (matches `pyproject.toml` and the existing badge).
|
|
137
|
+
- **CI cleanup** — `release-validate` step now points at the root `pyproject.toml`; PTY-based e2e tests skip on GitHub Actions runners (chronic `prompt_toolkit` hang); typos allowlist for verbatim CLI output.
|
|
138
|
+
|
|
139
|
+
### Carried forward from 2.1.0
|
|
140
|
+
|
|
141
|
+
A focused refresh of the TUI and slash-command UX.
|
|
142
|
+
|
|
143
|
+
- **Selectors package** — interactive `/theme`, `/thinking`, `/model`, `/login`, `/settings`, `/extension`, and `/show-images` panels replace the old numeric/text prompts.
|
|
144
|
+
- **`/thinking` slash command** — toggle reasoning effort live, mid-session.
|
|
145
|
+
- **`/settings` panel** — a real `SettingsList` over your `Config` (theme, default model, TUI style, default thinking, telemetry, loop limits, background tasks).
|
|
146
|
+
- **Card-style TUI polish** — bordered shell card, footer/toolbar, and a full set of tool renderers (read / write / edit / grep / find / bash / agent), plus a diff component. Subagent cards show a running-dots spinner while they work.
|
|
147
|
+
- **Selector framework** — `SelectorHeader` sentinel and per-row `on_change` callback for richer custom selectors.
|
|
148
|
+
- **Prompt templates** — discovery is now `~/.pythinker/prompts` and `<project>/.pythinker/prompts`. The legacy directory lookup has been retired.
|
|
149
|
+
- **TUI style flag** — only `card` (default) and `pythinker` are accepted; the legacy alias has been dropped.
|
|
150
|
+
|
|
151
|
+
Upgrade with `pythinker update` or `pip install --upgrade pythinker-code==2.2.0`.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
112
155
|
## ✨ Features
|
|
113
156
|
|
|
114
157
|
<table>
|
|
@@ -182,7 +225,7 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
|
|
|
182
225
|
> Built-in shell commands such as `cd` are not yet supported in shell command mode.
|
|
183
226
|
|
|
184
227
|
<div align="center">
|
|
185
|
-
<img src="
|
|
228
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/shell-mode.gif" alt="Shell command mode demo" width="860">
|
|
186
229
|
</div>
|
|
187
230
|
|
|
188
231
|
---
|
|
@@ -192,16 +235,19 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
|
|
|
192
235
|
### ✨ Recommended install (clean, with logo)
|
|
193
236
|
|
|
194
237
|
```sh
|
|
195
|
-
curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh |
|
|
238
|
+
curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh | bash
|
|
196
239
|
```
|
|
197
240
|
|
|
198
241
|
Windows PowerShell:
|
|
199
242
|
|
|
200
243
|
```powershell
|
|
201
|
-
|
|
244
|
+
$installer = Join-Path $env:TEMP "pythinker-install.ps1"
|
|
245
|
+
iwr -UseBasicParsing https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.ps1 -OutFile $installer
|
|
246
|
+
& $installer
|
|
247
|
+
Remove-Item $installer
|
|
202
248
|
```
|
|
203
249
|
|
|
204
|
-
The installer fetches `uv` if missing, installs `pythinker-code` quietly, and prints a single-line confirmation instead of the full dependency wall.
|
|
250
|
+
The installer fetches `uv` if missing, installs `pythinker-code` quietly, and prints a single-line confirmation instead of the full dependency wall. Windows downloads the script to a file (instead of `irm ... | iex`) so PowerShell antivirus scanning is less likely to block it, but it is invoked with `&` in the current session so PATH updates from `uv` are immediately visible — `pythinker` works without opening a new shell.
|
|
205
251
|
|
|
206
252
|
### 🚀 One-off run with `uvx`
|
|
207
253
|
|
|
@@ -415,7 +461,7 @@ The ACP server provides:
|
|
|
415
461
|
| 🔄 **Hot model swap** | Change models for a running ACP session |
|
|
416
462
|
|
|
417
463
|
<div align="center">
|
|
418
|
-
<img src="
|
|
464
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/acp-integration.gif" alt="ACP IDE integration demo" width="860">
|
|
419
465
|
</div>
|
|
420
466
|
|
|
421
467
|
---
|
|
@@ -486,7 +532,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
|
|
|
486
532
|
## 🏗️ Architecture
|
|
487
533
|
|
|
488
534
|
<div align="center">
|
|
489
|
-
<img src="
|
|
535
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/Architecture.webp" alt="Pythinker Code architecture diagram" width="860">
|
|
490
536
|
</div>
|
|
491
537
|
|
|
492
538
|
---
|
|
@@ -647,9 +693,9 @@ pythinker-code/
|
|
|
647
693
|
|
|
648
694
|
Contributions are warmly welcome — bug reports, PRs, plugins, skills, and docs all help.
|
|
649
695
|
|
|
650
|
-
- 📖 Start with [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
651
|
-
- 🔐 See [`SECURITY.md`](SECURITY.md) for responsible disclosure
|
|
652
|
-
- 📜 Skim [`AGENTS.md`](AGENTS.md) for the agent design notes
|
|
696
|
+
- 📖 Start with [`CONTRIBUTING.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/CONTRIBUTING.md)
|
|
697
|
+
- 🔐 See [`SECURITY.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/SECURITY.md) for responsible disclosure
|
|
698
|
+
- 📜 Skim [`AGENTS.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/AGENTS.md) for the agent design notes
|
|
653
699
|
|
|
654
700
|
If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
|
|
655
701
|
|
|
@@ -657,7 +703,7 @@ If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
|
|
|
657
703
|
|
|
658
704
|
## 📜 License
|
|
659
705
|
|
|
660
|
-
Distributed under the **
|
|
706
|
+
Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE) for the full text and [`NOTICE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/NOTICE) for attributions.
|
|
661
707
|
|
|
662
708
|
<br />
|
|
663
709
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
# <img src="
|
|
3
|
+
# <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/logo.png" alt="Pythinker logo" width="42" align="top"> Pythinker Code
|
|
4
4
|
|
|
5
5
|
### *Your terminal-native AI engineering agent.*
|
|
6
6
|
|
|
@@ -9,11 +9,12 @@
|
|
|
9
9
|
|
|
10
10
|
<br />
|
|
11
11
|
|
|
12
|
-
[](https://pypi.org/project/pythinker-code/)
|
|
13
|
-
[](pyproject.toml)
|
|
14
|
-
[](LICENSE)
|
|
15
|
-
[](https://pypi.org/project/pythinker-code/)
|
|
13
|
+
[](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/pyproject.toml)
|
|
14
|
+
[](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE)
|
|
15
|
+
[](https://github.com/mohamed-elkholy95/Pythinker-Code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
|
|
16
16
|
|
|
17
|
+
[](https://pypistats.org/packages/pythinker-code)
|
|
17
18
|
[](https://docs.astral.sh/ruff/)
|
|
18
19
|
[](https://github.com/agentclientprotocol/agent-client-protocol)
|
|
19
20
|
[](https://modelcontextprotocol.io/)
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
|
|
32
33
|
<br /><br />
|
|
33
34
|
|
|
34
|
-
<img src="
|
|
35
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/pythinker-code.gif" alt="Pythinker Code terminal demo" width="860">
|
|
35
36
|
|
|
36
37
|
</div>
|
|
37
38
|
|
|
@@ -47,6 +48,48 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
47
48
|
|
|
48
49
|
---
|
|
49
50
|
|
|
51
|
+
## 🆕 What's New in 2.2.0
|
|
52
|
+
|
|
53
|
+
Animated installer + Windows PATH automation, on top of 2.1.2.
|
|
54
|
+
|
|
55
|
+
- **Tetris-style logo animation** — both `scripts/install.sh` and `scripts/install.ps1` now build the robot-head logo piece-by-piece (walls → top bar → bottom bar → eyes → ears → antenna), settling into the final mark before the install proceeds. Falls back gracefully to the existing static logo when the terminal isn't interactive (`CI=1`, `NO_COLOR`, `TERM=dumb`, redirected stdout, or `PYTHINKER_NO_ANIMATION=1`).
|
|
56
|
+
- **Animation tunables** — `PYTHINKER_LOGO_FRAME_DELAY` / `PYTHINKER_LOGO_STAGGER_DELAY` (bash, seconds) and `PYTHINKER_LOGO_FRAME_DELAY_MS` / `PYTHINKER_LOGO_STAGGER_DELAY_MS` (PowerShell, milliseconds) let you slow down or speed up playback.
|
|
57
|
+
- **Windows: idempotent User PATH write** — `install.ps1` now appends `~/.local/bin` to your User PATH via the registry (`[Environment]::SetEnvironmentVariable`) and broadcasts `WM_SETTINGCHANGE` so future shells pick it up. Re-running the installer is a no-op if the directory is already present.
|
|
58
|
+
|
|
59
|
+
### Carried forward from 2.1.2
|
|
60
|
+
|
|
61
|
+
Windows installer fix on top of 2.1.1.
|
|
62
|
+
|
|
63
|
+
- **Windows installer runs in the current shell** — `scripts/install.ps1` is now invoked via `& $installer` instead of a `powershell -File` subprocess, and the bundled `uv` bootstrap is dot-sourced inside an anonymous scope. PATH updates from `uv` now land in the calling PowerShell session, so `uv`, `uvx`, and `pythinker` are immediately runnable after the installer finishes — no "Open a new shell" dance.
|
|
64
|
+
- **Diagnostic fallback** — if `pythinker` is somehow still not on PATH (e.g., the script was deliberately run as a subprocess), the installer now prints the absolute path to the shim and tells you what to do.
|
|
65
|
+
- **Regression tests** — `tests/test_installation_docs.py` locks in the current-session invocation and the dot-sourced `uv` bootstrap.
|
|
66
|
+
|
|
67
|
+
### Carried forward from 2.1.1
|
|
68
|
+
|
|
69
|
+
Documentation refresh + CI hardening on top of 2.1.0.
|
|
70
|
+
|
|
71
|
+
- **PyPI page rendering** — README image and key file links converted to absolute GitHub URLs so the project page on PyPI renders the logo, demo GIFs, and architecture diagram correctly.
|
|
72
|
+
- **Type-checking on Python 3.14** — `@asynccontextmanager` / `@contextmanager` helpers now use `AsyncGenerator` / `Generator` return annotations; container-walk attribute access is properly cast; selector test helpers narrow `SelectorHeader | SelectorItem` unions.
|
|
73
|
+
- **`render_plain`** — no longer hits Rich's `is_dumb_terminal` size override (CI sets `TERM=dumb`); the explicit `width=` argument is honored everywhere.
|
|
74
|
+
- **License section** — corrected from MIT to Apache-2.0 (matches `pyproject.toml` and the existing badge).
|
|
75
|
+
- **CI cleanup** — `release-validate` step now points at the root `pyproject.toml`; PTY-based e2e tests skip on GitHub Actions runners (chronic `prompt_toolkit` hang); typos allowlist for verbatim CLI output.
|
|
76
|
+
|
|
77
|
+
### Carried forward from 2.1.0
|
|
78
|
+
|
|
79
|
+
A focused refresh of the TUI and slash-command UX.
|
|
80
|
+
|
|
81
|
+
- **Selectors package** — interactive `/theme`, `/thinking`, `/model`, `/login`, `/settings`, `/extension`, and `/show-images` panels replace the old numeric/text prompts.
|
|
82
|
+
- **`/thinking` slash command** — toggle reasoning effort live, mid-session.
|
|
83
|
+
- **`/settings` panel** — a real `SettingsList` over your `Config` (theme, default model, TUI style, default thinking, telemetry, loop limits, background tasks).
|
|
84
|
+
- **Card-style TUI polish** — bordered shell card, footer/toolbar, and a full set of tool renderers (read / write / edit / grep / find / bash / agent), plus a diff component. Subagent cards show a running-dots spinner while they work.
|
|
85
|
+
- **Selector framework** — `SelectorHeader` sentinel and per-row `on_change` callback for richer custom selectors.
|
|
86
|
+
- **Prompt templates** — discovery is now `~/.pythinker/prompts` and `<project>/.pythinker/prompts`. The legacy directory lookup has been retired.
|
|
87
|
+
- **TUI style flag** — only `card` (default) and `pythinker` are accepted; the legacy alias has been dropped.
|
|
88
|
+
|
|
89
|
+
Upgrade with `pythinker update` or `pip install --upgrade pythinker-code==2.2.0`.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
50
93
|
## ✨ Features
|
|
51
94
|
|
|
52
95
|
<table>
|
|
@@ -120,7 +163,7 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
|
|
|
120
163
|
> Built-in shell commands such as `cd` are not yet supported in shell command mode.
|
|
121
164
|
|
|
122
165
|
<div align="center">
|
|
123
|
-
<img src="
|
|
166
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/shell-mode.gif" alt="Shell command mode demo" width="860">
|
|
124
167
|
</div>
|
|
125
168
|
|
|
126
169
|
---
|
|
@@ -130,16 +173,19 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
|
|
|
130
173
|
### ✨ Recommended install (clean, with logo)
|
|
131
174
|
|
|
132
175
|
```sh
|
|
133
|
-
curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh |
|
|
176
|
+
curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh | bash
|
|
134
177
|
```
|
|
135
178
|
|
|
136
179
|
Windows PowerShell:
|
|
137
180
|
|
|
138
181
|
```powershell
|
|
139
|
-
|
|
182
|
+
$installer = Join-Path $env:TEMP "pythinker-install.ps1"
|
|
183
|
+
iwr -UseBasicParsing https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.ps1 -OutFile $installer
|
|
184
|
+
& $installer
|
|
185
|
+
Remove-Item $installer
|
|
140
186
|
```
|
|
141
187
|
|
|
142
|
-
The installer fetches `uv` if missing, installs `pythinker-code` quietly, and prints a single-line confirmation instead of the full dependency wall.
|
|
188
|
+
The installer fetches `uv` if missing, installs `pythinker-code` quietly, and prints a single-line confirmation instead of the full dependency wall. Windows downloads the script to a file (instead of `irm ... | iex`) so PowerShell antivirus scanning is less likely to block it, but it is invoked with `&` in the current session so PATH updates from `uv` are immediately visible — `pythinker` works without opening a new shell.
|
|
143
189
|
|
|
144
190
|
### 🚀 One-off run with `uvx`
|
|
145
191
|
|
|
@@ -353,7 +399,7 @@ The ACP server provides:
|
|
|
353
399
|
| 🔄 **Hot model swap** | Change models for a running ACP session |
|
|
354
400
|
|
|
355
401
|
<div align="center">
|
|
356
|
-
<img src="
|
|
402
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/acp-integration.gif" alt="ACP IDE integration demo" width="860">
|
|
357
403
|
</div>
|
|
358
404
|
|
|
359
405
|
---
|
|
@@ -424,7 +470,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
|
|
|
424
470
|
## 🏗️ Architecture
|
|
425
471
|
|
|
426
472
|
<div align="center">
|
|
427
|
-
<img src="
|
|
473
|
+
<img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/Architecture.webp" alt="Pythinker Code architecture diagram" width="860">
|
|
428
474
|
</div>
|
|
429
475
|
|
|
430
476
|
---
|
|
@@ -585,9 +631,9 @@ pythinker-code/
|
|
|
585
631
|
|
|
586
632
|
Contributions are warmly welcome — bug reports, PRs, plugins, skills, and docs all help.
|
|
587
633
|
|
|
588
|
-
- 📖 Start with [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
589
|
-
- 🔐 See [`SECURITY.md`](SECURITY.md) for responsible disclosure
|
|
590
|
-
- 📜 Skim [`AGENTS.md`](AGENTS.md) for the agent design notes
|
|
634
|
+
- 📖 Start with [`CONTRIBUTING.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/CONTRIBUTING.md)
|
|
635
|
+
- 🔐 See [`SECURITY.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/SECURITY.md) for responsible disclosure
|
|
636
|
+
- 📜 Skim [`AGENTS.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/AGENTS.md) for the agent design notes
|
|
591
637
|
|
|
592
638
|
If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
|
|
593
639
|
|
|
@@ -595,7 +641,7 @@ If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
|
|
|
595
641
|
|
|
596
642
|
## 📜 License
|
|
597
643
|
|
|
598
|
-
Distributed under the **
|
|
644
|
+
Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE) for the full text and [`NOTICE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/NOTICE) for attributions.
|
|
599
645
|
|
|
600
646
|
<br />
|
|
601
647
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pythinker-code"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.2.0"
|
|
4
4
|
description = "Pythinker Code is your next CLI agent."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -151,3 +151,5 @@ datas = "datas"
|
|
|
151
151
|
Seeked = "Seeked"
|
|
152
152
|
seeked = "seeked"
|
|
153
153
|
iterm = "iterm"
|
|
154
|
+
# Verbatim pyright CLI output ("0 informations") quoted in docs.
|
|
155
|
+
informations = "informations"
|
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 2.2.0 (2026-05-09)
|
|
6
|
+
|
|
7
|
+
Installer UX: animated logo + Windows PATH automation.
|
|
8
|
+
|
|
9
|
+
- `scripts/install.sh`: Tetris-style logo animation. Pieces (walls, bars, eyes, ears, antenna) fall from above the canvas one at a time and settle into the robot head before install proceeds. Static logo remains the fallback for non-TTY / `NO_COLOR` / `TERM=dumb` / `CI=1` / `PYTHINKER_NO_ANIMATION=1`. Tunables: `PYTHINKER_LOGO_FRAME_DELAY` and `PYTHINKER_LOGO_STAGGER_DELAY` (seconds).
|
|
10
|
+
- `scripts/install.ps1`: same animation, PowerShell port. Tunables: `PYTHINKER_LOGO_FRAME_DELAY_MS` and `PYTHINKER_LOGO_STAGGER_DELAY_MS` (milliseconds).
|
|
11
|
+
- `scripts/install.ps1`: idempotently append `$USERPROFILE\.local\bin` to the User PATH via `[Environment]::SetEnvironmentVariable` and broadcast `WM_SETTINGCHANGE` so future shells (and Explorer-spawned children) pick up the new PATH automatically. No-op when the directory is already present.
|
|
12
|
+
- `scripts/install.ps1`: force `[Console]::OutputEncoding = UTF8` so the box-drawing characters render correctly on Windows hosts.
|
|
13
|
+
|
|
14
|
+
## 2.1.2 (2026-05-09)
|
|
15
|
+
|
|
16
|
+
Windows installer fix.
|
|
17
|
+
|
|
18
|
+
- `scripts/install.ps1`: dot-source Astral's `uv` bootstrap inside `& { ... }` instead of spawning `powershell -File`, so `$env:PATH` updates land in the running process.
|
|
19
|
+
- `scripts/install.ps1`: refresh PATH after `uv tool install` and verify `pythinker` resolves before printing success; otherwise emit the absolute shim path.
|
|
20
|
+
- README: invoke the downloaded `install.ps1` with `& $installer` (current shell) instead of a `powershell -NoProfile -File $installer` subprocess. `uv`, `uvx`, and `pythinker` are now usable in the calling shell as soon as the installer exits.
|
|
21
|
+
- `tests/test_installation_docs.py`: lock in current-session invocation in the README and a dot-sourced `uv` bootstrap in `install.ps1`.
|
|
22
|
+
|
|
23
|
+
## 2.1.1 (2026-05-08)
|
|
24
|
+
|
|
25
|
+
Documentation refresh.
|
|
26
|
+
|
|
27
|
+
- README: image and key file links converted to absolute GitHub URLs so the project page on PyPI renders the logo, demo GIFs, and architecture diagram correctly.
|
|
28
|
+
- README: added a "What's New in 2.1.0" section summarising the TUI CLI and slash-command enhancements.
|
|
29
|
+
- README: corrected the License section to Apache-2.0 (matches `pyproject.toml` and the `LICENSE` badge).
|
|
30
|
+
|
|
5
31
|
## 2.1.0 (2026-05-08)
|
|
6
32
|
|
|
7
33
|
TUI CLI design and slash command enhancements.
|
|
@@ -11,7 +11,7 @@ import tempfile
|
|
|
11
11
|
import time
|
|
12
12
|
import uuid
|
|
13
13
|
import webbrowser
|
|
14
|
-
from collections.abc import AsyncIterator
|
|
14
|
+
from collections.abc import AsyncGenerator, AsyncIterator
|
|
15
15
|
from contextlib import asynccontextmanager, suppress
|
|
16
16
|
from dataclasses import dataclass
|
|
17
17
|
from pathlib import Path
|
|
@@ -921,7 +921,7 @@ class OAuthManager:
|
|
|
921
921
|
await self._refresh_tokens(ref, token, runtime, force=force)
|
|
922
922
|
|
|
923
923
|
@asynccontextmanager
|
|
924
|
-
async def refreshing(self, runtime: Runtime) ->
|
|
924
|
+
async def refreshing(self, runtime: Runtime) -> AsyncGenerator[None]:
|
|
925
925
|
stop_event = asyncio.Event()
|
|
926
926
|
|
|
927
927
|
async def _runner() -> None:
|
{pythinker_code-2.1.0 → pythinker_code-2.2.0}/src/pythinker_code/ui/shell/components/render_utils.py
RENAMED
|
@@ -134,12 +134,16 @@ def render_plain(renderable: RenderableType, *, width: int = 80) -> str:
|
|
|
134
134
|
Snapshot helper for tests — color codes are stripped so the output is
|
|
135
135
|
a stable, comparable plain-text representation.
|
|
136
136
|
"""
|
|
137
|
+
# Override TERM via _environ so Rich's `is_dumb_terminal` detection
|
|
138
|
+
# doesn't kick in and force size to 80x25 (which silently ignores the
|
|
139
|
+
# explicit `width=` argument). This matters in CI where TERM=dumb is set.
|
|
137
140
|
console = Console(
|
|
138
141
|
width=width,
|
|
139
142
|
record=True,
|
|
140
143
|
force_terminal=True,
|
|
141
144
|
color_system=None,
|
|
142
145
|
legacy_windows=False,
|
|
146
|
+
_environ={"TERM": "xterm-256color"},
|
|
143
147
|
)
|
|
144
148
|
console.print(renderable)
|
|
145
149
|
return console.export_text()
|
|
@@ -349,12 +349,14 @@ def _container_contains(root: object, target: object) -> bool:
|
|
|
349
349
|
for attr in ("children", "content", "floats", "container", "alternative_content"):
|
|
350
350
|
if not hasattr(node, attr):
|
|
351
351
|
continue
|
|
352
|
-
value = getattr(node, attr)
|
|
352
|
+
value: object = getattr(node, attr)
|
|
353
353
|
if attr == "children" and isinstance(value, Sequence):
|
|
354
|
-
|
|
354
|
+
children = cast(Sequence[object], value)
|
|
355
|
+
if any(_walk(child) for child in children):
|
|
355
356
|
return True
|
|
356
357
|
elif attr == "floats" and isinstance(value, Sequence):
|
|
357
|
-
|
|
358
|
+
floats = cast(Sequence[object], value)
|
|
359
|
+
if any(_walk(cast(object, getattr(float_, "content", None))) for float_ in floats):
|
|
358
360
|
return True
|
|
359
361
|
elif value is not None and _walk(value):
|
|
360
362
|
return True
|
|
@@ -6,7 +6,7 @@ import locale
|
|
|
6
6
|
import os
|
|
7
7
|
import sys
|
|
8
8
|
import threading
|
|
9
|
-
from collections.abc import
|
|
9
|
+
from collections.abc import Generator
|
|
10
10
|
from typing import IO, Any, cast
|
|
11
11
|
|
|
12
12
|
|
|
@@ -133,7 +133,7 @@ def restore_stderr() -> None:
|
|
|
133
133
|
|
|
134
134
|
|
|
135
135
|
@contextlib.contextmanager
|
|
136
|
-
def open_original_stderr() ->
|
|
136
|
+
def open_original_stderr() -> Generator[IO[bytes] | None]:
|
|
137
137
|
redirector = _stderr_redirector
|
|
138
138
|
if redirector is None:
|
|
139
139
|
yield None
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aV as L,bj as ln,aF as A,aT as P,aE as W,bk as gn,bl as dn,bm as hn,bn as z,bo as pn,bp as An,bq as m,aW as N,a$ as U,b2 as T,br as _n,aZ as on,bs as wn,bt as On,aG as V,bu as vn,bv as I}from"./mermaid.core-
|
|
1
|
+
import{aV as L,bj as ln,aF as A,aT as P,aE as W,bk as gn,bl as dn,bm as hn,bn as z,bo as pn,bp as An,bq as m,aW as N,a$ as U,b2 as T,br as _n,aZ as on,bs as wn,bt as On,aG as V,bu as vn,bv as I}from"./mermaid.core-D1FKNjuC.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||L(n)&&ln(n)==Pn}function yn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var B=P?P.prototype:void 0,K=B?B.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return yn(n,k)+"";if(x(n))return K?K.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function En(){}function bn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function cn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Tn(n){return n!==n}function Rn(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function In(n,r,e){return r===r?Rn(n,r,e):cn(n,Tn,e)}function Sn(n,r){var e=n==null?0:n.length;return!!e&&In(n,r,0)>-1}function M(n){return W(n)?gn(n):dn(n)}var Ln=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Ln.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fn=/\\(\\)?/g,Gn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Fn,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Gn(Dn(n))}function R(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[R(r[e++])];return e&&e==i?n:void 0}function mn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var H=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||z(n)||!!(H&&n&&n[H])}function Hr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Un(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Bn(){return[]}var Kn=Object.prototype,Hn=Kn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Hn.call(n,r)}))}:Bn;function Zn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Z(n){return Zn(n,M,qn)}var Yn="__lodash_hash_undefined__";function Xn(n){return this.__data__.set(n,Yn),this}function Jn(n){return this.__data__.has(n)}function y(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}y.prototype.add=y.prototype.push=Xn;y.prototype.has=Jn;function Qn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Wn=1,zn=2;function fn(n,r,e,i,f,t){var s=e&Wn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,o=e&zn?new y:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var w=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(w!==void 0){if(w)continue;d=!1;break}if(o){if(!Qn(r,function(O,v){if(!tn(o,v)&&(p===O||f(p,O,e,i,t)))return o.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",Y=P?P.prototype:void 0,S=Y?Y.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new m(n),new m(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(S)return S.call(n)==S.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=Z(n),a=u.length,h=Z(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var o=t.get(n),p=t.get(r);if(o&&p)return o==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var w=s;++l<a;){d=u[l];var O=n[d],v=r[d];if(i)var D=s?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(D===void 0?O===v||f(O,v,e,i,t):D)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var E=n.constructor,b=r.constructor;E!=b&&"constructor"in n&&"constructor"in r&&!(typeof E=="function"&&E instanceof E&&typeof b=="function"&&b instanceof b)&&(_=!1)}return t.delete(n),t.delete(r),_}var or=1,X="[object Arguments]",J="[object Array]",c="[object Object]",wr=Object.prototype,Q=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?J:N(n),h=u?J:N(r);a=a==X?c:a,h=h==X?c:h;var g=a==c,l=h==c,d=a==h;if(d&&U(n)){if(!U(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new T),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&or)){var o=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(o||p){var _=o?n.value():n,w=p?r.value():r;return t||(t=new T),f(_,w,e,i,t)}}return d?(t||(t=new T),_r(n,r,e,i,f,t)):!1}function F(n,r,e,i,f){return n===r?!0:n==null||r==null||!L(n)&&!L(r)?n!==n&&r!==r:Or(n,r,e,i,F,f)}var vr=1,Pr=2;function yr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new T,l;if(!(l===void 0?F(h,a,vr|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!on(n)}function Er(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function br(n){var r=Er(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||yr(e,n,r)}}function cr(n,r){return n!=null&&r in Object(n)}function Tr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=R(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&On(s,f)&&(A(n)||z(n)))}function Rr(n,r){return n!=null&&Tr(n,r,cr)}var Ir=1,Sr=2;function Lr(n,r){return $(n)&&sn(r)?un(R(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Rr(e,n):F(r,i,Ir|Sr)}}function xr(n){return function(r){return r?.[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(R(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Lr(n[0],n[1]):br(n):$r(n)}function Cr(n,r){return n&&vn(n,r,M)}function Fr(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var G=Fr(Cr);function Gr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?bn:G;return e(n,Gr(r))}function Dr(n,r){var e=[];return G(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Zr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function mr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Yr(n,r,e){var i=A(n)?Un:mr,f=arguments.length<3;return i(n,an(r),e,f,G)}var Nr=1/0,Ur=I&&1/C(new I([,-0]))[1]==Nr?function(n){return new I(n)}:En,Br=200;function Xr(n,r,e){var i=-1,f=Sn,t=n.length,s=!0,u=[],a=u;if(t>=Br){var h=r?null:Ur(n);if(h)return C(h);s=!1,f=tn,a=new y}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{G as a,Hr as b,an as c,yn as d,rn as e,Zn as f,qn as g,bn as h,x as i,Z as j,M as k,Xr as l,Zr as m,qr as n,cn as o,Gr as p,Cr as q,Yr as r,Bn as s,Tr as t,j as u,R as v,nn as w,Rr as x,Dn as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as ln,N as an,O as Y,P as O,Q,R as un,S as y,T as tn,V as j,W as _,X as rn,Y as o,Z as on,$ as sn,a0 as fn}from"./mermaid.core-
|
|
1
|
+
import{M as ln,N as an,O as Y,P as O,Q,R as un,S as y,T as tn,V as j,W as _,X as rn,Y as o,Z as on,$ as sn,a0 as fn}from"./mermaid.core-D1FKNjuC.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,D,S,v,R,V,a){var E=D-l,i=S-h,n=V-v,d=a-R,u=d*E-n*i;if(!(u*u<y))return u=(n*(h-R)-d*(l-v))/u,[l+u*E,h+u*i]}function H(l,h,D,S,v,R,V){var a=l-D,E=h-S,i=(V?R:-R)/j(a*a+E*E),n=i*E,d=-i*a,u=l+n,s=h+d,f=D+n,c=S+d,W=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,A=m*m+g*g,T=v-R,P=u*c-f*s,I=(g<0?-1:1)*j(on(0,T*T*A-P*P)),M=(P*g-m*I)/A,N=(-P*m-g*I)/A,w=(P*g+m*I)/A,p=(-P*m+g*I)/A,x=M-W,e=N-t,r=w-W,X=p-t;return x*x+e*e>r*r+X*X&&(M=w,N=p),{cx:M,cy:N,x01:-n,y01:-d,x11:M*(v/T-1),y11:N*(v/T-1)}}function hn(){var l=cn,h=yn,D=Q(0),S=null,v=gn,R=dn,V=mn,a=null,E=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=R.apply(this,arguments)-un,W=rn(c-f),t=c>f;if(a||(a=n=E()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(W>tn-y)a.moveTo(s*Y(f),s*O(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*Y(c),u*O(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,A=f,T=c,P=W,I=W,M=V.apply(this,arguments)/2,N=M>y&&(S?+S.apply(this,arguments):j(u*u+s*s)),w=_(rn(s-u)/2,+D.apply(this,arguments)),p=w,x=w,e,r;if(N>y){var X=sn(N/u*O(M)),z=sn(N/s*O(M));(P-=X*2)>y?(X*=t?1:-1,A+=X,T-=X):(P=0,A=T=(f+c)/2),(I-=z*2)>y?(z*=t?1:-1,m+=z,g-=z):(I=0,m=g=(f+c)/2)}var Z=s*Y(m),$=s*O(m),B=u*Y(T),C=u*O(T);if(w>y){var F=s*Y(g),G=s*O(g),J=u*Y(A),K=u*O(A),q;if(W<an)if(q=pn(Z,$,J,K,F,G,B,C)){var L=Z-q[0],U=$-q[1],k=F-q[0],b=G-q[1],nn=1/O(fn((L*k+U*b)/(j(L*L+U*U)*j(k*k+b*b)))/2),en=j(q[0]*q[0]+q[1]*q[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}I>y?x>y?(e=H(J,K,Z,$,s,x,t),r=H(F,G,B,C,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(Z,$),a.arc(0,0,s,m,g,!t)):a.moveTo(Z,$),!(u>y)||!(P>y)?a.lineTo(B,C):p>y?(e=H(B,C,F,G,u,-p,t),r=H(Z,$,J,K,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,A,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-an/2;return[Y(d)*n,O(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:Q(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:Q(+n),i):h},i.cornerRadius=function(n){return arguments.length?(D=typeof n=="function"?n:Q(+n),i):D},i.padRadius=function(n){return arguments.length?(S=n==null?null:typeof n=="function"?n:Q(+n),i):S},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:Q(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:Q(+n),i):R},i.padAngle=function(n){return arguments.length?(V=typeof n=="function"?n:Q(+n),i):V},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|