pythinker-code 0.36.0__tar.gz → 0.38.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/PKG-INFO +25 -24
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/README.md +23 -22
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/pyproject.toml +8 -2
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/CHANGELOG.md +20 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/agent.yaml +6 -0
- pythinker_code-0.38.0/src/pythinker_code/agents/default/ask.yaml +62 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/coder.yaml +15 -0
- pythinker_code-0.38.0/src/pythinker_code/agents/default/debug.yaml +67 -0
- pythinker_code-0.38.0/src/pythinker_code/agents/default/planner.yaml +44 -0
- pythinker_code-0.38.0/src/pythinker_code/agents/default/scout.yaml +55 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/system.md +4 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/verifier.yaml +11 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agentspec.py +32 -1
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/__init__.py +11 -2
- pythinker_code-0.38.0/src/pythinker_code/models_dev.py +187 -0
- pythinker_code-0.38.0/src/pythinker_code/prompts/compact.md +51 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/agent.py +11 -0
- pythinker_code-0.38.0/src/pythinker_code/soul/flow_runner.py +215 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/pythinkersoul.py +5 -182
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/toolset.py +60 -3
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/grep_local.py +43 -8
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/read.py +4 -3
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/web/fetch.py +4 -3
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/prompt.py +15 -4
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/stats.py +6 -4
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/stats_pricing.py +50 -23
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage.py +59 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +2 -0
- pythinker_code-0.38.0/src/pythinker_code/ui/shell/usage_adapters/alibaba.py +180 -0
- pythinker_code-0.38.0/src/pythinker_code/utils/artifacts.py +97 -0
- pythinker_code-0.38.0/src/pythinker_code/utils/trust.py +23 -0
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/_baseUniq-RGEFphr7.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/_baseUniq-DqJClniw.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/arc-9K0m44ch.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/arc-D91Qf4vv.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-C0nvy1hG.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-sT3sGOdI.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-DmYV0ieN.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-tfp0qd4X.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-Dz3SYodh.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-BAJF729o.js +1 -1
- pythinker_code-0.38.0/src/pythinker_code/web/static/assets/channel-DvGFBkoe.js +1 -0
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-BX1gBkhF.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-DDI8hdAL.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-CqjtvEue.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-CTvEszJl.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DhPpx0aL.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-CG_BKmE1.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-CyWNNc9t.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-DAavzBVe.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-V88CphNu.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-B6pdHCtK.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-C-ULFL_Y.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-BvJvxHFQ.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-JtgNqNWl.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-zSMmoBVL.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-CjMgcyz8.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-C4sXbbpK.js +1 -1
- pythinker_code-0.38.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-CepbijeW.js +1 -0
- pythinker_code-0.38.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-CepbijeW.js +1 -0
- pythinker_code-0.38.0/src/pythinker_code/web/static/assets/clone-B4kvjSds.js +1 -0
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DuDOLcG7.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-Dqv1mCt3.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-CzvOsRUc.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-CR2FZyUz.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/cytoscape.esm-DeuJvyQ8.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/cytoscape.esm-D5dwn4l0.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-B0x5PJqt.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-B9jVNY_x.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CiZD-Kr6.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-DuyybdAu.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-C5aGMgVW.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-CSZ_ksVb.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-CK1tBLlx.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-Dgpd-oZ6.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-CZcEYunb.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-Cd0zP9fP.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-BTwLgJ1W.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-Bqwo9Ara.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-CG-h-rFD.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-Dxe7Uocg.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-Dboe-8V6.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-Q6yn2jbs.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/graph-tZ08HzZK.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/graph-BybxndaV.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/index-nZn6VWSI.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/index-BQHQEA8F.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/index-D-5_8ubL.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/index-BVd-Bycq.js +2 -2
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/index-7bl4QiO-.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/index-DKTUnhbr.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-DPDBxfuh.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-DI2RDWbh.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-DvsTXFGC.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-BqQ7Dvvm.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-D5-VFkqZ.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-BPccIg1v.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/layout-BEBRMmSj.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/layout-CSrIC4Vq.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/linear-BvgwzI0z.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/linear-C_3WpyMc.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-Da46mOn1.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DM2BzDod.js +7 -7
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/mermaid.core-Qo_GUYb1.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/mermaid.core-DPSgMwbO.js +5 -5
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/min-BZ6414pQ.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/min-DZ3sIpp2.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-oDcN0Um4.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-DczlfBvF.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-COleeNW3.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-D-_VWH3r.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-Z_hPRdQB.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-DzPGSECX.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-B1Wue_A0.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-vsOCSwmc.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-Cf_-8OQi.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-_BR6NVxk.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-DCdMybhM.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-D_3H2C9P.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-CDtEvTSy.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-CGDykGEu.js +1 -1
- pythinker_code-0.38.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-CRucGuif.js +1 -0
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-L4SN0Qzd.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-YucEdXUF.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-CRV86YVy.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-B0z7EXEq.js +1 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-B7g7WH25.js → pythinker_code-0.38.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-BF_eOJlE.js +1 -1
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/index.html +1 -1
- pythinker_code-0.36.0/src/pythinker_code/prompts/compact.md +0 -73
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/channel-B7BYgmgq.js +0 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-77NIBCwu.js +0 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-77NIBCwu.js +0 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/clone-DyMU09Zo.js +0 -1
- pythinker_code-0.36.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-DTR50mz5.js +0 -1
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/LICENSE +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/NOTICE +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/review.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/app.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/alibaba.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/moonshot.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/openai.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/auth/z_ai.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/agent_runner.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/manager.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/vis.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/config.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/feedback.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/feedback_repo.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/hooks/events.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/hooks/runner.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/memory/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/memory/consolidation.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/memory/harvest.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/memory/recall.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/memory/recap.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/memory/retriever.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/memory/sanitize.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/native.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/project_memory.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/scratchpad.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/session_cleanup.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/session_recap.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/session_state.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/approval.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/deliberation.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/soul/slash.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/discovery.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/models.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/runner.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/subagents/store.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/config.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/thinking.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/agent/description.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/read.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/replace.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/file/write.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/memory/memory.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/shell/bash.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/debug.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/echo.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/motion.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selector.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/setup.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/slash.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/startup.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/stats_collector.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/update.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/theme.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/gitignore.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/api/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/api/sessions.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/api/statistics.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/api/system.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/app.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/vis/static/index.html +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-YVZJy7__.css +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/install.ps1 +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/install.sh +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/server.py +0 -0
- {pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/wire/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pythinker-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.38.0
|
|
4
4
|
Summary: Pythinker — an agentic CLI developed by Pythoughts-labs.
|
|
5
5
|
Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
|
|
6
6
|
Author: Pythoughts-labs
|
|
@@ -30,8 +30,8 @@ Requires-Dist: pillow==12.2.0
|
|
|
30
30
|
Requires-Dist: pyyaml==6.0.3
|
|
31
31
|
Requires-Dist: rich==15.0.0
|
|
32
32
|
Requires-Dist: certifi>=2025.10.5
|
|
33
|
-
Requires-Dist: click==8.3.0
|
|
34
33
|
Requires-Dist: pyperclip==1.11.0
|
|
34
|
+
Requires-Dist: click==8.3.0
|
|
35
35
|
Requires-Dist: streamingjson==0.0.5
|
|
36
36
|
Requires-Dist: trafilatura==2.0.0
|
|
37
37
|
Requires-Dist: lxml==6.1.1
|
|
@@ -115,13 +115,14 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
118
|
-
## 🆕 What's New in 0.
|
|
118
|
+
## 🆕 What's New in 0.38.0
|
|
119
119
|
|
|
120
|
-
- **
|
|
121
|
-
- **Alibaba
|
|
122
|
-
- **
|
|
120
|
+
- **Quieter `/login`.** The login prompt handoff no longer emits a `RuntimeWarning` about an un-awaited `redraw_in_future` coroutine; the redraw throttle now uses a coroutine-free path.
|
|
121
|
+
- **Alibaba `/usage` reporting.** A dedicated Alibaba usage adapter means an Alibaba login now produces a populated cost/quota panel instead of the no-adapter fallback.
|
|
122
|
+
- **Live pricing from models.dev.** `/usage` and the session stats panel pull per-model pricing from the models.dev catalog (cached 24h) for more accurate cost estimates.
|
|
123
|
+
- **More robust ripgrep resolution.** File search verifies a bundled `rg` can actually run on the host platform and architecture before using it, falling back to a system or freshly downloaded ripgrep otherwise.
|
|
123
124
|
|
|
124
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
125
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.38.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
125
126
|
|
|
126
127
|
|
|
127
128
|
---
|
|
@@ -211,7 +212,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
211
212
|
|
|
212
213
|
| Platform | Recommended install | Artifact source |
|
|
213
214
|
|---|---|---|
|
|
214
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
215
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.38.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
215
216
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
216
217
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
217
218
|
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
|
|
@@ -239,7 +240,7 @@ pythinker # start the interactive TUI
|
|
|
239
240
|
|
|
240
241
|
### 🪟 Windows — native installer
|
|
241
242
|
|
|
242
|
-
`PythinkerSetup-0.
|
|
243
|
+
`PythinkerSetup-0.38.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
243
244
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
244
245
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
245
246
|
the change. **No UAC prompt.**
|
|
@@ -250,13 +251,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
250
251
|
|
|
251
252
|
# Or manually download the installer + checksum from the Releases page,
|
|
252
253
|
# verify with Get-FileHash, then run:
|
|
253
|
-
.\PythinkerSetup-0.
|
|
254
|
+
.\PythinkerSetup-0.38.0.exe
|
|
254
255
|
|
|
255
256
|
# Open a fresh PowerShell
|
|
256
257
|
pythinker --version
|
|
257
258
|
```
|
|
258
259
|
|
|
259
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
260
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.38.0.exe /ALLUSERS`
|
|
260
261
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
261
262
|
|
|
262
263
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -307,26 +308,26 @@ attached to every GitHub Release.
|
|
|
307
308
|
|
|
308
309
|
```sh
|
|
309
310
|
# Debian / Ubuntu (x86_64)
|
|
310
|
-
sudo dpkg -i pythinker-code_0.
|
|
311
|
+
sudo dpkg -i pythinker-code_0.38.0_amd64.deb
|
|
311
312
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
312
313
|
|
|
313
314
|
# Debian / Ubuntu (ARM64)
|
|
314
|
-
sudo dpkg -i pythinker-code_0.
|
|
315
|
+
sudo dpkg -i pythinker-code_0.38.0_arm64.deb
|
|
315
316
|
|
|
316
317
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
317
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
318
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
319
|
-
sha256sum -c pythinker-code-0.
|
|
318
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.x86_64.rpm
|
|
319
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.x86_64.rpm.sha256
|
|
320
|
+
sha256sum -c pythinker-code-0.38.0.x86_64.rpm.sha256
|
|
320
321
|
# Fedora / RHEL:
|
|
321
|
-
sudo dnf install ./pythinker-code-0.
|
|
322
|
+
sudo dnf install ./pythinker-code-0.38.0.x86_64.rpm
|
|
322
323
|
# openSUSE:
|
|
323
|
-
sudo zypper install ./pythinker-code-0.
|
|
324
|
+
sudo zypper install ./pythinker-code-0.38.0.x86_64.rpm
|
|
324
325
|
|
|
325
326
|
# Fedora / RHEL (aarch64)
|
|
326
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
327
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
328
|
-
sha256sum -c pythinker-code-0.
|
|
329
|
-
sudo dnf install ./pythinker-code-0.
|
|
327
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.aarch64.rpm
|
|
328
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.aarch64.rpm.sha256
|
|
329
|
+
sha256sum -c pythinker-code-0.38.0.aarch64.rpm.sha256
|
|
330
|
+
sudo dnf install ./pythinker-code-0.38.0.aarch64.rpm
|
|
330
331
|
```
|
|
331
332
|
|
|
332
333
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -335,8 +336,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
335
336
|
**Verify before install:**
|
|
336
337
|
|
|
337
338
|
```sh
|
|
338
|
-
sha256sum -c pythinker-code_0.
|
|
339
|
-
sha256sum -c pythinker-code-0.
|
|
339
|
+
sha256sum -c pythinker-code_0.38.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
340
|
+
sha256sum -c pythinker-code-0.38.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
340
341
|
```
|
|
341
342
|
|
|
342
343
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -50,13 +50,14 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
## 🆕 What's New in 0.
|
|
53
|
+
## 🆕 What's New in 0.38.0
|
|
54
54
|
|
|
55
|
-
- **
|
|
56
|
-
- **Alibaba
|
|
57
|
-
- **
|
|
55
|
+
- **Quieter `/login`.** The login prompt handoff no longer emits a `RuntimeWarning` about an un-awaited `redraw_in_future` coroutine; the redraw throttle now uses a coroutine-free path.
|
|
56
|
+
- **Alibaba `/usage` reporting.** A dedicated Alibaba usage adapter means an Alibaba login now produces a populated cost/quota panel instead of the no-adapter fallback.
|
|
57
|
+
- **Live pricing from models.dev.** `/usage` and the session stats panel pull per-model pricing from the models.dev catalog (cached 24h) for more accurate cost estimates.
|
|
58
|
+
- **More robust ripgrep resolution.** File search verifies a bundled `rg` can actually run on the host platform and architecture before using it, falling back to a system or freshly downloaded ripgrep otherwise.
|
|
58
59
|
|
|
59
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
60
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.38.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
60
61
|
|
|
61
62
|
|
|
62
63
|
---
|
|
@@ -146,7 +147,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
146
147
|
|
|
147
148
|
| Platform | Recommended install | Artifact source |
|
|
148
149
|
|---|---|---|
|
|
149
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
150
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.38.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
150
151
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
151
152
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
152
153
|
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
|
|
@@ -174,7 +175,7 @@ pythinker # start the interactive TUI
|
|
|
174
175
|
|
|
175
176
|
### 🪟 Windows — native installer
|
|
176
177
|
|
|
177
|
-
`PythinkerSetup-0.
|
|
178
|
+
`PythinkerSetup-0.38.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
178
179
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
179
180
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
180
181
|
the change. **No UAC prompt.**
|
|
@@ -185,13 +186,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
185
186
|
|
|
186
187
|
# Or manually download the installer + checksum from the Releases page,
|
|
187
188
|
# verify with Get-FileHash, then run:
|
|
188
|
-
.\PythinkerSetup-0.
|
|
189
|
+
.\PythinkerSetup-0.38.0.exe
|
|
189
190
|
|
|
190
191
|
# Open a fresh PowerShell
|
|
191
192
|
pythinker --version
|
|
192
193
|
```
|
|
193
194
|
|
|
194
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
195
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.38.0.exe /ALLUSERS`
|
|
195
196
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
196
197
|
|
|
197
198
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -242,26 +243,26 @@ attached to every GitHub Release.
|
|
|
242
243
|
|
|
243
244
|
```sh
|
|
244
245
|
# Debian / Ubuntu (x86_64)
|
|
245
|
-
sudo dpkg -i pythinker-code_0.
|
|
246
|
+
sudo dpkg -i pythinker-code_0.38.0_amd64.deb
|
|
246
247
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
247
248
|
|
|
248
249
|
# Debian / Ubuntu (ARM64)
|
|
249
|
-
sudo dpkg -i pythinker-code_0.
|
|
250
|
+
sudo dpkg -i pythinker-code_0.38.0_arm64.deb
|
|
250
251
|
|
|
251
252
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
252
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
253
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
254
|
-
sha256sum -c pythinker-code-0.
|
|
253
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.x86_64.rpm
|
|
254
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.x86_64.rpm.sha256
|
|
255
|
+
sha256sum -c pythinker-code-0.38.0.x86_64.rpm.sha256
|
|
255
256
|
# Fedora / RHEL:
|
|
256
|
-
sudo dnf install ./pythinker-code-0.
|
|
257
|
+
sudo dnf install ./pythinker-code-0.38.0.x86_64.rpm
|
|
257
258
|
# openSUSE:
|
|
258
|
-
sudo zypper install ./pythinker-code-0.
|
|
259
|
+
sudo zypper install ./pythinker-code-0.38.0.x86_64.rpm
|
|
259
260
|
|
|
260
261
|
# Fedora / RHEL (aarch64)
|
|
261
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
262
|
-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.
|
|
263
|
-
sha256sum -c pythinker-code-0.
|
|
264
|
-
sudo dnf install ./pythinker-code-0.
|
|
262
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.aarch64.rpm
|
|
263
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.38.0/pythinker-code-0.38.0.aarch64.rpm.sha256
|
|
264
|
+
sha256sum -c pythinker-code-0.38.0.aarch64.rpm.sha256
|
|
265
|
+
sudo dnf install ./pythinker-code-0.38.0.aarch64.rpm
|
|
265
266
|
```
|
|
266
267
|
|
|
267
268
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -270,8 +271,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
270
271
|
**Verify before install:**
|
|
271
272
|
|
|
272
273
|
```sh
|
|
273
|
-
sha256sum -c pythinker-code_0.
|
|
274
|
-
sha256sum -c pythinker-code-0.
|
|
274
|
+
sha256sum -c pythinker-code_0.38.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
275
|
+
sha256sum -c pythinker-code-0.38.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
275
276
|
```
|
|
276
277
|
|
|
277
278
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pythinker-code"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.38.0"
|
|
4
4
|
description = "Pythinker — an agentic CLI developed by Pythoughts-labs."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -34,8 +34,11 @@ dependencies = [
|
|
|
34
34
|
"pyyaml==6.0.3",
|
|
35
35
|
"rich==15.0.0",
|
|
36
36
|
"certifi>=2025.10.5",
|
|
37
|
-
"click==8.3.0",
|
|
38
37
|
"pyperclip==1.11.0",
|
|
38
|
+
# Pinned: click 8.4.x regresses pyright (`click.Option` typed partially
|
|
39
|
+
# unknown, ~95 errors in `make check`). Unpin once that type regression is
|
|
40
|
+
# fixed upstream. Mirrored as a Dependabot ignore in .github/dependabot.yml.
|
|
41
|
+
"click==8.3.0",
|
|
39
42
|
"streamingjson==0.0.5",
|
|
40
43
|
"trafilatura==2.0.0",
|
|
41
44
|
# lxml is used by trafilatura/htmldate/justext; keep pinned for binary wheels.
|
|
@@ -73,6 +76,9 @@ dev = [
|
|
|
73
76
|
"pytest>=9.0.3",
|
|
74
77
|
"pytest-asyncio>=1.3.0",
|
|
75
78
|
"pytest-cov>=6.0",
|
|
79
|
+
# Pinned: ruff 0.15's formatter reflow fails `make check`. Unpin once the
|
|
80
|
+
# formatting churn is resolved. Mirrored as a Dependabot ignore in
|
|
81
|
+
# .github/dependabot.yml.
|
|
76
82
|
"ruff>=0.14.10,<0.15",
|
|
77
83
|
]
|
|
78
84
|
|
|
@@ -15,6 +15,26 @@ GitHub Releases page; `0.8.0` is the new starting line.
|
|
|
15
15
|
|
|
16
16
|
## Unreleased
|
|
17
17
|
|
|
18
|
+
## 0.38.0 (2026-06-08)
|
|
19
|
+
|
|
20
|
+
- **Quieter `/login`.** Logging in no longer prints a `RuntimeWarning` about an un-awaited `redraw_in_future` coroutine. The prompt redraw throttle now uses a coroutine-free path (`max_render_postpone_time`), eliminating the warning emitted during the login prompt handoff.
|
|
21
|
+
- **Alibaba usage reporting.** `/usage` now ships a dedicated Alibaba adapter, so logging in with an Alibaba key produces a populated cost/quota panel instead of falling through to the no-adapter branch.
|
|
22
|
+
- **Live model pricing from models.dev.** Cost estimates in `/usage` and the session stats panel now pull per-model input/output pricing from the models.dev catalog (fetched once and cached for 24 hours), improving cost accuracy across providers.
|
|
23
|
+
- **More robust ripgrep resolution.** File search now verifies that a bundled `rg` binary can actually execute on the host platform and architecture before using it, falling back to a system or freshly downloaded ripgrep when the bundled one cannot run — fixing search failures on mismatched-architecture installs.
|
|
24
|
+
|
|
25
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.38.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
26
|
+
|
|
27
|
+
## 0.37.0 (2026-06-07)
|
|
28
|
+
|
|
29
|
+
- **Agent runtime tool visibility hardening.** `PythinkerToolset` now filters the tools advertised to the model by active execution policy, permission profile, root/subagent role, and plan-mode state while preserving execution-time guards as defense in depth.
|
|
30
|
+
- **Agent design upgrades.** Agent specs now carry mode/hidden/step/model-parameter metadata, built-in `ask` and `debug` primary agents are selectable with `--agent`, the new `scout` subagent handles external docs/API freshness research, and compaction summaries use a stable handoff-oriented structure.
|
|
31
|
+
- **Prompt-injection defense: `UntrustedData` wrapper.** All external content returned by `ReadFile` and `FetchURL` is now wrapped in `<untrusted_data id="NONCE">…</untrusted_data>` tags before being passed to the LLM, providing a clear boundary between trusted instructions and untrusted file/web content. The `UntrustedData` primitive escapes embedded closing tags to prevent breakout attacks.
|
|
32
|
+
- **Agent boundary artifacts.** New `CodingArtifact` / `VerificationResult` and `VulnerabilityArtifact` / `AuditVerdict` frozen dataclasses in `pythinker_code.utils.artifacts` enforce a typed information barrier between coder and verifier subagents.
|
|
33
|
+
- **Recon-first `planner` subagent.** A new read-only `planner` built-in agent type decomposes open-ended tasks into distinct parallel seed descriptions emitted as `<recon_seeds>` JSON, enabling structured fan-out before parallel workers start.
|
|
34
|
+
- **Coder artifact contract.** The `coder` subagent now emits a `<coding_artifact>` JSON block at the end of every response, providing structured handoff data (`files_changed`, `test_command`, `expected_behavior`, optional `edge_cases_claimed`) that the `verifier` subagent can consume directly.
|
|
35
|
+
|
|
36
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.37.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
37
|
+
|
|
18
38
|
## 0.36.0 (2026-06-05)
|
|
19
39
|
|
|
20
40
|
- **Alibaba DashScope multi-region fallback.** Logging in with a China-region key (`dashscope.aliyuncs.com`) against the default US Virginia endpoint now auto-detects the mismatch and reconfigures for the correct endpoint rather than failing with a misleading "API key is wrong" error.
|
{pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/agent.yaml
RENAMED
|
@@ -47,6 +47,12 @@ agent:
|
|
|
47
47
|
plan:
|
|
48
48
|
path: ./plan.yaml
|
|
49
49
|
description: "Read-only implementation planning and architecture design."
|
|
50
|
+
planner:
|
|
51
|
+
path: ./planner.yaml
|
|
52
|
+
description: "Read-only recon planner that decomposes tasks into distinct parallel seeds."
|
|
53
|
+
scout:
|
|
54
|
+
path: ./scout.yaml
|
|
55
|
+
description: "Read-only external docs, dependency-source, and API freshness researcher."
|
|
50
56
|
review:
|
|
51
57
|
path: ./review.yaml
|
|
52
58
|
description: "Read-only code review with severity-scored findings."
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
extend: ./agent.yaml
|
|
4
|
+
name: "ask"
|
|
5
|
+
mode: primary
|
|
6
|
+
system_prompt_args:
|
|
7
|
+
ROLE_ADDITIONAL: |
|
|
8
|
+
You are in Ask mode: a read-only assistant for answering questions, explaining code,
|
|
9
|
+
and recommending next steps without modifying files.
|
|
10
|
+
|
|
11
|
+
Ask-mode rules:
|
|
12
|
+
- Do not edit files, write plans to disk, launch mutating tools, commit, stage, push, or run commands that modify the system.
|
|
13
|
+
- Use repository evidence before answering codebase, architecture, debugging, or configuration questions.
|
|
14
|
+
- Use direct reads for known files and exploration subagents or searches for broader questions.
|
|
15
|
+
- If the user asks for implementation, explain the likely approach and say they should switch to the default/code agent or explicitly ask you to proceed with changes.
|
|
16
|
+
- Keep answers concise and cite paths or commands when they are load-bearing.
|
|
17
|
+
|
|
18
|
+
Final response contract:
|
|
19
|
+
- Start with the direct answer.
|
|
20
|
+
- Include evidence bullets only when the answer depends on repository inspection.
|
|
21
|
+
- End with blockers only if missing context prevents a reliable answer.
|
|
22
|
+
when_to_use: |
|
|
23
|
+
Use as a primary read-only mode for answering questions and explaining code without changing the workspace.
|
|
24
|
+
allowed_tools:
|
|
25
|
+
- "pythinker_code.tools.agent:Agent"
|
|
26
|
+
- "pythinker_code.tools.agent:RunAgents"
|
|
27
|
+
- "pythinker_code.tools.skill:ReadSkill"
|
|
28
|
+
- "pythinker_code.tools.ask_user:AskUserQuestion"
|
|
29
|
+
- "pythinker_code.tools.file:ReadFile"
|
|
30
|
+
- "pythinker_code.tools.file:ReadMediaFile"
|
|
31
|
+
- "pythinker_code.tools.file:Glob"
|
|
32
|
+
- "pythinker_code.tools.file:Grep"
|
|
33
|
+
- "pythinker_code.tools.file:SmartSearch"
|
|
34
|
+
- "pythinker_code.tools.web:SearchWeb"
|
|
35
|
+
- "pythinker_code.tools.web:FetchURL"
|
|
36
|
+
exclude_tools:
|
|
37
|
+
- "pythinker_code.tools.todo:SetTodoList"
|
|
38
|
+
- "pythinker_code.tools.memory:Memory"
|
|
39
|
+
- "pythinker_code.tools.scratchpad:Scratchpad"
|
|
40
|
+
- "pythinker_code.tools.background:TaskInput"
|
|
41
|
+
- "pythinker_code.tools.background:TaskHandoff"
|
|
42
|
+
- "pythinker_code.tools.background:TaskStop"
|
|
43
|
+
- "pythinker_code.tools.file:WriteFile"
|
|
44
|
+
- "pythinker_code.tools.file:StrReplaceFile"
|
|
45
|
+
- "pythinker_code.tools.plan:ExitPlanMode"
|
|
46
|
+
- "pythinker_code.tools.plan.enter:EnterPlanMode"
|
|
47
|
+
subagents:
|
|
48
|
+
explore:
|
|
49
|
+
path: ./explore.yaml
|
|
50
|
+
description: "Fast codebase exploration with prompt-enforced read-only behavior."
|
|
51
|
+
plan:
|
|
52
|
+
path: ./plan.yaml
|
|
53
|
+
description: "Read-only implementation planning and architecture design."
|
|
54
|
+
review:
|
|
55
|
+
path: ./review.yaml
|
|
56
|
+
description: "Read-only code review with severity-scored findings."
|
|
57
|
+
debugger:
|
|
58
|
+
path: ./debugger.yaml
|
|
59
|
+
description: "Failure/log/stack-trace root-cause analysis with reproduction evidence."
|
|
60
|
+
judge:
|
|
61
|
+
path: ./judge.yaml
|
|
62
|
+
description: "Independent final quality gate for answers and reports."
|
{pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/coder.yaml
RENAMED
|
@@ -31,6 +31,21 @@ agent:
|
|
|
31
31
|
Bullet list of remaining risks or `None observed.`.
|
|
32
32
|
### BLOCKERS
|
|
33
33
|
Bullet list of anything that stopped completion, or `None.`.
|
|
34
|
+
|
|
35
|
+
Artifact contract: Before finishing, you MUST emit your result as a structured artifact.
|
|
36
|
+
Wrap it in <coding_artifact> tags on its own line at the very end of your final message:
|
|
37
|
+
|
|
38
|
+
<coding_artifact>
|
|
39
|
+
{
|
|
40
|
+
"files_changed": ["path/to/file.py"],
|
|
41
|
+
"test_command": "make test",
|
|
42
|
+
"expected_behavior": "...",
|
|
43
|
+
"edge_cases_claimed": ["..."]
|
|
44
|
+
}
|
|
45
|
+
</coding_artifact>
|
|
46
|
+
|
|
47
|
+
Do not include reasoning, logs, or intermediate output inside the tags — only the JSON fields above.
|
|
48
|
+
The `edge_cases_claimed` key is optional; omit it if you have no distinct edge cases to claim.
|
|
34
49
|
when_to_use: |
|
|
35
50
|
Use this agent for non-trivial software engineering work that may require reading files, editing code, running commands, and returning a compact but technically complete summary to the parent agent.
|
|
36
51
|
allowed_tools:
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
extend: ./agent.yaml
|
|
4
|
+
name: "debug"
|
|
5
|
+
mode: primary
|
|
6
|
+
system_prompt_args:
|
|
7
|
+
ROLE_ADDITIONAL: |
|
|
8
|
+
You are in Debug mode: a systematic root-cause diagnostician.
|
|
9
|
+
|
|
10
|
+
Debug-mode protocol:
|
|
11
|
+
- Start by identifying 5-7 plausible causes, then narrow to the 1-2 most likely from evidence.
|
|
12
|
+
- Reproduce or inspect the failure before proposing a fix whenever a bounded command, log, test, or trace is available.
|
|
13
|
+
- Separate confirmed facts, likely hypotheses, and unknowns.
|
|
14
|
+
- Prefer diagnostic reads, failing tests, logs, recent diffs, callers/callees, and configuration evidence over speculation.
|
|
15
|
+
- Do not make broad refactors. If editing is clearly requested, apply the smallest fix that addresses the confirmed cause and verify it.
|
|
16
|
+
- If the cause is not confirmed, ask for the missing log, failing command, environment, or reproduction steps instead of guessing.
|
|
17
|
+
|
|
18
|
+
Final response contract:
|
|
19
|
+
### SUMMARY
|
|
20
|
+
Likely root cause, confidence, and whether a fix was applied.
|
|
21
|
+
### EVIDENCE
|
|
22
|
+
Concrete logs, commands, files, lines, or reproduction results.
|
|
23
|
+
### CHANGES
|
|
24
|
+
Modified paths and reasons, or `None.`.
|
|
25
|
+
### RISKS
|
|
26
|
+
Alternate hypotheses or residual uncertainty.
|
|
27
|
+
### BLOCKERS
|
|
28
|
+
Missing reproduction context, or `None.`.
|
|
29
|
+
when_to_use: |
|
|
30
|
+
Use as a primary mode for failing tests, runtime errors, stack traces, flaky failures, and debugging requests.
|
|
31
|
+
allowed_tools:
|
|
32
|
+
- "pythinker_code.tools.agent:Agent"
|
|
33
|
+
- "pythinker_code.tools.agent:RunAgents"
|
|
34
|
+
- "pythinker_code.tools.skill:ReadSkill"
|
|
35
|
+
- "pythinker_code.tools.ask_user:AskUserQuestion"
|
|
36
|
+
- "pythinker_code.tools.todo:SetTodoList"
|
|
37
|
+
- "pythinker_code.tools.shell:Shell"
|
|
38
|
+
- "pythinker_code.tools.file:ReadFile"
|
|
39
|
+
- "pythinker_code.tools.file:ReadMediaFile"
|
|
40
|
+
- "pythinker_code.tools.file:Glob"
|
|
41
|
+
- "pythinker_code.tools.file:Grep"
|
|
42
|
+
- "pythinker_code.tools.file:SmartSearch"
|
|
43
|
+
- "pythinker_code.tools.file:WriteFile"
|
|
44
|
+
- "pythinker_code.tools.file:StrReplaceFile"
|
|
45
|
+
- "pythinker_code.tools.web:SearchWeb"
|
|
46
|
+
- "pythinker_code.tools.web:FetchURL"
|
|
47
|
+
exclude_tools:
|
|
48
|
+
- "pythinker_code.tools.memory:Memory"
|
|
49
|
+
- "pythinker_code.tools.scratchpad:Scratchpad"
|
|
50
|
+
- "pythinker_code.tools.plan:ExitPlanMode"
|
|
51
|
+
- "pythinker_code.tools.plan.enter:EnterPlanMode"
|
|
52
|
+
subagents:
|
|
53
|
+
explore:
|
|
54
|
+
path: ./explore.yaml
|
|
55
|
+
description: "Fast codebase exploration with prompt-enforced read-only behavior."
|
|
56
|
+
debugger:
|
|
57
|
+
path: ./debugger.yaml
|
|
58
|
+
description: "Failure/log/stack-trace root-cause analysis with reproduction evidence."
|
|
59
|
+
implementer:
|
|
60
|
+
path: ./implementer.yaml
|
|
61
|
+
description: "Scoped implementation with minimal edits and verification."
|
|
62
|
+
verifier:
|
|
63
|
+
path: ./verifier.yaml
|
|
64
|
+
description: "Read-only validation runner for tests, lint, and builds."
|
|
65
|
+
judge:
|
|
66
|
+
path: ./judge.yaml
|
|
67
|
+
description: "Independent final quality gate for answers, reports, and code-change summaries."
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
extend: ./agent.yaml
|
|
4
|
+
system_prompt_args:
|
|
5
|
+
ROLE_ADDITIONAL: |
|
|
6
|
+
You are now running as a subagent. All the `user` messages are sent by the main agent.
|
|
7
|
+
The main agent cannot see your context, it can only see your last message when you finish.
|
|
8
|
+
|
|
9
|
+
You are a Reconnaissance Planner. Your single objective is to analyze the request and
|
|
10
|
+
break it down into N distinct, non-overlapping task seeds for parallel workers.
|
|
11
|
+
|
|
12
|
+
CRITICAL RULES:
|
|
13
|
+
- Do not solve the problem. Do not write code. Do not fix anything.
|
|
14
|
+
- Each seed must provide a distinct starting angle (different file, subsystem, or hypothesis)
|
|
15
|
+
so that parallel workers exploring them will NOT duplicate effort or converge on the same solution.
|
|
16
|
+
- Aim for 3-5 seeds unless the task is clearly simpler or more complex.
|
|
17
|
+
|
|
18
|
+
Final response contract:
|
|
19
|
+
Your final message must contain ONLY the seeds block below — no preamble, no explanation,
|
|
20
|
+
no content before or after the tags:
|
|
21
|
+
<recon_seeds>
|
|
22
|
+
["seed description 1", "seed description 2", ...]
|
|
23
|
+
</recon_seeds>
|
|
24
|
+
|
|
25
|
+
when_to_use: |
|
|
26
|
+
Use this agent before spawning N parallel workers on a large or open-ended task.
|
|
27
|
+
It partitions the problem space so workers start from distinct vantage points.
|
|
28
|
+
|
|
29
|
+
allowed_tools:
|
|
30
|
+
- "pythinker_code.tools.shell:Shell"
|
|
31
|
+
- "pythinker_code.tools.file:ReadFile"
|
|
32
|
+
- "pythinker_code.tools.file:Glob"
|
|
33
|
+
- "pythinker_code.tools.file:Grep"
|
|
34
|
+
- "pythinker_code.tools.file:SmartSearch"
|
|
35
|
+
exclude_tools:
|
|
36
|
+
- "pythinker_code.tools.agent:Agent"
|
|
37
|
+
- "pythinker_code.tools.ask_user:AskUserQuestion"
|
|
38
|
+
- "pythinker_code.tools.plan:ExitPlanMode"
|
|
39
|
+
- "pythinker_code.tools.plan.enter:EnterPlanMode"
|
|
40
|
+
- "pythinker_code.tools.file:WriteFile"
|
|
41
|
+
- "pythinker_code.tools.file:StrReplaceFile"
|
|
42
|
+
- "pythinker_code.tools.web:SearchWeb"
|
|
43
|
+
- "pythinker_code.tools.web:FetchURL"
|
|
44
|
+
subagents:
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
extend: ./agent.yaml
|
|
4
|
+
system_prompt_args:
|
|
5
|
+
ROLE_ADDITIONAL: |
|
|
6
|
+
You are now running as a subagent. All `user` messages are sent by the main agent. The main agent cannot see your context, only your last message. Treat the parent agent as your caller. Do not ask the end user questions; surface ambiguity in your final summary.
|
|
7
|
+
|
|
8
|
+
You are a read-only scout for external documentation, dependency source, upstream repositories, and third-party APIs.
|
|
9
|
+
|
|
10
|
+
Scout protocol:
|
|
11
|
+
- Prefer official docs, canonical repositories, package metadata, and source code over blog posts or memory.
|
|
12
|
+
- If the task names a library, SDK, cloud service, or framework, verify the current API shape before drawing conclusions.
|
|
13
|
+
- If local dependency source or vendored docs exist, inspect those before web research.
|
|
14
|
+
- Separate verified facts from inferred behavior and stale/unknown areas.
|
|
15
|
+
- Cite exact URLs, file paths, versions, and line ranges where available.
|
|
16
|
+
- Do not modify the user's workspace. Do not install dependencies. Do not clone into the workspace unless explicitly instructed by the parent.
|
|
17
|
+
|
|
18
|
+
Final response contract:
|
|
19
|
+
### SUMMARY
|
|
20
|
+
Direct answer with the strongest verified source.
|
|
21
|
+
### EVIDENCE
|
|
22
|
+
Bullet list of docs, URLs, source paths, versions, or command outputs.
|
|
23
|
+
### CHANGES
|
|
24
|
+
Always write `None.`.
|
|
25
|
+
### RISKS
|
|
26
|
+
Staleness, version mismatches, missing docs, or `None observed.`.
|
|
27
|
+
### BLOCKERS
|
|
28
|
+
Network/auth/access limitations, or `None.`.
|
|
29
|
+
when_to_use: |
|
|
30
|
+
Use this agent for external libraries, SDK docs, upstream source comparisons, API freshness checks, and dependency behavior research.
|
|
31
|
+
allowed_tools:
|
|
32
|
+
- "pythinker_code.tools.shell:Shell"
|
|
33
|
+
- "pythinker_code.tools.file:ReadFile"
|
|
34
|
+
- "pythinker_code.tools.file:ReadMediaFile"
|
|
35
|
+
- "pythinker_code.tools.file:Glob"
|
|
36
|
+
- "pythinker_code.tools.file:Grep"
|
|
37
|
+
- "pythinker_code.tools.file:SmartSearch"
|
|
38
|
+
- "pythinker_code.tools.skill:ReadSkill"
|
|
39
|
+
- "pythinker_code.tools.web:SearchWeb"
|
|
40
|
+
- "pythinker_code.tools.web:FetchURL"
|
|
41
|
+
exclude_tools:
|
|
42
|
+
- "pythinker_code.tools.agent:Agent"
|
|
43
|
+
- "pythinker_code.tools.agent:RunAgents"
|
|
44
|
+
- "pythinker_code.tools.ask_user:AskUserQuestion"
|
|
45
|
+
- "pythinker_code.tools.todo:SetTodoList"
|
|
46
|
+
- "pythinker_code.tools.memory:Memory"
|
|
47
|
+
- "pythinker_code.tools.scratchpad:Scratchpad"
|
|
48
|
+
- "pythinker_code.tools.background:TaskInput"
|
|
49
|
+
- "pythinker_code.tools.background:TaskHandoff"
|
|
50
|
+
- "pythinker_code.tools.background:TaskStop"
|
|
51
|
+
- "pythinker_code.tools.file:WriteFile"
|
|
52
|
+
- "pythinker_code.tools.file:StrReplaceFile"
|
|
53
|
+
- "pythinker_code.tools.plan:ExitPlanMode"
|
|
54
|
+
- "pythinker_code.tools.plan.enter:EnterPlanMode"
|
|
55
|
+
subagents:
|
|
@@ -12,6 +12,10 @@ Your product name is **Pythinker** and your developer is **Pythoughts-labs**. Th
|
|
|
12
12
|
|
|
13
13
|
Always write natural-language output in the same language as the user's latest human request, unless the user explicitly asks for another language. This applies to direct replies, plans, review summaries, subagent final summaries, todo text, and continuation/repair responses. If you are a subagent and the parent prompt includes an explicit end-user language or quoted user request, use that; otherwise match the parent prompt's language. Do not switch to a provider/model default language (for example Chinese from Qwen). Keep code, commands, logs, identifiers, paths, and quoted text in their original language unless translation is requested.
|
|
14
14
|
|
|
15
|
+
# CLI Response Style
|
|
16
|
+
|
|
17
|
+
Be direct and technical. Do not start replies with filler such as "Great", "Sure", "Okay", or "Certainly". Avoid unnecessary preamble and postamble; answer the requested thing, cite evidence when it matters, and stop. Do not end routine task-completion responses with open-ended offers for more work. Ask questions only when an answer is required to proceed safely or correctly.
|
|
18
|
+
|
|
15
19
|
Your identity, in order of priority:
|
|
16
20
|
|
|
17
21
|
1. **Code reviewer.** Diff-aware critique with severity-scored findings, anchored to specific files and lines.
|
{pythinker_code-0.36.0 → pythinker_code-0.38.0}/src/pythinker_code/agents/default/verifier.yaml
RENAMED
|
@@ -33,6 +33,17 @@ agent:
|
|
|
33
33
|
Bullet list of likely causes or follow-up fixes, or `None observed.`.
|
|
34
34
|
### BLOCKERS
|
|
35
35
|
Bullet list of missing dependencies, unavailable commands, or `None.`.
|
|
36
|
+
|
|
37
|
+
Artifact receipt: Your input contains a <coding_artifact> block. You will receive ONLY the
|
|
38
|
+
structured fields from the coder — no conversation history, logs, or confidence scores.
|
|
39
|
+
|
|
40
|
+
Your job:
|
|
41
|
+
1. Run artifact.test_command independently via Shell.
|
|
42
|
+
2. Check that observed behavior matches artifact.expected_behavior.
|
|
43
|
+
3. Actively try to break each claim in artifact.edge_cases_claimed.
|
|
44
|
+
4. Report PASS / FAIL / FLAKY based solely on what you observe — not what the coder claimed.
|
|
45
|
+
|
|
46
|
+
Do not ask why the coder made their choices. You have only the artifact.
|
|
36
47
|
when_to_use: |
|
|
37
48
|
Use this agent when the parent needs tests, lint, type checks, builds, or other validation gates run and reported without applying fixes.
|
|
38
49
|
allowed_tools:
|