kolega-code 0.36.0__tar.gz → 0.38.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.
- {kolega_code-0.36.0 → kolega_code-0.38.0}/CHANGELOG.md +65 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/PKG-INFO +3 -1
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/__init__.py +1 -1
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/compression.py +1 -1
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/gateway.py +13 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/provider_registry.py +3 -4
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/settings.py +81 -4
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/service.py +36 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/deepseek_responses.py +2 -2
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/accessors.py +4 -2
- kolega_code-0.38.0/kolega_code/llm/specs/catalog/deepseek.py +99 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/pyproject.toml +7 -1
- kolega_code-0.36.0/kolega_code/llm/specs/catalog/deepseek.py +0 -82
- {kolega_code-0.36.0 → kolega_code-0.38.0}/.gitignore +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/CONTRIBUTING.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/LICENSE +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/MIGRATION.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/README.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/RELEASING.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/LICENSE +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/manifest.json +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/deep-research/references/evidence-and-reporting.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/deep-research/references/gigacode-workflow.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/deep-research/scripts/deep-research.workflow +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/deep-research/scripts/materialize_report.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/LICENSE +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/references/examples.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/references/limitations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/references/operations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/references/quality.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/requirements.txt +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/scripts/docx_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/scripts/smoke_test.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/humanizer/LICENSE +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/humanizer/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/LICENSE +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/references/examples.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/references/limitations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/references/operations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/references/quality.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/references/redaction.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-paddle.txt +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-surya.txt +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/requirements.txt +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pdf/scripts/smoke_test.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/LICENSE +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/references/examples.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/references/limitations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/references/operations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/requirements.txt +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/scripts/pptx_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/pptx/scripts/smoke_test.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/review/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/review/references/github-publishing.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/skill-authoring/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/skill-authoring/references/review-checklist.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/LICENSE +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/SKILL.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/references/examples.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/references/limitations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/references/operations.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/references/quality.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/scripts/smoke_test.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/xlsx/scripts/xlsx_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/agent_factory.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/bridge.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/diffs.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/permissions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/plans.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/questions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/server.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/session.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/acp/usage.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/baseagent.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/coder.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/context.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/custom_agents.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/edit_protocols.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/errors.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/bridge.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/bundle-requirements.in +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/bundle-requirements.txt +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/env.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/js_kernel.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/kernel.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/prelude.js +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/prelude.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/protocol.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/py_kernel.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/runner.js +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/eval/runner.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/generalagent.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/goal.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/handoff.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/model_routing.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/accounting.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/budget.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/context.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/executor.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/runtime.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/planningagent.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_dump.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_overrides.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_exhausted.user.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_nudge.user.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/truncated_turn_nudge.user.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.system.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.user.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/build_questions.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/mode_switch_notice.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/scratchpad.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list_readonly.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/cli/worktree_control.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/agents/coder_ask.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/agents/coder_base.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/context_updates.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/system/includes/terminal_tools.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/apply_patch.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/ask_user_choice.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_click.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_close.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_console_messages.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_drag.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_drop.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_evaluate.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_file_upload.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_fill_form.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_find.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_handle_dialog.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_hover.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_navigate.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_navigate_back.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_network_request.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_network_requests.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_press_key.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_resize.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_scroll.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_select_option.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_snapshot.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_tabs.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_take_screenshot.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_type.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/browser_wait_for.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/build_backend.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/build_frontend.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/claude_edit.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/claude_write.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/dispatch_agent.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/edit.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/eval.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/exec_command.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/get_host.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/get_task_list.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/get_task_list_readonly.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/hashline_edit.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/hashline_write.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/kill_command.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/list_agents.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/list_sessions.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/list_subagent_models.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/list_workflow_runs.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/lsp.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/lsp_edit.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/multi_edit.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/read.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/read_image.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/resolve.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/run_workflow.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/send_message.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/set_goal.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/skill.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/snapshot.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/switch_worktree.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/update_task_list.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/web_fetch.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/web_search.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/write.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/write_plan.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/tools/write_stdin.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/prompts.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/session_metadata.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/eval_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/network_status.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tool_definitions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/tools.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/agent/volatile_context.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/auth/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/auth/_jwt.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/auth/constants.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/auth/tokens.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/framing.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/installer.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/manager.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/multiplex.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/native_host.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/protocol.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/registry.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/browser_extension/runtime.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/acp.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/app.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/ask_output.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/atif_export.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/browser_backend.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/clipboard_image.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/config.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/cron.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/diagnostics.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/goal.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/loop.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/main.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/messages.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/model_catalog.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/model_connection.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/peer_messaging.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/plan_artifacts.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/prompt_history.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/session_event_protocol.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/session_event_store.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/session_journal.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/session_store.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/session_usage.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/slash_commands.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/theme.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/agent_runtime.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/app_base.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/changes_screen.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/command_handlers.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/constants.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/custom_model.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/loop_runtime.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/memory_screen.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/onboarding_screen.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/pacing.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/prompt_flows.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/session_diff.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/settings_panel.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/settings_screen.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/state.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/status_dashboard.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/styles.tcss +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/terminal_display.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/transcript.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/tui/widgets.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/cli/updater.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/config.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/events.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/extensions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/access.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/adapters/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/adapters/base.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/adapters/echo.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/adapters/telegram/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/adapters/telegram/adapter.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/adapters/telegram/formatting.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/bridge.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/commands.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/config.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/control_relay.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/daemon.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/event_router.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/questions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/redaction.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/router.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/sessions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/gateway/stt.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/git_env.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/client.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/exceptions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/instrumented_client.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/ledger.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/models.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/_token_encoding.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/anthropic.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/base.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/google.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/models.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/openai.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/openai_responses.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/perplexity_responses.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/responses_common.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/tinker.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/providers/tinker_trace.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/google.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/groq.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/openai.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/openrouter.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/perplexity_agent.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/thinking_machines.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/tinker.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/together.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/xai.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/catalog/zai.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/custom_endpoints.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/ollama_cloud_catalog.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/openrouter_catalog.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/perplexity_catalog.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/thinking.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/tinker_catalog.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/types.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/specs/validation.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/timeouts.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/llm/usage.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/local_state.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/mcp/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/mcp/config.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/mcp/oauth.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/mcp/service.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/mcp/state.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/mcp/tools.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/mcp/transport.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/identity.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/manager.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/manifest.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/markdown.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/models.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/protocol.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/memory/registry.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/permissions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/runtime.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/scratchpad.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/security/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/security/secrets.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/base.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/browser.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/html.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/client.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/config.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/detector.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/diagnostics.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/edits.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/manager.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/registry.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/lsp/registry.yaml +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/snapshots.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/services/workspace_scan.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/control.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/inbox.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/inmemory.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/projection.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/recording.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/runtime.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/session/store.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/testing/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/testing/store_conformance.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/tools/ask_user.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/tools/param_aliases.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/utils/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/utils/images.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/__init__.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/assets/fold.js +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/assets/player.css +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/assets/player.html +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/assets/player.js +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/bundle.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/hosting.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/redaction.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/server.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/singlefile.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/web/theme_css.py +0 -0
- {kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/worktrees.py +0 -0
|
@@ -6,6 +6,71 @@ This project uses GitHub Releases for detailed generated release notes. This fil
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 0.38.0 - 2026-09-11
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **DeepSeek V4.1 Flash (released).** The finished model is served under
|
|
14
|
+
DeepSeek's canonical `deepseek-flash` id and is available as **DeepSeek V4.1
|
|
15
|
+
Flash** in the model picker, with vision and `none`/`low`/`high`/`max`
|
|
16
|
+
reasoning effort (default `high`). Verified live: 1,048,576-token context and a
|
|
17
|
+
393,216-token API output ceiling. DeepSeek's Responses API ignores the built-in
|
|
18
|
+
`web_search` tool, so this model does not advertise hosted web search.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- **DeepSeek now defaults to V4.1 Flash.** `deepseek-flash` is the default model
|
|
23
|
+
(and first entry in the picker) for the DeepSeek provider, matching DeepSeek's
|
|
24
|
+
own guidance that V4.1 Flash supersedes V4 Pro on performance, cost, speed, and
|
|
25
|
+
total time. `deepseek-v4-pro` remains selectable; DeepSeek routes it to V4.1
|
|
26
|
+
Flash from September 14, 2026.
|
|
27
|
+
|
|
28
|
+
### Removed
|
|
29
|
+
|
|
30
|
+
- **Retired DeepSeek flash ids.** DeepSeek only serves two models now — V4.1 Flash
|
|
31
|
+
and V4 Pro — so Kolega's DeepSeek catalog lists exactly those two. The retired
|
|
32
|
+
`deepseek-v4-flash` and `deepseek-v4-flash-vision-exp` entries are gone (they
|
|
33
|
+
named nothing distinct: DeepSeek routes both to V4.1 Flash). Settings, sessions,
|
|
34
|
+
and per-role overrides that still name one of them fall back to the DeepSeek
|
|
35
|
+
default (`deepseek-flash`); naming one explicitly (`--model`,
|
|
36
|
+
`KOLEGA_CODE_MODEL`) fails with a "not available for" error.
|
|
37
|
+
- **DeepSeek V4.1 Flash preview id.** The expired temporary
|
|
38
|
+
`deepseek-v4.1-flash-expires-on-0910` id is no longer selectable. Settings and
|
|
39
|
+
per-role overrides that still name it fall back to the DeepSeek default
|
|
40
|
+
(`deepseek-flash`); naming it explicitly (`--model`, `KOLEGA_CODE_MODEL`) fails
|
|
41
|
+
with a "not available for" error. Switch to `deepseek-flash`, which DeepSeek
|
|
42
|
+
serves the same model under.
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- **Hosted web search no longer offered where DeepSeek stopped serving it.**
|
|
47
|
+
DeepSeek silently removed server-side `web_search` with the V4.1 release, so the
|
|
48
|
+
flash models' `/web` toggle was advertising a capability that no longer exists.
|
|
49
|
+
`deepseek-v4-pro` still executes hosted search and keeps it.
|
|
50
|
+
|
|
51
|
+
## 0.37.0 - 2026-09-09
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
|
|
55
|
+
- **DeepSeek V4.1 Flash (preview).** DeepSeek's temporary
|
|
56
|
+
`deepseek-v4.1-flash-expires-on-0910` model is available under **DeepSeek V4.1
|
|
57
|
+
Flash (Preview, expires Sep 10)** in the model picker, with vision, hosted web
|
|
58
|
+
search, and `none`/`low`/`high`/`max` reasoning effort (default `high`). It is
|
|
59
|
+
not the default and is not aliased to a stable model; the ID expires on
|
|
60
|
+
September 10, 2026, after which an available stable model must be selected.
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- Pin PDFium and the Intel Python 3.11/3.12 ONNX Runtime dependency to restore
|
|
65
|
+
compatible wheel selection on macOS Monterey for both the installer and direct
|
|
66
|
+
package installs. Intel Monterey requires Python 3.11 or 3.12.
|
|
67
|
+
- Settings saves are merged with concurrent writers instead of replacing the whole
|
|
68
|
+
file, so a long-running instance can no longer drop a gateway token or API key
|
|
69
|
+
another process saved after it started.
|
|
70
|
+
- `kolega-code gateway status` now reports an installed background service that
|
|
71
|
+
is failing to start (service state, start count, last exit code, log path)
|
|
72
|
+
instead of only printing "not running".
|
|
73
|
+
|
|
9
74
|
## 0.36.0 - 2026-09-07
|
|
10
75
|
|
|
11
76
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kolega-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.38.0
|
|
4
4
|
Summary: Multi-agent coding in the terminal
|
|
5
5
|
Project-URL: Homepage, https://kolega-ai.github.io/kolega-code/
|
|
6
6
|
Project-URL: Documentation, https://kolega-ai.github.io/kolega-code/
|
|
@@ -47,6 +47,7 @@ Requires-Dist: markdownify==1.2.3
|
|
|
47
47
|
Requires-Dist: markitdown[docx,pdf,pptx,xls,xlsx]==0.1.6
|
|
48
48
|
Requires-Dist: mcp==1.28.1
|
|
49
49
|
Requires-Dist: nest-asyncio==1.6.0
|
|
50
|
+
Requires-Dist: onnxruntime==1.19.2; sys_platform == 'darwin' and platform_machine == 'x86_64' and python_version < '3.13'
|
|
50
51
|
Requires-Dist: onnxruntime==1.27.0; python_version >= '3.14' and sys_platform != 'win32'
|
|
51
52
|
Requires-Dist: openai==2.46.0
|
|
52
53
|
Requires-Dist: packaging==25.0
|
|
@@ -56,6 +57,7 @@ Requires-Dist: playwright==1.59.0
|
|
|
56
57
|
Requires-Dist: psutil==7.2.2
|
|
57
58
|
Requires-Dist: pydantic==2.13.4
|
|
58
59
|
Requires-Dist: pygments==2.20.0
|
|
60
|
+
Requires-Dist: pypdfium2==5.11.0
|
|
59
61
|
Requires-Dist: python-dotenv==1.2.2
|
|
60
62
|
Requires-Dist: pyyaml==6.0.3
|
|
61
63
|
Requires-Dist: readability-lxml==0.8.4.1
|
|
@@ -157,7 +157,7 @@ class HistoryCompressor:
|
|
|
157
157
|
# Don't bother summarizing a trivially short prefix.
|
|
158
158
|
MIN_PREFIX_TO_SUMMARIZE = 3
|
|
159
159
|
# Cap the summary length. The prompt targets ~600 words, but reasoning
|
|
160
|
-
# models (
|
|
160
|
+
# models (DeepSeek Responses models, etc.) can consume the entire budget
|
|
161
161
|
# on chain-of-thought and leave no room for text output, producing an empty
|
|
162
162
|
# summary. A generous ceiling gives reasoning headroom while still staying
|
|
163
163
|
# well under the model's full completion budget.
|
|
@@ -33,6 +33,7 @@ from kolega_code.gateway.service import (
|
|
|
33
33
|
install_service,
|
|
34
34
|
is_service_installed,
|
|
35
35
|
restart_service,
|
|
36
|
+
service_state_summary,
|
|
36
37
|
uninstall_service,
|
|
37
38
|
)
|
|
38
39
|
|
|
@@ -290,6 +291,7 @@ def _gateway_status(config: GatewayConfig) -> int:
|
|
|
290
291
|
if payload is not None:
|
|
291
292
|
# A heartbeat from a process that no longer exists (e.g. SIGKILLed).
|
|
292
293
|
print(f"gateway: not running (stale heartbeat from pid {payload.get('pid')})")
|
|
294
|
+
_print_service_state(config)
|
|
293
295
|
return 0
|
|
294
296
|
lock = FileLock(str(config.state_dir / LOCK_FILE_NAME))
|
|
295
297
|
try:
|
|
@@ -303,9 +305,20 @@ def _gateway_status(config: GatewayConfig) -> int:
|
|
|
303
305
|
return 0
|
|
304
306
|
lock.release()
|
|
305
307
|
print(f"gateway: not running (state: {config.state_dir})")
|
|
308
|
+
_print_service_state(config)
|
|
306
309
|
return 0
|
|
307
310
|
|
|
308
311
|
|
|
312
|
+
def _print_service_state(config: GatewayConfig) -> None:
|
|
313
|
+
summary = service_state_summary()
|
|
314
|
+
if summary is None:
|
|
315
|
+
return
|
|
316
|
+
print(f" service: {summary}")
|
|
317
|
+
log_path = config.state_dir / "gateway.log"
|
|
318
|
+
if log_path.exists():
|
|
319
|
+
print(f" log: {log_path}")
|
|
320
|
+
|
|
321
|
+
|
|
309
322
|
def _pid_alive(pid: Any) -> bool:
|
|
310
323
|
if not isinstance(pid, int) or pid <= 0:
|
|
311
324
|
return False
|
|
@@ -70,9 +70,8 @@ MODEL_LABELS: dict[str, str] = {
|
|
|
70
70
|
"kimi-for-coding": "Kimi for Coding",
|
|
71
71
|
"kimi-for-coding-highspeed": "Kimi for Coding (HighSpeed)",
|
|
72
72
|
# DeepSeek
|
|
73
|
+
"deepseek-flash": "DeepSeek V4.1 Flash",
|
|
73
74
|
"deepseek-v4-pro": "DeepSeek V4 Pro",
|
|
74
|
-
"deepseek-v4-flash": "DeepSeek V4 Flash",
|
|
75
|
-
"deepseek-v4-flash-vision-exp": "DeepSeek V4 Flash Vision (Exp)",
|
|
76
75
|
# Z.AI (GLM Coding Plan)
|
|
77
76
|
"glm-5.3": "GLM-5.3",
|
|
78
77
|
"glm-5.3-flash": "GLM-5.3 Flash",
|
|
@@ -163,7 +162,7 @@ MODEL_LABELS: dict[str, str] = {
|
|
|
163
162
|
# "available set is everything, default pick is curated" split.
|
|
164
163
|
PROVIDER_DEFAULT_MODEL: dict[ModelProvider, str] = {
|
|
165
164
|
ModelProvider.MOONSHOT: "kimi-k3",
|
|
166
|
-
ModelProvider.DEEPSEEK: "deepseek-
|
|
165
|
+
ModelProvider.DEEPSEEK: "deepseek-flash",
|
|
167
166
|
ModelProvider.ZAI: "glm-5.3",
|
|
168
167
|
ModelProvider.KIMI_CODING: "kimi-for-coding",
|
|
169
168
|
ModelProvider.ANTHROPIC: "claude-opus-5",
|
|
@@ -188,7 +187,7 @@ PROVIDER_DEFAULT_MODEL: dict[ModelProvider, str] = {
|
|
|
188
187
|
UI_DEFAULT_PROVIDER = ModelProvider.MOONSHOT.value
|
|
189
188
|
UI_DEFAULT_MODEL = "kimi-k3"
|
|
190
189
|
MOONSHOT_K26_MODEL = "kimi-k2.6"
|
|
191
|
-
DEEPSEEK_DEFAULT_MODEL = "deepseek-
|
|
190
|
+
DEEPSEEK_DEFAULT_MODEL = "deepseek-flash"
|
|
192
191
|
|
|
193
192
|
|
|
194
193
|
@dataclass(frozen=True)
|
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import copy
|
|
5
6
|
import json
|
|
6
7
|
from dataclasses import dataclass, field
|
|
7
8
|
from pathlib import Path
|
|
8
9
|
from typing import Any, Optional
|
|
9
10
|
|
|
11
|
+
from filelock import FileLock
|
|
12
|
+
from filelock import Timeout as FileLockTimeout
|
|
13
|
+
|
|
10
14
|
from kolega_code.local_state import write_private_text
|
|
11
15
|
from kolega_code.llm.specs.custom_endpoints import (
|
|
12
16
|
API_STYLES,
|
|
@@ -33,6 +37,41 @@ class SettingsStoreError(RuntimeError):
|
|
|
33
37
|
"""Raised when CLI settings cannot be loaded or saved."""
|
|
34
38
|
|
|
35
39
|
|
|
40
|
+
SETTINGS_LOCK_TIMEOUT_SECONDS = 10.0
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _merge_settings_documents(
|
|
44
|
+
base: dict[str, Any],
|
|
45
|
+
current: dict[str, Any],
|
|
46
|
+
on_disk: dict[str, Any],
|
|
47
|
+
) -> dict[str, Any]:
|
|
48
|
+
"""Apply one writer's changes on top of the current document.
|
|
49
|
+
|
|
50
|
+
``base`` is the state the writer loaded, so keys it did not touch keep the
|
|
51
|
+
on-disk value and a stale writer cannot revert another process's change.
|
|
52
|
+
Nested dicts merge key by key, and keys the writer never saw survive.
|
|
53
|
+
"""
|
|
54
|
+
merged: dict[str, Any] = {}
|
|
55
|
+
for key in set(base) | set(current) | set(on_disk):
|
|
56
|
+
if key not in current:
|
|
57
|
+
if key in base:
|
|
58
|
+
continue
|
|
59
|
+
if key in on_disk:
|
|
60
|
+
merged[key] = on_disk[key]
|
|
61
|
+
continue
|
|
62
|
+
if key in base and base[key] == current[key]:
|
|
63
|
+
merged[key] = on_disk[key] if key in on_disk else current[key]
|
|
64
|
+
continue
|
|
65
|
+
if key not in base and current[key] is None and key in on_disk:
|
|
66
|
+
merged[key] = on_disk[key]
|
|
67
|
+
continue
|
|
68
|
+
if isinstance(base.get(key), dict) and isinstance(current[key], dict) and isinstance(on_disk.get(key), dict):
|
|
69
|
+
merged[key] = _merge_settings_documents(base[key], current[key], on_disk[key])
|
|
70
|
+
continue
|
|
71
|
+
merged[key] = current[key]
|
|
72
|
+
return merged
|
|
73
|
+
|
|
74
|
+
|
|
36
75
|
def _coerce_model_entries(raw: object) -> dict[str, dict]:
|
|
37
76
|
"""Normalize a stored key -> {provider, model, ...} mapping.
|
|
38
77
|
|
|
@@ -272,6 +311,9 @@ class CliSettings:
|
|
|
272
311
|
# Additive optional field — absent in older files -> empty mapping.
|
|
273
312
|
custom_endpoints: dict[str, dict] = field(default_factory=dict)
|
|
274
313
|
schema_version: int = SETTINGS_SCHEMA_VERSION
|
|
314
|
+
# The document this instance was loaded from, used as the merge base by
|
|
315
|
+
# SettingsStore.save(). Never serialized.
|
|
316
|
+
_merge_base: Optional[dict[str, Any]] = field(default=None, repr=False, compare=False)
|
|
275
317
|
|
|
276
318
|
@classmethod
|
|
277
319
|
def from_dict(cls, data: dict) -> "CliSettings":
|
|
@@ -452,12 +494,47 @@ class SettingsStore:
|
|
|
452
494
|
|
|
453
495
|
def load(self) -> CliSettings:
|
|
454
496
|
if not self.path.exists():
|
|
455
|
-
|
|
497
|
+
settings = CliSettings()
|
|
498
|
+
settings._merge_base = copy.deepcopy(settings.to_dict())
|
|
499
|
+
return settings
|
|
456
500
|
try:
|
|
457
|
-
|
|
501
|
+
data = json.loads(self.path.read_text(encoding="utf-8"))
|
|
502
|
+
settings = CliSettings.from_dict(data)
|
|
458
503
|
except json.JSONDecodeError as exc:
|
|
459
504
|
raise SettingsStoreError(f"Settings file is not valid JSON: {self.path}") from exc
|
|
505
|
+
# The merge base is what this process understood, not the raw file:
|
|
506
|
+
# a key it never saw (newer schema, hand-edit) must survive its save.
|
|
507
|
+
settings._merge_base = copy.deepcopy(settings.to_dict())
|
|
508
|
+
if isinstance(data, dict) and "schema_version" in data:
|
|
509
|
+
settings._merge_base["schema_version"] = data["schema_version"]
|
|
510
|
+
return settings
|
|
460
511
|
|
|
461
512
|
def save(self, settings: CliSettings) -> None:
|
|
462
|
-
|
|
463
|
-
|
|
513
|
+
"""Write this instance's changes, keeping concurrent writers' fields."""
|
|
514
|
+
lock = FileLock(f"{self.path}.lock")
|
|
515
|
+
try:
|
|
516
|
+
lock.acquire(timeout=SETTINGS_LOCK_TIMEOUT_SECONDS)
|
|
517
|
+
except FileLockTimeout as exc:
|
|
518
|
+
raise SettingsStoreError(f"Timed out locking the settings file: {self.path}") from exc
|
|
519
|
+
try:
|
|
520
|
+
merged = self._merged_document(settings)
|
|
521
|
+
payload = json.dumps(merged, indent=2, sort_keys=True)
|
|
522
|
+
write_private_text(self.path, payload + "\n")
|
|
523
|
+
finally:
|
|
524
|
+
lock.release()
|
|
525
|
+
settings._merge_base = copy.deepcopy(merged)
|
|
526
|
+
|
|
527
|
+
def _merged_document(self, settings: CliSettings) -> dict[str, Any]:
|
|
528
|
+
current = settings.to_dict()
|
|
529
|
+
if settings._merge_base is None:
|
|
530
|
+
return current
|
|
531
|
+
return _merge_settings_documents(settings._merge_base, current, self._read_document())
|
|
532
|
+
|
|
533
|
+
def _read_document(self) -> dict[str, Any]:
|
|
534
|
+
try:
|
|
535
|
+
raw = json.loads(self.path.read_text(encoding="utf-8"))
|
|
536
|
+
except FileNotFoundError:
|
|
537
|
+
return {}
|
|
538
|
+
except (json.JSONDecodeError, OSError) as exc:
|
|
539
|
+
raise SettingsStoreError(f"Settings file is not valid JSON: {self.path}") from exc
|
|
540
|
+
return raw if isinstance(raw, dict) else {}
|
|
@@ -12,6 +12,7 @@ from __future__ import annotations
|
|
|
12
12
|
|
|
13
13
|
import os
|
|
14
14
|
import plistlib
|
|
15
|
+
import re
|
|
15
16
|
import shlex
|
|
16
17
|
import shutil
|
|
17
18
|
import subprocess
|
|
@@ -214,6 +215,41 @@ def run_service_command(argv: list[str]) -> subprocess.CompletedProcess[str] | N
|
|
|
214
215
|
return None
|
|
215
216
|
|
|
216
217
|
|
|
218
|
+
def service_state_summary(
|
|
219
|
+
*,
|
|
220
|
+
systemd_dir: Optional[Path] = None,
|
|
221
|
+
launchd_dir: Optional[Path] = None,
|
|
222
|
+
platform: Optional[str] = None,
|
|
223
|
+
) -> Optional[str]:
|
|
224
|
+
"""One line of service-manager state for an installed gateway, else None.
|
|
225
|
+
|
|
226
|
+
``gateway status`` uses this to explain a service that is installed but not
|
|
227
|
+
running, which the daemon's own status file cannot show.
|
|
228
|
+
"""
|
|
229
|
+
platform = platform if platform is not None else sys.platform
|
|
230
|
+
if not is_service_installed(systemd_dir=systemd_dir, launchd_dir=launchd_dir, platform=platform):
|
|
231
|
+
return None
|
|
232
|
+
if platform == "darwin":
|
|
233
|
+
proc = run_service_command(["launchctl", "print", f"gui/{os.getuid()}/{LAUNCHD_LABEL}"])
|
|
234
|
+
if proc is None or proc.returncode != 0:
|
|
235
|
+
return "launchd agent installed but not loaded"
|
|
236
|
+
output = proc.stdout or ""
|
|
237
|
+
parts: list[str] = []
|
|
238
|
+
state = re.search(r"^\s*state = (.+)$", output, re.MULTILINE)
|
|
239
|
+
if state:
|
|
240
|
+
parts.append(f"state {state.group(1).strip()}")
|
|
241
|
+
runs = re.search(r"^\s*runs = (\d+)$", output, re.MULTILINE)
|
|
242
|
+
if runs:
|
|
243
|
+
parts.append(f"{runs.group(1)} starts")
|
|
244
|
+
last_exit = re.search(r"^\s*last exit code = (\d+)$", output, re.MULTILINE)
|
|
245
|
+
if last_exit:
|
|
246
|
+
parts.append(f"last exit code {last_exit.group(1)}")
|
|
247
|
+
return "launchd agent " + (", ".join(parts) if parts else "loaded")
|
|
248
|
+
proc = run_service_command(["systemctl", "--user", "is-active", SERVICE_NAME])
|
|
249
|
+
state_text = (proc.stdout or "").strip() if proc is not None else ""
|
|
250
|
+
return f"systemd unit {state_text or 'unknown'}"
|
|
251
|
+
|
|
252
|
+
|
|
217
253
|
def restart_service(
|
|
218
254
|
*,
|
|
219
255
|
unit_path: Optional[Path] = None,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""DeepSeek provider that speaks the **Responses API** (``/responses``).
|
|
2
2
|
|
|
3
|
-
The whole DeepSeek catalog (``deepseek-
|
|
3
|
+
The whole DeepSeek catalog (``deepseek-flash`` and ``deepseek-v4-pro``) speaks
|
|
4
4
|
the Responses API, so the ``deepseek`` provider routes here wholesale from
|
|
5
5
|
``LLMClient._provider_class`` (no model-name branching). DeepSeek models hosted on
|
|
6
6
|
other providers (Fireworks/OpenRouter/Ollama-Cloud) still use Chat Completions via
|
|
@@ -49,7 +49,7 @@ from .models import GenerationParams
|
|
|
49
49
|
from .responses_common import ResponsesProviderBase
|
|
50
50
|
|
|
51
51
|
DEFAULT_BASE_URL = "https://api.deepseek.com"
|
|
52
|
-
DEFAULT_MODEL = "deepseek-
|
|
52
|
+
DEFAULT_MODEL = "deepseek-flash"
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class DeepSeekResponsesProvider(ResponsesProviderBase):
|
|
@@ -201,8 +201,10 @@ def preferred_edit_protocol(provider: str, model_name: str) -> Optional[str]:
|
|
|
201
201
|
# takes its catalog value instead.
|
|
202
202
|
DEEPSEEK_WIRE_OUTPUT_CAP = 64000
|
|
203
203
|
|
|
204
|
-
# Routes
|
|
205
|
-
_UNCLAMPED_DEEPSEEK_ROUTES = {
|
|
204
|
+
# Routes that use the catalog output budget without the legacy Pro/chat clamp.
|
|
205
|
+
_UNCLAMPED_DEEPSEEK_ROUTES = {
|
|
206
|
+
("deepseek", "deepseek-flash"),
|
|
207
|
+
}
|
|
206
208
|
|
|
207
209
|
|
|
208
210
|
def is_deepseek_model(model_name: str) -> bool:
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
from kolega_code.llm.specs.types import ThinkingEffortSpec
|
|
2
|
+
|
|
3
|
+
# max_completion_tokens is the MEASURED per-response output ceiling, not
|
|
4
|
+
# DeepSeek's published 384000. Probed 2026-08-03 by
|
|
5
|
+
# tests/agent/llm/test_deepseek_output_cap_live.py:
|
|
6
|
+
# - deepseek-v4-pro (chat), uncapped: the server cuts the stream at exactly
|
|
7
|
+
# 65536 output tokens, reported honestly as finish_reason="length".
|
|
8
|
+
# - deepseek-v4-flash (Responses), uncapped: no hard cut observed — the model
|
|
9
|
+
# SELF-CENSORS ~7.4k tokens in ("response would exceed the maximum output
|
|
10
|
+
# length allowed for this chat interface") with a clean status="completed".
|
|
11
|
+
# With an explicit max_output_tokens=64000 it streams the full 64000 and
|
|
12
|
+
# reports the cap hit honestly (status="incomplete"/max_output_tokens).
|
|
13
|
+
# - Over-ceiling caps (384000) are accepted silently on both paths.
|
|
14
|
+
# flash is 384000 (corrected from 65536, which was pro's measured chat ceiling
|
|
15
|
+
# assumed to apply here): those probes only measured visible output, while a
|
|
16
|
+
# reasoning-heavy call was later measured running to 112990 tokens in a single
|
|
17
|
+
# Responses call.
|
|
18
|
+
# pro never sends this value raw: the Responses path clamps to
|
|
19
|
+
# DEEPSEEK_WIRE_OUTPUT_CAP=64000 (specs/accessors.py) so the client cap fires
|
|
20
|
+
# before the server ceiling and truncation is reported honestly. flash passes
|
|
21
|
+
# through.
|
|
22
|
+
#
|
|
23
|
+
# INSERTION ORDER IS LOAD-BEARING: the first entry is what the Settings model
|
|
24
|
+
# picker shows first and what a provider switch falls back to
|
|
25
|
+
# (ui_model_options(provider)[0]); it must stay in sync with
|
|
26
|
+
# PROVIDER_DEFAULT_MODEL[DEEPSEEK] in cli/provider_registry.py.
|
|
27
|
+
DEEPSEEK_SPECS = {
|
|
28
|
+
# Released DeepSeek Flash (V4.1), served under the canonical `deepseek-flash`, and
|
|
29
|
+
# the provider default. Verified live on /responses 2026-09-10: the retired preview
|
|
30
|
+
# ID (`deepseek-v4.1-flash-expires-on-0910`) as well as the older `deepseek-v4-flash`
|
|
31
|
+
# and `deepseek-v4-flash-vision-exp` aliases all now answer as
|
|
32
|
+
# `model="deepseek-flash"`, and `/models` lists exactly `deepseek-flash` and
|
|
33
|
+
# `deepseek-v4-pro`; a versioned `deepseek-v4.1-flash` is rejected ("The supported
|
|
34
|
+
# API model names are ..."). Vision (image input), function calls, and
|
|
35
|
+
# none/low/high/max reasoning effort all work on this route.
|
|
36
|
+
# NO hosted web search: DeepSeek removed it silently with the V4.1 release. Their
|
|
37
|
+
# Responses guide said "web_search / web_search_2025_08_26: Supported, executed on
|
|
38
|
+
# the server side" and listed {"type": "web_search"} under tool_choice on
|
|
39
|
+
# 2026-09-09; by 2026-09-10 the same rows read "web_search / file_search /
|
|
40
|
+
# code_interpreter / computer_use / mcp / other built-in tools: Ignored", with
|
|
41
|
+
# web_search dropped from tool_choice and its streaming events deleted. Nothing on
|
|
42
|
+
# /updates, /news, the docs home, or the FAQ mentions the removal. Live probes on
|
|
43
|
+
# 2026-09-10 returned zero web_search_call items while the model answered that it
|
|
44
|
+
# has no such tool (at effort=high it emitted bogus tool-call XML as text instead).
|
|
45
|
+
# Requests with the tool declared are accepted and silently do nothing, so Kolega
|
|
46
|
+
# must not advertise the /web toggle here. Replayed web_search_call items from
|
|
47
|
+
# older requests are still restored into context, per the same guide.
|
|
48
|
+
# Context measured at 1048576 tokens (oversized request -> "This model's maximum
|
|
49
|
+
# context length is 1048576 tokens"); keep the Flash-family 1000000 budget so the
|
|
50
|
+
# window_minus_output input budget retains margin under the hard ceiling.
|
|
51
|
+
# max_output_tokens above 393216 is rejected ("the valid range of max_tokens is
|
|
52
|
+
# [1, 393216]"), so the conservative 384000 output budget stands.
|
|
53
|
+
# Reasoning mechanics (inherited from the retired V4 Flash entries this id replaces,
|
|
54
|
+
# and still the shape this backend serves): effort must ride the Responses
|
|
55
|
+
# `reasoning` block, not the Chat-Completions `reasoning_effort` field the shared
|
|
56
|
+
# builder ignores, and this mode excludes flash from the flat reasoning_content
|
|
57
|
+
# replay path — reasoning comes back as Responses reasoning ITEMS instead. The
|
|
58
|
+
# endpoint returns no reasoning.encrypted_content (the include param is silently
|
|
59
|
+
# ignored) but exposes raw chain-of-thought as plain reasoning_text content, which
|
|
60
|
+
# the stream wrapper retains and resends next turn (mirroring Codex) so the context
|
|
61
|
+
# gauge counts it like any other content. The backend ALSO re-attaches prior CoT
|
|
62
|
+
# server-side keyed on its own function_call call_ids, billing it as input and
|
|
63
|
+
# deduping explicit copies (verified live 2026-08-04 on V4 Flash); reasoning-bearing
|
|
64
|
+
# replays with a foreign call_id 400 with "reasoning_text must be passed back",
|
|
65
|
+
# while minimal single-round histories with foreign ids are tolerated.
|
|
66
|
+
("deepseek", "deepseek-flash"): {
|
|
67
|
+
"context_length": 1000000,
|
|
68
|
+
"max_completion_tokens": 384000,
|
|
69
|
+
"input_budget": "window_minus_output",
|
|
70
|
+
"default_temperature": 1.0,
|
|
71
|
+
"supports_vision": True,
|
|
72
|
+
"supports_hosted_web_search": False,
|
|
73
|
+
"preferred_edit_protocol": "claude_code",
|
|
74
|
+
"thinking_effort": ThinkingEffortSpec(
|
|
75
|
+
options=("none", "low", "high", "max"),
|
|
76
|
+
default="high",
|
|
77
|
+
mode="openai_responses_reasoning",
|
|
78
|
+
),
|
|
79
|
+
},
|
|
80
|
+
("deepseek", "deepseek-v4-pro"): {
|
|
81
|
+
"context_length": 1000000,
|
|
82
|
+
"max_completion_tokens": 65536,
|
|
83
|
+
"input_budget": "window_minus_output",
|
|
84
|
+
"default_temperature": 1.0,
|
|
85
|
+
"supports_vision": False,
|
|
86
|
+
# Hosted search still works on the V4 Pro model — re-verified live 2026-09-10
|
|
87
|
+
# (probe A body -> ws_calls=1, real answer), and it is the last first-party
|
|
88
|
+
# route that executes it. NOTE: from 12:00 Beijing Time 2026-09-14 DeepSeek
|
|
89
|
+
# routes deepseek-v4-pro requests to V4.1 Flash, whose architecture has no
|
|
90
|
+
# server-side web search; re-check this flag and the /web toggle after that.
|
|
91
|
+
"supports_hosted_web_search": True,
|
|
92
|
+
"preferred_edit_protocol": "claude_code",
|
|
93
|
+
"thinking_effort": ThinkingEffortSpec(
|
|
94
|
+
options=("none", "low", "high", "max"),
|
|
95
|
+
default="high",
|
|
96
|
+
mode="openai_responses_reasoning",
|
|
97
|
+
),
|
|
98
|
+
},
|
|
99
|
+
}
|
|
@@ -8,7 +8,7 @@ build-backend = "hatchling.build"
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "kolega-code"
|
|
11
|
-
version = "0.
|
|
11
|
+
version = "0.38.0"
|
|
12
12
|
description = "Multi-agent coding in the terminal"
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
license = "BUSL-1.1"
|
|
@@ -69,6 +69,9 @@ dependencies = [
|
|
|
69
69
|
"markitdown[docx,pdf,pptx,xls,xlsx]==0.1.6",
|
|
70
70
|
"mcp==1.28.1",
|
|
71
71
|
"nest-asyncio==1.6.0",
|
|
72
|
+
# Magika: 1.19.2 has Monterey-compatible Intel wheels for Python 3.11/3.12.
|
|
73
|
+
# It has no Python 3.13 wheels; that interpreter requires newer macOS.
|
|
74
|
+
"onnxruntime==1.19.2; sys_platform == 'darwin' and platform_machine == 'x86_64' and python_version < '3.13'",
|
|
72
75
|
# Magika's cross-platform resolution selects onnxruntime 1.20.1, which has no CPython 3.14 wheels.
|
|
73
76
|
"onnxruntime==1.27.0; python_version >= '3.14' and sys_platform != 'win32'",
|
|
74
77
|
"openai==2.46.0",
|
|
@@ -78,6 +81,9 @@ dependencies = [
|
|
|
78
81
|
"playwright==1.59.0",
|
|
79
82
|
"psutil==7.2.2",
|
|
80
83
|
"pydantic==2.13.4",
|
|
84
|
+
# MarkItDown/pdfplumber: newer PDFium wheels require macOS 13.
|
|
85
|
+
# Preserve Intel macOS 12 installs; bumps must pass the Monterey wheel guard.
|
|
86
|
+
"pypdfium2==5.11.0",
|
|
81
87
|
"python-dotenv==1.2.2",
|
|
82
88
|
# Load-bearing for the web UI: code highlighting is generated with the same
|
|
83
89
|
# Pygments styles the TUI renders with, so both stay identical.
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
from kolega_code.llm.specs.types import ThinkingEffortSpec
|
|
2
|
-
|
|
3
|
-
# max_completion_tokens is the MEASURED per-response output ceiling, not
|
|
4
|
-
# DeepSeek's published 384000. Probed 2026-08-03 by
|
|
5
|
-
# tests/agent/llm/test_deepseek_output_cap_live.py:
|
|
6
|
-
# - deepseek-v4-pro (chat), uncapped: the server cuts the stream at exactly
|
|
7
|
-
# 65536 output tokens, reported honestly as finish_reason="length".
|
|
8
|
-
# - deepseek-v4-flash (Responses), uncapped: no hard cut observed — the model
|
|
9
|
-
# SELF-CENSORS ~7.4k tokens in ("response would exceed the maximum output
|
|
10
|
-
# length allowed for this chat interface") with a clean status="completed".
|
|
11
|
-
# With an explicit max_output_tokens=64000 it streams the full 64000 and
|
|
12
|
-
# reports the cap hit honestly (status="incomplete"/max_output_tokens).
|
|
13
|
-
# - Over-ceiling caps (384000) are accepted silently on both paths.
|
|
14
|
-
# flash is 384000 (corrected from 65536, which was pro's measured chat ceiling
|
|
15
|
-
# assumed to apply here): those probes only measured visible output, while a
|
|
16
|
-
# reasoning-heavy call was later measured running to 112990 tokens in a single
|
|
17
|
-
# Responses call.
|
|
18
|
-
# pro never sends this value raw: the Responses path clamps to
|
|
19
|
-
# DEEPSEEK_WIRE_OUTPUT_CAP=64000 (specs/accessors.py) so the client cap fires
|
|
20
|
-
# before the server ceiling and truncation is reported honestly. flash passes
|
|
21
|
-
# through.
|
|
22
|
-
DEEPSEEK_SPECS = {
|
|
23
|
-
("deepseek", "deepseek-v4-pro"): {
|
|
24
|
-
"context_length": 1000000,
|
|
25
|
-
"max_completion_tokens": 65536,
|
|
26
|
-
"input_budget": "window_minus_output",
|
|
27
|
-
"default_temperature": 1.0,
|
|
28
|
-
"supports_vision": False,
|
|
29
|
-
"supports_hosted_web_search": True,
|
|
30
|
-
"preferred_edit_protocol": "claude_code",
|
|
31
|
-
"thinking_effort": ThinkingEffortSpec(
|
|
32
|
-
options=("none", "low", "high", "max"),
|
|
33
|
-
default="high",
|
|
34
|
-
mode="openai_responses_reasoning",
|
|
35
|
-
),
|
|
36
|
-
},
|
|
37
|
-
# deepseek-v4-flash speaks the Responses API (see DeepSeekResponsesProvider), so its
|
|
38
|
-
# reasoning effort must be emitted as the Responses `reasoning` block rather than the
|
|
39
|
-
# Chat-Completions `reasoning_effort` field the shared Responses request builder ignores.
|
|
40
|
-
# This mode also correctly excludes flash from the flat reasoning_content replay path:
|
|
41
|
-
# flash's reasoning rides in Responses reasoning ITEMS instead. The endpoint returns no
|
|
42
|
-
# reasoning.encrypted_content (the include param is silently ignored) but exposes the
|
|
43
|
-
# raw chain-of-thought as plain reasoning_text content, which the stream wrapper
|
|
44
|
-
# retains and resends next turn (mirroring Codex, the client this endpoint was adapted
|
|
45
|
-
# for) — so the context gauge counts it from the history like any other content. The
|
|
46
|
-
# backend ALSO restores prior CoT server-side keyed on its own function_call call_ids,
|
|
47
|
-
# billing it as input and deduping explicit copies (verified live 2026-08-04); deep
|
|
48
|
-
# reasoning-bearing replays with a foreign call_id 400 with "reasoning_text must be
|
|
49
|
-
# passed back", minimal single-round histories with foreign ids are tolerated.
|
|
50
|
-
("deepseek", "deepseek-v4-flash"): {
|
|
51
|
-
"context_length": 1000000,
|
|
52
|
-
"max_completion_tokens": 384000,
|
|
53
|
-
"input_budget": "window_minus_output",
|
|
54
|
-
"default_temperature": 1.0,
|
|
55
|
-
"supports_vision": False,
|
|
56
|
-
# /responses executes {"type": "web_search"} server-side (search +
|
|
57
|
-
# open_page) and restores the searched content on replay of the
|
|
58
|
-
# web_search_call items, billed as input (verified live 2026-08-04,
|
|
59
|
-
# findings/probes/hosted_web_search_probe.py).
|
|
60
|
-
"supports_hosted_web_search": True,
|
|
61
|
-
"preferred_edit_protocol": "claude_code",
|
|
62
|
-
"thinking_effort": ThinkingEffortSpec(
|
|
63
|
-
options=("none", "low", "high", "max"),
|
|
64
|
-
default="high",
|
|
65
|
-
mode="openai_responses_reasoning",
|
|
66
|
-
),
|
|
67
|
-
},
|
|
68
|
-
("deepseek", "deepseek-v4-flash-vision-exp"): {
|
|
69
|
-
"context_length": 1000000,
|
|
70
|
-
"max_completion_tokens": 384000,
|
|
71
|
-
"input_budget": "window_minus_output",
|
|
72
|
-
"default_temperature": 1.0,
|
|
73
|
-
"supports_vision": True,
|
|
74
|
-
"supports_hosted_web_search": True,
|
|
75
|
-
"preferred_edit_protocol": "claude_code",
|
|
76
|
-
"thinking_effort": ThinkingEffortSpec(
|
|
77
|
-
options=("none", "low", "high", "max"),
|
|
78
|
-
default="high",
|
|
79
|
-
mode="openai_responses_reasoning",
|
|
80
|
-
),
|
|
81
|
-
},
|
|
82
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.36.0 → kolega_code-0.38.0}/kolega_code/_bundled_skills/skills/docx/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|