pythinker-code 0.17.0__tar.gz → 0.19.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.17.0 → pythinker_code-0.19.0}/PKG-INFO +45 -48
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/README.md +44 -47
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/pyproject.toml +1 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/CHANGELOG.md +23 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/agent.yaml +1 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/code_reviewer.yaml +2 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/coder.yaml +12 -2
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/debugger.yaml +12 -5
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/explore.yaml +9 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/implementer.yaml +9 -3
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/plan.yaml +23 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/review.yaml +5 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/security_reviewer.yaml +6 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/system.md +31 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/verifier.yaml +11 -2
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/app.py +20 -3
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/agent_runner.py +14 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/manager.py +42 -2
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/__init__.py +48 -7
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/config.py +81 -25
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/native.py +19 -10
- pythinker_code-0.19.0/src/pythinker_code/project_memory.py +389 -0
- pythinker_code-0.19.0/src/pythinker_code/scratchpad.py +895 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/agent.py +5 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/approval.py +14 -4
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/pythinkersoul.py +60 -34
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/toolset.py +79 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/config.py +18 -10
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/agent/__init__.py +170 -44
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/agent/description.md +5 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/ask_user/__init__.py +16 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/replace.py +3 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/write.py +3 -0
- pythinker_code-0.19.0/src/pythinker_code/tools/memory/__init__.py +57 -0
- pythinker_code-0.19.0/src/pythinker_code/tools/memory/memory.md +20 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/shell/__init__.py +19 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/todo/__init__.py +29 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/__init__.py +12 -6
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/__init__.py +11 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/bash_execution.py +7 -2
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +3 -4
- pythinker_code-0.19.0/src/pythinker_code/ui/shell/components/dynamic_border.py +37 -0
- pythinker_code-0.19.0/src/pythinker_code/ui/shell/components/key_hints.py +55 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/markdown.py +174 -26
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/settings_list.py +56 -7
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/tool_execution.py +3 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/echo.py +2 -9
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/glyphs.py +9 -1
- pythinker_code-0.19.0/src/pythinker_code/ui/shell/mcp_status.py +148 -0
- pythinker_code-0.19.0/src/pythinker_code/ui/shell/model_picker.py +114 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/motion.py +72 -23
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/prompt.py +49 -4
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selector.py +101 -14
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/slash.py +48 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +50 -7
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +10 -3
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +30 -11
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +5 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +11 -3
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +5 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +5 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +10 -18
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +5 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +5 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +2 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +6 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +9 -2
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +5 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/update.py +351 -36
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/__init__.py +6 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +7 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +259 -37
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +4 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +137 -18
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/rich/syntax.py +5 -5
- pythinker_code-0.19.0/src/pythinker_code/utils/sleep_inhibitor.py +473 -0
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/_baseUniq-qyLZSOfA.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/_baseUniq-BJKUYzu3.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/arc-CYkfKUJw.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/arc-BXTizAnD.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-Cc3dJmlV.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-CrmZs6A8.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-HSBk6vox.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-iN-qchC_.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-wRemIQog.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-CSymXbBo.js +1 -1
- pythinker_code-0.19.0/src/pythinker_code/web/static/assets/channel-DEtq9qVe.js +1 -0
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-0esCM_vg.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-CkcnzHUC.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-C55bd2_o.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-BRhj_neq.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DJxNZVQC.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-BT-PCmGa.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-CEWPxLfs.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-CwthrlpX.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-DmhbuRTm.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-D-ZXdM4t.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-nrPUkuWR.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-Do35vPqv.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CzXInrrR.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-BVQCZiDG.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-DREZe46B.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-cXonqPPm.js +1 -1
- pythinker_code-0.19.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-CYs9zedf.js +1 -0
- pythinker_code-0.19.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-CYs9zedf.js +1 -0
- pythinker_code-0.19.0/src/pythinker_code/web/static/assets/clone-ySoezlHt.js +1 -0
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DMVWN-ml.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-O-JPa1HO.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-Coir87Qv.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-Dqgu6ynH.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/cytoscape.esm-eAWqnCYK.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/cytoscape.esm-BbKPamH0.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-CiTUIg0q.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-B_gwu6IS.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-Cq9GXOjk.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CkFdUwfm.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-Eamm6xAa.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-B5pxlJIP.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-DA1Yz6Pa.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-C3FaLt0z.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-DzlJ-wwC.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA--WQoQVnp.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-Bz9U20to.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-CVRcUzt3.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-fsG79E9p.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-CvmJq0nT.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-BjchK9W1.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-DcaE7ZHt.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/graph-DbF6cZU0.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/graph-B6WB3LUd.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-BLAcYwJO.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/index-CvqTAO1o.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-Brd7Qj46.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/index-DAmDs20g.js +2 -2
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/index-BgIGGFpA.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/index-E-71Jnzv.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-CYSDBUZQ.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-DUao-JQ3.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-BeF28JOm.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-71MJCZxj.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-BVAC2O5Q.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-Bm_Ym4PO.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/layout-DNSNr4If.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/layout-BYpW8sEN.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/linear-HQWQZMSq.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/linear-Bflt3o9l.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BeS6uII_.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-kaBVL_6z.js +7 -7
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mermaid.core-CsiBWAvS.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/mermaid.core-QLxteY2A.js +5 -5
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/min-z2ooYt5Q.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/min-C3V_Z9jj.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-BrkkNtDO.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-DMH_lU93.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-C0odTEkg.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-CxTkLVEY.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-Daco3FUa.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-GTS11l49.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-vOrTEG8b.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-CqAQTzsj.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-BVExYdTG.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-kLwolHEO.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-BkPzuwcM.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-BI1wC-bA.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-Bontz6tD.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-Tjq304Gx.js +1 -1
- pythinker_code-0.19.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-C40rbI0B.js +1 -0
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-CxfiYDXf.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-WWeHtoIi.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-B-wzCRqq.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-DqnLuAds.js +1 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-DIGOnUa7.js → pythinker_code-0.19.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-DtT_UDiY.js +1 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/index.html +1 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/install.ps1 +1 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/install.sh +5 -6
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/wire/types.py +48 -0
- pythinker_code-0.17.0/src/pythinker_code/ui/shell/components/key_hints.py +0 -25
- pythinker_code-0.17.0/src/pythinker_code/ui/shell/mcp_status.py +0 -121
- pythinker_code-0.17.0/src/pythinker_code/ui/shell/model_picker.py +0 -319
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/channel-B7CcdrQR.js +0 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-1oL3irp2.js +0 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-1oL3irp2.js +0 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/clone-aTWLJUtw.js +0 -1
- pythinker_code-0.17.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-vD5xTSoN.js +0 -1
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/LICENSE +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/NOTICE +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agentspec.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/openai.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/vis.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/hooks/events.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/hooks/runner.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/llm.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/session_state.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/soul/slash.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/discovery.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/models.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/runner.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/subagents/store.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/read.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/read.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/shell/bash.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/debug.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/setup.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/startup.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/theme.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/api/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/api/sessions.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/api/statistics.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/api/system.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/app.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/vis/static/index.html +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2P5VJ9v.css +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.17.0 → pythinker_code-0.19.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.19.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
|
|
@@ -115,15 +115,14 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
118
|
-
## 🆕 What's New in 0.
|
|
118
|
+
## 🆕 What's New in 0.19.0
|
|
119
119
|
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
123
|
-
- **Release
|
|
124
|
-
- **Provider compatibility refresh.** Anthropic SDK support is updated for 0.101 tool-result block types so direct Anthropic sessions continue to stream tool output correctly.
|
|
120
|
+
- **Central per-project agent memory.** Pythinker now keeps a durable per-project memory (`MEMORY.md` / `USER.md`) under `~/.pythinker/projects/<key>/memory/`, written through a new root-only `Memory` tool with content guards and secret-shape detection, recalled into the root agent's first wakeup prompt within a bounded budget, and inspectable with the new `/memory` command.
|
|
121
|
+
- **Non-blocking update flow.** The blocking pre-start update prompt is replaced by a cached, no-network startup notice plus a triggerable `/update` command, and the native Windows installer now waits on the launching process before swapping files and cleans up its staged installer.
|
|
122
|
+
- **Fully native Homebrew formula.** Brew installs are generated from the same GitHub Release tarballs as the curl installer (including macOS Intel native assets), so they no longer depend on PyPI virtualenv resources.
|
|
123
|
+
- **Release pipeline hardening.** TestPyPI publishing is now non-blocking and publish steps carry timeouts, so a transient staging flake no longer fails a release.
|
|
125
124
|
|
|
126
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
125
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.19.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
|
|
127
126
|
|
|
128
127
|
|
|
129
128
|
---
|
|
@@ -213,7 +212,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
213
212
|
|
|
214
213
|
| Platform | Recommended install | Artifact source |
|
|
215
214
|
|---|---|---|
|
|
216
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
215
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.19.0.exe` from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
217
216
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
218
217
|
| **<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
218
|
| **<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) |
|
|
@@ -238,7 +237,7 @@ pythinker # start the interactive TUI
|
|
|
238
237
|
|
|
239
238
|
### 🪟 Windows — native installer
|
|
240
239
|
|
|
241
|
-
`PythinkerSetup-0.
|
|
240
|
+
`PythinkerSetup-0.19.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
242
241
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
243
242
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
244
243
|
the change. **No UAC prompt.**
|
|
@@ -249,13 +248,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
249
248
|
|
|
250
249
|
# Or manually download the installer + checksum from the Releases page,
|
|
251
250
|
# verify with Get-FileHash, then run:
|
|
252
|
-
.\PythinkerSetup-0.
|
|
251
|
+
.\PythinkerSetup-0.19.0.exe
|
|
253
252
|
|
|
254
253
|
# Open a fresh PowerShell
|
|
255
254
|
pythinker --version
|
|
256
255
|
```
|
|
257
256
|
|
|
258
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
257
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.19.0.exe /ALLUSERS`
|
|
259
258
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
260
259
|
|
|
261
260
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -284,9 +283,10 @@ which pythinker # -> /opt/homebrew/bin/pythinker (Apple Silicon)
|
|
|
284
283
|
# or /usr/local/bin/pythinker (Intel)
|
|
285
284
|
```
|
|
286
285
|
|
|
287
|
-
Works on **Apple Silicon and Intel**
|
|
288
|
-
|
|
289
|
-
`brew upgrade pythinker-code` always finds the
|
|
286
|
+
Works on **Apple Silicon and Intel** from the same native GitHub Release
|
|
287
|
+
tarballs used by the curl installer. The tap auto-publishes a fresh formula on
|
|
288
|
+
every Pythinker release, so `brew upgrade pythinker-code` always finds the
|
|
289
|
+
latest version.
|
|
290
290
|
|
|
291
291
|
**Upgrade:** `brew upgrade pythinker-code` (Homebrew packages don't
|
|
292
292
|
auto-update; run this whenever you want the latest).
|
|
@@ -305,26 +305,26 @@ attached to every GitHub Release.
|
|
|
305
305
|
|
|
306
306
|
```sh
|
|
307
307
|
# Debian / Ubuntu (x86_64)
|
|
308
|
-
sudo dpkg -i pythinker-code_0.
|
|
308
|
+
sudo dpkg -i pythinker-code_0.19.0_amd64.deb
|
|
309
309
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
310
310
|
|
|
311
311
|
# Debian / Ubuntu (ARM64)
|
|
312
|
-
sudo dpkg -i pythinker-code_0.
|
|
312
|
+
sudo dpkg -i pythinker-code_0.19.0_arm64.deb
|
|
313
313
|
|
|
314
314
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
315
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
316
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
317
|
-
sha256sum -c pythinker-code-0.
|
|
315
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.x86_64.rpm
|
|
316
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.x86_64.rpm.sha256
|
|
317
|
+
sha256sum -c pythinker-code-0.19.0.x86_64.rpm.sha256
|
|
318
318
|
# Fedora / RHEL:
|
|
319
|
-
sudo dnf install ./pythinker-code-0.
|
|
319
|
+
sudo dnf install ./pythinker-code-0.19.0.x86_64.rpm
|
|
320
320
|
# openSUSE:
|
|
321
|
-
sudo zypper install ./pythinker-code-0.
|
|
321
|
+
sudo zypper install ./pythinker-code-0.19.0.x86_64.rpm
|
|
322
322
|
|
|
323
323
|
# Fedora / RHEL (aarch64)
|
|
324
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
325
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
326
|
-
sha256sum -c pythinker-code-0.
|
|
327
|
-
sudo dnf install ./pythinker-code-0.
|
|
324
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.aarch64.rpm
|
|
325
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.aarch64.rpm.sha256
|
|
326
|
+
sha256sum -c pythinker-code-0.19.0.aarch64.rpm.sha256
|
|
327
|
+
sudo dnf install ./pythinker-code-0.19.0.aarch64.rpm
|
|
328
328
|
```
|
|
329
329
|
|
|
330
330
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -333,8 +333,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
333
333
|
**Verify before install:**
|
|
334
334
|
|
|
335
335
|
```sh
|
|
336
|
-
sha256sum -c pythinker-code_0.
|
|
337
|
-
sha256sum -c pythinker-code-0.
|
|
336
|
+
sha256sum -c pythinker-code_0.19.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
337
|
+
sha256sum -c pythinker-code-0.19.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
338
338
|
```
|
|
339
339
|
|
|
340
340
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -364,7 +364,7 @@ at `~/.local/bin/pythinker`.
|
|
|
364
364
|
curl -fsSL https://pythinker.com/install.sh | bash
|
|
365
365
|
|
|
366
366
|
# Pin a specific version
|
|
367
|
-
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.
|
|
367
|
+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.19.0
|
|
368
368
|
|
|
369
369
|
# Custom prefix (defaults to $HOME/.local)
|
|
370
370
|
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
|
|
@@ -385,13 +385,13 @@ Supported targets:
|
|
|
385
385
|
|
|
386
386
|
| `uname -s / -m` | Tarball asset |
|
|
387
387
|
|---|---|
|
|
388
|
-
| Linux / x86_64 | `pythinker
|
|
389
|
-
| Linux / aarch64 | `pythinker
|
|
390
|
-
| Darwin / arm64 | `pythinker
|
|
388
|
+
| Linux / x86_64 | `pythinker-<version>-x86_64-unknown-linux-gnu.tar.gz` |
|
|
389
|
+
| Linux / aarch64 | `pythinker-<version>-aarch64-unknown-linux-gnu.tar.gz` |
|
|
390
|
+
| Darwin / arm64 | `pythinker-<version>-aarch64-apple-darwin.tar.gz` |
|
|
391
|
+
| Darwin / x86_64 | `pythinker-<version>-x86_64-apple-darwin.tar.gz` |
|
|
391
392
|
|
|
392
393
|
The script prints PATH guidance if `~/.local/bin` isn't already on your
|
|
393
|
-
`$PATH`.
|
|
394
|
-
no PyInstaller-built Intel Darwin binary is published.
|
|
394
|
+
`$PATH`.
|
|
395
395
|
|
|
396
396
|
**Uninstall:** `rm ~/.local/bin/pythinker`.
|
|
397
397
|
|
|
@@ -617,14 +617,18 @@ Pythinker loads [Model Context Protocol](https://modelcontextprotocol.io/) tools
|
|
|
617
617
|
### 🛠️ Manage persistent MCP servers
|
|
618
618
|
|
|
619
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
|
+
|
|
620
624
|
# 🌐 Streamable HTTP server with API key
|
|
621
|
-
pythinker mcp add --transport http
|
|
622
|
-
--header "
|
|
625
|
+
pythinker mcp add --transport http docs https://example.com/mcp \
|
|
626
|
+
--header "API_KEY: your-key"
|
|
623
627
|
|
|
624
628
|
# 🔐 Streamable HTTP server with OAuth
|
|
625
629
|
pythinker mcp add --transport http --auth oauth linear https://mcp.linear.app/mcp
|
|
626
630
|
|
|
627
|
-
# 💻 stdio server
|
|
631
|
+
# 💻 stdio server with explicit transport
|
|
628
632
|
pythinker mcp add --transport stdio chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
629
633
|
|
|
630
634
|
# 📋 List, authorize, test, and remove
|
|
@@ -714,16 +718,9 @@ file paths, or any user-identifying data. Two channels:
|
|
|
714
718
|
- Your real name, email, IP address, hostname (host name field is dropped at the edge collector)
|
|
715
719
|
- Tool arguments (e.g. what file you read, what command you ran)
|
|
716
720
|
|
|
717
|
-
###
|
|
718
|
-
|
|
719
|
-
Telemetry is off by default. To enable it for a process:
|
|
720
|
-
|
|
721
|
-
```sh
|
|
722
|
-
export PYTHINKER_ENABLE_TELEMETRY=1
|
|
723
|
-
pythinker
|
|
724
|
-
```
|
|
721
|
+
### Turning it off
|
|
725
722
|
|
|
726
|
-
|
|
723
|
+
Telemetry is on by default. To turn it off:
|
|
727
724
|
|
|
728
725
|
```sh
|
|
729
726
|
# 1. Per-invocation CLI flag
|
|
@@ -753,8 +750,8 @@ export PYTHINKER_OTEL_ENDPOINT="https://your-otel-collector.example.com"
|
|
|
753
750
|
export PYTHINKER_OTEL_TOKEN="<your bearer token>"
|
|
754
751
|
```
|
|
755
752
|
|
|
756
|
-
The defaults point at infrastructure operated by the pythinker maintainers
|
|
757
|
-
|
|
753
|
+
The defaults point at infrastructure operated by the pythinker maintainers and
|
|
754
|
+
are used automatically unless you turn telemetry off.
|
|
758
755
|
|
|
759
756
|
---
|
|
760
757
|
|
|
@@ -50,15 +50,14 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
## 🆕 What's New in 0.
|
|
53
|
+
## 🆕 What's New in 0.19.0
|
|
54
54
|
|
|
55
|
-
- **
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
- **Release
|
|
59
|
-
- **Provider compatibility refresh.** Anthropic SDK support is updated for 0.101 tool-result block types so direct Anthropic sessions continue to stream tool output correctly.
|
|
55
|
+
- **Central per-project agent memory.** Pythinker now keeps a durable per-project memory (`MEMORY.md` / `USER.md`) under `~/.pythinker/projects/<key>/memory/`, written through a new root-only `Memory` tool with content guards and secret-shape detection, recalled into the root agent's first wakeup prompt within a bounded budget, and inspectable with the new `/memory` command.
|
|
56
|
+
- **Non-blocking update flow.** The blocking pre-start update prompt is replaced by a cached, no-network startup notice plus a triggerable `/update` command, and the native Windows installer now waits on the launching process before swapping files and cleans up its staged installer.
|
|
57
|
+
- **Fully native Homebrew formula.** Brew installs are generated from the same GitHub Release tarballs as the curl installer (including macOS Intel native assets), so they no longer depend on PyPI virtualenv resources.
|
|
58
|
+
- **Release pipeline hardening.** TestPyPI publishing is now non-blocking and publish steps carry timeouts, so a transient staging flake no longer fails a release.
|
|
60
59
|
|
|
61
|
-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.
|
|
60
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.19.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
|
|
62
61
|
|
|
63
62
|
|
|
64
63
|
---
|
|
@@ -148,7 +147,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
|
|
|
148
147
|
|
|
149
148
|
| Platform | Recommended install | Artifact source |
|
|
150
149
|
|---|---|---|
|
|
151
|
-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.
|
|
150
|
+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.19.0.exe` from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
152
151
|
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
|
|
153
152
|
| **<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
153
|
| **<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) |
|
|
@@ -173,7 +172,7 @@ pythinker # start the interactive TUI
|
|
|
173
172
|
|
|
174
173
|
### 🪟 Windows — native installer
|
|
175
174
|
|
|
176
|
-
`PythinkerSetup-0.
|
|
175
|
+
`PythinkerSetup-0.19.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
177
176
|
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
178
177
|
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
179
178
|
the change. **No UAC prompt.**
|
|
@@ -184,13 +183,13 @@ irm https://pythinker.com/install.ps1 | iex
|
|
|
184
183
|
|
|
185
184
|
# Or manually download the installer + checksum from the Releases page,
|
|
186
185
|
# verify with Get-FileHash, then run:
|
|
187
|
-
.\PythinkerSetup-0.
|
|
186
|
+
.\PythinkerSetup-0.19.0.exe
|
|
188
187
|
|
|
189
188
|
# Open a fresh PowerShell
|
|
190
189
|
pythinker --version
|
|
191
190
|
```
|
|
192
191
|
|
|
193
|
-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.
|
|
192
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.19.0.exe /ALLUSERS`
|
|
194
193
|
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
195
194
|
|
|
196
195
|
**Upgrade:** `pythinker update` from inside the running app — it downloads
|
|
@@ -219,9 +218,10 @@ which pythinker # -> /opt/homebrew/bin/pythinker (Apple Silicon)
|
|
|
219
218
|
# or /usr/local/bin/pythinker (Intel)
|
|
220
219
|
```
|
|
221
220
|
|
|
222
|
-
Works on **Apple Silicon and Intel**
|
|
223
|
-
|
|
224
|
-
`brew upgrade pythinker-code` always finds the
|
|
221
|
+
Works on **Apple Silicon and Intel** from the same native GitHub Release
|
|
222
|
+
tarballs used by the curl installer. The tap auto-publishes a fresh formula on
|
|
223
|
+
every Pythinker release, so `brew upgrade pythinker-code` always finds the
|
|
224
|
+
latest version.
|
|
225
225
|
|
|
226
226
|
**Upgrade:** `brew upgrade pythinker-code` (Homebrew packages don't
|
|
227
227
|
auto-update; run this whenever you want the latest).
|
|
@@ -240,26 +240,26 @@ attached to every GitHub Release.
|
|
|
240
240
|
|
|
241
241
|
```sh
|
|
242
242
|
# Debian / Ubuntu (x86_64)
|
|
243
|
-
sudo dpkg -i pythinker-code_0.
|
|
243
|
+
sudo dpkg -i pythinker-code_0.19.0_amd64.deb
|
|
244
244
|
sudo apt-get install -f # only if dpkg reports missing deps
|
|
245
245
|
|
|
246
246
|
# Debian / Ubuntu (ARM64)
|
|
247
|
-
sudo dpkg -i pythinker-code_0.
|
|
247
|
+
sudo dpkg -i pythinker-code_0.19.0_arm64.deb
|
|
248
248
|
|
|
249
249
|
# Fedora / RHEL / openSUSE (x86_64)
|
|
250
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
251
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
252
|
-
sha256sum -c pythinker-code-0.
|
|
250
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.x86_64.rpm
|
|
251
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.x86_64.rpm.sha256
|
|
252
|
+
sha256sum -c pythinker-code-0.19.0.x86_64.rpm.sha256
|
|
253
253
|
# Fedora / RHEL:
|
|
254
|
-
sudo dnf install ./pythinker-code-0.
|
|
254
|
+
sudo dnf install ./pythinker-code-0.19.0.x86_64.rpm
|
|
255
255
|
# openSUSE:
|
|
256
|
-
sudo zypper install ./pythinker-code-0.
|
|
256
|
+
sudo zypper install ./pythinker-code-0.19.0.x86_64.rpm
|
|
257
257
|
|
|
258
258
|
# Fedora / RHEL (aarch64)
|
|
259
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
260
|
-
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.
|
|
261
|
-
sha256sum -c pythinker-code-0.
|
|
262
|
-
sudo dnf install ./pythinker-code-0.
|
|
259
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.aarch64.rpm
|
|
260
|
+
curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.19.0/pythinker-code-0.19.0.aarch64.rpm.sha256
|
|
261
|
+
sha256sum -c pythinker-code-0.19.0.aarch64.rpm.sha256
|
|
262
|
+
sudo dnf install ./pythinker-code-0.19.0.aarch64.rpm
|
|
263
263
|
```
|
|
264
264
|
|
|
265
265
|
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
@@ -268,8 +268,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
|
268
268
|
**Verify before install:**
|
|
269
269
|
|
|
270
270
|
```sh
|
|
271
|
-
sha256sum -c pythinker-code_0.
|
|
272
|
-
sha256sum -c pythinker-code-0.
|
|
271
|
+
sha256sum -c pythinker-code_0.19.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
272
|
+
sha256sum -c pythinker-code-0.19.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
273
273
|
```
|
|
274
274
|
|
|
275
275
|
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
@@ -299,7 +299,7 @@ at `~/.local/bin/pythinker`.
|
|
|
299
299
|
curl -fsSL https://pythinker.com/install.sh | bash
|
|
300
300
|
|
|
301
301
|
# Pin a specific version
|
|
302
|
-
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.
|
|
302
|
+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.19.0
|
|
303
303
|
|
|
304
304
|
# Custom prefix (defaults to $HOME/.local)
|
|
305
305
|
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
|
|
@@ -320,13 +320,13 @@ Supported targets:
|
|
|
320
320
|
|
|
321
321
|
| `uname -s / -m` | Tarball asset |
|
|
322
322
|
|---|---|
|
|
323
|
-
| Linux / x86_64 | `pythinker
|
|
324
|
-
| Linux / aarch64 | `pythinker
|
|
325
|
-
| Darwin / arm64 | `pythinker
|
|
323
|
+
| Linux / x86_64 | `pythinker-<version>-x86_64-unknown-linux-gnu.tar.gz` |
|
|
324
|
+
| Linux / aarch64 | `pythinker-<version>-aarch64-unknown-linux-gnu.tar.gz` |
|
|
325
|
+
| Darwin / arm64 | `pythinker-<version>-aarch64-apple-darwin.tar.gz` |
|
|
326
|
+
| Darwin / x86_64 | `pythinker-<version>-x86_64-apple-darwin.tar.gz` |
|
|
326
327
|
|
|
327
328
|
The script prints PATH guidance if `~/.local/bin` isn't already on your
|
|
328
|
-
`$PATH`.
|
|
329
|
-
no PyInstaller-built Intel Darwin binary is published.
|
|
329
|
+
`$PATH`.
|
|
330
330
|
|
|
331
331
|
**Uninstall:** `rm ~/.local/bin/pythinker`.
|
|
332
332
|
|
|
@@ -552,14 +552,18 @@ Pythinker loads [Model Context Protocol](https://modelcontextprotocol.io/) tools
|
|
|
552
552
|
### 🛠️ Manage persistent MCP servers
|
|
553
553
|
|
|
554
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
|
+
|
|
555
559
|
# 🌐 Streamable HTTP server with API key
|
|
556
|
-
pythinker mcp add --transport http
|
|
557
|
-
--header "
|
|
560
|
+
pythinker mcp add --transport http docs https://example.com/mcp \
|
|
561
|
+
--header "API_KEY: your-key"
|
|
558
562
|
|
|
559
563
|
# 🔐 Streamable HTTP server with OAuth
|
|
560
564
|
pythinker mcp add --transport http --auth oauth linear https://mcp.linear.app/mcp
|
|
561
565
|
|
|
562
|
-
# 💻 stdio server
|
|
566
|
+
# 💻 stdio server with explicit transport
|
|
563
567
|
pythinker mcp add --transport stdio chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
564
568
|
|
|
565
569
|
# 📋 List, authorize, test, and remove
|
|
@@ -649,16 +653,9 @@ file paths, or any user-identifying data. Two channels:
|
|
|
649
653
|
- Your real name, email, IP address, hostname (host name field is dropped at the edge collector)
|
|
650
654
|
- Tool arguments (e.g. what file you read, what command you ran)
|
|
651
655
|
|
|
652
|
-
###
|
|
653
|
-
|
|
654
|
-
Telemetry is off by default. To enable it for a process:
|
|
655
|
-
|
|
656
|
-
```sh
|
|
657
|
-
export PYTHINKER_ENABLE_TELEMETRY=1
|
|
658
|
-
pythinker
|
|
659
|
-
```
|
|
656
|
+
### Turning it off
|
|
660
657
|
|
|
661
|
-
|
|
658
|
+
Telemetry is on by default. To turn it off:
|
|
662
659
|
|
|
663
660
|
```sh
|
|
664
661
|
# 1. Per-invocation CLI flag
|
|
@@ -688,8 +685,8 @@ export PYTHINKER_OTEL_ENDPOINT="https://your-otel-collector.example.com"
|
|
|
688
685
|
export PYTHINKER_OTEL_TOKEN="<your bearer token>"
|
|
689
686
|
```
|
|
690
687
|
|
|
691
|
-
The defaults point at infrastructure operated by the pythinker maintainers
|
|
692
|
-
|
|
688
|
+
The defaults point at infrastructure operated by the pythinker maintainers and
|
|
689
|
+
are used automatically unless you turn telemetry off.
|
|
693
690
|
|
|
694
691
|
---
|
|
695
692
|
|
|
@@ -15,6 +15,29 @@ GitHub Releases page; `0.8.0` is the new starting line.
|
|
|
15
15
|
|
|
16
16
|
## Unreleased
|
|
17
17
|
|
|
18
|
+
## 0.19.0 (2026-05-27)
|
|
19
|
+
|
|
20
|
+
### What changed in this release
|
|
21
|
+
|
|
22
|
+
- **Central per-project agent memory.** Pythinker now keeps a durable per-project memory (`MEMORY.md` / `USER.md`) under `~/.pythinker/projects/<key>/memory/`, written through a new root-only `Memory` tool with content guards and secret-shape detection, recalled into the root agent's first wakeup prompt within a bounded budget, and inspectable with the new `/memory` command.
|
|
23
|
+
- **Non-blocking update flow.** The blocking pre-start update prompt is replaced by a cached, no-network startup notice plus a triggerable `/update` command, and the native Windows installer now waits on the launching process before swapping files and cleans up its staged installer.
|
|
24
|
+
- **Fully native Homebrew formula.** Brew installs are generated from the same GitHub Release tarballs as the curl installer (including macOS Intel native assets), so they no longer depend on PyPI virtualenv resources.
|
|
25
|
+
- **Release pipeline hardening.** TestPyPI publishing is now non-blocking and publish steps carry timeouts, so a transient staging flake no longer fails a release.
|
|
26
|
+
|
|
27
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.19.0`, or use the native installer for your OS (see the README install table).
|
|
28
|
+
|
|
29
|
+
## 0.18.0 (2026-05-27)
|
|
30
|
+
|
|
31
|
+
### What changed in this release
|
|
32
|
+
|
|
33
|
+
- **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.
|
|
34
|
+
- **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.
|
|
35
|
+
- **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.
|
|
36
|
+
- **Sturdier configuration handling.** Incompatible legacy JSON config is now preserved instead of being silently reset to defaults.
|
|
37
|
+
- **Security and shell hardening.** The security scan and shell execution paths were hardened against unexpected input.
|
|
38
|
+
|
|
39
|
+
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).
|
|
40
|
+
|
|
18
41
|
## 0.17.0 (2026-05-25)
|
|
19
42
|
|
|
20
43
|
### What changed in this release
|
{pythinker_code-0.17.0 → pythinker_code-0.19.0}/src/pythinker_code/agents/default/agent.yaml
RENAMED
|
@@ -12,6 +12,7 @@ agent:
|
|
|
12
12
|
# - "pythinker_code.tools.think:Think"
|
|
13
13
|
- "pythinker_code.tools.ask_user:AskUserQuestion"
|
|
14
14
|
- "pythinker_code.tools.todo:SetTodoList"
|
|
15
|
+
- "pythinker_code.tools.memory:Memory"
|
|
15
16
|
- "pythinker_code.tools.shell:Shell"
|
|
16
17
|
- "pythinker_code.tools.background:TaskList"
|
|
17
18
|
- "pythinker_code.tools.background:TaskOutput"
|
{pythinker_code-0.17.0 → pythinker_code-0.19.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.17.0 → pythinker_code-0.19.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.17.0 → pythinker_code-0.19.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.17.0 → pythinker_code-0.19.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.17.0 → pythinker_code-0.19.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
|