pythinker-code 0.47.0__tar.gz โ 0.48.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.48.0/PKG-INFO +881 -0
- pythinker_code-0.48.0/README.md +816 -0
- pythinker_code-0.48.0/pyproject.toml +224 -0
- pythinker_code-0.48.0/src/pythinker_code/CHANGELOG.md +886 -0
- pythinker_code-0.48.0/src/pythinker_code/agents/default/agent.yaml +87 -0
- pythinker_code-0.48.0/src/pythinker_code/agents/default/coder.yaml +118 -0
- pythinker_code-0.48.0/src/pythinker_code/agents/default/security_reviewer.yaml +94 -0
- pythinker_code-0.48.0/src/pythinker_code/agents/default/system.md +256 -0
- pythinker_code-0.48.0/src/pythinker_code/app.py +994 -0
- pythinker_code-0.48.0/src/pythinker_code/config.py +1570 -0
- pythinker_code-0.48.0/src/pythinker_code/llm.py +642 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/__init__.py +11 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/client.py +323 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/diagnostics.py +319 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/framing.py +81 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/instance.py +257 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/manager.py +212 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/plugin_servers.py +224 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/protocol.py +156 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/recommend.py +195 -0
- pythinker_code-0.48.0/src/pythinker_code/lsp/service.py +165 -0
- pythinker_code-0.48.0/src/pythinker_code/plugin/manifest.py +267 -0
- pythinker_code-0.48.0/src/pythinker_code/plugin/marketplace.py +208 -0
- pythinker_code-0.48.0/src/pythinker_code/soul/agent.py +779 -0
- pythinker_code-0.48.0/src/pythinker_code/soul/dynamic_injections/lsp_diagnostics.py +53 -0
- pythinker_code-0.48.0/src/pythinker_code/soul/pythinkersoul.py +2788 -0
- pythinker_code-0.48.0/src/pythinker_code/soul/toolset.py +1908 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/agent/__init__.py +1075 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/file/replace.py +561 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/file/write.py +270 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/lsp/__init__.py +3 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/lsp/formatters.py +452 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/lsp/schemas.py +26 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/lsp/symbol_context.py +78 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/lsp/tool.md +21 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/lsp/tool.py +460 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/plan/__init__.py +377 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/todo/__init__.py +355 -0
- pythinker_code-0.48.0/src/pythinker_code/tools/tool_search/tool_search.md +9 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/__init__.py +2704 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/diff.py +588 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/dynamic_border.py +36 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/markdown.py +85 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/render_utils.py +242 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/report.py +788 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/report_prose_blocks.py +333 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/report_update.py +574 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/components/tool_execution.py +347 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/design_system.py +114 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/echo.py +54 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/glyphs.py +88 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/markdown/__init__.py +38 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/markdown/audit.py +666 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/markdown/elements.py +206 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/markdown/fences.py +61 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/markdown/normalizers.py +757 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/markdown/renderer.py +84 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/markdown/streaming.py +109 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/mcp_status.py +171 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/motion.py +384 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/prompt.py +4282 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/selectors/code_theme.py +47 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/slash.py +2622 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/spacing.py +95 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/statusline.py +691 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/__init__.py +220 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +178 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +419 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/agent.py +868 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +128 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/background.py +480 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/edit.py +193 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/find.py +126 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/grep.py +188 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/lsp.py +158 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/mcp_resource.py +100 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/memory.py +368 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/plan.py +107 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/read.py +232 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/read_media.py +166 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/skill.py +85 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/smart_search.py +197 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/todo.py +262 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/tool_search.py +125 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/web.py +251 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/worktree.py +94 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/tool_renderers/write.py +159 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/update.py +1486 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/usage.py +418 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/usage_activity.py +551 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/__init__.py +190 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/_blocks.py +2002 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +69 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/_diff_live.py +480 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/_interactive.py +1048 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/_live_view.py +1821 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/_question_panel.py +626 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/shell/visualize/_worklog.py +289 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/__init__.py +106 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/adapters/__init__.py +1 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/adapters/markdown.py +51 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/adapters/task_browser.py +62 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/capabilities.py +27 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/palettes.py +352 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/pythinker_themes.py +130 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/registry.py +248 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/resolver.py +105 -0
- pythinker_code-0.48.0/src/pythinker_code/ui/theme/spec.py +218 -0
- pythinker_code-0.48.0/src/pythinker_code/utils/rich/diff_render.py +563 -0
- pythinker_code-0.48.0/src/pythinker_code/utils/rich/markdown.py +957 -0
- pythinker_code-0.48.0/src/pythinker_code/utils/rich/syntax.py +368 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-BYamRjh1.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-CUrUO6PZ.js +36 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-DqqZRSB4.js +132 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/bootstrap-rCQM9IPn.js +89 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-Ddtgkgc0.js +10 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/channel-DcWGAel6.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-Cu1UEa0U.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-BvW09x34.js +62 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-DFAbJYk3.js +2 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-g-KAHCVh.js +206 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-BdbLq_iV.js +231 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-BbQDo5W4.js +125 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-DX3Z6-Ej.js +57 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-DRzsy3KH.js +10 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-AhJH6S-7.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-C3_yAZ2Q.js +2 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-DrT8t-co.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-BW0obcBx.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-9x-5dTLa.js +11 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-BrTKnUCb.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-nzIv4cHs.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-nzIv4cHs.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-D4iBD2uo.js +2 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-CwbOB22m.js +4 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-BH2GdvZS.js +43 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-04zLB7n6.js +10 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-BoaneL5m.js +3 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DmhpyRJr.js +24 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-C4UMdCZA.js +24 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/dist-C3gosr9x.js +153 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-coUNnf5j.js +85 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-DPqNL9oG.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-CXdKW96G.js +162 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-DideiVAp.js +292 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-DUyPd8kP.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-brm3T9Uk.js +106 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/index-1kmjAkaL.js +2 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/info-J43DQDTF-CuqVhZPe.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-CB4vGN6v.js +2 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-Cc2CInct.js +70 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-sixbjax3.js +139 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-BkWpYweG.js +89 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/line-DG62C0sI.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B9_T5lZN.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/mermaid-parser.core-DtG8m5J_.js +4 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/mermaid.core-CYVEwgHE.js +9 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-DGLQlQ-3.js +96 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/packet-YPE3B663-DSyfxZQu.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-DU6kZ_2f.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-CRh8dmNJ.js +30 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-B_SHSaSa.js +7 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-DMglnwpK.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-BsVz5N3I.js +84 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-Bpr_uqrj.js +40 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-DM9m6PO5.js +162 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-DZ0VJ_MH.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-vN6RgvSr.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-D_uBSLDu.js +120 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-DeKJ4uCa.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-CiGjpvUt.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-BZTVj6zw.js +34 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-DNmNjaYq.js +1 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-Bo7PoGMZ.js +78 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-BilotHsD.js +7 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/index.html +15 -0
- pythinker_code-0.48.0/src/pythinker_code/web/static/install.sh +695 -0
- pythinker_code-0.48.0/src/pythinker_code/wire/types.py +897 -0
- pythinker_code-0.47.0/PKG-INFO +0 -881
- pythinker_code-0.47.0/README.md +0 -816
- pythinker_code-0.47.0/pyproject.toml +0 -224
- pythinker_code-0.47.0/src/pythinker_code/CHANGELOG.md +0 -731
- pythinker_code-0.47.0/src/pythinker_code/agents/default/agent.yaml +0 -80
- pythinker_code-0.47.0/src/pythinker_code/agents/default/coder.yaml +0 -117
- pythinker_code-0.47.0/src/pythinker_code/agents/default/security_reviewer.yaml +0 -92
- pythinker_code-0.47.0/src/pythinker_code/agents/default/system.md +0 -256
- pythinker_code-0.47.0/src/pythinker_code/app.py +0 -988
- pythinker_code-0.47.0/src/pythinker_code/config.py +0 -1547
- pythinker_code-0.47.0/src/pythinker_code/llm.py +0 -533
- pythinker_code-0.47.0/src/pythinker_code/plugin/manifest.py +0 -260
- pythinker_code-0.47.0/src/pythinker_code/plugin/marketplace.py +0 -208
- pythinker_code-0.47.0/src/pythinker_code/soul/agent.py +0 -770
- pythinker_code-0.47.0/src/pythinker_code/soul/pythinkersoul.py +0 -2785
- pythinker_code-0.47.0/src/pythinker_code/soul/toolset.py +0 -1886
- pythinker_code-0.47.0/src/pythinker_code/tools/agent/__init__.py +0 -1016
- pythinker_code-0.47.0/src/pythinker_code/tools/file/replace.py +0 -548
- pythinker_code-0.47.0/src/pythinker_code/tools/file/write.py +0 -258
- pythinker_code-0.47.0/src/pythinker_code/tools/plan/__init__.py +0 -376
- pythinker_code-0.47.0/src/pythinker_code/tools/todo/__init__.py +0 -303
- pythinker_code-0.47.0/src/pythinker_code/tools/tool_search/tool_search.md +0 -7
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/__init__.py +0 -2709
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/components/diff.py +0 -344
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -37
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/components/markdown.py +0 -942
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/components/render_utils.py +0 -243
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/components/report.py +0 -485
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/components/tool_execution.py +0 -347
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/design_system.py +0 -114
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/echo.py +0 -52
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/glyphs.py +0 -85
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/mcp_status.py +0 -171
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/motion.py +0 -354
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/prompt.py +0 -4118
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/slash.py +0 -2498
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/spacing.py +0 -80
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/statusline.py +0 -691
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -200
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -177
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -330
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -810
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -127
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -202
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -185
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -125
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -187
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -98
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -143
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -84
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -183
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -250
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -155
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/update.py +0 -1486
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/usage.py +0 -360
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/visualize/__init__.py +0 -184
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -1466
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -73
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -729
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -1503
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -602
- pythinker_code-0.47.0/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -287
- pythinker_code-0.47.0/src/pythinker_code/ui/theme.py +0 -782
- pythinker_code-0.47.0/src/pythinker_code/utils/rich/diff_render.py +0 -498
- pythinker_code-0.47.0/src/pythinker_code/utils/rich/markdown.py +0 -953
- pythinker_code-0.47.0/src/pythinker_code/utils/rich/syntax.py +0 -286
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-BgGrIJTG.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-Czbbrggh.js +0 -36
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-DuGxQ4gb.js +0 -132
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/bootstrap-BRW86uxF.js +0 -89
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-C9QqOozv.js +0 -10
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/channel-Bw8F6co7.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-CLDwXFrS.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-CgPHKDsU.js +0 -62
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-DhesutHE.js +0 -2
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-mTEiNOi3.js +0 -206
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-DlSrZz-k.js +0 -231
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-D0YCOqn9.js +0 -125
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-CLY2Nkh7.js +0 -57
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-DbcFg-5f.js +0 -10
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-8WkWOyc_.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-BUgkoo7u.js +0 -2
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-C0HJXIEZ.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-DBQjspgy.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-Y2JuT_28.js +0 -11
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-BSQmvLlf.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-B3WrcDb4.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-B3WrcDb4.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-COJFtT1s.js +0 -2
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-C-63xbhz.js +0 -4
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-BA3t5dvt.js +0 -43
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-Cn_tPFPy.js +0 -10
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-CNLlhwgh.js +0 -3
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-BubQEJye.js +0 -24
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-B1zoPW4f.js +0 -24
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/dist-C-YVtz9k.js +0 -153
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-BrFwtQIS.js +0 -85
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-DjypEbTa.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-CMde8qln.js +0 -162
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-DqKHO3Gj.js +0 -292
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-DSsm7EeH.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-BPXFnSJu.js +0 -106
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/index-DrLJ6Yzo.js +0 -2
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/info-J43DQDTF-Ckpo8amK.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-BvhEvq2y.js +0 -2
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-BGVm0gpH.js +0 -70
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-DGjKVrAu.js +0 -139
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-DF4Ru5vp.js +0 -89
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/line-zsX5pPNl.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BY1nFAIo.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/mermaid-parser.core-DgXtwV12.js +0 -4
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/mermaid.core-DDTnZJwj.js +0 -9
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-DP-UXBwG.js +0 -96
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/packet-YPE3B663-Dx3OSICL.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-IY3KukRR.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-Ch0k4QrE.js +0 -30
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-B8RbtJ2P.js +0 -7
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-D0YLOyN_.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-BTYkIO2O.js +0 -84
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-C3lqfCj1.js +0 -40
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-CxovAw-L.js +0 -162
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-BAkLX0tZ.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-DsW61nNZ.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-D8o-ffC-.js +0 -120
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-CKwJMtWj.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-0nn1YylS.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-BEkXoyJ2.js +0 -34
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-BielzF7q.js +0 -1
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-CbsH-9xk.js +0 -78
- pythinker_code-0.47.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-D4gCiMTY.js +0 -7
- pythinker_code-0.47.0/src/pythinker_code/web/static/index.html +0 -15
- pythinker_code-0.47.0/src/pythinker_code/web/static/install.sh +0 -296
- pythinker_code-0.47.0/src/pythinker_code/wire/types.py +0 -895
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/LICENSE +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/NOTICE +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/__main__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/AGENTS.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/convert.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/host.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/mcp.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/server.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/session.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/tools.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/types.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/acp/version.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/ask.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/debug.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/planner.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/review.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/scout.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/agentspec.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/approval_runtime/models.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/alibaba.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/deepseek.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/github_feedback.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/kimi.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/lm_studio.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/minimax.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/moonshot.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/oauth.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/ollama.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/_shared.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/browser_flow.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/catalog.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/config_apply.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/constants.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/login.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/models.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openai/oauth_client.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/opencode_go.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/openrouter.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/platforms.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/auth/z_ai.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/agent_runner.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/ids.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/manager.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/models.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/store.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/summary.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/background/worker.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/__main__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/dashboard.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/debug.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/export.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/info.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/mcp.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/plugin.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/review.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/secscan.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/security_scan.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/skill.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/system_prompt.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/toad.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/update.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/cli/web.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/constant.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/api/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/api/sessions.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/api/statistics.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/api/system.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/app.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/highlighted-body-OFNGDK62-BxVUIXn9.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/index-DAN_VzOP.css +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/index-DYyxzHPY.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/assets/mermaid-GHXKKRXX-BR6KjYwB.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/dashboard/static/index.html +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/events.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/exception.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/execution_profiles.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/extensions.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/feedback.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/feedback_repo.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/file_restore.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/hooks/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/hooks/config.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/hooks/engine.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/hooks/events.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/hooks/runner.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/memory/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/memory/consolidation.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/memory/harvest.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/memory/recall.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/memory/recap.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/memory/retriever.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/memory/sanitize.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/metadata.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/models_dev.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/native.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/notifications/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/notifications/llm.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/notifications/manager.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/notifications/models.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/notifications/notifier.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/notifications/store.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/notifications/wire.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/artifacts.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/dependency.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/directories.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/install.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/installed.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/integration.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/loader.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/manager.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/options.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/policy.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/plugin/tool.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/project_memory.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/project_trust.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompt_templates.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/best_practices.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/compact.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/goal_continuation.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/goal_set.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/goal_wrap_up.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/init.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/prompts/learn.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/py.typed +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/scratchpad.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/session.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/session_cleanup.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/session_fork.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/session_recap.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/session_state.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/share.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skill/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skill/flow/d2.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skill/lockfile.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/agent-creator/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/customize-pythinker/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/designer-skill/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/api_errors.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/approval.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/btw.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/compaction.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/context.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/deliberation.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/denwarenji.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/agent_list.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/git_status.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/goal_mode.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/inline_commands.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/model_defense.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/orchestration.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/permissions_state.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/flow_runner.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/live_tokens.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/message.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/permission.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/soul/slash.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/builder.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/codenames.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/core.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/discovery.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/git_context.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/models.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/output.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/registry.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/runner.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/store.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/usage.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/subagents/worktree.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/config.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/crash.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/errors.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/metrics.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/names.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/otel.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/sentry.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/telemetry/sink.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/thinking.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/AGENTS.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/agent/description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/background/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/background/handoff.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/background/input.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/background/list.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/background/output.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/background/stop.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/display.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/glob.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/glob.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/grep.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/read.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/read.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/read_media.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/read_media.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/replace.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/utils.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/file/write.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/goal/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/goal/update_goal.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/mcp_resource/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/mcp_resource/list_description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/mcp_resource/prompt_description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/mcp_resource/read_description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/memory/memory.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/memory/routing_guard.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/plan/description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/plan/enter.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/progress/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/progress/description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/recall/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/recall/description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/shell/bash.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/skill/_mcp_bridge.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/skill/description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/suggest/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/suggest/description.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/test.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/think/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/think/think.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/tool_search/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/utils.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/web/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/web/fetch.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/web/fetch.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/web/search.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/web/search.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/worktree/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/worktree/enter_worktree.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/tools/worktree/exit_worktree.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/color_utils.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/print/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/print/visualize.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/console.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/debug.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/replay.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selector.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/setup.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/startup.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/stats.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/stats_collector.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/stats_pricing.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/sync_output.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/tips.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/alibaba.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/terminal_background.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/ui/tui_config.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/update_policy.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/aiohttp.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/aioqueue.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/artifacts.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/broadcast.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/changelog.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/clipboard.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/datetime.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/diff.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/editor.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/environment.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/envvar.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/export.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/file_filter.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/file_read_cache.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/frontmatter.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/gitignore.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/io.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/logging.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/mcp_names.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/media_limits.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/media_tags.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/message.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/path.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/proctitle.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/proxy.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/rich/columns.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/sensitive.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/server.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/signals.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/slashcmd.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/string.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/term.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/trust.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/utils/typing.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/api/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/api/config.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/api/open_in.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/api/sessions.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/app.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/auth.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/models.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/runner/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/runner/messages.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/runner/process.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/runner/worker.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/_headers +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/abap-CLvhMVsD.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/actionscript-3--17pq3dv.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ada-C5qYipkI.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/andromeeda-vGVdxbeo.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/angular-html-BKhkKBsm.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/angular-ts-CYPbMJCA.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/apache-U0d_L8uA.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/apex-CGTLDQj6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/apl-D7bENxmy.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/applescript-CCn79oCD.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ara-4CJ0cIlV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/arc-8BWbC-0s.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/array-BifhSqXX.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/asciidoc-DE70LPWp.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/asm-Cmm7eHzH.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/astro-B1l9MDUT.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/aurora-x-CDeNXAV0.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/awk-BWXHIvNe.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ayu-dark-DluEY0Gj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ayu-light-C3h-C4tm.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ballerina-B7ZEbQpA.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/bat-Bo4NYOV-.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/beancount-D-usSTwE.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/berry-DKpUyyne.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/bibtex-Ci_nEsc7.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/bicep-CUHmPFLl.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/bird2-C2hNVINV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/blade-BlkqRXu6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/bootstrap-BhLLvBaE.css +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/bsl-BkkzgIyY.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/c-PpPxyn8g.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/c3-CnJL0r0V.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cadence-CQ2zXKGN.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cairo-DLTphjLi.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/character-entities-legacy-Wut6vMuj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chevrons-up-down-Dwo0Il5v.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-C0kf5ycP.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-55IACEB6-QyFAFTWp.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-BSJP7CBP-DIpfLhEz.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-Cyuzqnbw.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-C9D6P7Uq.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-NNHCCRGN-DmZbXBJw.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CyVdgm44.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/chunk-XPW4576I-ru3A962d.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/clarity-SemFz856.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/clojure-DqKBuwfJ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cmake-Bj61d0ZC.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cobol-BoXxFQjh.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/codeowners-C8r90Shi.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/codeql-oeQT6MSM.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/coffee-B5TREocO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/common-lisp-Cv5bFMCO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/coq-BrsZFFmf.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-PjRvINHM.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cpp-CVIk4zoB.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/crystal-CvUuUt6_.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/csharp-Ct8U2NOr.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/css-D7o5g6xi.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/csv-Dx-8-gkx.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cue-CE9AQfxI.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cypher-ClKdZ_lG.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/cytoscape.esm-jXPf2pm4.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/d-qD-0Kul2.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dagre-Uyq5yTtG.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dark-plus-Cs2F2srj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dart-DkHntEIa.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dax-BkyTk9wS.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/defaultLocale-C8Fc0cco.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/desktop-Dlh5hvp9.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/diff-BDNflWRl.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/diff-Dvab7kiv.css +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/diff-woXpYk--.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dist-B7jLwIkG.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dist-D4B_Bs5p.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dist-reBDvVlc.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/docker-IyjqRm3v.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dotenv-_5a1GRtc.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dracula-BHWKrbxM.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dracula-soft-5eyTD99u.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/dream-maker-DW3nJb8Q.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/edge-CmXZi-az.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/elixir-BoRIkjDi.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/elm-Cm7sFdI1.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9PiwqqW.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/erb-DuMAGb6i.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/erlang-Cphh6RMH.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/everforest-dark-sB-x3p7T.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/everforest-light-Df2xbC6M.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/fennel-DQxkIbk2.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/fish-BJitypiv.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/fluent-C03EYrpw.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/fsharp-D13ZGOAj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gdresource-C0sCabJj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gdscript-Cp2uCuqX.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gdshader-CBce3t8t.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/genie-CV2tkWYe.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gherkin-DExj1W_8.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/git-commit-BSykSTBG.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/git-rebase-D2tSwjJb.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/github-dark-C-LZuMrd.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/github-dark-default-DXG-b-1a.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/github-light-EUqPIrTm.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/github-light-default-BXViO-2h.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gleam-CSRkHgEL.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/glimmer-js--VVKNatA.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/glimmer-ts-Bfa_wiNC.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/glsl-MPwHyiXQ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gn-ilITqXS6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gnuplot-7GGW24-e.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/go-BJwz_mda.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/graphlib-C22s9MDV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/graphql-NW854Khs.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/groovy-CacY0gHj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/hack-CSl79E5u.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/haml-Dmb1YmHj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/handlebars-Du8DtnRB.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/haskell-D8IpX4py.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/haxe-OTjmBuCE.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/hcl-Dh228itO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/hjson-CxZEssPk.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/hlsl-Cvrh5tZx.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/horizon-CE9ld1lL.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/horizon-bright-Br1oVSNq.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/houston-CsvMBhTu.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/html-Kpl3bQKd.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/html-derivative-BEEWNZ8Y.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/http-HvMG3K54.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/hurl-CLh1t2ES.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/hxml-B0Qn7Nwc.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/hy-CZbG8q4J.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/imba-DsUTQ-LC.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ini-B5eOa1yu.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/init-D6jRqBbL.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/java-Cst_eZTE.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/javascript-i_rUTyCW.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jinja-CaXggA6f.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jison-D9Fg2JgN.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/json-DS5j4FfK.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/json5-BR5RXkoi.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jsonc-CYpm1nAK.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jsonl-CmCQp5Yx.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jsonnet-CJTPZ8u_.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jssm-DXw9l8Rf.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jsx-CFyhNHav.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/jsx-runtime-wSvXh6gi.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/julia-R8NNmfP1.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/just-BhhHYlS8.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/katex-BGaDVET_.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/katex-BorAY7qD.css +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/kdl-CsD5j6eV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/kotlin-DhhofPvG.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/kusto-BUv0MjJC.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/laserwave-C_8bwKvT.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/latex-D5k_uhWv.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/lean-CewbzKMR.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/less-DVTAwKKz.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/lib-BLxG8W6T.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/libesm-8-2luV-1.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/light-plus-DVQuIRkW.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/linear-BktLjFGX.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/liquid-Q0_hzjly.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/llvm-Cm23YOpf.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/log-BNLmms1o.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/logo-Cluzi2Zq.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/lua-VoGSg0xb.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/luau-CNKltnaQ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/make-Dixweg8N.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/markdown-BYOwaDjH.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/marked.esm-DLdcrU5H.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/marko-D_aeUD__.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/material-theme-Bm3Qr25_.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/matlab-D7qyCx1q.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/mdc-BSifqehP.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/mdx-DQZ5AkYe.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/mermaid-Bk4SNUv9.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/min-dark-BSWPekZh.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/min-light-DDpmG2fV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/mipsasm-BMqwQI7S.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/mojo-BgCJLMeH.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/monokai-CdkpiU2Y.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/moonbit-CaWjb8XO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/move-B1IS1UjX.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/narrat-_X_XdTYD.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/nextflow-Bbiyy34d.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/nextflow-groovy-Dc_ddanL.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/nginx-CgHaWcsO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/night-owl-DhmEMT88.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/nim-BuixXxPS.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/nix-IvuFDN5E.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/nord-Cb4Vim4T.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/nushell-DcLAeLz5.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/objective-c-D1A_Heim.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/objective-cpp-BsSzOQcm.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ocaml-O90oeIOV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/odin-B1RWQWA5.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/one-light-D7Lr4KcI.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/openscad-BUDT5pXO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ordinal-hYBb2elL.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/pascal-4ZHwLPI5.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/path-BWPyau1x.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/perl-BLMySlFJ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/php-Czf_fybR.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/pkl-ot-7Btpt.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/plastic-DQwYfKfQ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/plsql-DGHpHOYJ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/po-BiJDBrnU.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/poimandres-DRFjx7u4.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/polar-C7UOKdEL.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/postcss-BXeXVLqQ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/powerquery-DNMTfnFr.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/powershell-DshXNtvi.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/prisma-BsRQq5mF.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/prolog-iXnhIJG7.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/proto-DB4EqR-F.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/pug-CsZglf8T.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/puppet-CDv2pdJW.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/purescript-9MfHhQsQ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/python-gzcpVVnB.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/qml-DcW_sT3t.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/qmldir-DCQb3MpD.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/qss-Fe1Jh2GI.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/r-D2d3McyU.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/racket-DcIDlBhZ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/raku-B3gFvitq.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/razor-oFpUW61Z.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/red-CJ3rzSJv.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/reg-CRGYupPL.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/regexp-Bu0flJgP.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rel-BtDbiS_P.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/riscv-Ckw8ddFX.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ron-VUp2lXgN.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rose-pine-BthvhNj6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rosmsg-CAekHB0j.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rough.esm-CSKSodPl.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rst-U6Eu7ipE.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ruby-CUQsVT6d.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/rust-Cfkwpbl8.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/sas-CNBFrLhc.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/sass-DXrisJhu.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/scala-DKOlJaKm.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/scheme-DQCgrYNe.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/scss-CPnU-uuv.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/sdbl-bTVj8UrX.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/shaderlab-TOUzSsQk.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/shellscript-BbTp1yjG.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/shellsession-BmAC8SMF.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/slack-dark-DnToyrRv.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/slack-ochin-B2OO5cIa.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/smalltalk-B16xEiuN.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/snazzy-light-4G7pJPwS.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/solarized-dark-DV17i1UV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/solarized-light-DSh2HLQt.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/solidity-CKzVLygQ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/soy-CdbyEXp6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/space-separated-tokens-DpjE5PGy.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/sparql-D_iOobhT.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/splunk-BC2Px7Mm.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/sql-hpBkusIy.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/src-D-NMWEou.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ssh-config-BgfXC-Er.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/stata-DVbvk3qH.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/stylus-B6D30XZt.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/surrealql-DxccxuMd.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/svelte-DzNm5V2w.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/swift-DonLKvLd.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/synthwave-84-nFMaYfgc.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/system-verilog-DJ5XKQeo.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/systemd-BxMlprV5.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/talonscript-CohzipZa.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/tasl-DMoTqEGO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/tcl-CZd0xW_V.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/templ-CsM0tTsw.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/terraform-DswuEJGm.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/tex-B0f_hYr8.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/tokyo-night-oM2G3aXe.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/toml-CcmNWLt0.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/ts-tags-Bf-FGGvT.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/tsv-sltzmVWM.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/tsx-DFvk7AwW.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/turtle-ByJddavk.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/twig-VJ4-Ntm0.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/typescript-DHTLvXzV.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/typespec-B88KGewJ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/typst-DI99ib-x.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/v-DETTlOr0.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/v4-DqR3yzBO.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vala-zf12oZj6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vb-Djn5o6TS.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/verilog-CiiDBU1e.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vesper-D5bVUKB1.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vhdl-BroJfC0k.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/viml-DvXPmvsu.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vitesse-black-fwtXNY1n.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vitesse-light-VbXTXTou.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vue-D3dSYZKz.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vue-html-DQch_7VQ.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vue-vine-B67Dz05t.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/vyper-CgoNMtux.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/wasm-BnjxR4X6.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/wasm-ByWQv1Qj.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/wenyan-C8pVoKbM.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/wgsl-BsKzXJz4.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/wikitext-ClFFjSW2.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/wit-DdvCle-K.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/wolfram-DLL8P-h_.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/xml-C33zriiW.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/xsl-BFS2wyMt.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/yaml-w0rMsuN4.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/zenscript-BnlCZFoB.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/assets/zig-CMLA9XwU.js +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/install.ps1 +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/static/logo.png +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/store/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/web/store/sessions.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/wire/__init__.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/wire/file.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/wire/protocol.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/wire/root_hub.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/wire/serde.py +0 -0
- {pythinker_code-0.47.0 โ pythinker_code-0.48.0}/src/pythinker_code/wire/server.py +0 -0
|
@@ -0,0 +1,881 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pythinker-code
|
|
3
|
+
Version: 0.48.0
|
|
4
|
+
Summary: Pythinker โ an agentic CLI developed by Pythoughts-labs.
|
|
5
|
+
Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
|
|
6
|
+
Author: Pythoughts-labs
|
|
7
|
+
Author-email: Pythoughts-labs <hello@pythoughts.com>
|
|
8
|
+
License-Expression: Apache-2.0
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
License-File: NOTICE
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Topic :: Software Development
|
|
20
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
21
|
+
Classifier: Topic :: Utilities
|
|
22
|
+
Requires-Dist: agent-client-protocol==0.10.1
|
|
23
|
+
Requires-Dist: aiofiles>=24.0,<26.0
|
|
24
|
+
Requires-Dist: aiohttp==3.14.1
|
|
25
|
+
Requires-Dist: typer==0.26.7
|
|
26
|
+
Requires-Dist: pythinker-core[contrib]==1.2.0
|
|
27
|
+
Requires-Dist: loguru>=0.6.0,<0.7
|
|
28
|
+
Requires-Dist: prompt-toolkit==3.0.52
|
|
29
|
+
Requires-Dist: pillow==12.2.0
|
|
30
|
+
Requires-Dist: pyyaml==6.0.3
|
|
31
|
+
Requires-Dist: rich==15.0.0
|
|
32
|
+
Requires-Dist: certifi>=2025.10.5
|
|
33
|
+
Requires-Dist: pyperclip==1.11.0
|
|
34
|
+
Requires-Dist: click==8.3.0
|
|
35
|
+
Requires-Dist: streamingjson==0.0.5
|
|
36
|
+
Requires-Dist: trafilatura==2.0.0
|
|
37
|
+
Requires-Dist: lxml==6.1.1
|
|
38
|
+
Requires-Dist: tenacity==9.1.4
|
|
39
|
+
Requires-Dist: fastmcp==3.2.0
|
|
40
|
+
Requires-Dist: pydantic==2.13.4
|
|
41
|
+
Requires-Dist: httpx[socks]==0.28.1
|
|
42
|
+
Requires-Dist: pythinker-host==1.0.0
|
|
43
|
+
Requires-Dist: pythinker-review==0.1.0
|
|
44
|
+
Requires-Dist: batrachian-toad==0.5.23 ; python_full_version >= '3.14'
|
|
45
|
+
Requires-Dist: tomlkit==0.15.0
|
|
46
|
+
Requires-Dist: jinja2==3.1.6
|
|
47
|
+
Requires-Dist: pyobjc-framework-cocoa>=12.1 ; sys_platform == 'darwin'
|
|
48
|
+
Requires-Dist: fastapi>=0.115.0
|
|
49
|
+
Requires-Dist: uvicorn[standard]>=0.32.0
|
|
50
|
+
Requires-Dist: scalar-fastapi>=1.8.2
|
|
51
|
+
Requires-Dist: websockets>=14.0
|
|
52
|
+
Requires-Dist: keyring>=25.7.0
|
|
53
|
+
Requires-Dist: setproctitle>=1.3.0
|
|
54
|
+
Requires-Dist: sentry-sdk>=2.20,<3
|
|
55
|
+
Requires-Dist: opentelemetry-api>=1.30,<2
|
|
56
|
+
Requires-Dist: opentelemetry-sdk>=1.30,<2
|
|
57
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.30,<2
|
|
58
|
+
Requires-Python: >=3.12
|
|
59
|
+
Project-URL: Changelog, https://github.com/Pythoughts-labs/pythinker-code/blob/main/CHANGELOG.md
|
|
60
|
+
Project-URL: Documentation, https://github.com/Pythoughts-labs/pythinker-code#readme
|
|
61
|
+
Project-URL: Homepage, https://github.com/Pythoughts-labs/pythinker-code
|
|
62
|
+
Project-URL: Issues, https://github.com/Pythoughts-labs/pythinker-code/issues
|
|
63
|
+
Project-URL: Repository, https://github.com/Pythoughts-labs/pythinker-code
|
|
64
|
+
Description-Content-Type: text/markdown
|
|
65
|
+
|
|
66
|
+
<div align="center">
|
|
67
|
+
|
|
68
|
+
# <img src="https://raw.githubusercontent.com/Pythoughts-labs/pythinker-code/main/docs/media/logo.png" alt="Pythinker logo" width="42" align="top"> Pythinker Code
|
|
69
|
+
|
|
70
|
+
### *Think first, then code. Your terminal-native review-first AI engineering agent.*
|
|
71
|
+
|
|
72
|
+
**Code reviewer ยท Security & vulnerability scanner ยท Root-cause debugger โ then code creator.**
|
|
73
|
+
**Pythinker reads your repo, audits it, and only writes code after the analysis. All from the shell you already live in.**
|
|
74
|
+
|
|
75
|
+
<br />
|
|
76
|
+
|
|
77
|
+
[](https://pypi.org/project/pythinker-code/)
|
|
78
|
+
[](https://github.com/Pythoughts-labs/pythinker-code/blob/main/pyproject.toml)
|
|
79
|
+
[](https://github.com/Pythoughts-labs/pythinker-code/blob/main/LICENSE)
|
|
80
|
+
[](https://github.com/Pythoughts-labs/pythinker-code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
|
|
81
|
+
|
|
82
|
+
[](https://pepy.tech/projects/pythinker-code)
|
|
83
|
+
[](https://docs.astral.sh/ruff/)
|
|
84
|
+
[](https://github.com/agentclientprotocol/agent-client-protocol)
|
|
85
|
+
[](https://modelcontextprotocol.io/)
|
|
86
|
+
[](https://pythinker.com)
|
|
87
|
+
|
|
88
|
+
<br />
|
|
89
|
+
|
|
90
|
+
<a href="https://pythinker.com">๐ Website</a> ยท
|
|
91
|
+
<a href="#-quick-start">โก Quick Start</a> ยท
|
|
92
|
+
<a href="#-features">โจ Features</a> ยท
|
|
93
|
+
<a href="#-ide-integration-via-acp">๐งฉ IDE Integration</a> ยท
|
|
94
|
+
<a href="#-mcp-tooling">๐ MCP</a> ยท
|
|
95
|
+
<a href="#-privacy--telemetry">๐ Privacy</a> ยท
|
|
96
|
+
<a href="#-development">๐ ๏ธ Develop</a>
|
|
97
|
+
|
|
98
|
+
<br /><br />
|
|
99
|
+
|
|
100
|
+
<img src="https://raw.githubusercontent.com/Pythoughts-labs/pythinker-code/main/docs/media/pythinker_cli.gif" alt="Pythinker Code terminal demo" width="860">
|
|
101
|
+
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## ๐ก What is Pythinker?
|
|
107
|
+
|
|
108
|
+
**Pythinker Code** is an open-source, **review-first** AI engineering agent that lives in your terminal. Before it writes a single line, it reads yours โ auditing diffs, scanning for vulnerabilities, and root-causing failures. Unlike chat assistants that jump straight to code, Pythinker leads with **code review, security scanning, and root-cause diagnosis**, and only edits files once the analysis points at a fix.
|
|
109
|
+
|
|
110
|
+
It ships with first-class subagents for each role โ `code-reviewer` for severity-scored diff critique, `security-reviewer` for validated vulnerability findings, `debugger` for failure root-causing, and `coder`/`implementer` for the scoped edits that follow. All running in a single iterative loop, driven by the model of your choice, with full access to **your repo, the shell, the web, and MCP tools**.
|
|
111
|
+
|
|
112
|
+
It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientprotocol/agent-client-protocol), so it slots cleanly into ACP-aware editors like Zed and JetBrains. It loads [**Model Context Protocol (MCP)**](https://modelcontextprotocol.io/) servers, so the same tools your other agents use just work. And it's hackable: subagents, skills, hooks, and plugins are all first-class extension points.
|
|
113
|
+
|
|
114
|
+
> ๐ฏ **Review ยท Secure ยท Diagnose ยท then Create.** One agent, one shell, one workflow. No tab-switching. No context loss. No magic.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## ๐ What's New in 0.48.0
|
|
119
|
+
|
|
120
|
+
- **LSP code intelligence.** New `LSP` tool (go-to-definition, references, hover, symbols, call hierarchy) with plugin-backed language servers, session-scoped lifecycle, passive diagnostics after edits, and structured errors when a server lacks `implementationProvider`.
|
|
121
|
+
- **TUI theme and streaming overhaul.** Centralized theme system (`/theme`), 25 Hz paced streaming, syntax-highlighted diff cards, report panel polish, and smoother interactive/non-interactive live views โ no preamble ghosting, mid-stream scrollback flicker, or fossilized spinners during tool transitions.
|
|
122
|
+
- **Proxy and tool-call hardening.** Tool results flatten for Anthropic-compatible proxies (fixes invisible GLM/z.ai outputs); `ToolSearch` is hidden from providers that cannot use deferred discovery; diff cards strip ANSI escapes; collapsed ReadFile cards show line counts and previews.
|
|
123
|
+
|
|
124
|
+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.48.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## โจ Features
|
|
130
|
+
|
|
131
|
+
<table>
|
|
132
|
+
<tr>
|
|
133
|
+
<td width="50%" valign="top">
|
|
134
|
+
|
|
135
|
+
### ๐ฅ๏ธ Terminal-First
|
|
136
|
+
|
|
137
|
+
Plan, edit, run, and verify without leaving your shell. Every action is visible, scriptable, and auditable.
|
|
138
|
+
|
|
139
|
+
</td>
|
|
140
|
+
<td width="50%" valign="top">
|
|
141
|
+
|
|
142
|
+
### โก Shell Command Mode
|
|
143
|
+
|
|
144
|
+
Press `Ctrl-X` to drop into a direct shell prompt inside the agent. Run commands, then snap back into AI mode with full context preserved.
|
|
145
|
+
|
|
146
|
+
</td>
|
|
147
|
+
</tr>
|
|
148
|
+
<tr>
|
|
149
|
+
<td width="50%" valign="top">
|
|
150
|
+
|
|
151
|
+
### ๐งฉ ACP IDE Integration
|
|
152
|
+
|
|
153
|
+
Run `pythinker acp` and any [Agent Client Protocol](https://github.com/agentclientprotocol/agent-client-protocol) editor โ Zed, JetBrains, and more โ gets a full Pythinker session inline.
|
|
154
|
+
|
|
155
|
+
</td>
|
|
156
|
+
<td width="50%" valign="top">
|
|
157
|
+
|
|
158
|
+
### ๐ MCP Tool Loading
|
|
159
|
+
|
|
160
|
+
Manage stdio and HTTP MCP servers with `pythinker mcp`. OAuth-backed servers, persistent config, ad-hoc files โ all supported.
|
|
161
|
+
|
|
162
|
+
</td>
|
|
163
|
+
</tr>
|
|
164
|
+
<tr>
|
|
165
|
+
<td width="50%" valign="top">
|
|
166
|
+
|
|
167
|
+
### ๐ค Subagents & Skills
|
|
168
|
+
|
|
169
|
+
Delegate focused work to built-in subagents. Load reusable instructions via `/skill:<name>` and bundled prompt flows via `/flow:<name>`. Use `pythinker skill list`, `pythinker skill lock`, and `pythinker skill verify-lock` to inspect project skills and pin their hashes in `skills-lock.json`.
|
|
170
|
+
|
|
171
|
+
</td>
|
|
172
|
+
<td width="50%" valign="top">
|
|
173
|
+
|
|
174
|
+
### ๐ช Hooks & Plugins
|
|
175
|
+
|
|
176
|
+
Observe or block tool execution with hook events. Install community extensions with `pythinker plugin`.
|
|
177
|
+
|
|
178
|
+
</td>
|
|
179
|
+
</tr>
|
|
180
|
+
<tr>
|
|
181
|
+
<td width="50%" valign="top">
|
|
182
|
+
|
|
183
|
+
### ๐ Web & Visualization UIs
|
|
184
|
+
|
|
185
|
+
Optional web frontend and visualization frontend ship alongside the CLI for richer inspection workflows.
|
|
186
|
+
|
|
187
|
+
</td>
|
|
188
|
+
<td width="50%" valign="top">
|
|
189
|
+
|
|
190
|
+
### ๐ค Bring Your Own Model
|
|
191
|
+
|
|
192
|
+
Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinker models, or your own keys.
|
|
193
|
+
|
|
194
|
+
</td>
|
|
195
|
+
</tr>
|
|
196
|
+
</table>
|
|
197
|
+
|
|
198
|
+
> [!NOTE]
|
|
199
|
+
> Built-in shell commands such as `cd` are not yet supported in shell command mode.
|
|
200
|
+
|
|
201
|
+
<div align="center">
|
|
202
|
+
<img src="https://raw.githubusercontent.com/Pythoughts-labs/pythinker-code/main/docs/media/shell-mode.gif" alt="Shell command mode demo" width="860">
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## โก Quick Start
|
|
208
|
+
|
|
209
|
+
Pythinker ships **native installers for every platform**. Pick the row that
|
|
210
|
+
matches your OS โ no Python, Node, or `uv` prerequisite.
|
|
211
|
+
|
|
212
|
+
| Platform | Recommended install | Artifact source |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| **๐ช Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.48.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
215
|
+
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
216
|
+
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> โ Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
|
|
217
|
+
| **๐ณ Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
|
|
218
|
+
| **๐ช Windows โ Scoop** | `scoop bucket add pythinker https://github.com/Pythoughts-labs/scoop-pythinker && scoop install pythinker-code` | auto-published Scoop bucket |
|
|
219
|
+
| **โ๏ธ Nix** | `nix run github:Pythoughts-labs/pythinker-code` | flake `apps.default` |
|
|
220
|
+
| **<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/Pythoughts-labs/pythinker-code/releases/latest) |
|
|
221
|
+
| **๐ Python fallback** | `pip install pythinker-code` | PyPI |
|
|
222
|
+
|
|
223
|
+
Every artifact ships with a matching `.sha256` file โ verify before install on
|
|
224
|
+
any platform with `sha256sum`, `shasum -a 256`, or `Get-FileHash`.
|
|
225
|
+
|
|
226
|
+
After install, on any OS:
|
|
227
|
+
|
|
228
|
+
```sh
|
|
229
|
+
pythinker --version # confirm install
|
|
230
|
+
pythinker login # (optional) authenticate a hosted provider
|
|
231
|
+
pythinker # start the interactive TUI
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
> **In-app updates** โ `pythinker update` queries the GitHub Releases API and
|
|
235
|
+
> re-runs the right installer for your build with SHA-256 verification. Set
|
|
236
|
+
> `PYTHINKER_CLI_NO_AUTO_UPDATE=1` to disable the proactive startup check.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### ๐ช Windows โ native installer
|
|
241
|
+
|
|
242
|
+
`PythinkerSetup-0.48.0.exe` is a signed* Inno Setup wizard. Installs per-user
|
|
243
|
+
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
|
|
244
|
+
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
|
|
245
|
+
the change. **No UAC prompt.**
|
|
246
|
+
|
|
247
|
+
```powershell
|
|
248
|
+
# One-line install (downloads the native .exe, verifies SHA-256, runs per-user)
|
|
249
|
+
irm https://pythinker.com/install.ps1 | iex
|
|
250
|
+
|
|
251
|
+
# Or manually download the installer + checksum from the Releases page,
|
|
252
|
+
# verify with Get-FileHash, then run:
|
|
253
|
+
.\PythinkerSetup-0.48.0.exe
|
|
254
|
+
|
|
255
|
+
# Open a fresh PowerShell
|
|
256
|
+
pythinker --version
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.48.0.exe /ALLUSERS`
|
|
260
|
+
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
|
|
261
|
+
|
|
262
|
+
**Upgrade:** `pythinker update` from inside the running app โ it downloads
|
|
263
|
+
the newest installer, verifies SHA-256, and launches the signed Inno installer
|
|
264
|
+
with visible progress (`/SILENT /NORESTART /CURRENTUSER /CLOSEAPPLICATIONS /NORESTARTAPPLICATIONS`).
|
|
265
|
+
|
|
266
|
+
**Uninstall:** Apps & Features โ *Pythinker Code* โ Uninstall reverts both
|
|
267
|
+
the files and the PATH edit.
|
|
268
|
+
|
|
269
|
+
> ๐ก **First-launch SmartScreen warning** โ \*until the Authenticode cert is
|
|
270
|
+
> provisioned in CI, the installer ships unsigned and Windows shows
|
|
271
|
+
> *"Windows protected your PC."* Click **More info โ Run anyway**. Use the
|
|
272
|
+
> published `.sha256` as your integrity check until signing comes online.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### <img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> โ Homebrew tap
|
|
277
|
+
|
|
278
|
+
```sh
|
|
279
|
+
# 1. Install
|
|
280
|
+
brew install Pythoughts-labs/pythinker/pythinker-code
|
|
281
|
+
# Homebrew โฅ 5 may refuse the untrusted tap; trust it once, then re-run:
|
|
282
|
+
# brew trust pythoughts-labs/pythinker
|
|
283
|
+
|
|
284
|
+
# 2. Verify
|
|
285
|
+
pythinker --version
|
|
286
|
+
which pythinker # -> /opt/homebrew/bin/pythinker (Apple Silicon)
|
|
287
|
+
# or /usr/local/bin/pythinker (Intel)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Works on **Apple Silicon and Intel** from the same native GitHub Release
|
|
291
|
+
tarballs used by the curl installer. The tap auto-publishes a fresh formula on
|
|
292
|
+
every Pythinker release, so `brew upgrade pythinker-code` always finds the
|
|
293
|
+
latest version.
|
|
294
|
+
|
|
295
|
+
**Upgrade:** `brew upgrade pythinker-code` (Homebrew packages don't
|
|
296
|
+
auto-update; run this whenever you want the latest).
|
|
297
|
+
|
|
298
|
+
> **Untrusted-tap refusal** โ Homebrew โฅ 5 (with `HOMEBREW_REQUIRE_TAP_TRUST`)
|
|
299
|
+
> refuses third-party taps until you trust them once:
|
|
300
|
+
> `brew trust pythoughts-labs/pythinker`. The in-app updater detects the
|
|
301
|
+
> refusal and offers to run it for you.
|
|
302
|
+
|
|
303
|
+
**Uninstall:** `brew uninstall pythinker-code && brew untap Pythoughts-labs/pythinker`.
|
|
304
|
+
|
|
305
|
+
> The tap repo is [Pythoughts-labs/homebrew-pythinker](https://github.com/Pythoughts-labs/homebrew-pythinker)
|
|
306
|
+
> โ auto-maintained, do not hand-edit.
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
### <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> โ system packages
|
|
311
|
+
|
|
312
|
+
Native `.deb` and `.rpm` packages for both `x86_64` and `aarch64` are
|
|
313
|
+
attached to every GitHub Release.
|
|
314
|
+
|
|
315
|
+
```sh
|
|
316
|
+
# Debian / Ubuntu (x86_64)
|
|
317
|
+
sudo dpkg -i pythinker-code_0.48.0_amd64.deb
|
|
318
|
+
sudo apt-get install -f # only if dpkg reports missing deps
|
|
319
|
+
|
|
320
|
+
# Debian / Ubuntu (ARM64)
|
|
321
|
+
sudo dpkg -i pythinker-code_0.48.0_arm64.deb
|
|
322
|
+
|
|
323
|
+
# Fedora / RHEL / openSUSE (x86_64)
|
|
324
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.48.0/pythinker-code-0.48.0.x86_64.rpm
|
|
325
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.48.0/pythinker-code-0.48.0.x86_64.rpm.sha256
|
|
326
|
+
sha256sum -c pythinker-code-0.48.0.x86_64.rpm.sha256
|
|
327
|
+
# Fedora / RHEL:
|
|
328
|
+
sudo dnf install ./pythinker-code-0.48.0.x86_64.rpm
|
|
329
|
+
# openSUSE:
|
|
330
|
+
sudo zypper install ./pythinker-code-0.48.0.x86_64.rpm
|
|
331
|
+
|
|
332
|
+
# Fedora / RHEL (aarch64)
|
|
333
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.48.0/pythinker-code-0.48.0.aarch64.rpm
|
|
334
|
+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.48.0/pythinker-code-0.48.0.aarch64.rpm.sha256
|
|
335
|
+
sha256sum -c pythinker-code-0.48.0.aarch64.rpm.sha256
|
|
336
|
+
sudo dnf install ./pythinker-code-0.48.0.aarch64.rpm
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
|
|
340
|
+
binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
|
|
341
|
+
|
|
342
|
+
**Verify before install:**
|
|
343
|
+
|
|
344
|
+
```sh
|
|
345
|
+
sha256sum -c pythinker-code_0.48.0_amd64.deb.sha256 # Debian/Ubuntu
|
|
346
|
+
sha256sum -c pythinker-code-0.48.0.x86_64.rpm.sha256 # Fedora/RHEL
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
|
|
350
|
+
`dnf install` over it. Or run `pythinker update` from inside the running
|
|
351
|
+
app โ it'll fetch the matching new package and prompt for sudo to install.
|
|
352
|
+
|
|
353
|
+
**Uninstall:**
|
|
354
|
+
|
|
355
|
+
```sh
|
|
356
|
+
sudo dpkg -r pythinker-code # Debian/Ubuntu
|
|
357
|
+
sudo rpm -e pythinker-code # Fedora/RHEL
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
### <img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> โ curl-bash native installer
|
|
363
|
+
|
|
364
|
+
For containers, fresh VMs, or any host without a system package manager.
|
|
365
|
+
The canonical `https://pythinker.com/install.sh` endpoint is backed by
|
|
366
|
+
[`scripts/install-native.sh`](./scripts/install-native.sh). It serves shell
|
|
367
|
+
script content directly, detects your OS + arch, downloads the matching
|
|
368
|
+
PyInstaller-frozen tarball, verifies its SHA-256, and lands the single binary
|
|
369
|
+
at `~/.local/bin/pythinker`.
|
|
370
|
+
|
|
371
|
+
```sh
|
|
372
|
+
# Latest release
|
|
373
|
+
curl -fsSL https://pythinker.com/install.sh | bash
|
|
374
|
+
|
|
375
|
+
# Pin a specific version
|
|
376
|
+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.27.0
|
|
377
|
+
|
|
378
|
+
# Custom prefix (defaults to $HOME/.local)
|
|
379
|
+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
Host `/install.sh` with:
|
|
383
|
+
|
|
384
|
+
```http
|
|
385
|
+
Content-Type: text/x-shellscript; charset=utf-8
|
|
386
|
+
Cache-Control: public, max-age=300, s-maxage=900, stale-if-error=86400
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
Use long immutable caching only for versioned release artifact URLs, for
|
|
390
|
+
example `Cache-Control: public, max-age=31536000, immutable` on fixed-tag
|
|
391
|
+
assets.
|
|
392
|
+
|
|
393
|
+
Supported targets:
|
|
394
|
+
|
|
395
|
+
| `uname -s / -m` | Tarball asset |
|
|
396
|
+
|---|---|
|
|
397
|
+
| Linux / x86_64 | `pythinker-<version>-x86_64-unknown-linux-gnu.tar.gz` |
|
|
398
|
+
| Linux / aarch64 | `pythinker-<version>-aarch64-unknown-linux-gnu.tar.gz` |
|
|
399
|
+
| Darwin / arm64 | `pythinker-<version>-aarch64-apple-darwin.tar.gz` |
|
|
400
|
+
| Darwin / x86_64 | `pythinker-<version>-x86_64-apple-darwin.tar.gz` |
|
|
401
|
+
|
|
402
|
+
The script prints PATH guidance if `~/.local/bin` isn't already on your
|
|
403
|
+
`$PATH`.
|
|
404
|
+
|
|
405
|
+
**Uninstall:** `rm ~/.local/bin/pythinker`.
|
|
406
|
+
|
|
407
|
+
### ๐ Python fallback
|
|
408
|
+
|
|
409
|
+
Use the Python package only when a native installer is not available for your
|
|
410
|
+
environment:
|
|
411
|
+
|
|
412
|
+
```sh
|
|
413
|
+
pip install pythinker-code
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Native installs remain the supported path for new users and for in-app updates.
|
|
417
|
+
|
|
418
|
+
### ๐ Authenticate (optional)
|
|
419
|
+
|
|
420
|
+
For hosted Pythinker models or ACP terminal auth:
|
|
421
|
+
|
|
422
|
+
```sh
|
|
423
|
+
pythinker login
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### ๐ฌ Try it out
|
|
427
|
+
|
|
428
|
+
```sh
|
|
429
|
+
# Interactive session
|
|
430
|
+
pythinker
|
|
431
|
+
|
|
432
|
+
# One-shot prompt
|
|
433
|
+
pythinker --prompt "summarize this repository and suggest the next test to add"
|
|
434
|
+
|
|
435
|
+
# Pick a specific model
|
|
436
|
+
pythinker --model openai/gpt-5.5
|
|
437
|
+
|
|
438
|
+
# Inline config override
|
|
439
|
+
pythinker --config '{"default_thinking": true}'
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## ๐ Using Local Models (LM Studio & Ollama)
|
|
445
|
+
|
|
446
|
+
Run Pythinker entirely on your own machine โ no API key, no cloud. Pythinker speaks each runtime's OpenAI-compatible API, so tools, streaming, JSON mode, vision, and `reasoning_effort` all work the same as with hosted providers.
|
|
447
|
+
|
|
448
|
+
### LM Studio
|
|
449
|
+
|
|
450
|
+
**1. Set up LM Studio.**
|
|
451
|
+
- Install [LM Studio](https://lmstudio.ai/) and download at least one chat model.
|
|
452
|
+
- In the LM Studio app, open the model and **raise its Context Length** (gear icon โ Context Length). See [Context length matters](#context-length-matters) below.
|
|
453
|
+
- Start the server: **Developer โ Status: Running** (or `lms server start --port 1234`).
|
|
454
|
+
|
|
455
|
+
**2. Connect Pythinker.**
|
|
456
|
+
```sh
|
|
457
|
+
pythinker login --lm-studio
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
This auto-discovers every chat-capable model loaded in LM Studio, registers each as `lm-studio/<model-id>`, and picks the largest-context one as your default. Embedding models are filtered out.
|
|
461
|
+
|
|
462
|
+
**3. Use it.**
|
|
463
|
+
```sh
|
|
464
|
+
# Default LM Studio model
|
|
465
|
+
pythinker -p "explain quicksort"
|
|
466
|
+
|
|
467
|
+
# Specific model
|
|
468
|
+
pythinker -m lm-studio/qwen/qwen3-coder-next -p "write a python http server"
|
|
469
|
+
|
|
470
|
+
# Interactive shell, then switch models with /model
|
|
471
|
+
pythinker
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
**4. Disconnect.**
|
|
475
|
+
```sh
|
|
476
|
+
pythinker logout --lm-studio
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
### Ollama
|
|
480
|
+
|
|
481
|
+
```sh
|
|
482
|
+
# 1. start the server in one terminal
|
|
483
|
+
ollama serve
|
|
484
|
+
|
|
485
|
+
# 2. pull a model
|
|
486
|
+
ollama pull llama3.1:8b
|
|
487
|
+
|
|
488
|
+
# 3. connect Pythinker
|
|
489
|
+
pythinker login --ollama
|
|
490
|
+
|
|
491
|
+
# 4. use it
|
|
492
|
+
pythinker -p "explain monad transformers"
|
|
493
|
+
pythinker -m ollama/llama3.1:8b -p "..."
|
|
494
|
+
pythinker logout --ollama
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
Discovery uses Ollama's `/api/tags` for the model list and `/api/show` per model to read the real context window.
|
|
498
|
+
|
|
499
|
+
### Remote LM Studio / Ollama (LAN host or alternate port)
|
|
500
|
+
|
|
501
|
+
```sh
|
|
502
|
+
pythinker login --lm-studio --base-url http://192.168.1.10:1234/v1
|
|
503
|
+
pythinker login --ollama --base-url http://lan-box:11434/v1
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
The override is saved in your config and used by every subsequent run.
|
|
507
|
+
|
|
508
|
+
### From inside the interactive shell
|
|
509
|
+
|
|
510
|
+
The same wiring is available as slash commands:
|
|
511
|
+
|
|
512
|
+
```
|
|
513
|
+
/login lm-studio # or /login lmstudio (no dash also accepted)
|
|
514
|
+
/login ollama
|
|
515
|
+
/logout lm-studio
|
|
516
|
+
/logout ollama
|
|
517
|
+
/login # opens a chooser; entries 9 and 10 are the local providers
|
|
518
|
+
/model lm-studio/google/gemma-4-e4b # switch model mid-session
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
### <a id="context-length-matters"></a>โ ๏ธ Context length matters (a common gotcha)
|
|
522
|
+
|
|
523
|
+
Pythinker's agent prompt โ system instructions + tool schemas + skills + your message + recent history โ is large. **Tens of thousands of tokens before you've even sent your first message.**
|
|
524
|
+
|
|
525
|
+
LM Studio loads a model with a small default context window (often `4096`). If you start chatting against that, you'll see:
|
|
526
|
+
|
|
527
|
+
```
|
|
528
|
+
LLM provider error: Error: The number of tokens to keep from the initial
|
|
529
|
+
prompt is greater than the context length (n_keep: 16690 >= n_ctx: 4096).
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
The shell now prints a friendly recovery hint when this happens, but **the cure is in LM Studio**:
|
|
533
|
+
|
|
534
|
+
1. In LM Studio, open the model in the **Chat** tab and click the **gear/settings** icon (or **My Models โ Edit**).
|
|
535
|
+
2. Set **Context Length** to at least **`32768`**, and prefer **`131072`** if your VRAM allows. *Practical experience: 64k still triggers errors during longer sessions; 128k is a safer floor.*
|
|
536
|
+
3. Reload the model (LM Studio prompts you).
|
|
537
|
+
4. Restart Pythinker so it picks up the new state (`Ctrl+D` then `pythinker`, or `pythinker -r <session-id>` to resume).
|
|
538
|
+
|
|
539
|
+
**Tip:** the bigger you set the context, the more VRAM the model uses. If you OOM, try a smaller quantization (e.g., Q4_K_M instead of Q8_0) or a smaller model variant.
|
|
540
|
+
|
|
541
|
+
Ollama configures context per-request and Pythinker reads the model's max from `/api/show`, so this gotcha is mostly LM-Studio-specific.
|
|
542
|
+
|
|
543
|
+
### VRAM-friendly model picks
|
|
544
|
+
|
|
545
|
+
Local models vary wildly in memory use. Rough guide on a 16 GB GPU (e.g., RTX 5080 mobile):
|
|
546
|
+
|
|
547
|
+
| Model size | Quant | Approx. VRAM | Fits 16 GB? |
|
|
548
|
+
|------------|-------|--------------|-------------|
|
|
549
|
+
| 2-4 B | Q4-Q8 | 2-4 GB | Yes, easily |
|
|
550
|
+
| 7-8 B | Q4 | 5-6 GB | Yes |
|
|
551
|
+
| 7-8 B | Q8 | 8-9 GB | Yes |
|
|
552
|
+
| 13-14 B | Q4 | 8-10 GB | Yes |
|
|
553
|
+
| 27-31 B | Q4 | 17-20 GB | Tight / no |
|
|
554
|
+
| 27-31 B | Q8 | 30-35 GB | No |
|
|
555
|
+
|
|
556
|
+
If LM Studio errors with `Failed to load model`, you've exceeded VRAM โ pick a smaller model or lower-bit quantization.
|
|
557
|
+
|
|
558
|
+
### Environment variables
|
|
559
|
+
|
|
560
|
+
These override the defaults at both login and runtime:
|
|
561
|
+
|
|
562
|
+
| Variable | Purpose |
|
|
563
|
+
|----------|---------|
|
|
564
|
+
| `LM_STUDIO_BASE_URL` | Override `http://localhost:1234/v1` |
|
|
565
|
+
| `LM_STUDIO_API_KEY` | Set if you've enabled token auth in LM Studio |
|
|
566
|
+
| `OLLAMA_BASE_URL` | Override `http://localhost:11434/v1` |
|
|
567
|
+
| `OLLAMA_API_KEY` | Rarely needed (Ollama is unauthenticated by default) |
|
|
568
|
+
|
|
569
|
+
Example:
|
|
570
|
+
```sh
|
|
571
|
+
LM_STUDIO_BASE_URL=http://workstation.lan:1234/v1 pythinker -p "..."
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### Refreshing the model list
|
|
575
|
+
|
|
576
|
+
If you load/unload models in LM Studio (or `ollama pull/rm`), re-run login to refresh:
|
|
577
|
+
|
|
578
|
+
```sh
|
|
579
|
+
pythinker login --lm-studio # or --ollama
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
(Pythinker intentionally does NOT auto-refresh local providers in the background โ login owns that state, so manual edits to your config aren't silently overwritten.)
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## ๐งฉ IDE Integration via ACP
|
|
587
|
+
|
|
588
|
+
Pythinker speaks [**Agent Client Protocol**](https://github.com/agentclientprotocol/agent-client-protocol) natively. Point your ACP-compatible editor at `pythinker acp` and you get a multi-session agent server inside your IDE.
|
|
589
|
+
|
|
590
|
+
<details>
|
|
591
|
+
<summary><b>๐ Configuration for Zed / JetBrains</b></summary>
|
|
592
|
+
|
|
593
|
+
```json
|
|
594
|
+
{
|
|
595
|
+
"agent_servers": {
|
|
596
|
+
"Pythinker Code": {
|
|
597
|
+
"type": "custom",
|
|
598
|
+
"command": "pythinker",
|
|
599
|
+
"args": ["acp"],
|
|
600
|
+
"env": {}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
</details>
|
|
607
|
+
|
|
608
|
+
The ACP server provides:
|
|
609
|
+
|
|
610
|
+
| Capability | Description |
|
|
611
|
+
|---|---|
|
|
612
|
+
| ๐ **Terminal auth** | `pythinker login` flow exposed to the IDE |
|
|
613
|
+
| ๐ **Session listing & resume** | Pick up where you left off |
|
|
614
|
+
| ๐ **Hot model swap** | Change models for a running ACP session |
|
|
615
|
+
|
|
616
|
+
<div align="center">
|
|
617
|
+
<img src="https://raw.githubusercontent.com/Pythoughts-labs/pythinker-code/main/docs/media/acp-integration.gif" alt="ACP IDE integration demo" width="860">
|
|
618
|
+
</div>
|
|
619
|
+
|
|
620
|
+
---
|
|
621
|
+
|
|
622
|
+
## ๐ MCP Tooling
|
|
623
|
+
|
|
624
|
+
Pythinker loads [Model Context Protocol](https://modelcontextprotocol.io/) tools from persistent config or ad-hoc files. Same tools, every agent โ no rewriting.
|
|
625
|
+
|
|
626
|
+
### ๐ ๏ธ Manage persistent MCP servers
|
|
627
|
+
|
|
628
|
+
```sh
|
|
629
|
+
# ๐ Context7 stdio server (positional form: NAME -- COMMAND)
|
|
630
|
+
pythinker mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR-API-KEY
|
|
631
|
+
# Added MCP server 'context7' to ~/.pythinker/mcp.json
|
|
632
|
+
|
|
633
|
+
# ๐ Streamable HTTP server with API key
|
|
634
|
+
pythinker mcp add --transport http docs https://example.com/mcp \
|
|
635
|
+
--header "API_KEY: your-key"
|
|
636
|
+
|
|
637
|
+
# ๐ Streamable HTTP server with OAuth
|
|
638
|
+
pythinker mcp add --transport http --auth oauth linear https://mcp.linear.app/mcp
|
|
639
|
+
|
|
640
|
+
# ๐ป stdio server with explicit transport
|
|
641
|
+
pythinker mcp add --transport stdio chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
642
|
+
|
|
643
|
+
# ๐ List, authorize, test, and remove
|
|
644
|
+
pythinker mcp list
|
|
645
|
+
pythinker mcp auth linear
|
|
646
|
+
pythinker mcp test chrome-devtools
|
|
647
|
+
pythinker mcp remove chrome-devtools
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
### ๐ Use an ad-hoc MCP config file
|
|
651
|
+
|
|
652
|
+
```json
|
|
653
|
+
{
|
|
654
|
+
"mcpServers": {
|
|
655
|
+
"context7": {
|
|
656
|
+
"url": "https://mcp.context7.com/mcp",
|
|
657
|
+
"headers": {
|
|
658
|
+
"CONTEXT7_API_KEY": "YOUR_API_KEY"
|
|
659
|
+
}
|
|
660
|
+
},
|
|
661
|
+
"chrome-devtools": {
|
|
662
|
+
"command": "npx",
|
|
663
|
+
"args": ["-y", "chrome-devtools-mcp@latest"]
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
```sh
|
|
670
|
+
pythinker --mcp-config-file /path/to/mcp.json
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## ๐งฌ Extensibility
|
|
676
|
+
|
|
677
|
+
Pythinker is a small, extensible runtime โ not a monolith. Build on it.
|
|
678
|
+
|
|
679
|
+
| Extension Point | What it does | Where to look |
|
|
680
|
+
|---|---|---|
|
|
681
|
+
| ๐ค **Agents & subagents** | YAML specs define tools, prompts, and built-in subagent types | `src/pythinker_code/agents/` |
|
|
682
|
+
| ๐ **Skills** | `/skill:<name>` loads reusable instructions on demand | bundled & user-defined |
|
|
683
|
+
| ๐ **Flows** | `/flow:<name>` executes bundled prompt flows | bundled & user-defined |
|
|
684
|
+
| ๐ช **Hooks** | Observe or block tool execution; integrate policy or automation | hook events API |
|
|
685
|
+
| ๐งฉ **Plugins** | Installable extension packages | `pythinker plugin` |
|
|
686
|
+
|
|
687
|
+
---
|
|
688
|
+
|
|
689
|
+
## ๐๏ธ Architecture
|
|
690
|
+
|
|
691
|
+
<div align="center">
|
|
692
|
+
<img src="https://raw.githubusercontent.com/Pythoughts-labs/pythinker-code/main/docs/media/Architecture.webp" alt="Pythinker Code architecture diagram" width="860">
|
|
693
|
+
</div>
|
|
694
|
+
|
|
695
|
+
---
|
|
696
|
+
|
|
697
|
+
## ๐ Privacy & Telemetry
|
|
698
|
+
|
|
699
|
+
Pythinker is the **agent framework**, not the LLM. You bring your own API key
|
|
700
|
+
(OpenAI, Anthropic, your local LM Studio model, etc.); your prompts and the
|
|
701
|
+
model's responses go directly between your terminal and the model provider you
|
|
702
|
+
configured. Pythinker never sees, stores, or forwards them.
|
|
703
|
+
|
|
704
|
+
If you opt in, Pythinker can collect a small amount of **diagnostic
|
|
705
|
+
telemetry** about how the agent runs to improve the framework itself. It's
|
|
706
|
+
strictly anonymous, never includes your prompts, model output, file contents,
|
|
707
|
+
file paths, or any user-identifying data. Two channels:
|
|
708
|
+
|
|
709
|
+
| Channel | What lands there | Endpoint |
|
|
710
|
+
|---|---|---|
|
|
711
|
+
| **Errors** (Sentry-protocol) | Unhandled exceptions and crash stack traces, with absolute paths above `site-packages/` rewritten to `<env>/` so home directories don't leak | `errors.pythinker.com` (self-hosted Bugsink) |
|
|
712
|
+
| **Traces + structured logs** (OpenTelemetry) | Lifecycle events (`session_started`, `started`, `model_switch`), agent-loop spans (`pythinker.turn` / `pythinker.llm` / `pythinker.tool`), and per-event counters | `otel.pythinker.com` (self-hosted SigNoz) |
|
|
713
|
+
|
|
714
|
+
### What we collect
|
|
715
|
+
|
|
716
|
+
- **Lifecycle events**: session start, command-line flags actually used (booleans only), startup timing, model name (just the identifier, e.g. `claude-opus-4-7`), thinking-mode toggle, plan-mode toggle.
|
|
717
|
+
- **Agent-loop spans**: turn duration, step count, stop reason (`no_tool_calls` / `max_steps` / `error`), tool name (`Read`, `Bash`, `Edit`, โฆ), tool success/failure, tool duration, LLM call duration, input/output token *counts* (numbers โ never the content).
|
|
718
|
+
- **Crashes**: exception class name, scrubbed stack trace, library versions. We do **not** send local variable values.
|
|
719
|
+
- **Static context**: pythinker version, OS family, Python version, terminal type (`TERM_PROGRAM`), CI flag (`CI` env var presence), locale.
|
|
720
|
+
- **A persistent, random `device_id`** so we can count "how many distinct installs" without identifying a person.
|
|
721
|
+
|
|
722
|
+
### What we never collect
|
|
723
|
+
|
|
724
|
+
- Your prompts, the model's responses, or any conversation content
|
|
725
|
+
- File contents, file paths, working directory names, or workspace structure
|
|
726
|
+
- Your API keys, OAuth tokens, environment variables
|
|
727
|
+
- Your real name, email, IP address, hostname (host name field is dropped at the edge collector)
|
|
728
|
+
- Tool arguments (e.g. what file you read, what command you ran)
|
|
729
|
+
|
|
730
|
+
### Turning it off
|
|
731
|
+
|
|
732
|
+
Telemetry is on by default. To turn it off:
|
|
733
|
+
|
|
734
|
+
```sh
|
|
735
|
+
# 1. Per-invocation CLI flag
|
|
736
|
+
pythinker --no-telemetry
|
|
737
|
+
|
|
738
|
+
# 2. Environment variable (works in shells, .env files, CI configs)
|
|
739
|
+
export PYTHINKER_DISABLE_TELEMETRY=1
|
|
740
|
+
pythinker
|
|
741
|
+
|
|
742
|
+
# 3. Permanently in your config file (~/.pythinker/config.toml)
|
|
743
|
+
[default]
|
|
744
|
+
telemetry = false
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
When telemetry is disabled, Pythinker short-circuits Sentry initialization,
|
|
748
|
+
OTel exporter creation, and the in-process event sink. No network requests are
|
|
749
|
+
made to the telemetry endpoints.
|
|
750
|
+
|
|
751
|
+
### Pointing telemetry at your own infrastructure
|
|
752
|
+
|
|
753
|
+
If you operate pythinker for a team and want telemetry routed to your own
|
|
754
|
+
SigNoz / Bugsink instead, override the endpoints via environment variables:
|
|
755
|
+
|
|
756
|
+
```sh
|
|
757
|
+
export PYTHINKER_SENTRY_DSN="https://<key>@your-bugsink.example.com/<project>"
|
|
758
|
+
export PYTHINKER_OTEL_ENDPOINT="https://your-otel-collector.example.com"
|
|
759
|
+
export PYTHINKER_OTEL_TOKEN="<your bearer token>"
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
The defaults point at infrastructure operated by the pythinker maintainers and
|
|
763
|
+
are used automatically unless you turn telemetry off.
|
|
764
|
+
|
|
765
|
+
---
|
|
766
|
+
|
|
767
|
+
## ๐ ๏ธ Development
|
|
768
|
+
|
|
769
|
+
### ๐ Prepare the workspace
|
|
770
|
+
|
|
771
|
+
```sh
|
|
772
|
+
git clone https://github.com/Pythoughts-labs/pythinker-code.git
|
|
773
|
+
cd pythinker-code
|
|
774
|
+
make prepare
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
### ๐งฐ Common commands
|
|
778
|
+
|
|
779
|
+
<table>
|
|
780
|
+
<tr>
|
|
781
|
+
<td valign="top">
|
|
782
|
+
|
|
783
|
+
**โถ๏ธ Run & iterate**
|
|
784
|
+
```sh
|
|
785
|
+
uv run pythinker # CLI from source
|
|
786
|
+
make format # format all packages
|
|
787
|
+
make check # lint + type-check
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
</td>
|
|
791
|
+
<td valign="top">
|
|
792
|
+
|
|
793
|
+
**๐งช Test**
|
|
794
|
+
```sh
|
|
795
|
+
make test # all unit + e2e tests
|
|
796
|
+
make ai-test # AI-driven tests
|
|
797
|
+
make test-pythinker-code # CLI only
|
|
798
|
+
make test-pythinker-core # Core only
|
|
799
|
+
make test-pythinker-host # Host only
|
|
800
|
+
make test-pythinker-sdk # SDK only
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
</td>
|
|
804
|
+
</tr>
|
|
805
|
+
<tr>
|
|
806
|
+
<td valign="top">
|
|
807
|
+
|
|
808
|
+
**๐ Frontends**
|
|
809
|
+
```sh
|
|
810
|
+
make web-back # web backend
|
|
811
|
+
make web-front # web frontend
|
|
812
|
+
make dashboard-back # dashboard backend
|
|
813
|
+
make dashboard-front # dashboard frontend
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
</td>
|
|
817
|
+
<td valign="top">
|
|
818
|
+
|
|
819
|
+
**๐ฆ Build**
|
|
820
|
+
```sh
|
|
821
|
+
make build # Python packages
|
|
822
|
+
make build-bin # standalone binary
|
|
823
|
+
make help # all targets
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
</td>
|
|
827
|
+
</tr>
|
|
828
|
+
</table>
|
|
829
|
+
|
|
830
|
+
> ๐ก `make build` and `make build-bin` build and embed the web and visualization frontends before packaging.
|
|
831
|
+
|
|
832
|
+
---
|
|
833
|
+
|
|
834
|
+
## ๐๏ธ Project Layout
|
|
835
|
+
|
|
836
|
+
```
|
|
837
|
+
pythinker-code/
|
|
838
|
+
โโโ ๐ฆ src/pythinker_code/ CLI runtime ยท tools ยท UIs ยท ACP ยท MCP ยท hooks ยท plugins ยท skills ยท web ยท dashboard backends
|
|
839
|
+
โโโ ๐งฑ packages/
|
|
840
|
+
โ โโโ pythinker-core/ Provider-agnostic message, tool, and chat-provider abstractions
|
|
841
|
+
โ โโโ pythinker-host/ Local/remote host filesystem and command execution
|
|
842
|
+
โ โโโ pythinker-code/ Console-script distribution package
|
|
843
|
+
โโโ ๐งฐ sdks/pythinker-sdk/ Python SDK
|
|
844
|
+
โโโ ๐งช tests/ ยท tests_e2e/ ยท tests_ai/ Unit ยท wire/CLI e2e ยท AI-driven test suites
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
---
|
|
848
|
+
|
|
849
|
+
## ๐ค Contributing
|
|
850
|
+
|
|
851
|
+
Contributions are warmly welcome โ bug reports, PRs, plugins, skills, and docs all help.
|
|
852
|
+
|
|
853
|
+
- ๐ Start with [`CONTRIBUTING.md`](https://github.com/Pythoughts-labs/pythinker-code/blob/main/CONTRIBUTING.md)
|
|
854
|
+
- ๐ See [`SECURITY.md`](https://github.com/Pythoughts-labs/pythinker-code/blob/main/SECURITY.md) for responsible disclosure
|
|
855
|
+
- ๐ Skim [`AGENTS.md`](https://github.com/Pythoughts-labs/pythinker-code/blob/main/AGENTS.md) for the agent design notes
|
|
856
|
+
|
|
857
|
+
If Pythinker helps you, **a โญ on GitHub goes a long way.**
|
|
858
|
+
|
|
859
|
+
---
|
|
860
|
+
|
|
861
|
+
## ๐ License
|
|
862
|
+
|
|
863
|
+
Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com/Pythoughts-labs/pythinker-code/blob/main/LICENSE) for the full text and [`NOTICE`](https://github.com/Pythoughts-labs/pythinker-code/blob/main/NOTICE) for attributions.
|
|
864
|
+
|
|
865
|
+
<br />
|
|
866
|
+
|
|
867
|
+
<div align="center">
|
|
868
|
+
|
|
869
|
+
**Built with โค๏ธ for engineers who live in the terminal.**
|
|
870
|
+
|
|
871
|
+
[๐ pythinker.com](https://pythinker.com) ยท
|
|
872
|
+
[๐ฆ PyPI](https://pypi.org/project/pythinker-code/) ยท
|
|
873
|
+
[๐ GitHub](https://github.com/Pythoughts-labs/pythinker-code) ยท
|
|
874
|
+
[๐งฉ ACP](https://github.com/agentclientprotocol/agent-client-protocol) ยท
|
|
875
|
+
[๐ MCP](https://modelcontextprotocol.io/)
|
|
876
|
+
|
|
877
|
+
<p align="center">
|
|
878
|
+
<em>Thanks for visiting โจ Pythinker! Viewing this README does not trigger telemetry.</em>
|
|
879
|
+
</p>
|
|
880
|
+
|
|
881
|
+
</div>
|