pythinker-code 0.16.0__tar.gz → 0.18.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.18.0}/PKG-INFO +46 -48
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/README.md +45 -47
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/pyproject.toml +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/CHANGELOG.md +24 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/code_reviewer.yaml +2 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/coder.yaml +12 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/debugger.yaml +12 -5
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/explore.yaml +9 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/implementer.yaml +9 -3
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/plan.yaml +23 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/review.yaml +5 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/security_reviewer.yaml +6 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/system.md +32 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/verifier.yaml +11 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agentspec.py +10 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/app.py +11 -12
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/agent_runner.py +24 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/manager.py +50 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/__init__.py +53 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/config.py +81 -25
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/hooks/events.py +4 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/hooks/runner.py +35 -1
- pythinker_code-0.18.0/src/pythinker_code/scratchpad.py +895 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/session_state.py +2 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/agent.py +5 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/approval.py +14 -4
- pythinker_code-0.18.0/src/pythinker_code/soul/compaction_restore.py +287 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/pythinkersoul.py +123 -46
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/slash.py +0 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/toolset.py +79 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/discovery.py +8 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/models.py +1 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/runner.py +19 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/store.py +2 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/config.py +18 -10
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/agent/__init__.py +227 -18
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/agent/description.md +6 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/ask_user/__init__.py +16 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/read.md +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/read.py +10 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/replace.py +3 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/write.py +3 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/shell/__init__.py +39 -10
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/shell/bash.md +3 -3
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/shell/powershell.md +3 -3
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/todo/__init__.py +29 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/__init__.py +74 -51
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/__init__.py +11 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/bash_execution.py +13 -5
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +3 -4
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/components/dynamic_border.py +37 -0
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/components/key_hints.py +55 -0
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/components/markdown.py +475 -0
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/components/panel.py +30 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/render_utils.py +6 -3
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/settings_list.py +56 -7
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/tool_execution.py +12 -16
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/debug.py +29 -11
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/design_system.py +17 -9
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/echo.py +2 -9
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/export_import.py +14 -10
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/glyphs.py +55 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/keyboard.py +5 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/keymap.py +4 -0
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/mcp_status.py +148 -0
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/model_picker.py +114 -0
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/motion.py +240 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/oauth.py +24 -18
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/prompt.py +141 -25
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selector.py +103 -15
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/setup.py +14 -10
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/slash.py +258 -137
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/startup.py +3 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/task_browser.py +7 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +1 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +61 -14
- pythinker_code-0.18.0/src/pythinker_code/ui/shell/tool_renderers/agent.py +467 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +30 -11
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +5 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +11 -3
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +5 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +5 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +10 -17
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +5 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +35 -20
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +2 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +6 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +9 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +5 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/update.py +100 -98
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage.py +9 -6
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_render.py +20 -13
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/__init__.py +6 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +7 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +30 -14
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +283 -45
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +9 -6
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +14 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +15 -2
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +280 -19
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +13 -9
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +42 -29
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/theme.py +179 -181
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/rich/diff_render.py +16 -9
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/rich/syntax.py +13 -13
- pythinker_code-0.18.0/src/pythinker_code/utils/sleep_inhibitor.py +473 -0
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/_baseUniq-C7Lm5yvo.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/_baseUniq-diyiadw5.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/arc-Dz2a-Hq4.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/arc-C_-dPtYA.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-CJsZQU8P.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-pe7jaN72.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-CX9hqfTf.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-DvNsLxaI.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-cSQejz9F.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-DOutQDwU.js +1 -1
- pythinker_code-0.18.0/src/pythinker_code/web/static/assets/channel-BEd858yH.js +1 -0
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-DENWwfQo.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-CSkVLnTI.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-BjAz7E1Q.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-Sp6O21Fa.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DHREpwD8.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-HEkwgVVV.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-B_qgxaLM.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-JBzEF4BM.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-CSkrSE_m.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-D7NzL_UD.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-B102Qoa4.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-CFUUnKRn.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CcH2XgAh.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-BFM8Zf86.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-BCrhDM6d.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-BkppE9ae.js +1 -1
- pythinker_code-0.18.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-Crr9_YII.js +1 -0
- pythinker_code-0.18.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-Crr9_YII.js +1 -0
- pythinker_code-0.18.0/src/pythinker_code/web/static/assets/clone-Dfc-F2za.js +1 -0
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-CxK2_ZRv.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-CmR8Cdcu.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-P03CC8NX.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-DAm3W4aX.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/cytoscape.esm-2bFCBNMd.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/cytoscape.esm-y1coXWUc.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-BT781HbA.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-B0i4dUeh.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-BnyX8Hza.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CpwOBk04.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-CNxIhmQ7.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-BKdKDUAt.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-CfVSAgk2.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-BWSTCXj5.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-t1gwlCQc.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-CJeB4CQf.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-CnZzBqWT.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-ChW3Nkg5.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-DCdDrdcK.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-BCYS-5Wi.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-Ctp9RsTH.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-CibT-GPx.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/graph-DrwQi5qA.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/graph-Bg8wdmyQ.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/index-B758--8h.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/index-C-9Nx5Zv.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/index--TWNXhaY.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/index-Crd7puVX.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/index-CzkMvfiJ.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/index-PSmqu2sC.js +2 -2
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-Csp12hF4.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-BZCKIRhX.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-zN4HAFCP.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-BIv2-5-D.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-0-xpvozd.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-BbXFbER0.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/layout-BVsTxsKN.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/layout-Zmsvl1hy.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/linear-BYR73i1j.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/linear-BV_H68rk.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DmNoW0GC.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DVprBX-j.js +7 -7
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/mermaid.core-Dc3U-PWB.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/mermaid.core-CR7QF1E3.js +5 -5
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/min-j-ny6Xor.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/min-Doa9BVeR.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-aqL9L8vw.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-DNQnYfPv.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-DQrHZG2X.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-DVqIhUw6.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-u2BY8IXs.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-BuGgJuP-.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-L6zi-5FC.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-DCQLUIxL.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-CPnmSSfJ.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-CSqLQRPC.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-CnT5YJov.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-B9es9563.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-DOg3yqFr.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-D6uJ4ieP.js +1 -1
- pythinker_code-0.18.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-KTWgI9rj.js +1 -0
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-BTl9Y_1U.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-B1yc8-Ia.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-q3mN72YJ.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-_HhSkYE5.js +1 -1
- pythinker_code-0.16.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-C1jRvwXD.js → pythinker_code-0.18.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-BUOOjSUz.js +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/index.html +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/install.ps1 +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/install.sh +1 -1
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/types.py +48 -0
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/components/key_hints.py +0 -24
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/components/markdown.py +0 -227
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/glyphs.py +0 -31
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/mcp_status.py +0 -121
- pythinker_code-0.16.0/src/pythinker_code/ui/shell/model_picker.py +0 -318
- 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.18.0}/LICENSE +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/NOTICE +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/openai.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/vis.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/native.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/api/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/api/sessions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/api/statistics.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/api/system.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/app.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.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.18.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/vis/static/index.html +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.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.18.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2P5VJ9v.css +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/wire/server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pythinker-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.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.18.0
|
|
120
119
|
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
123
|
-
- **
|
|
120
|
+
- **Live subagent activity streaming.** Subagent tool calls now stream live into the transcript, with safe pending headers for in-flight tool calls, new transcript progress events, and a unified shimmer animation across active-work labels so long-running exploration stays legible.
|
|
121
|
+
- **Smarter delegation and orchestration.** A Context-First Orchestration Protocol guides the default agent, specialist subagents receive prompt packets for single-objective delegation plus evidence and verification gates, and overflow RunAgents children are deferred instead of hard-failing.
|
|
122
|
+
- **Calmer, more resilient TUI.** In-flight and singular Ask payloads no longer flash an invalid badge, MCP startup status is cleaner, and shell rendering and MCP guidance are refined.
|
|
123
|
+
- **Sturdier configuration handling.** Incompatible legacy JSON config is now preserved instead of being silently reset to defaults.
|
|
124
|
+
- **Security and shell hardening.** The security scan and shell execution paths were hardened against unexpected input.
|
|
124
125
|
|
|
125
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
126
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.18.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.18.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.18.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.18.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.18.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.18.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.18.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.18.0/pythinker-code-0.18.0.x86_64.rpm
|
|
316
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.18.0/pythinker-code-0.18.0.x86_64.rpm.sha256
|
|
317
|
+
sha256sum -c pythinker-code-0.18.0.x86_64.rpm.sha256
|
|
317
318
|
# Fedora / RHEL:
|
|
318
|
-
sudo dnf install ./pythinker-code-0.
|
|
319
|
+
sudo dnf install ./pythinker-code-0.18.0.x86_64.rpm
|
|
319
320
|
# openSUSE:
|
|
320
|
-
sudo zypper install ./pythinker-code-0.
|
|
321
|
+
sudo zypper install ./pythinker-code-0.18.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.18.0/pythinker-code-0.18.0.aarch64.rpm
|
|
325
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.18.0/pythinker-code-0.18.0.aarch64.rpm.sha256
|
|
326
|
+
sha256sum -c pythinker-code-0.18.0.aarch64.rpm.sha256
|
|
327
|
+
sudo dnf install ./pythinker-code-0.18.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.18.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
337
|
+
sha256sum -c pythinker-code-0.18.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.18.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.18.0-x86_64-unknown-linux-gnu.tar.gz` |
|
|
389
|
+
| Linux / aarch64 | `pythinker-0.18.0-aarch64-unknown-linux-gnu.tar.gz` |
|
|
390
|
+
| Darwin / arm64 | `pythinker-0.18.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`;
|
|
@@ -616,14 +617,18 @@ Pythinker loads [Model Context Protocol](https://modelcontextprotocol.io/) tools
|
|
|
616
617
|
### 🛠️ Manage persistent MCP servers
|
|
617
618
|
|
|
618
619
|
```sh
|
|
620
|
+
# 📚 Context7 stdio server (Codex-style: NAME -- COMMAND)
|
|
621
|
+
pythinker mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR-API-KEY
|
|
622
|
+
# Added MCP server 'context7' to ~/.pythinker/mcp.json
|
|
623
|
+
|
|
619
624
|
# 🌐 Streamable HTTP server with API key
|
|
620
|
-
pythinker mcp add --transport http
|
|
621
|
-
--header "
|
|
625
|
+
pythinker mcp add --transport http docs https://example.com/mcp \
|
|
626
|
+
--header "API_KEY: your-key"
|
|
622
627
|
|
|
623
628
|
# 🔐 Streamable HTTP server with OAuth
|
|
624
629
|
pythinker mcp add --transport http --auth oauth linear https://mcp.linear.app/mcp
|
|
625
630
|
|
|
626
|
-
# 💻 stdio server
|
|
631
|
+
# 💻 stdio server with explicit transport
|
|
627
632
|
pythinker mcp add --transport stdio chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
628
633
|
|
|
629
634
|
# 📋 List, authorize, test, and remove
|
|
@@ -713,16 +718,9 @@ file paths, or any user-identifying data. Two channels:
|
|
|
713
718
|
- Your real name, email, IP address, hostname (host name field is dropped at the edge collector)
|
|
714
719
|
- Tool arguments (e.g. what file you read, what command you ran)
|
|
715
720
|
|
|
716
|
-
###
|
|
717
|
-
|
|
718
|
-
Telemetry is off by default. To enable it for a process:
|
|
719
|
-
|
|
720
|
-
```sh
|
|
721
|
-
export PYTHINKER_ENABLE_TELEMETRY=1
|
|
722
|
-
pythinker
|
|
723
|
-
```
|
|
721
|
+
### Turning it off
|
|
724
722
|
|
|
725
|
-
|
|
723
|
+
Telemetry is on by default. To turn it off:
|
|
726
724
|
|
|
727
725
|
```sh
|
|
728
726
|
# 1. Per-invocation CLI flag
|
|
@@ -752,8 +750,8 @@ export PYTHINKER_OTEL_ENDPOINT="https://your-otel-collector.example.com"
|
|
|
752
750
|
export PYTHINKER_OTEL_TOKEN="<your bearer token>"
|
|
753
751
|
```
|
|
754
752
|
|
|
755
|
-
The defaults point at infrastructure operated by the pythinker maintainers
|
|
756
|
-
|
|
753
|
+
The defaults point at infrastructure operated by the pythinker maintainers and
|
|
754
|
+
are used automatically unless you turn telemetry off.
|
|
757
755
|
|
|
758
756
|
---
|
|
759
757
|
|
|
@@ -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.18.0
|
|
55
54
|
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
- **
|
|
55
|
+
- **Live subagent activity streaming.** Subagent tool calls now stream live into the transcript, with safe pending headers for in-flight tool calls, new transcript progress events, and a unified shimmer animation across active-work labels so long-running exploration stays legible.
|
|
56
|
+
- **Smarter delegation and orchestration.** A Context-First Orchestration Protocol guides the default agent, specialist subagents receive prompt packets for single-objective delegation plus evidence and verification gates, and overflow RunAgents children are deferred instead of hard-failing.
|
|
57
|
+
- **Calmer, more resilient TUI.** In-flight and singular Ask payloads no longer flash an invalid badge, MCP startup status is cleaner, and shell rendering and MCP guidance are refined.
|
|
58
|
+
- **Sturdier configuration handling.** Incompatible legacy JSON config is now preserved instead of being silently reset to defaults.
|
|
59
|
+
- **Security and shell hardening.** The security scan and shell execution paths were hardened against unexpected input.
|
|
59
60
|
|
|
60
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
61
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.18.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.18.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.18.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.18.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.18.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.18.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.18.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.18.0/pythinker-code-0.18.0.x86_64.rpm
|
|
251
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.18.0/pythinker-code-0.18.0.x86_64.rpm.sha256
|
|
252
|
+
sha256sum -c pythinker-code-0.18.0.x86_64.rpm.sha256
|
|
252
253
|
# Fedora / RHEL:
|
|
253
|
-
sudo dnf install ./pythinker-code-0.
|
|
254
|
+
sudo dnf install ./pythinker-code-0.18.0.x86_64.rpm
|
|
254
255
|
# openSUSE:
|
|
255
|
-
sudo zypper install ./pythinker-code-0.
|
|
256
|
+
sudo zypper install ./pythinker-code-0.18.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.18.0/pythinker-code-0.18.0.aarch64.rpm
|
|
260
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.18.0/pythinker-code-0.18.0.aarch64.rpm.sha256
|
|
261
|
+
sha256sum -c pythinker-code-0.18.0.aarch64.rpm.sha256
|
|
262
|
+
sudo dnf install ./pythinker-code-0.18.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.18.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
272
|
+
sha256sum -c pythinker-code-0.18.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.18.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.18.0-x86_64-unknown-linux-gnu.tar.gz` |
|
|
324
|
+
| Linux / aarch64 | `pythinker-0.18.0-aarch64-unknown-linux-gnu.tar.gz` |
|
|
325
|
+
| Darwin / arm64 | `pythinker-0.18.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`;
|
|
@@ -551,14 +552,18 @@ Pythinker loads [Model Context Protocol](https://modelcontextprotocol.io/) tools
|
|
|
551
552
|
### 🛠️ Manage persistent MCP servers
|
|
552
553
|
|
|
553
554
|
```sh
|
|
555
|
+
# 📚 Context7 stdio server (Codex-style: NAME -- COMMAND)
|
|
556
|
+
pythinker mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR-API-KEY
|
|
557
|
+
# Added MCP server 'context7' to ~/.pythinker/mcp.json
|
|
558
|
+
|
|
554
559
|
# 🌐 Streamable HTTP server with API key
|
|
555
|
-
pythinker mcp add --transport http
|
|
556
|
-
--header "
|
|
560
|
+
pythinker mcp add --transport http docs https://example.com/mcp \
|
|
561
|
+
--header "API_KEY: your-key"
|
|
557
562
|
|
|
558
563
|
# 🔐 Streamable HTTP server with OAuth
|
|
559
564
|
pythinker mcp add --transport http --auth oauth linear https://mcp.linear.app/mcp
|
|
560
565
|
|
|
561
|
-
# 💻 stdio server
|
|
566
|
+
# 💻 stdio server with explicit transport
|
|
562
567
|
pythinker mcp add --transport stdio chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
563
568
|
|
|
564
569
|
# 📋 List, authorize, test, and remove
|
|
@@ -648,16 +653,9 @@ file paths, or any user-identifying data. Two channels:
|
|
|
648
653
|
- Your real name, email, IP address, hostname (host name field is dropped at the edge collector)
|
|
649
654
|
- Tool arguments (e.g. what file you read, what command you ran)
|
|
650
655
|
|
|
651
|
-
###
|
|
652
|
-
|
|
653
|
-
Telemetry is off by default. To enable it for a process:
|
|
654
|
-
|
|
655
|
-
```sh
|
|
656
|
-
export PYTHINKER_ENABLE_TELEMETRY=1
|
|
657
|
-
pythinker
|
|
658
|
-
```
|
|
656
|
+
### Turning it off
|
|
659
657
|
|
|
660
|
-
|
|
658
|
+
Telemetry is on by default. To turn it off:
|
|
661
659
|
|
|
662
660
|
```sh
|
|
663
661
|
# 1. Per-invocation CLI flag
|
|
@@ -687,8 +685,8 @@ export PYTHINKER_OTEL_ENDPOINT="https://your-otel-collector.example.com"
|
|
|
687
685
|
export PYTHINKER_OTEL_TOKEN="<your bearer token>"
|
|
688
686
|
```
|
|
689
687
|
|
|
690
|
-
The defaults point at infrastructure operated by the pythinker maintainers
|
|
691
|
-
|
|
688
|
+
The defaults point at infrastructure operated by the pythinker maintainers and
|
|
689
|
+
are used automatically unless you turn telemetry off.
|
|
692
690
|
|
|
693
691
|
---
|
|
694
692
|
|
|
@@ -15,6 +15,30 @@ GitHub Releases page; `0.8.0` is the new starting line.
|
|
|
15
15
|
|
|
16
16
|
## Unreleased
|
|
17
17
|
|
|
18
|
+
## 0.18.0 (2026-05-27)
|
|
19
|
+
|
|
20
|
+
### What changed in this release
|
|
21
|
+
|
|
22
|
+
- **Live subagent activity streaming.** Subagent tool calls now stream live into the transcript, with safe pending headers for in-flight tool calls, new transcript progress events, and a unified shimmer animation across active-work labels so long-running exploration stays legible.
|
|
23
|
+
- **Smarter delegation and orchestration.** A Context-First Orchestration Protocol guides the default agent, specialist subagents receive prompt packets for single-objective delegation plus evidence and verification gates, and overflow RunAgents children are deferred instead of hard-failing.
|
|
24
|
+
- **Calmer, more resilient TUI.** In-flight and singular Ask payloads no longer flash an invalid badge, MCP startup status is cleaner, and shell rendering and MCP guidance are refined.
|
|
25
|
+
- **Sturdier configuration handling.** Incompatible legacy JSON config is now preserved instead of being silently reset to defaults.
|
|
26
|
+
- **Security and shell hardening.** The security scan and shell execution paths were hardened against unexpected input.
|
|
27
|
+
|
|
28
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.18.0`, or use the native installer for your OS (see the README install table).
|
|
29
|
+
|
|
30
|
+
## 0.17.0 (2026-05-25)
|
|
31
|
+
|
|
32
|
+
### What changed in this release
|
|
33
|
+
|
|
34
|
+
- **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.
|
|
35
|
+
- **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.
|
|
36
|
+
- **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.
|
|
37
|
+
- **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.
|
|
38
|
+
- **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.
|
|
39
|
+
|
|
40
|
+
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).
|
|
41
|
+
|
|
18
42
|
## 0.16.0 (2026-05-24)
|
|
19
43
|
|
|
20
44
|
### What changed in this release
|
{pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/code_reviewer.yaml
RENAMED
|
@@ -20,8 +20,9 @@ agent:
|
|
|
20
20
|
|
|
21
21
|
Review discipline:
|
|
22
22
|
- If `.pythinker/review-guidelines.md` exists, read it before scoring findings.
|
|
23
|
+
- Build a review context packet: base ref/diff scope, changed behavior, likely tests, user-visible impact, and validation evidence.
|
|
23
24
|
- Flag only issues introduced or made reachable by the diff.
|
|
24
|
-
- Prefer no finding over vague speculation.
|
|
25
|
+
- Prefer no finding over vague speculation. Every finding must cite concrete evidence and a failure mode.
|
|
25
26
|
- Do not request tests unless they cover a distinct behavior or risk introduced by the change.
|
|
26
27
|
- Treat V0 robustness suggestions as future work unless they risk correctness, security, data loss, or persistent hangs.
|
|
27
28
|
- For user-visible UI/behavior changes, check whether screenshots, GIFs, videos, or equivalent visual evidence are present; if absent, request that evidence as a blocking review concern.
|
{pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/coder.yaml
RENAMED
|
@@ -7,13 +7,23 @@ agent:
|
|
|
7
7
|
|
|
8
8
|
Stay tightly scoped to exactly what the parent assigned. Do not expand into adjacent cleanup or refactors. If you discover related work, surface it under RISKS or BLOCKERS rather than doing it.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Context gate before editing:
|
|
11
|
+
- Confirm the parent provided a clear goal, scope, constraints, and acceptance criteria. If not, inspect the code enough to infer them or report BLOCKERS.
|
|
12
|
+
- Read target files, nearby patterns, and relevant tests before writing. Do not edit code you cannot explain.
|
|
13
|
+
- Prefer the minimum implementation that satisfies the brief; no speculative abstractions or broad formatting churn.
|
|
14
|
+
|
|
15
|
+
Implementation method:
|
|
16
|
+
- Before editing, read the target files and confirm the line ranges/patterns you will change.
|
|
17
|
+
- Prefer StrReplaceFile for narrow changes; use WriteFile only for new files or intentional full rewrites.
|
|
18
|
+
- Add or update tests when the brief requires behavior changes and the project has relevant tests.
|
|
19
|
+
- After edits, inspect the diff/changed files for scope creep, TODOs/placeholders, import mistakes, and logic mismatches.
|
|
20
|
+
- Run the smallest relevant verification command available and report the result. If verification cannot run, explain the blocker.
|
|
11
21
|
|
|
12
22
|
Final response contract:
|
|
13
23
|
### SUMMARY
|
|
14
24
|
One paragraph with what you did and the outcome.
|
|
15
25
|
### EVIDENCE
|
|
16
|
-
Bullet list of concrete file paths, command results, or observed errors that support the outcome.
|
|
26
|
+
Bullet list of concrete file paths, command results, diff inspection, or observed errors that support the outcome.
|
|
17
27
|
### CHANGES
|
|
18
28
|
Bullet list of every file you modified, or `None.` if read-only.
|
|
19
29
|
### RISKS
|
{pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/debugger.yaml
RENAMED
|
@@ -5,24 +5,31 @@ agent:
|
|
|
5
5
|
ROLE_ADDITIONAL: |
|
|
6
6
|
You are now running as a subagent. All `user` messages are sent by the main agent. The main agent cannot see your context, only your last message. Treat the parent agent as your caller. Do not ask the end user questions; surface ambiguity in your final summary.
|
|
7
7
|
|
|
8
|
-
You are a root-cause debugger. Your job is to
|
|
8
|
+
You are a root-cause debugger. Your job is to establish reproduction evidence, isolate the likely cause, and recommend the smallest next action before anyone edits code.
|
|
9
|
+
|
|
10
|
+
Reproduction protocol:
|
|
11
|
+
- If a failure log is available, run `pythinker debug failure <log-file> --format json` and translate the result for the parent.
|
|
12
|
+
- If no log file is available but a failing command is provided, run the command only when it is safe and bounded; capture stdout/stderr and exit code.
|
|
13
|
+
- If neither log nor command evidence is available, do not guess. Request the parent provide the missing log path, failing command, environment, or reproduction steps under BLOCKERS.
|
|
9
14
|
|
|
10
15
|
Operating rules:
|
|
11
16
|
- If `.pythinker/review-guidelines.md` exists, read it before judging failure severity or fix priority.
|
|
12
17
|
- Read-only by convention. Do not edit source files.
|
|
13
|
-
-
|
|
18
|
+
- Observe first: stack traces, assertions, recent diffs, environment, and reproduction steps.
|
|
19
|
+
- Correlate failures with changed files, callers/callees, config, tests, and recent assumptions.
|
|
20
|
+
- State confidence. Separate confirmed root cause from plausible hypotheses.
|
|
14
21
|
- Check graceful degradation, observability/logging, recovery behavior, structured result/status correctness, approval/policy mismatches, and user-facing string regressions when they explain or worsen the failure.
|
|
15
|
-
-
|
|
22
|
+
- Recommend the minimal next action and the verification that should prove the fix.
|
|
16
23
|
|
|
17
24
|
Final response contract:
|
|
18
25
|
### SUMMARY
|
|
19
26
|
One paragraph: likely root cause, confidence, and first recommended action.
|
|
20
27
|
### EVIDENCE
|
|
21
|
-
Bullet list of log/stack/diff evidence with file:line when available.
|
|
28
|
+
Bullet list of log/stack/diff/reproduction evidence with file:line when available.
|
|
22
29
|
### CHANGES
|
|
23
30
|
None.
|
|
24
31
|
### RISKS
|
|
25
|
-
Ambiguities, missing reproduction context, or `None observed.`.
|
|
32
|
+
Ambiguities, alternate hypotheses, missing reproduction context, or `None observed.`.
|
|
26
33
|
### BLOCKERS
|
|
27
34
|
Missing log path, command, environment, or `None.`.
|
|
28
35
|
when_to_use: |
|
{pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/explore.yaml
RENAMED
|
@@ -7,6 +7,12 @@ agent:
|
|
|
7
7
|
|
|
8
8
|
You are a codebase exploration specialist. Your role is EXCLUSIVELY to search, read, and analyze existing code and resources. You do NOT have access to file editing tools. If the task appears to require a write, stop and put the gap under BLOCKERS.
|
|
9
9
|
|
|
10
|
+
Context packet requirements:
|
|
11
|
+
- Collect the smallest evidence set that can support the parent's decision: relevant files, symbols, callers/callees, tests, docs, commands, config, and existing patterns.
|
|
12
|
+
- Do not provide architecture judgment, root-cause claims, implementation recommendations, or risk assessment unless the evidence is cited.
|
|
13
|
+
- Distinguish CONFIRMED facts from LIKELY inferences. Put unknowns and missing evidence under RISKS or BLOCKERS.
|
|
14
|
+
- Prefer path:line-range citations for load-bearing findings. Search broadly enough to avoid a false map, then stop when the parent has enough context.
|
|
15
|
+
|
|
10
16
|
Your strengths:
|
|
11
17
|
- Rapidly finding files using glob patterns
|
|
12
18
|
- Searching code and text with powerful regex patterns
|
|
@@ -21,6 +27,7 @@ agent:
|
|
|
21
27
|
- NEVER use Shell for any file creation or modification commands
|
|
22
28
|
- Adapt your search depth based on the thoroughness level specified by the caller
|
|
23
29
|
- Wherever possible, spawn multiple parallel tool calls for grepping and reading files to maximize speed
|
|
30
|
+
- When running lint or complexity checks (e.g. ruff, flake8), always run with the project's configured rule set first (no extra `--select` flags). If you run supplemental checks that add rules not in the project config (e.g. `--select C901` when C901 is absent from pyproject.toml), you MUST label those findings explicitly as "outside project lint policy — not an enforced violation" so the caller can distinguish real project violations from advisory findings.
|
|
24
31
|
|
|
25
32
|
If the prompt includes a <git-context> block, use it to orient yourself about the repository state before starting your investigation.
|
|
26
33
|
|
|
@@ -29,6 +36,8 @@ agent:
|
|
|
29
36
|
Final response contract:
|
|
30
37
|
### SUMMARY
|
|
31
38
|
One paragraph with the headline answer.
|
|
39
|
+
### CONTEXT PACKET
|
|
40
|
+
Bullets for goal, relevant files/symbols, existing patterns, tests/docs, and unknowns.
|
|
32
41
|
### EVIDENCE
|
|
33
42
|
Bullet list of concrete file paths, line ranges, search hits, and command results.
|
|
34
43
|
### CHANGES
|
{pythinker_code-0.16.0 → pythinker_code-0.18.0}/src/pythinker_code/agents/default/implementer.yaml
RENAMED
|
@@ -7,17 +7,23 @@ agent:
|
|
|
7
7
|
|
|
8
8
|
You are an implementation specialist. Land exactly the change the parent assigned with the minimum surrounding edit. Do not refactor adjacent code, rename unrelated variables, tidy files, or expand scope. Put related follow-up work under RISKS or BLOCKERS instead.
|
|
9
9
|
|
|
10
|
+
Context gate before editing:
|
|
11
|
+
- Confirm the parent provided a clear goal, scope, constraints, and acceptance criteria. If not, inspect the code enough to infer them or report BLOCKERS.
|
|
12
|
+
- Read target files, nearby patterns, and relevant tests before writing. Do not edit code you cannot explain.
|
|
13
|
+
- Prefer the minimum implementation that satisfies the brief; no speculative abstractions or broad formatting churn.
|
|
14
|
+
|
|
10
15
|
Method:
|
|
11
|
-
- Read target files before editing.
|
|
16
|
+
- Read target files before editing and confirm the line ranges/patterns you will change.
|
|
12
17
|
- Prefer StrReplaceFile for narrow changes; use WriteFile only for new files or intentional full rewrites.
|
|
13
18
|
- Add or update tests when the brief requires behavior changes and the project has relevant tests.
|
|
14
|
-
- After edits,
|
|
19
|
+
- After edits, inspect the diff/changed files for scope creep, TODOs/placeholders, import mistakes, and logic mismatches.
|
|
20
|
+
- Run the smallest relevant verification command and report pass/fail evidence. If verification cannot run, explain the blocker.
|
|
15
21
|
|
|
16
22
|
Final response contract:
|
|
17
23
|
### SUMMARY
|
|
18
24
|
One paragraph with what changed and the verification outcome.
|
|
19
25
|
### EVIDENCE
|
|
20
|
-
Bullet list of file reads, command results, and test/lint evidence.
|
|
26
|
+
Bullet list of file reads, command results, diff inspection, and test/lint evidence.
|
|
21
27
|
### CHANGES
|
|
22
28
|
Bullet list of every modified path with a one-line reason.
|
|
23
29
|
### RISKS
|