pythinker-code 0.16.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.16.0 → pythinker_code-0.17.0}/PKG-INFO +35 -34
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/README.md +34 -33
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/pyproject.toml +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/CHANGELOG.md +12 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/system.md +2 -2
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agentspec.py +10 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/app.py +0 -9
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/agent_runner.py +10 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/manager.py +8 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/__init__.py +5 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/events.py +4 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/runner.py +35 -1
- {pythinker_code-0.16.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.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/pythinkersoul.py +63 -12
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/slash.py +0 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/discovery.py +8 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/models.py +1 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/runner.py +19 -2
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/store.py +2 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/agent/__init__.py +88 -5
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/agent/description.md +2 -2
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read.md +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read.py +10 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/shell/__init__.py +20 -9
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/shell/bash.md +3 -3
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/shell/powershell.md +3 -3
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/__init__.py +70 -50
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/bash_execution.py +6 -3
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/key_hints.py +3 -2
- {pythinker_code-0.16.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.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/render_utils.py +6 -3
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/tool_execution.py +10 -16
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/debug.py +29 -11
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/design_system.py +17 -9
- {pythinker_code-0.16.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.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/keyboard.py +5 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/keymap.py +4 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/mcp_status.py +13 -13
- {pythinker_code-0.16.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.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/oauth.py +24 -18
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/prompt.py +97 -26
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selector.py +2 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/setup.py +14 -10
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/slash.py +238 -136
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/startup.py +3 -2
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/task_browser.py +7 -2
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +1 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +1 -1
- {pythinker_code-0.16.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.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +2 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +30 -19
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/update.py +100 -98
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage.py +9 -6
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_render.py +20 -13
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +30 -14
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +28 -12
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +9 -6
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +14 -2
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +11 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +154 -12
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +13 -9
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +42 -29
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/theme.py +179 -181
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/diff_render.py +16 -9
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/syntax.py +8 -8
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/_baseUniq-C7Lm5yvo.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/_baseUniq-qyLZSOfA.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/arc-Dz2a-Hq4.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/arc-CYkfKUJw.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-CJsZQU8P.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-Cc3dJmlV.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-CX9hqfTf.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-HSBk6vox.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-cSQejz9F.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.16.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-DENWwfQo.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-0esCM_vg.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-BjAz7E1Q.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-C55bd2_o.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DHREpwD8.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DJxNZVQC.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-B_qgxaLM.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-CEWPxLfs.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-CSkrSE_m.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-DmhbuRTm.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-B102Qoa4.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-nrPUkuWR.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CcH2XgAh.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CzXInrrR.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-BCrhDM6d.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.16.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-CxK2_ZRv.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DMVWN-ml.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-P03CC8NX.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-Coir87Qv.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/cytoscape.esm-2bFCBNMd.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/cytoscape.esm-eAWqnCYK.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-BT781HbA.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-CiTUIg0q.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-BnyX8Hza.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-Cq9GXOjk.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-CNxIhmQ7.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-Eamm6xAa.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-CfVSAgk2.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-DA1Yz6Pa.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-t1gwlCQc.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-DzlJ-wwC.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-CnZzBqWT.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-Bz9U20to.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-DCdDrdcK.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-fsG79E9p.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-Ctp9RsTH.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-BjchK9W1.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/graph-DrwQi5qA.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/graph-DbF6cZU0.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/index--TWNXhaY.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-BLAcYwJO.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/index-B758--8h.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-BgIGGFpA.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/index-CzkMvfiJ.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-Brd7Qj46.js +2 -2
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-Csp12hF4.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-CYSDBUZQ.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-zN4HAFCP.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-BeF28JOm.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-0-xpvozd.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-BVAC2O5Q.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/layout-BVsTxsKN.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/layout-DNSNr4If.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/linear-BYR73i1j.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/linear-HQWQZMSq.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DmNoW0GC.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BeS6uII_.js +7 -7
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/mermaid.core-Dc3U-PWB.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mermaid.core-CsiBWAvS.js +5 -5
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/min-j-ny6Xor.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/min-z2ooYt5Q.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-aqL9L8vw.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-BrkkNtDO.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-DQrHZG2X.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-C0odTEkg.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-u2BY8IXs.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-Daco3FUa.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-L6zi-5FC.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-vOrTEG8b.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-CPnmSSfJ.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-BVExYdTG.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-CnT5YJov.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-BkPzuwcM.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-DOg3yqFr.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.16.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-BTl9Y_1U.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-CxfiYDXf.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-q3mN72YJ.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-B-wzCRqq.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-C1jRvwXD.js → pythinker_code-0.17.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-DIGOnUa7.js +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/index.html +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/install.ps1 +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/install.sh +1 -1
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/glyphs.py +0 -31
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/motion.py +0 -122
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -148
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/channel-DmYfOdgd.js +0 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-qvGW6z7e.js +0 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-qvGW6z7e.js +0 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/clone-aktTc1WH.js +0 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-qlhTG-tY.js +0 -1
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/LICENSE +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/NOTICE +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/review.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/openai.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/vis.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/native.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/agent.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/approval.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/soul/toolset.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/replace.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/file/write.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/echo.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/sessions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/statistics.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/api/system.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/app.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.16.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.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/vis/static/index.html +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.16.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.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2P5VJ9v.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.17.0}/src/pythinker_code/wire/server.py +0 -0
- {pythinker_code-0.16.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
|
---
|
|
@@ -212,10 +213,10 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
212
213
|
|
|
213
214
|
| Platform | Recommended install | Artifact source |
|
|
214
215
|
|---|---|---|
|
|
215
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
|
|
|
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) |
|
|
219
220
|
| **🐍 Python fallback** | `pip install pythinker-code` | PyPI |
|
|
220
221
|
|
|
221
222
|
Every artifact ships with a matching `.sha256` file — verify before install on
|
|
@@ -237,7 +238,7 @@ pythinker # start the interactive TUI
|
|
|
237
238
|
|
|
238
239
|
### 🪟 Windows — native installer
|
|
239
240
|
|
|
240
|
-
`PythinkerSetup-0.
|
|
241
|
+
`PythinkerSetup-0.17.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
241
242
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
242
243
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
243
244
|
the change. **No UAC prompt.**
|
|
@@ -248,13 +249,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
248
249
|
|
|
249
250
|
# Or manually download the installer + checksum from the Releases page,
|
|
250
251
|
# verify with Get-FileHash, then run:
|
|
251
|
-
.\PythinkerSetup-0.
|
|
252
|
+
.\PythinkerSetup-0.17.0.exe
|
|
252
253
|
|
|
253
254
|
# Open a fresh PowerShell
|
|
254
255
|
pythinker --version
|
|
255
256
|
```
|
|
256
257
|
|
|
257
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
258
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.17.0.exe /ALLUSERS`
|
|
258
259
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
259
260
|
|
|
260
261
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -271,7 +272,7 @@ the files and the PATH edit.
|
|
|
271
272
|
|
|
272
273
|
---
|
|
273
274
|
|
|
274
|
-
###
|
|
275
|
+
### <img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew tap
|
|
275
276
|
|
|
276
277
|
```sh
|
|
277
278
|
# 1. Install
|
|
@@ -297,33 +298,33 @@ auto-update; run this whenever you want the latest).
|
|
|
297
298
|
|
|
298
299
|
---
|
|
299
300
|
|
|
300
|
-
###
|
|
301
|
+
### <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system packages
|
|
301
302
|
|
|
302
303
|
Native `.deb` and `.rpm` packages for both `x86_64` and `aarch64` are
|
|
303
304
|
attached to every GitHub Release.
|
|
304
305
|
|
|
305
306
|
```sh
|
|
306
307
|
# Debian / Ubuntu (x86_64)
|
|
307
|
-
sudo dpkg -i pythinker-code_0.
|
|
308
|
+
sudo dpkg -i pythinker-code_0.17.0_amd64.deb
|
|
308
309
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
309
310
|
|
|
310
311
|
# Debian / Ubuntu (ARM64)
|
|
311
|
-
sudo dpkg -i pythinker-code_0.
|
|
312
|
+
sudo dpkg -i pythinker-code_0.17.0_arm64.deb
|
|
312
313
|
|
|
313
314
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
314
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
315
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
316
|
-
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
|
|
317
318
|
# Fedora / RHEL:
|
|
318
|
-
sudo dnf install ./pythinker-code-0.
|
|
319
|
+
sudo dnf install ./pythinker-code-0.17.0.x86_64.rpm
|
|
319
320
|
# openSUSE:
|
|
320
|
-
sudo zypper install ./pythinker-code-0.
|
|
321
|
+
sudo zypper install ./pythinker-code-0.17.0.x86_64.rpm
|
|
321
322
|
|
|
322
323
|
# Fedora / RHEL (aarch64)
|
|
323
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
324
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
325
|
-
sha256sum -c pythinker-code-0.
|
|
326
|
-
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
|
|
327
328
|
```
|
|
328
329
|
|
|
329
330
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -332,8 +333,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
332
333
|
**Verify before install:**
|
|
333
334
|
|
|
334
335
|
```sh
|
|
335
|
-
sha256sum -c pythinker-code_0.
|
|
336
|
-
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
|
|
337
338
|
```
|
|
338
339
|
|
|
339
340
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -349,7 +350,7 @@ sudo rpm -e pythinker-code # Fedora/RHEL
|
|
|
349
350
|
|
|
350
351
|
---
|
|
351
352
|
|
|
352
|
-
###
|
|
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
|
|
353
354
|
|
|
354
355
|
For containers, fresh VMs, or any host without a system package manager.
|
|
355
356
|
The canonical `https://pythinker.com/install.sh` endpoint is backed by
|
|
@@ -363,7 +364,7 @@ at `~/.local/bin/pythinker`.
|
|
|
363
364
|
curl -fsSL https://pythinker.com/install.sh | bash
|
|
364
365
|
|
|
365
366
|
# Pin a specific version
|
|
366
|
-
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
|
|
367
368
|
|
|
368
369
|
# Custom prefix (defaults to $HOME/.local)
|
|
369
370
|
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
|
|
@@ -384,9 +385,9 @@ Supported targets:
|
|
|
384
385
|
|
|
385
386
|
| `uname -s / -m` | Tarball asset |
|
|
386
387
|
|---|---|
|
|
387
|
-
| Linux / x86_64 | `pythinker-0.
|
|
388
|
-
| Linux / aarch64 | `pythinker-0.
|
|
389
|
-
| 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` |
|
|
390
391
|
|
|
391
392
|
The script prints PATH guidance if `~/.local/bin` isn't already on your
|
|
392
393
|
`$PATH`. Intel macOS users — use Homebrew or `pip install pythinker-code`;
|
|
@@ -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
|
---
|
|
@@ -147,10 +148,10 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
147
148
|
|
|
148
149
|
| Platform | Recommended install | Artifact source |
|
|
149
150
|
|---|---|---|
|
|
150
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
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) |
|
|
154
155
|
| **🐍 Python fallback** | `pip install pythinker-code` | PyPI |
|
|
155
156
|
|
|
156
157
|
Every artifact ships with a matching `.sha256` file — verify before install on
|
|
@@ -172,7 +173,7 @@ pythinker # start the interactive TUI
|
|
|
172
173
|
|
|
173
174
|
### 🪟 Windows — native installer
|
|
174
175
|
|
|
175
|
-
`PythinkerSetup-0.
|
|
176
|
+
`PythinkerSetup-0.17.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
176
177
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
177
178
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
178
179
|
the change. **No UAC prompt.**
|
|
@@ -183,13 +184,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
183
184
|
|
|
184
185
|
# Or manually download the installer + checksum from the Releases page,
|
|
185
186
|
# verify with Get-FileHash, then run:
|
|
186
|
-
.\PythinkerSetup-0.
|
|
187
|
+
.\PythinkerSetup-0.17.0.exe
|
|
187
188
|
|
|
188
189
|
# Open a fresh PowerShell
|
|
189
190
|
pythinker --version
|
|
190
191
|
```
|
|
191
192
|
|
|
192
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
193
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.17.0.exe /ALLUSERS`
|
|
193
194
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
194
195
|
|
|
195
196
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -206,7 +207,7 @@ the files and the PATH edit.
|
|
|
206
207
|
|
|
207
208
|
---
|
|
208
209
|
|
|
209
|
-
###
|
|
210
|
+
### <img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew tap
|
|
210
211
|
|
|
211
212
|
```sh
|
|
212
213
|
# 1. Install
|
|
@@ -232,33 +233,33 @@ auto-update; run this whenever you want the latest).
|
|
|
232
233
|
|
|
233
234
|
---
|
|
234
235
|
|
|
235
|
-
###
|
|
236
|
+
### <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system packages
|
|
236
237
|
|
|
237
238
|
Native `.deb` and `.rpm` packages for both `x86_64` and `aarch64` are
|
|
238
239
|
attached to every GitHub Release.
|
|
239
240
|
|
|
240
241
|
```sh
|
|
241
242
|
# Debian / Ubuntu (x86_64)
|
|
242
|
-
sudo dpkg -i pythinker-code_0.
|
|
243
|
+
sudo dpkg -i pythinker-code_0.17.0_amd64.deb
|
|
243
244
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
244
245
|
|
|
245
246
|
# Debian / Ubuntu (ARM64)
|
|
246
|
-
sudo dpkg -i pythinker-code_0.
|
|
247
|
+
sudo dpkg -i pythinker-code_0.17.0_arm64.deb
|
|
247
248
|
|
|
248
249
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
249
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
250
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
251
|
-
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
|
|
252
253
|
# Fedora / RHEL:
|
|
253
|
-
sudo dnf install ./pythinker-code-0.
|
|
254
|
+
sudo dnf install ./pythinker-code-0.17.0.x86_64.rpm
|
|
254
255
|
# openSUSE:
|
|
255
|
-
sudo zypper install ./pythinker-code-0.
|
|
256
|
+
sudo zypper install ./pythinker-code-0.17.0.x86_64.rpm
|
|
256
257
|
|
|
257
258
|
# Fedora / RHEL (aarch64)
|
|
258
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
259
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
260
|
-
sha256sum -c pythinker-code-0.
|
|
261
|
-
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
|
|
262
263
|
```
|
|
263
264
|
|
|
264
265
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -267,8 +268,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
267
268
|
**Verify before install:**
|
|
268
269
|
|
|
269
270
|
```sh
|
|
270
|
-
sha256sum -c pythinker-code_0.
|
|
271
|
-
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
|
|
272
273
|
```
|
|
273
274
|
|
|
274
275
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -284,7 +285,7 @@ sudo rpm -e pythinker-code # Fedora/RHEL
|
|
|
284
285
|
|
|
285
286
|
---
|
|
286
287
|
|
|
287
|
-
###
|
|
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
|
|
288
289
|
|
|
289
290
|
For containers, fresh VMs, or any host without a system package manager.
|
|
290
291
|
The canonical `https://pythinker.com/install.sh` endpoint is backed by
|
|
@@ -298,7 +299,7 @@ at `~/.local/bin/pythinker`.
|
|
|
298
299
|
curl -fsSL https://pythinker.com/install.sh | bash
|
|
299
300
|
|
|
300
301
|
# Pin a specific version
|
|
301
|
-
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
|
|
302
303
|
|
|
303
304
|
# Custom prefix (defaults to $HOME/.local)
|
|
304
305
|
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
|
|
@@ -319,9 +320,9 @@ Supported targets:
|
|
|
319
320
|
|
|
320
321
|
| `uname -s / -m` | Tarball asset |
|
|
321
322
|
|---|---|
|
|
322
|
-
| Linux / x86_64 | `pythinker-0.
|
|
323
|
-
| Linux / aarch64 | `pythinker-0.
|
|
324
|
-
| 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` |
|
|
325
326
|
|
|
326
327
|
The script prints PATH guidance if `~/.local/bin` isn't already on your
|
|
327
328
|
`$PATH`. Intel macOS users — use Homebrew or `pip install pythinker-code`;
|
|
@@ -15,6 +15,18 @@ 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
|
+
|
|
18
30
|
## 0.16.0 (2026-05-24)
|
|
19
31
|
|
|
20
32
|
### 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.16.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
|
|
|
@@ -18,6 +18,7 @@ class HookResult:
|
|
|
18
18
|
stderr: str = ""
|
|
19
19
|
exit_code: int = 0
|
|
20
20
|
timed_out: bool = False
|
|
21
|
+
additional_context: str = ""
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
async def run_hook(
|
|
@@ -78,6 +79,7 @@ async def run_hook(
|
|
|
78
79
|
if isinstance(raw, dict):
|
|
79
80
|
parsed = cast(dict[str, Any], raw)
|
|
80
81
|
hook_output = cast(dict[str, Any], parsed.get("hookSpecificOutput", {}))
|
|
82
|
+
additional_context = _extract_additional_context(parsed, hook_output)
|
|
81
83
|
if hook_output.get("permissionDecision") == "deny":
|
|
82
84
|
return HookResult(
|
|
83
85
|
action="block",
|
|
@@ -85,8 +87,40 @@ async def run_hook(
|
|
|
85
87
|
stdout=stdout,
|
|
86
88
|
stderr=stderr,
|
|
87
89
|
exit_code=0,
|
|
90
|
+
additional_context=additional_context,
|
|
88
91
|
)
|
|
92
|
+
return HookResult(
|
|
93
|
+
action="allow",
|
|
94
|
+
stdout=stdout,
|
|
95
|
+
stderr=stderr,
|
|
96
|
+
exit_code=exit_code,
|
|
97
|
+
additional_context=additional_context,
|
|
98
|
+
)
|
|
89
99
|
except (json.JSONDecodeError, TypeError):
|
|
90
|
-
|
|
100
|
+
if _stdout_adds_context(input_data):
|
|
101
|
+
return HookResult(
|
|
102
|
+
action="allow",
|
|
103
|
+
stdout=stdout,
|
|
104
|
+
stderr=stderr,
|
|
105
|
+
exit_code=exit_code,
|
|
106
|
+
additional_context=stdout,
|
|
107
|
+
)
|
|
91
108
|
|
|
92
109
|
return HookResult(action="allow", stdout=stdout, stderr=stderr, exit_code=exit_code)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def _extract_additional_context(parsed: dict[str, Any], hook_output: dict[str, Any]) -> str:
|
|
113
|
+
"""Extract Claude-Code-style additionalContext from JSON hook output."""
|
|
114
|
+
candidates = (hook_output.get("additionalContext"), parsed.get("additionalContext"))
|
|
115
|
+
for value in candidates:
|
|
116
|
+
if isinstance(value, str) and value.strip():
|
|
117
|
+
return value
|
|
118
|
+
return ""
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _stdout_adds_context(input_data: dict[str, Any]) -> bool:
|
|
122
|
+
"""Whether plain stdout from this hook should be recoverable as context."""
|
|
123
|
+
event = input_data.get("hook_event_name")
|
|
124
|
+
if event == "PostCompact":
|
|
125
|
+
return True
|
|
126
|
+
return event == "SessionStart" and input_data.get("source") == "compact"
|
|
@@ -55,6 +55,8 @@ class SessionState(BaseModel):
|
|
|
55
55
|
auto_archive_exempt: bool = False
|
|
56
56
|
# Todo list state
|
|
57
57
|
todos: list[TodoItemState] = Field(default_factory=list) # pyright: ignore[reportUnknownVariableType]
|
|
58
|
+
# Skill names explicitly invoked in this session and restored after compaction.
|
|
59
|
+
active_skills: list[str] = Field(default_factory=list)
|
|
58
60
|
|
|
59
61
|
|
|
60
62
|
_LEGACY_METADATA_FILENAME = "metadata.json"
|