pythinker-code 0.15.0__tar.gz → 0.17.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.15.0 → pythinker_code-0.17.0}/PKG-INFO +41 -60
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/README.md +40 -59
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/pyproject.toml +1 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/CHANGELOG.md +22 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/system.md +2 -2
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agentspec.py +10 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/app.py +0 -9
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/agent_runner.py +10 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/manager.py +8 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/__init__.py +5 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/events.py +4 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/runner.py +35 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/session_state.py +2 -0
- pythinker_code-0.17.0/src/pythinker_code/soul/compaction_restore.py +287 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/pythinkersoul.py +63 -12
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/slash.py +0 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/discovery.py +8 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/models.py +1 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/runner.py +19 -2
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/store.py +2 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/agent/__init__.py +88 -5
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/agent/description.md +2 -2
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read.md +1 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read.py +10 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/shell/__init__.py +20 -9
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/shell/bash.md +3 -3
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/shell/powershell.md +3 -3
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/__init__.py +70 -50
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/bash_execution.py +6 -3
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/key_hints.py +3 -2
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/markdown.py +102 -2
- pythinker_code-0.17.0/src/pythinker_code/ui/shell/components/panel.py +30 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/render_utils.py +6 -3
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/tool_execution.py +10 -16
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/debug.py +29 -11
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/design_system.py +17 -9
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/export_import.py +14 -10
- pythinker_code-0.17.0/src/pythinker_code/ui/shell/glyphs.py +47 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/keyboard.py +5 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/keymap.py +4 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/mcp_status.py +13 -13
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/model_picker.py +9 -8
- pythinker_code-0.17.0/src/pythinker_code/ui/shell/motion.py +191 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/oauth.py +24 -18
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/prompt.py +97 -26
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selector.py +2 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/setup.py +14 -10
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/slash.py +238 -136
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/startup.py +3 -2
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/task_browser.py +7 -2
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +1 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +1 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +16 -12
- pythinker_code-0.17.0/src/pythinker_code/ui/shell/tool_renderers/agent.py +460 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +2 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +30 -19
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/update.py +100 -98
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage.py +9 -6
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_render.py +20 -13
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +30 -14
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +28 -12
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +9 -6
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +14 -2
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +11 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +154 -12
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +13 -9
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +42 -29
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/theme.py +179 -181
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/diff_render.py +16 -9
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/syntax.py +8 -8
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/_baseUniq-FLikL5oP.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/_baseUniq-qyLZSOfA.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/arc-CH7aTkr9.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/arc-CYkfKUJw.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-DjjsbT9J.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-Cc3dJmlV.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-D00CC7dg.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-HSBk6vox.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-BZ8YW5l9.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-wRemIQog.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/channel-B7CcdrQR.js +1 -0
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-CT51XVd2.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-0esCM_vg.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-D9cOsagU.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-C55bd2_o.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DLU0G-z9.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DJxNZVQC.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-BoYyatMl.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-CEWPxLfs.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-BvtZuN5v.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-DmhbuRTm.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-UzYfy8VX.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-nrPUkuWR.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CkjMyo71.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CzXInrrR.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-FwTnUvW6.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-DREZe46B.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-1oL3irp2.js +1 -0
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-1oL3irp2.js +1 -0
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/clone-aTWLJUtw.js +1 -0
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DEzuAcDQ.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DMVWN-ml.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-GsDbZVos.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-Coir87Qv.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/cytoscape.esm-CyvSsNDx.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/cytoscape.esm-eAWqnCYK.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-Cz8X-74N.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-CiTUIg0q.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-GfM-PGgf.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-Cq9GXOjk.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-C1ELKuDf.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-Eamm6xAa.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-BnjnqEbK.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-DA1Yz6Pa.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-DhduFnCm.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-DzlJ-wwC.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-Cz66XZ8r.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-Bz9U20to.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-D2ZFH9bE.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-fsG79E9p.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-CjbNsL7k.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-BjchK9W1.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/graph-DJoi1jP0.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/graph-DbF6cZU0.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/index-Cjy8jHlq.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-BLAcYwJO.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/index-B5iJX3GK.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-BgIGGFpA.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/index-CwS0EXkr.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-Brd7Qj46.js +2 -2
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-CY1rxXp5.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-CYSDBUZQ.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-CIoAb7p1.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-BeF28JOm.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-Cv0RkQOy.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-BVAC2O5Q.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/layout-By6G60Po.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/layout-DNSNr4If.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/linear-B2R4zVv-.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/linear-HQWQZMSq.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-Bl-SdXa2.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BeS6uII_.js +7 -7
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/mermaid.core-DZmvwVNs.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mermaid.core-CsiBWAvS.js +5 -5
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/min-ayt5ZU-J.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/min-z2ooYt5Q.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-CBnIEP6L.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-BrkkNtDO.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-vMh5x4GJ.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-C0odTEkg.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-ngAbPtkD.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-Daco3FUa.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-C8VB4e1y.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-vOrTEG8b.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-DO_AEX2X.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-BVExYdTG.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-BhW0R8OX.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-BkPzuwcM.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-l1IzipMH.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-Bontz6tD.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-vD5xTSoN.js +1 -0
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-VlHp4E46.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-CxfiYDXf.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-CD_xN-Le.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-B-wzCRqq.js +1 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-DD9WyEHn.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-DIGOnUa7.js +1 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/index.html +1 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/install.ps1 +1 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/install.sh +1 -1
- pythinker_code-0.15.0/src/pythinker_code/ui/shell/glyphs.py +0 -31
- pythinker_code-0.15.0/src/pythinker_code/ui/shell/motion.py +0 -122
- pythinker_code-0.15.0/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -148
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/channel-ChLkGicq.js +0 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-CVLXpajg.js +0 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-CVLXpajg.js +0 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/clone-Bb8bPI91.js +0 -1
- pythinker_code-0.15.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-uNOmVN18.js +0 -1
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/LICENSE +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/NOTICE +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/review.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/openai.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/vis.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/config.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/native.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/agent.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/approval.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/toolset.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/config.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/replace.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/write.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/echo.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/sessions.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/statistics.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/system.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/app.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/index.html +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2P5VJ9v.css +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/server.py +0 -0
- {pythinker_code-0.15.0 → pythinker_code-0.17.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.17.0
|
|
4
4
|
Summary: Pythinker Code is your next CLI agent.
|
|
5
5
|
Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
|
|
6
6
|
Author: Mohamed Elkholy
|
|
@@ -80,7 +80,6 @@ Description-Content-Type: text/markdown
|
|
|
80
80
|
[](https://github.com/mohamed-elkholy95/Pythinker-Code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
|
|
81
81
|
|
|
82
82
|
[](https://pepy.tech/projects/pythinker-code)
|
|
83
|
-
[](https://pythinker.com)
|
|
84
83
|
[](https://docs.astral.sh/ruff/)
|
|
85
84
|
[](https://github.com/agentclientprotocol/agent-client-protocol)
|
|
86
85
|
[](https://modelcontextprotocol.io/)
|
|
@@ -116,13 +115,15 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
116
115
|
|
|
117
116
|
---
|
|
118
117
|
|
|
119
|
-
## 🆕 What's New in 0.
|
|
118
|
+
## 🆕 What's New in 0.17.0
|
|
120
119
|
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
123
|
-
- **
|
|
120
|
+
- **Sharper compaction continuity.** PreCompact now carries custom instructions, restores skill and hook context after compaction, triggers SessionStart after restore, and preserves the `Conversation compacted.` handoff so long sessions resume cleanly.
|
|
121
|
+
- **Better subagent orchestration.** Subagent specs merge inherited subagent maps, launches preserve parent-agent IDs for spawn-tree tracking, RunAgents fingerprints include agent names, and markdown agent discovery warns on unknown models instead of silently falling back.
|
|
122
|
+
- **Polished terminal workflow.** The shell adopts the robot-brand palette, compact transcript/agent/file-mention menus, pinned live todo activity, calmer tool output, and safer auto-backgrounding for long shell commands.
|
|
123
|
+
- **Release and installer hardening.** Interactive sessions show a blocking pre-start update prompt, update exits wait for acknowledgement, Homebrew publish retries package installs, and native installers gain a friendlier animated path with Windows User PATH automation.
|
|
124
|
+
- **Provider compatibility refresh.** Anthropic SDK support is updated for 0.101 tool-result block types so direct Anthropic sessions continue to stream tool output correctly.
|
|
124
125
|
|
|
125
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
126
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.17.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
|
|
126
127
|
|
|
127
128
|
|
|
128
129
|
---
|
|
@@ -210,15 +211,13 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
|
|
|
210
211
|
Pythinker ships **native installers for every platform**. Pick the row that
|
|
211
212
|
matches your OS — no Python, Node, or `uv` prerequisite.
|
|
212
213
|
|
|
213
|
-
| Platform |
|
|
214
|
+
| Platform | Recommended install | Artifact source |
|
|
214
215
|
|---|---|---|
|
|
215
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` |
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
|
|
|
219
|
-
|
|
|
220
|
-
| **🌐 macOS / Linux — curl-bash** | `curl -fsSL https://pythinker.com/install.sh \| bash` | tarball |
|
|
221
|
-
| **🐍 Python fallback** (universal) | `pip install pythinker-code` | PyPI |
|
|
216
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.17.0.exe` from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
217
|
+
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
218
|
+
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install mohamed-elkholy95/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
219
|
+
| **<img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system package** | Download the `.deb` or `.rpm` for your distro below | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
220
|
+
| **🐍 Python fallback** | `pip install pythinker-code` | PyPI |
|
|
222
221
|
|
|
223
222
|
Every artifact ships with a matching `.sha256` file — verify before install on
|
|
224
223
|
any platform with `sha256sum`, `shasum -a 256`, or `Get-FileHash`.
|
|
@@ -239,7 +238,7 @@ pythinker # start the interactive TUI
|
|
|
239
238
|
|
|
240
239
|
### 🪟 Windows — native installer
|
|
241
240
|
|
|
242
|
-
`PythinkerSetup-0.
|
|
241
|
+
`PythinkerSetup-0.17.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
243
242
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
244
243
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
245
244
|
the change. **No UAC prompt.**
|
|
@@ -250,13 +249,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
250
249
|
|
|
251
250
|
# Or manually download the installer + checksum from the Releases page,
|
|
252
251
|
# verify with Get-FileHash, then run:
|
|
253
|
-
.\PythinkerSetup-0.
|
|
252
|
+
.\PythinkerSetup-0.17.0.exe
|
|
254
253
|
|
|
255
254
|
# Open a fresh PowerShell
|
|
256
255
|
pythinker --version
|
|
257
256
|
```
|
|
258
257
|
|
|
259
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
258
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.17.0.exe /ALLUSERS`
|
|
260
259
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
261
260
|
|
|
262
261
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -273,7 +272,7 @@ the files and the PATH edit.
|
|
|
273
272
|
|
|
274
273
|
---
|
|
275
274
|
|
|
276
|
-
###
|
|
275
|
+
### <img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew tap
|
|
277
276
|
|
|
278
277
|
```sh
|
|
279
278
|
# 1. Install
|
|
@@ -299,33 +298,33 @@ auto-update; run this whenever you want the latest).
|
|
|
299
298
|
|
|
300
299
|
---
|
|
301
300
|
|
|
302
|
-
###
|
|
301
|
+
### <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system packages
|
|
303
302
|
|
|
304
303
|
Native `.deb` and `.rpm` packages for both `x86_64` and `aarch64` are
|
|
305
304
|
attached to every GitHub Release.
|
|
306
305
|
|
|
307
306
|
```sh
|
|
308
307
|
# Debian / Ubuntu (x86_64)
|
|
309
|
-
sudo dpkg -i pythinker-code_0.
|
|
308
|
+
sudo dpkg -i pythinker-code_0.17.0_amd64.deb
|
|
310
309
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
311
310
|
|
|
312
311
|
# Debian / Ubuntu (ARM64)
|
|
313
|
-
sudo dpkg -i pythinker-code_0.
|
|
312
|
+
sudo dpkg -i pythinker-code_0.17.0_arm64.deb
|
|
314
313
|
|
|
315
314
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
316
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
317
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
318
|
-
sha256sum -c pythinker-code-0.
|
|
315
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.x86_64.rpm
|
|
316
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.x86_64.rpm.sha256
|
|
317
|
+
sha256sum -c pythinker-code-0.17.0.x86_64.rpm.sha256
|
|
319
318
|
# Fedora / RHEL:
|
|
320
|
-
sudo dnf install ./pythinker-code-0.
|
|
319
|
+
sudo dnf install ./pythinker-code-0.17.0.x86_64.rpm
|
|
321
320
|
# openSUSE:
|
|
322
|
-
sudo zypper install ./pythinker-code-0.
|
|
321
|
+
sudo zypper install ./pythinker-code-0.17.0.x86_64.rpm
|
|
323
322
|
|
|
324
323
|
# Fedora / RHEL (aarch64)
|
|
325
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
326
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
327
|
-
sha256sum -c pythinker-code-0.
|
|
328
|
-
sudo dnf install ./pythinker-code-0.
|
|
324
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.aarch64.rpm
|
|
325
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.aarch64.rpm.sha256
|
|
326
|
+
sha256sum -c pythinker-code-0.17.0.aarch64.rpm.sha256
|
|
327
|
+
sudo dnf install ./pythinker-code-0.17.0.aarch64.rpm
|
|
329
328
|
```
|
|
330
329
|
|
|
331
330
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -334,8 +333,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
334
333
|
**Verify before install:**
|
|
335
334
|
|
|
336
335
|
```sh
|
|
337
|
-
sha256sum -c pythinker-code_0.
|
|
338
|
-
sha256sum -c pythinker-code-0.
|
|
336
|
+
sha256sum -c pythinker-code_0.17.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
337
|
+
sha256sum -c pythinker-code-0.17.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
339
338
|
```
|
|
340
339
|
|
|
341
340
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -351,7 +350,7 @@ sudo rpm -e pythinker-code # Fedora/RHEL
|
|
|
351
350
|
|
|
352
351
|
---
|
|
353
352
|
|
|
354
|
-
###
|
|
353
|
+
### <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-bash native installer
|
|
355
354
|
|
|
356
355
|
For containers, fresh VMs, or any host without a system package manager.
|
|
357
356
|
The canonical `https://pythinker.com/install.sh` endpoint is backed by
|
|
@@ -365,7 +364,7 @@ at `~/.local/bin/pythinker`.
|
|
|
365
364
|
curl -fsSL https://pythinker.com/install.sh | bash
|
|
366
365
|
|
|
367
366
|
# Pin a specific version
|
|
368
|
-
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.
|
|
367
|
+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.17.0
|
|
369
368
|
|
|
370
369
|
# Custom prefix (defaults to $HOME/.local)
|
|
371
370
|
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
|
|
@@ -386,9 +385,9 @@ Supported targets:
|
|
|
386
385
|
|
|
387
386
|
| `uname -s / -m` | Tarball asset |
|
|
388
387
|
|---|---|
|
|
389
|
-
| Linux / x86_64 | `pythinker-0.
|
|
390
|
-
| Linux / aarch64 | `pythinker-0.
|
|
391
|
-
| Darwin / arm64 | `pythinker-0.
|
|
388
|
+
| Linux / x86_64 | `pythinker-0.17.0-x86_64-unknown-linux-gnu.tar.gz` |
|
|
389
|
+
| Linux / aarch64 | `pythinker-0.17.0-aarch64-unknown-linux-gnu.tar.gz` |
|
|
390
|
+
| Darwin / arm64 | `pythinker-0.17.0-aarch64-apple-darwin.tar.gz` |
|
|
392
391
|
|
|
393
392
|
The script prints PATH guidance if `~/.local/bin` isn't already on your
|
|
394
393
|
`$PATH`. Intel macOS users — use Homebrew or `pip install pythinker-code`;
|
|
@@ -396,34 +395,16 @@ no PyInstaller-built Intel Darwin binary is published.
|
|
|
396
395
|
|
|
397
396
|
**Uninstall:** `rm ~/.local/bin/pythinker`.
|
|
398
397
|
|
|
399
|
-
###
|
|
398
|
+
### 🐍 Python fallback
|
|
400
399
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
> options below remain for existing automation; new tooling, examples, and
|
|
404
|
-
> support docs target the native installers exclusively.
|
|
405
|
-
|
|
406
|
-
<details>
|
|
407
|
-
<summary>Legacy shell-script wrappers + uv / pipx</summary>
|
|
400
|
+
Use the Python package only when a native installer is not available for your
|
|
401
|
+
environment:
|
|
408
402
|
|
|
409
403
|
```sh
|
|
410
|
-
# Compatibility shim to the native installer
|
|
411
|
-
scripts/install.sh
|
|
412
|
-
# Windows PowerShell native installer bootstrap:
|
|
413
|
-
powershell -c "irm https://pythinker.com/install.ps1 | iex"
|
|
414
|
-
|
|
415
|
-
# Legacy: one-off run via uvx
|
|
416
|
-
uvx pythinker-code
|
|
417
|
-
|
|
418
|
-
# Legacy: install as a uv tool
|
|
419
|
-
uv tool install pythinker-code
|
|
420
|
-
|
|
421
|
-
# Legacy: PyPI directly (universal fallback)
|
|
422
404
|
pip install pythinker-code
|
|
423
|
-
pipx install pythinker-code
|
|
424
405
|
```
|
|
425
406
|
|
|
426
|
-
|
|
407
|
+
Native installs remain the supported path for new users and for in-app updates.
|
|
427
408
|
|
|
428
409
|
### 🔐 Authenticate (optional)
|
|
429
410
|
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
[](https://github.com/mohamed-elkholy95/Pythinker-Code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
|
|
16
16
|
|
|
17
17
|
[](https://pepy.tech/projects/pythinker-code)
|
|
18
|
-
[](https://pythinker.com)
|
|
19
18
|
[](https://docs.astral.sh/ruff/)
|
|
20
19
|
[](https://github.com/agentclientprotocol/agent-client-protocol)
|
|
21
20
|
[](https://modelcontextprotocol.io/)
|
|
@@ -51,13 +50,15 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
51
50
|
|
|
52
51
|
---
|
|
53
52
|
|
|
54
|
-
## 🆕 What's New in 0.
|
|
53
|
+
## 🆕 What's New in 0.17.0
|
|
55
54
|
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
- **
|
|
55
|
+
- **Sharper compaction continuity.** PreCompact now carries custom instructions, restores skill and hook context after compaction, triggers SessionStart after restore, and preserves the `Conversation compacted.` handoff so long sessions resume cleanly.
|
|
56
|
+
- **Better subagent orchestration.** Subagent specs merge inherited subagent maps, launches preserve parent-agent IDs for spawn-tree tracking, RunAgents fingerprints include agent names, and markdown agent discovery warns on unknown models instead of silently falling back.
|
|
57
|
+
- **Polished terminal workflow.** The shell adopts the robot-brand palette, compact transcript/agent/file-mention menus, pinned live todo activity, calmer tool output, and safer auto-backgrounding for long shell commands.
|
|
58
|
+
- **Release and installer hardening.** Interactive sessions show a blocking pre-start update prompt, update exits wait for acknowledgement, Homebrew publish retries package installs, and native installers gain a friendlier animated path with Windows User PATH automation.
|
|
59
|
+
- **Provider compatibility refresh.** Anthropic SDK support is updated for 0.101 tool-result block types so direct Anthropic sessions continue to stream tool output correctly.
|
|
59
60
|
|
|
60
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
61
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.17.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
|
|
61
62
|
|
|
62
63
|
|
|
63
64
|
---
|
|
@@ -145,15 +146,13 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
|
|
|
145
146
|
Pythinker ships **native installers for every platform**. Pick the row that
|
|
146
147
|
matches your OS — no Python, Node, or `uv` prerequisite.
|
|
147
148
|
|
|
148
|
-
| Platform |
|
|
149
|
+
| Platform | Recommended install | Artifact source |
|
|
149
150
|
|---|---|---|
|
|
150
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` |
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
| **🌐 macOS / Linux — curl-bash** | `curl -fsSL https://pythinker.com/install.sh \| bash` | tarball |
|
|
156
|
-
| **🐍 Python fallback** (universal) | `pip install pythinker-code` | PyPI |
|
|
151
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.17.0.exe` from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
152
|
+
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
153
|
+
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install mohamed-elkholy95/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
154
|
+
| **<img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system package** | Download the `.deb` or `.rpm` for your distro below | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
155
|
+
| **🐍 Python fallback** | `pip install pythinker-code` | PyPI |
|
|
157
156
|
|
|
158
157
|
Every artifact ships with a matching `.sha256` file — verify before install on
|
|
159
158
|
any platform with `sha256sum`, `shasum -a 256`, or `Get-FileHash`.
|
|
@@ -174,7 +173,7 @@ pythinker # start the interactive TUI
|
|
|
174
173
|
|
|
175
174
|
### 🪟 Windows — native installer
|
|
176
175
|
|
|
177
|
-
`PythinkerSetup-0.
|
|
176
|
+
`PythinkerSetup-0.17.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
178
177
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
179
178
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
180
179
|
the change. **No UAC prompt.**
|
|
@@ -185,13 +184,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
185
184
|
|
|
186
185
|
# Or manually download the installer + checksum from the Releases page,
|
|
187
186
|
# verify with Get-FileHash, then run:
|
|
188
|
-
.\PythinkerSetup-0.
|
|
187
|
+
.\PythinkerSetup-0.17.0.exe
|
|
189
188
|
|
|
190
189
|
# Open a fresh PowerShell
|
|
191
190
|
pythinker --version
|
|
192
191
|
```
|
|
193
192
|
|
|
194
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
193
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.17.0.exe /ALLUSERS`
|
|
195
194
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
196
195
|
|
|
197
196
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -208,7 +207,7 @@ the files and the PATH edit.
|
|
|
208
207
|
|
|
209
208
|
---
|
|
210
209
|
|
|
211
|
-
###
|
|
210
|
+
### <img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew tap
|
|
212
211
|
|
|
213
212
|
```sh
|
|
214
213
|
# 1. Install
|
|
@@ -234,33 +233,33 @@ auto-update; run this whenever you want the latest).
|
|
|
234
233
|
|
|
235
234
|
---
|
|
236
235
|
|
|
237
|
-
###
|
|
236
|
+
### <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system packages
|
|
238
237
|
|
|
239
238
|
Native `.deb` and `.rpm` packages for both `x86_64` and `aarch64` are
|
|
240
239
|
attached to every GitHub Release.
|
|
241
240
|
|
|
242
241
|
```sh
|
|
243
242
|
# Debian / Ubuntu (x86_64)
|
|
244
|
-
sudo dpkg -i pythinker-code_0.
|
|
243
|
+
sudo dpkg -i pythinker-code_0.17.0_amd64.deb
|
|
245
244
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
246
245
|
|
|
247
246
|
# Debian / Ubuntu (ARM64)
|
|
248
|
-
sudo dpkg -i pythinker-code_0.
|
|
247
|
+
sudo dpkg -i pythinker-code_0.17.0_arm64.deb
|
|
249
248
|
|
|
250
249
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
251
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
252
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
253
|
-
sha256sum -c pythinker-code-0.
|
|
250
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.x86_64.rpm
|
|
251
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.x86_64.rpm.sha256
|
|
252
|
+
sha256sum -c pythinker-code-0.17.0.x86_64.rpm.sha256
|
|
254
253
|
# Fedora / RHEL:
|
|
255
|
-
sudo dnf install ./pythinker-code-0.
|
|
254
|
+
sudo dnf install ./pythinker-code-0.17.0.x86_64.rpm
|
|
256
255
|
# openSUSE:
|
|
257
|
-
sudo zypper install ./pythinker-code-0.
|
|
256
|
+
sudo zypper install ./pythinker-code-0.17.0.x86_64.rpm
|
|
258
257
|
|
|
259
258
|
# Fedora / RHEL (aarch64)
|
|
260
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
261
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
262
|
-
sha256sum -c pythinker-code-0.
|
|
263
|
-
sudo dnf install ./pythinker-code-0.
|
|
259
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.aarch64.rpm
|
|
260
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.17.0/pythinker-code-0.17.0.aarch64.rpm.sha256
|
|
261
|
+
sha256sum -c pythinker-code-0.17.0.aarch64.rpm.sha256
|
|
262
|
+
sudo dnf install ./pythinker-code-0.17.0.aarch64.rpm
|
|
264
263
|
```
|
|
265
264
|
|
|
266
265
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -269,8 +268,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
269
268
|
**Verify before install:**
|
|
270
269
|
|
|
271
270
|
```sh
|
|
272
|
-
sha256sum -c pythinker-code_0.
|
|
273
|
-
sha256sum -c pythinker-code-0.
|
|
271
|
+
sha256sum -c pythinker-code_0.17.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
272
|
+
sha256sum -c pythinker-code-0.17.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
274
273
|
```
|
|
275
274
|
|
|
276
275
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -286,7 +285,7 @@ sudo rpm -e pythinker-code # Fedora/RHEL
|
|
|
286
285
|
|
|
287
286
|
---
|
|
288
287
|
|
|
289
|
-
###
|
|
288
|
+
### <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-bash native installer
|
|
290
289
|
|
|
291
290
|
For containers, fresh VMs, or any host without a system package manager.
|
|
292
291
|
The canonical `https://pythinker.com/install.sh` endpoint is backed by
|
|
@@ -300,7 +299,7 @@ at `~/.local/bin/pythinker`.
|
|
|
300
299
|
curl -fsSL https://pythinker.com/install.sh | bash
|
|
301
300
|
|
|
302
301
|
# Pin a specific version
|
|
303
|
-
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.
|
|
302
|
+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.17.0
|
|
304
303
|
|
|
305
304
|
# Custom prefix (defaults to $HOME/.local)
|
|
306
305
|
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
|
|
@@ -321,9 +320,9 @@ Supported targets:
|
|
|
321
320
|
|
|
322
321
|
| `uname -s / -m` | Tarball asset |
|
|
323
322
|
|---|---|
|
|
324
|
-
| Linux / x86_64 | `pythinker-0.
|
|
325
|
-
| Linux / aarch64 | `pythinker-0.
|
|
326
|
-
| Darwin / arm64 | `pythinker-0.
|
|
323
|
+
| Linux / x86_64 | `pythinker-0.17.0-x86_64-unknown-linux-gnu.tar.gz` |
|
|
324
|
+
| Linux / aarch64 | `pythinker-0.17.0-aarch64-unknown-linux-gnu.tar.gz` |
|
|
325
|
+
| Darwin / arm64 | `pythinker-0.17.0-aarch64-apple-darwin.tar.gz` |
|
|
327
326
|
|
|
328
327
|
The script prints PATH guidance if `~/.local/bin` isn't already on your
|
|
329
328
|
`$PATH`. Intel macOS users — use Homebrew or `pip install pythinker-code`;
|
|
@@ -331,34 +330,16 @@ no PyInstaller-built Intel Darwin binary is published.
|
|
|
331
330
|
|
|
332
331
|
**Uninstall:** `rm ~/.local/bin/pythinker`.
|
|
333
332
|
|
|
334
|
-
###
|
|
333
|
+
### 🐍 Python fallback
|
|
335
334
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
> options below remain for existing automation; new tooling, examples, and
|
|
339
|
-
> support docs target the native installers exclusively.
|
|
340
|
-
|
|
341
|
-
<details>
|
|
342
|
-
<summary>Legacy shell-script wrappers + uv / pipx</summary>
|
|
335
|
+
Use the Python package only when a native installer is not available for your
|
|
336
|
+
environment:
|
|
343
337
|
|
|
344
338
|
```sh
|
|
345
|
-
# Compatibility shim to the native installer
|
|
346
|
-
scripts/install.sh
|
|
347
|
-
# Windows PowerShell native installer bootstrap:
|
|
348
|
-
powershell -c "irm https://pythinker.com/install.ps1 | iex"
|
|
349
|
-
|
|
350
|
-
# Legacy: one-off run via uvx
|
|
351
|
-
uvx pythinker-code
|
|
352
|
-
|
|
353
|
-
# Legacy: install as a uv tool
|
|
354
|
-
uv tool install pythinker-code
|
|
355
|
-
|
|
356
|
-
# Legacy: PyPI directly (universal fallback)
|
|
357
339
|
pip install pythinker-code
|
|
358
|
-
pipx install pythinker-code
|
|
359
340
|
```
|
|
360
341
|
|
|
361
|
-
|
|
342
|
+
Native installs remain the supported path for new users and for in-app updates.
|
|
362
343
|
|
|
363
344
|
### 🔐 Authenticate (optional)
|
|
364
345
|
|
|
@@ -15,6 +15,28 @@ GitHub Releases page; `0.8.0` is the new starting line.
|
|
|
15
15
|
|
|
16
16
|
## Unreleased
|
|
17
17
|
|
|
18
|
+
## 0.17.0 (2026-05-25)
|
|
19
|
+
|
|
20
|
+
### What changed in this release
|
|
21
|
+
|
|
22
|
+
- **Sharper compaction continuity.** PreCompact now carries custom instructions, restores skill and hook context after compaction, triggers SessionStart after restore, and preserves the `Conversation compacted.` handoff so long sessions resume cleanly.
|
|
23
|
+
- **Better subagent orchestration.** Subagent specs merge inherited subagent maps, foreground and background launches preserve parent-agent IDs for spawn-tree tracking, RunAgents fingerprints include agent names, and markdown agent discovery warns on unknown models instead of silently falling back.
|
|
24
|
+
- **Polished terminal workflow.** The shell adopts the robot-brand palette, compact transcript/agent/file-mention menus, pinned live todo activity, calmer tool output, safer auto-backgrounding for long shell commands, and updated render snapshots.
|
|
25
|
+
- **Release and installer hardening.** Interactive sessions show a blocking pre-start update prompt, update exits wait for acknowledgement, Homebrew publish retries package installs, and native installers gain a friendlier animated path with Windows User PATH automation.
|
|
26
|
+
- **Provider compatibility refresh.** Anthropic SDK support is updated for 0.101 tool-result block types so direct Anthropic sessions continue to stream tool output correctly.
|
|
27
|
+
|
|
28
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.17.0`, or use the native installer for your OS (see the README install table).
|
|
29
|
+
|
|
30
|
+
## 0.16.0 (2026-05-24)
|
|
31
|
+
|
|
32
|
+
### What changed in this release
|
|
33
|
+
|
|
34
|
+
- **Standardized native install docs across platforms.** README Quick Start now presents one canonical Windows command (`irm https://pythinker.com/install.ps1 | iex`) and one canonical macOS/Linux command (`curl -fsSL https://pythinker.com/install.sh | bash`) before package-manager/manual alternatives.
|
|
35
|
+
- **Removed old local installer guidance.** User-facing docs no longer advertise legacy local shell wrappers or Python-tool manager shortcuts. `pip install pythinker-code==0.16.0` remains as the universal Python fallback and release-gate snippet.
|
|
36
|
+
- **Aligned release artifact instructions.** Manual Windows, Linux package, and tarball sections all point at `0.16.0` GitHub Release assets and keep SHA-256 verification explicit.
|
|
37
|
+
|
|
38
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.16.0`, or use the native installer for your OS (see the README install table).
|
|
39
|
+
|
|
18
40
|
## 0.15.0 (2026-05-24)
|
|
19
41
|
|
|
20
42
|
### What changed in this release
|
|
@@ -22,9 +22,9 @@ The user's messages may contain questions and/or task descriptions in natural la
|
|
|
22
22
|
|
|
23
23
|
When handling the user's request, if it involves creating, modifying, or running code or files, you MUST use the appropriate tools (e.g., `WriteFile`, `Shell`) to make actual changes — do not just describe the solution in text. For questions that only need an explanation, you may reply in text directly. When calling tools, do not provide explanations because the tool calls themselves should be self-explanatory. You MUST follow the description of each tool and its parameters when calling tools.
|
|
24
24
|
|
|
25
|
-
If the `Agent` tool is available, you can use it to delegate a focused subtask to a subagent instance. Treat subagents as focused roles, not just extra capacity: use `explore` for read-only mapping, `plan` for strategy, `coder` or `implementer` for scoped edits, `review` for severity-scored critique, and `verifier` for validation gates. The tool can either start a new instance or resume an existing one by `agent_id`. Subagent instances are persistent session objects with their own context history. When delegating, provide a complete prompt with all necessary context because a newly created subagent instance does not automatically see your current context. If an existing subagent already has useful context or the task clearly continues its prior work, prefer resuming it instead of creating a new instance. Default to foreground subagents. Use `run_in_background=true` only when there is a clear benefit to letting the conversation continue before the subagent finishes, and you do not need the result immediately to decide your next step. Spawn multiple subagents in the same turn when they can investigate independent regions concurrently.
|
|
25
|
+
If the `Agent` tool is available, you can use it to delegate a focused subtask to a subagent instance. Treat subagents as focused roles, not just extra capacity: use `explore` for read-only mapping, `plan` for strategy, `coder` or `implementer` for scoped edits, `review` for severity-scored critique, and `verifier` for validation gates. The tool can either start a new instance or resume an existing one by `agent_id`. Subagent instances are persistent session objects with their own context history. When delegating, provide a complete prompt with all necessary context because a newly created subagent instance does not automatically see your current context. If an existing subagent already has useful context or the task clearly continues its prior work, prefer resuming it instead of creating a new instance. Default to foreground subagents. Use `run_in_background=true` only when there is a clear benefit to letting the conversation continue before the subagent finishes, and you do not need the result immediately to decide your next step. Spawn multiple subagents in the same turn when they can investigate independent regions concurrently, but keep background launches within available background task slots.
|
|
26
26
|
|
|
27
|
-
If the `RunAgents` tool is available, prefer it over repeated one-by-one `Agent` calls for bounded map-reduce work: parallel scouting, independent review plus verification, or scout/plan/implement/review batches. Keep each child prompt focused and include a shared `base_prompt` with the user goal, repository constraints, and required output format.
|
|
27
|
+
If the `RunAgents` tool is available, prefer it over repeated one-by-one `Agent` calls for bounded map-reduce work: parallel scouting, independent review plus verification, or scout/plan/implement/review batches. Keep each child prompt focused and include a shared `base_prompt` with the user goal, repository constraints, and required output format. In background mode, never request more children than available background task slots; split larger maps into smaller batches or set `run_in_background=false` for sequential foreground execution.
|
|
28
28
|
|
|
29
29
|
If the `ReadSkill` tool is available, use it to load the exact instructions for a relevant workflow skill before applying that workflow. This is especially important for `review-pr`, `diagnose-ci-failures`, `fix-errors`, `implement-specs`, `spec-driven-implementation`, `check-impl-against-spec`, `resolve-merge-conflicts`, and `create-pr`.
|
|
30
30
|
|
|
@@ -158,6 +158,15 @@ def _load_agent_spec(agent_file: Path) -> AgentSpec:
|
|
|
158
158
|
if not isinstance(agent_spec.exclude_tools, Inherit):
|
|
159
159
|
base_agent_spec.exclude_tools = agent_spec.exclude_tools
|
|
160
160
|
if not isinstance(agent_spec.subagents, Inherit):
|
|
161
|
-
|
|
161
|
+
if isinstance(agent_spec.subagents, dict) and isinstance(
|
|
162
|
+
base_agent_spec.subagents, dict
|
|
163
|
+
):
|
|
164
|
+
# Child entries WIN on key conflicts; base entries fill the rest.
|
|
165
|
+
base_agent_spec.subagents = {
|
|
166
|
+
**base_agent_spec.subagents,
|
|
167
|
+
**agent_spec.subagents,
|
|
168
|
+
}
|
|
169
|
+
else:
|
|
170
|
+
base_agent_spec.subagents = agent_spec.subagents
|
|
162
171
|
agent_spec = base_agent_spec
|
|
163
172
|
return agent_spec
|
|
@@ -735,15 +735,6 @@ class PythinkerCLI:
|
|
|
735
735
|
"""Run the Pythinker CLI instance with shell UI."""
|
|
736
736
|
from pythinker_code.ui.shell import Shell, WelcomeInfoItem
|
|
737
737
|
|
|
738
|
-
if command is None:
|
|
739
|
-
from pythinker_code.ui.shell.update import (
|
|
740
|
-
print_update_banner,
|
|
741
|
-
schedule_auto_update_check,
|
|
742
|
-
)
|
|
743
|
-
|
|
744
|
-
print_update_banner()
|
|
745
|
-
schedule_auto_update_check()
|
|
746
|
-
|
|
747
738
|
work_dir = self._runtime.session.work_dir
|
|
748
739
|
welcome_info = [
|
|
749
740
|
WelcomeInfoItem(name="Directory", value=str(shorten_home(work_dir))),
|
{pythinker_code-0.15.0 → pythinker_code-0.17.0}/src/pythinker_code/background/agent_runner.py
RENAMED
|
@@ -15,7 +15,11 @@ from pythinker_code.soul import RunCancelled
|
|
|
15
15
|
from pythinker_code.subagents.builder import SubagentBuilder
|
|
16
16
|
from pythinker_code.subagents.core import SubagentRunSpec, prepare_soul
|
|
17
17
|
from pythinker_code.subagents.output import SubagentOutputWriter
|
|
18
|
-
from pythinker_code.subagents.runner import
|
|
18
|
+
from pythinker_code.subagents.runner import (
|
|
19
|
+
_SUMMARY_MIN_LENGTH_BY_TYPE,
|
|
20
|
+
_SUMMARY_MIN_LENGTH_DEFAULT,
|
|
21
|
+
run_with_summary_continuation,
|
|
22
|
+
)
|
|
19
23
|
from pythinker_code.utils.logging import logger
|
|
20
24
|
from pythinker_code.wire import Wire
|
|
21
25
|
|
|
@@ -160,6 +164,8 @@ class BackgroundAgentRunner:
|
|
|
160
164
|
self._runtime.subagent_store,
|
|
161
165
|
on_stage=output.stage,
|
|
162
166
|
)
|
|
167
|
+
if self._runtime.hook_engine is not None:
|
|
168
|
+
soul.set_hook_engine(self._runtime.hook_engine)
|
|
163
169
|
|
|
164
170
|
async def _ui_loop_fn(wire: Wire) -> None:
|
|
165
171
|
wire_ui = wire.ui_side(merge=True)
|
|
@@ -173,6 +179,9 @@ class BackgroundAgentRunner:
|
|
|
173
179
|
prompt,
|
|
174
180
|
_ui_loop_fn,
|
|
175
181
|
self._runtime.subagent_store.wire_path(self._agent_id),
|
|
182
|
+
min_length=_SUMMARY_MIN_LENGTH_BY_TYPE.get(
|
|
183
|
+
self._subagent_type, _SUMMARY_MIN_LENGTH_DEFAULT
|
|
184
|
+
),
|
|
176
185
|
)
|
|
177
186
|
if failure is not None:
|
|
178
187
|
self._manager._mark_task_failed(self._task_id, failure.message)
|
|
@@ -94,6 +94,14 @@ class BackgroundTaskManager:
|
|
|
94
94
|
1 for view in self._store.list_views() if not is_terminal_status(view.runtime.status)
|
|
95
95
|
)
|
|
96
96
|
|
|
97
|
+
def active_task_count(self) -> int:
|
|
98
|
+
"""Return the number of non-terminal background tasks."""
|
|
99
|
+
return self._active_task_count()
|
|
100
|
+
|
|
101
|
+
def available_task_slots(self) -> int:
|
|
102
|
+
"""Return how many new background tasks can be started right now."""
|
|
103
|
+
return max(0, self._config.max_running_tasks - self._active_task_count())
|
|
104
|
+
|
|
97
105
|
def has_active_tasks(self) -> bool:
|
|
98
106
|
"""Return True if any background tasks are in a non-terminal status.
|
|
99
107
|
|
|
@@ -941,6 +941,11 @@ def pythinker(
|
|
|
941
941
|
await _delete_empty_session(_latest_created_session)
|
|
942
942
|
raise
|
|
943
943
|
|
|
944
|
+
if ui == "shell" and prompt is None:
|
|
945
|
+
from pythinker_code.ui.shell.update import prompt_pre_start_update
|
|
946
|
+
|
|
947
|
+
asyncio.run(prompt_pre_start_update())
|
|
948
|
+
|
|
944
949
|
if _picker_mode:
|
|
945
950
|
from prompt_toolkit.shortcuts.choice_input import ChoiceInput
|
|
946
951
|
from rich.console import Console
|
|
@@ -148,11 +148,13 @@ def pre_compact(
|
|
|
148
148
|
cwd: str,
|
|
149
149
|
trigger: str,
|
|
150
150
|
token_count: int,
|
|
151
|
+
custom_instructions: str = "",
|
|
151
152
|
) -> dict[str, Any]:
|
|
152
153
|
return {
|
|
153
154
|
**_base("PreCompact", session_id, cwd),
|
|
154
155
|
"trigger": trigger,
|
|
155
156
|
"token_count": token_count,
|
|
157
|
+
"custom_instructions": custom_instructions,
|
|
156
158
|
}
|
|
157
159
|
|
|
158
160
|
|
|
@@ -162,11 +164,13 @@ def post_compact(
|
|
|
162
164
|
cwd: str,
|
|
163
165
|
trigger: str,
|
|
164
166
|
estimated_token_count: int,
|
|
167
|
+
compact_summary: str = "",
|
|
165
168
|
) -> dict[str, Any]:
|
|
166
169
|
return {
|
|
167
170
|
**_base("PostCompact", session_id, cwd),
|
|
168
171
|
"trigger": trigger,
|
|
169
172
|
"estimated_token_count": estimated_token_count,
|
|
173
|
+
"compact_summary": compact_summary,
|
|
170
174
|
}
|
|
171
175
|
|
|
172
176
|
|