talkops-opscloud 0.3.0b4__tar.gz → 0.3.0b6__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.
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/.github/workflows/release-pypi.yml +6 -128
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/PKG-INFO +11 -8
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/README.md +4 -7
- talkops_opscloud-0.3.0b6/assets/opscloud-banner.gif +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/pyproject.toml +7 -1
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/interactive.py +16 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/server_manager.py +12 -3
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/pool.py +38 -3
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/runtime.py +6 -9
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/manifest.py +12 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/paths.py +22 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/settings.py +137 -16
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/jev_model_router.py +4 -2
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/model/config.py +48 -8
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/model/factory.py +146 -11
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/model/pool.py +66 -27
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/model/reasoning.py +16 -20
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/server/server.py +182 -27
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/server/server_graph.py +62 -24
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/session.py +11 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/app.py +134 -15
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/autocomplete.py +41 -2
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/chat_input.py +210 -42
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/cloud_selector.py +277 -51
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/model_selector.py +301 -142
- talkops_opscloud-0.3.0b6/src/opscloud/ui/widgets/pool_selector.py +546 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/conftest.py +28 -2
- talkops_opscloud-0.3.0b6/tests/unit_tests/test_chat_input_responsiveness.py +143 -0
- talkops_opscloud-0.3.0b6/tests/unit_tests/test_checkpointer.py +115 -0
- talkops_opscloud-0.3.0b6/tests/unit_tests/test_claude_opus_reasoning.py +201 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_cloud_command.py +87 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_commands.py +144 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_config.py +247 -1
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_jev_model_router.py +76 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_model_providers.py +83 -6
- talkops_opscloud-0.3.0b6/tests/unit_tests/test_pool_persistence.py +173 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_reload_restart.py +82 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_server.py +38 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/uv.lock +517 -4
- talkops_opscloud-0.3.0b4/src/opscloud/ui/widgets/pool_selector.py +0 -376
- talkops_opscloud-0.3.0b4/tests/unit_tests/test_checkpointer.py +0 -87
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/.dockerignore +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/.env.example +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/.github/workflows/ci.yml +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/.gitignore +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/.python-version +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/LICENSE +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/Configuration.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/approval-mode.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/cli-reference.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/config.toml.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/credentials.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/goal-and-rubrics.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/hooks.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/mcp-tools.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/memory-and-skills.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/model-providers.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/overview.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/plugins.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/quickstart.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/remote-sandboxes.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/docs/opscloud-docs/subagents.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/scripts/install.sh +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/__main__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/_constants.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/_debug.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/_debug_buffer.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/_textual_patches.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/_version.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/agent/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/agent/config.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/agent/factory.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/approval_mode.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/backend/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/backend/composite.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/backend/local.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/backend/registry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/backend/sandbox_config.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/backend/sandbox_factory.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/built_in_skills/remember/SKILL.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/built_in_skills/skill-creator/SKILL.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/commands/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/commands/auth.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/commands/doctor.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/commands/mcp.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/commands/threads.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/main.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/cli/non_interactive.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/_base.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/_guards.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/_router.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/_types.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/auth.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/bug.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/clear.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/cloud.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/compact.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/config_cmd.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/context.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/cost.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/doctor.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/effort.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/exit_cmd.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/fast.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/help_cmd.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/mcp.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/model.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/permissions.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/plugins.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/resume.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/core/skills.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/agents.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/btw.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/copy.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/goal.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/loop.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/memory.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/review.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/rubric.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/skill_creator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/skill_invoke.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/tasks.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/trace.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/ui_toggles.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/version.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/registry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/adapters/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/adapters/postgres.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/adapters/sqlite.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/aws.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/cloud_profiles.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/env_vars.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/langsmith.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/metadata.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/plugins.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/store.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/store_factory.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/config/toml_config.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/editor.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/exceptions.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/file_ops.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/env.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/interrupt.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/models/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/models/adapters.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/models/config.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/models/domain.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/models/transport.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/hooks/tools.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/input.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/base.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/content_filter.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/event_bus.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/hooks.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/identity.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/notifications.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/stream_bridge.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/integrations/thread_store.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/json_types.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/config.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/discovery.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/mcp_info.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/middleware.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/preload.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/raw_config.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/semantic_profiler.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/session_manager.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/mcp/trust.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/memory/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/memory/branch.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/memory/guard.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/memory/onboarding.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/memory/registry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/memory/store.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/_repository_bounds.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/ask_user.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/auto_mode.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/auto_mode_hitl.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/compaction.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/configurable_model.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/cost_tracking.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/glm_stall_recovery.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/goal_criteria.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/goal_state_notice.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/goal_tools.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/headless_mcp_guard.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/local_context.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/mcp_context.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/mcp_middleware.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/memory_guard.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/model_retry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/registry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/reliable_rubric.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/resume_state.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/server_hooks.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/shell_allow_list.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/skills.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/subagent_artifacts.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/subagent_telemetry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/subagents.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/tool_filter.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/middleware/unified_system_message.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/model/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/offload.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/output.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/_json.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/adapters/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/adapters/agents.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/adapters/commands.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/adapters/mcp.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/adapters/skills.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/commands_cli.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/discovery.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/manifest.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/marketplace.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/models.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/project_plugins.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/protocol.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/store.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/plugins/substitution.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/project_utils.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/prompts/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/prompts/system.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/prompts/templates/system_prompt.md +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/prompts/types.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/rubrics/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/rubrics/evaluator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/rubrics/evidence_extractor.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/rubrics/generator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/rubrics/jev_compiler.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/rubrics/jev_grader.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/rubrics/middleware.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/schema/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/schema/interrupts.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/approval_mode.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/approval_mode_source.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/cli_ast_evaluator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/jev_classifier.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/shell_safety.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/unicode_security.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/security/url_validation.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/server/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/server/_server_config.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/commands.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/invocation.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/load.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/loader.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/merge.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/registry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/sources.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/skills/trust.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/base.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/cloud_context.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/goal_channels.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/goal_state_limits.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/resume_state.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/service_context.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/state/state_migration.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/subagents/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/subagents/loader.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/subagents/subagents_parser.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/subagents/types.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/catalog.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/display.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/fetch_url.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/goal_tools.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/registry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/thread.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/tools/web_search.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/app.tcss +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/clipboard.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/command_registry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/message_store.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/permission_store.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/preferences.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/prompt_manager.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/remote_client.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/textual_adapter.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/theme.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/ui_help.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/_ask_user_types.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/_copy_spans.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/_inline_prompt.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/_js_eval_display.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/_links.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/_tool_stream.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/agent_selector.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/approval.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/ask_user.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/auth.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/auth_manager.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/auto_mode_notice.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/config_manager.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/debug_console.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/devops_renderers.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/diff.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/effort_selector.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/goal_review.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/goal_status.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/infra_panel.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/install_confirm.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/loading.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/mcp_viewer.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/messages.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/notification_center.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/notification_settings.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/operation_card.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/permissions_manager.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/plugin_manager.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/preamble.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/skills_viewer.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/status.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/subagent_panel.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/theme_selector.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/thread_selector.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/toast.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/tool_display.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/tool_renderers.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/tool_widgets.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/welcome.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/ui/widgets/welcome_popup.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/utils/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/utils/cost_estimation.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/utils/git.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/utils/logger.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/utils/session_stats.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/utils/startup_error.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/evals/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/evals/datasets/aws_cloud_ops.yaml +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/evals/evaluators/__init__.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/evals/evaluators/output_evaluator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/evals/evaluators/trajectory_evaluator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/evals/runners/test_eval_runner.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/integration_tests/test_agent_lifecycle.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/integration_tests/test_server_lifecycle.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_agent_factory.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_approval_widget.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_ask_user.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_ast_evaluator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_backend.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_cli_enhancements.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_cli_rubric.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_cost_tracking.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_default_marketplace.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_goal_criteria.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_goal_state_limits.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_goal_state_notice.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_grader_tools.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_hitl.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_integrations_and_hooks.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_interrupt_schemas.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_jev_rubrics.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_local_context.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_logging.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_mcp.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_mcp_middleware.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_mcp_viewer_and_command.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_memory.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_memory_enhancements.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_middleware_stack.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_model_retry.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_plugin_agent_skill_mcp_scoping.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_plugin_manager_search.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_plugins.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_project_plugins.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_prompts_and_schema.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_reliable_rubric.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_resume_state.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_resumed_thread_latency_fix.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_rubrics.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_security.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_server_hooks.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_skill_creator.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_skills.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_state.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_subagents.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_tool_filter.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_tools.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_tui_app.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/tests/unit_tests/test_utils.py +0 -0
- {talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/uv-requirements.txt +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
-
# OpsCloud — PyPI
|
|
2
|
+
# OpsCloud — PyPI Release Pipeline
|
|
3
3
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
# Trigger: Push a tag like `v0.
|
|
5
|
-
# Result: Test ➔ Build ➔ Asset Verification ➔ Publish to PyPI
|
|
4
|
+
# Trigger: Push a tag like `v0.3.0b5` or manual workflow_dispatch
|
|
5
|
+
# Result: Test ➔ Build ➔ Asset Verification ➔ Publish to PyPI
|
|
6
6
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
7
7
|
|
|
8
|
-
name: "📦 Release to PyPI
|
|
8
|
+
name: "📦 Release to PyPI"
|
|
9
9
|
|
|
10
10
|
on:
|
|
11
11
|
push:
|
|
@@ -14,7 +14,7 @@ on:
|
|
|
14
14
|
workflow_dispatch:
|
|
15
15
|
inputs:
|
|
16
16
|
tag_name:
|
|
17
|
-
description: "Release tag (e.g., v0.
|
|
17
|
+
description: "Release tag (e.g., v0.3.0b5)"
|
|
18
18
|
required: true
|
|
19
19
|
type: string
|
|
20
20
|
|
|
@@ -23,7 +23,7 @@ concurrency:
|
|
|
23
23
|
cancel-in-progress: true
|
|
24
24
|
|
|
25
25
|
permissions:
|
|
26
|
-
contents:
|
|
26
|
+
contents: read
|
|
27
27
|
id-token: write # PyPI Trusted Publishing (OIDC)
|
|
28
28
|
|
|
29
29
|
jobs:
|
|
@@ -187,125 +187,3 @@ jobs:
|
|
|
187
187
|
verbose: true
|
|
188
188
|
print-hash: true
|
|
189
189
|
|
|
190
|
-
# ── Step 5: Create GitHub Release ───────────────────────────────────────────
|
|
191
|
-
github-release:
|
|
192
|
-
name: "📋 Create GitHub Release"
|
|
193
|
-
needs: [meta, build, publish-pypi]
|
|
194
|
-
runs-on: ubuntu-latest
|
|
195
|
-
steps:
|
|
196
|
-
- uses: actions/checkout@v4
|
|
197
|
-
with:
|
|
198
|
-
fetch-depth: 0
|
|
199
|
-
|
|
200
|
-
- name: Download build artifacts
|
|
201
|
-
uses: actions/download-artifact@v4
|
|
202
|
-
with:
|
|
203
|
-
name: dist-opscloud
|
|
204
|
-
path: dist/
|
|
205
|
-
|
|
206
|
-
- name: Generate release notes
|
|
207
|
-
id: notes
|
|
208
|
-
env:
|
|
209
|
-
PYPI_NAME: ${{ needs.meta.outputs.pypi_name }}
|
|
210
|
-
VERSION: ${{ needs.meta.outputs.version }}
|
|
211
|
-
TAG: ${{ needs.meta.outputs.tag }}
|
|
212
|
-
run: |
|
|
213
|
-
set -euo pipefail
|
|
214
|
-
|
|
215
|
-
TOML="pyproject.toml"
|
|
216
|
-
DESCRIPTION=$(grep '^description' "$TOML" | head -1 | sed 's/.*"\(.*\)".*/\1/')
|
|
217
|
-
PYTHON_REQ=$(grep 'requires-python' "$TOML" | head -1 | sed 's/.*"\(.*\)".*/\1/' || echo ">=3.12")
|
|
218
|
-
|
|
219
|
-
# Generate artifact checksums
|
|
220
|
-
CHECKSUMS=""
|
|
221
|
-
for f in dist/*; do
|
|
222
|
-
HASH=$(sha256sum "$f" | cut -d' ' -f1)
|
|
223
|
-
FNAME=$(basename "$f")
|
|
224
|
-
CHECKSUMS="${CHECKSUMS}\n| \`${FNAME}\` | \`${HASH:0:20}…\` |"
|
|
225
|
-
done
|
|
226
|
-
|
|
227
|
-
# Changelog since previous tag
|
|
228
|
-
PREV_TAG=$(git tag --list "v*" --sort=-version:refname | grep -v "^${TAG}$" | head -1 || true)
|
|
229
|
-
CHANGELOG=""
|
|
230
|
-
if [ -n "$PREV_TAG" ]; then
|
|
231
|
-
COMMITS=$(git log --oneline "${PREV_TAG}..HEAD" 2>/dev/null | head -20 || true)
|
|
232
|
-
if [ -n "$COMMITS" ]; then
|
|
233
|
-
CHANGELOG="### 📝 Changes since \`${PREV_TAG}\`\n\n"
|
|
234
|
-
while IFS= read -r commit; do
|
|
235
|
-
[ -z "$commit" ] && continue
|
|
236
|
-
CHANGELOG="${CHANGELOG}- ${commit}\n"
|
|
237
|
-
done <<< "$COMMITS"
|
|
238
|
-
fi
|
|
239
|
-
fi
|
|
240
|
-
|
|
241
|
-
cat > /tmp/release_body.md << RELEASE_EOF
|
|
242
|
-
## ⚡ OpsCloud ${TAG}
|
|
243
|
-
|
|
244
|
-
> ${DESCRIPTION}
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
### ⚡ Installation & Quickstart
|
|
249
|
-
|
|
250
|
-
\`\`\`bash
|
|
251
|
-
# Direct one-line installer
|
|
252
|
-
curl -LsSf https://raw.githubusercontent.com/talkops-ai/opscloud/main/scripts/install.sh | bash
|
|
253
|
-
\`\`\`
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
### 🚀 Launch OpsCloud
|
|
258
|
-
|
|
259
|
-
\`\`\`bash
|
|
260
|
-
# Interactive Terminal UI
|
|
261
|
-
opscloud
|
|
262
|
-
|
|
263
|
-
# System & Cloud Health Check
|
|
264
|
-
opscloud doctor
|
|
265
|
-
|
|
266
|
-
# Configure API credentials
|
|
267
|
-
opscloud /auth
|
|
268
|
-
\`\`\`
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
$(echo -e "${CHANGELOG}")
|
|
273
|
-
|
|
274
|
-
### 📋 Package Details
|
|
275
|
-
|
|
276
|
-
| Property | Value |
|
|
277
|
-
|---|---|
|
|
278
|
-
| **PyPI Package** | [\`${PYPI_NAME}\`](https://pypi.org/project/${PYPI_NAME}/${VERSION}/) |
|
|
279
|
-
| **Version** | \`${VERSION}\` |
|
|
280
|
-
| **Python Requirement** | \`${PYTHON_REQ}\` |
|
|
281
|
-
| **License** | Apache 2.0 |
|
|
282
|
-
| **CLI Binary** | \`opscloud\` |
|
|
283
|
-
|
|
284
|
-
<details>
|
|
285
|
-
<summary>🔒 Artifact Checksums (SHA-256)</summary>
|
|
286
|
-
|
|
287
|
-
| Artifact | SHA-256 |
|
|
288
|
-
|---|---|$(echo -e "${CHECKSUMS}")
|
|
289
|
-
|
|
290
|
-
</details>
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
### 🔗 Links & Resources
|
|
295
|
-
- 📖 [Technical Documentation](https://github.com/talkops-ai/opscloud)
|
|
296
|
-
- 📦 [PyPI Release](https://pypi.org/project/${PYPI_NAME}/${VERSION}/)
|
|
297
|
-
- 🐛 [Report an Issue](https://github.com/talkops-ai/opscloud/issues/new)
|
|
298
|
-
RELEASE_EOF
|
|
299
|
-
|
|
300
|
-
sed -i 's/^ //' /tmp/release_body.md
|
|
301
|
-
|
|
302
|
-
- name: Publish GitHub Release
|
|
303
|
-
uses: softprops/action-gh-release@v2
|
|
304
|
-
with:
|
|
305
|
-
tag_name: ${{ needs.meta.outputs.tag }}
|
|
306
|
-
name: "OpsCloud ${{ needs.meta.outputs.tag }}"
|
|
307
|
-
body_path: /tmp/release_body.md
|
|
308
|
-
files: dist/*
|
|
309
|
-
draft: false
|
|
310
|
-
prerelease: ${{ contains(needs.meta.outputs.version, 'b') || contains(needs.meta.outputs.version, 'a') || contains(needs.meta.outputs.version, 'rc') }}
|
|
311
|
-
generate_release_notes: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: talkops-opscloud
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.0b6
|
|
4
4
|
Summary: Extensible Terminal Multi-Agent Framework for Cloud Operations & DevOps Coding
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -17,6 +17,7 @@ Requires-Dist: genai-prices>=0.1.0
|
|
|
17
17
|
Requires-Dist: httpx>=0.28.1
|
|
18
18
|
Requires-Dist: langchain-anthropic>=1.5.3
|
|
19
19
|
Requires-Dist: langchain-aws>=0.2.14
|
|
20
|
+
Requires-Dist: langchain-baseten>=0.2.4
|
|
20
21
|
Requires-Dist: langchain-cohere>=0.6.0
|
|
21
22
|
Requires-Dist: langchain-core>=1.5.3
|
|
22
23
|
Requires-Dist: langchain-deepseek>=1.1.1
|
|
@@ -25,7 +26,10 @@ Requires-Dist: langchain-google-genai>=4.3.2
|
|
|
25
26
|
Requires-Dist: langchain-google-vertexai>=3.2.4
|
|
26
27
|
Requires-Dist: langchain-groq>=1.1.3
|
|
27
28
|
Requires-Dist: langchain-huggingface>=1.2.2
|
|
29
|
+
Requires-Dist: langchain-ibm>=1.1.2
|
|
30
|
+
Requires-Dist: langchain-litellm>=0.11.0
|
|
28
31
|
Requires-Dist: langchain-mcp-adapters>=0.3.0
|
|
32
|
+
Requires-Dist: langchain-meta>=0.5.0
|
|
29
33
|
Requires-Dist: langchain-mistralai>=1.1.6
|
|
30
34
|
Requires-Dist: langchain-nvidia-ai-endpoints>=1.4.3
|
|
31
35
|
Requires-Dist: langchain-ollama>=1.1.0
|
|
@@ -41,6 +45,7 @@ Requires-Dist: langgraph-cli[inmem]>=0.4.31
|
|
|
41
45
|
Requires-Dist: langgraph-sdk>=0.4.2
|
|
42
46
|
Requires-Dist: langgraph>=1.2.10
|
|
43
47
|
Requires-Dist: langsmith>=0.10.6
|
|
48
|
+
Requires-Dist: litellm>=1.103.3
|
|
44
49
|
Requires-Dist: loguru>=0.7.3
|
|
45
50
|
Requires-Dist: markdown-it-py>=4.2.0
|
|
46
51
|
Requires-Dist: markdownify>=1.2.3
|
|
@@ -60,6 +65,7 @@ Requires-Dist: tavily-python>=0.7.26
|
|
|
60
65
|
Requires-Dist: textual>=8.2.8
|
|
61
66
|
Requires-Dist: tomli-w>=1.2.0
|
|
62
67
|
Requires-Dist: tomli>=1.1.0
|
|
68
|
+
Requires-Dist: transformers>=5.19.0
|
|
63
69
|
Requires-Dist: typing-extensions>=4.16.0
|
|
64
70
|
Requires-Dist: urllib3>=2.7.0
|
|
65
71
|
Requires-Dist: uuid-utils>=0.17.0
|
|
@@ -82,13 +88,10 @@ Description-Content-Type: text/markdown
|
|
|
82
88
|
|
|
83
89
|
<div align="center">
|
|
84
90
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
| |_| | __/ ___) | |___| |__| |_| | |_| | |_| |
|
|
90
|
-
\___/|_| |____/ \____|_____\___/ \___/|____/
|
|
91
|
-
```
|
|
91
|
+
<a href="https://github.com/talkops-ai/opscloud">
|
|
92
|
+
<img src="assets/opscloud-banner.gif" alt="OpsCloud" width="800" />
|
|
93
|
+
</a>
|
|
94
|
+
|
|
92
95
|
### Extensible Terminal Multi-Agent Framework for Cloud Operations & DevOps Coding
|
|
93
96
|
|
|
94
97
|
[](https://www.python.org/)
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
| |_| | __/ ___) | |___| |__| |_| | |_| | |_| |
|
|
8
|
-
\___/|_| |____/ \____|_____\___/ \___/|____/
|
|
9
|
-
```
|
|
3
|
+
<a href="https://github.com/talkops-ai/opscloud">
|
|
4
|
+
<img src="assets/opscloud-banner.gif" alt="OpsCloud" width="800" />
|
|
5
|
+
</a>
|
|
6
|
+
|
|
10
7
|
### Extensible Terminal Multi-Agent Framework for Cloud Operations & DevOps Coding
|
|
11
8
|
|
|
12
9
|
[](https://www.python.org/)
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "talkops-opscloud"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.0b6"
|
|
4
4
|
description = "Extensible Terminal Multi-Agent Framework for Cloud Operations & DevOps Coding"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -64,6 +64,12 @@ dependencies = [
|
|
|
64
64
|
"langchain-perplexity>=1.4.1",
|
|
65
65
|
"langchain-nvidia-ai-endpoints>=1.4.3",
|
|
66
66
|
"langchain-huggingface>=1.2.2",
|
|
67
|
+
"langchain-baseten>=0.2.4",
|
|
68
|
+
"langchain-ibm>=1.1.2",
|
|
69
|
+
"transformers>=5.19.0",
|
|
70
|
+
"langchain-litellm>=0.11.0",
|
|
71
|
+
"langchain-meta>=0.5.0",
|
|
72
|
+
"litellm>=1.103.3",
|
|
67
73
|
]
|
|
68
74
|
|
|
69
75
|
[project.optional-dependencies]
|
|
@@ -120,6 +120,21 @@ def run_interactive(
|
|
|
120
120
|
"trust_project_mcp": trust_project_mcp,
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
+
server_kwargs: dict[str, Any] = {
|
|
124
|
+
"assistant_id": "opscloud",
|
|
125
|
+
"model_name": resolved_model,
|
|
126
|
+
"interactive": True,
|
|
127
|
+
"auto_approve": (approval_mode == ApprovalMode.AUTO or approval_mode == "auto"),
|
|
128
|
+
"cwd": resolved_cwd,
|
|
129
|
+
"read_only": read_only,
|
|
130
|
+
"aws_profile": aws_profile,
|
|
131
|
+
"aws_region": aws_region,
|
|
132
|
+
"shell_allow_list": tuple(shell_allow_list) if shell_allow_list else None,
|
|
133
|
+
"mcp_config_path": mcp_config_path,
|
|
134
|
+
"no_mcp": no_mcp,
|
|
135
|
+
"trust_project_mcp": trust_project_mcp,
|
|
136
|
+
}
|
|
137
|
+
|
|
123
138
|
try:
|
|
124
139
|
app = OpsCloudApp(
|
|
125
140
|
server_url=url,
|
|
@@ -129,6 +144,7 @@ def run_interactive(
|
|
|
129
144
|
model=resolved_model,
|
|
130
145
|
approval_mode=approval_mode,
|
|
131
146
|
defer_server_start=defer_server_start,
|
|
147
|
+
server_kwargs=server_kwargs,
|
|
132
148
|
goal=goal,
|
|
133
149
|
cwd=resolved_cwd,
|
|
134
150
|
mcp_preload_kwargs=mcp_preload_kwargs,
|
|
@@ -36,7 +36,7 @@ async def start_server_and_get_agent(
|
|
|
36
36
|
port: int = 0,
|
|
37
37
|
**kwargs: Any,
|
|
38
38
|
) -> tuple[RemoteAgent, ServerProcess]:
|
|
39
|
-
"""Start a LangGraph dev server and return a RemoteAgent client."""
|
|
39
|
+
"""Start a LangGraph dev server asynchronously and return a RemoteAgent client."""
|
|
40
40
|
from opscloud.project_utils import ProjectContext
|
|
41
41
|
|
|
42
42
|
project_context = (
|
|
@@ -44,15 +44,24 @@ async def start_server_and_get_agent(
|
|
|
44
44
|
if cwd is not None
|
|
45
45
|
else ProjectContext.from_user_cwd(Path.cwd())
|
|
46
46
|
)
|
|
47
|
+
resolved_model = model_name or kwargs.pop("model", None)
|
|
48
|
+
if not resolved_model:
|
|
49
|
+
try:
|
|
50
|
+
from opscloud.model.factory import _get_default_model_spec
|
|
51
|
+
|
|
52
|
+
resolved_model = _get_default_model_spec()
|
|
53
|
+
except Exception:
|
|
54
|
+
resolved_model = None
|
|
55
|
+
|
|
47
56
|
config = ServerConfig.from_cli_args(
|
|
48
57
|
project_context=project_context,
|
|
49
58
|
assistant_id=assistant_id,
|
|
50
|
-
model=
|
|
59
|
+
model=resolved_model,
|
|
51
60
|
interactive=interactive,
|
|
52
61
|
approval_mode="never" if auto_approve else "auto",
|
|
53
62
|
**kwargs,
|
|
54
63
|
)
|
|
55
64
|
server = ServerProcess(config, host=host, port=port)
|
|
56
|
-
url = server.
|
|
65
|
+
url = await server.astart()
|
|
57
66
|
agent = RemoteAgent(url=url, graph_name="agent")
|
|
58
67
|
return agent, server
|
|
@@ -41,6 +41,9 @@ class PoolHandler(BaseCommandHandler):
|
|
|
41
41
|
# 1. Clear pool configuration
|
|
42
42
|
if args in ("--clear", "clear"):
|
|
43
43
|
clear_agent_pool()
|
|
44
|
+
pool_mgr = get_model_pool_manager()
|
|
45
|
+
with pool_mgr._lock:
|
|
46
|
+
pool_mgr._instances.clear()
|
|
44
47
|
return CommandResult(
|
|
45
48
|
success=True,
|
|
46
49
|
message="**Agent Model Pool Cleared:** Reverted to automatic dynamic discovery from provider capabilities.",
|
|
@@ -53,7 +56,12 @@ class PoolHandler(BaseCommandHandler):
|
|
|
53
56
|
tiers = pool_mgr.discover_tiers()
|
|
54
57
|
|
|
55
58
|
is_custom = user_pool is not None
|
|
56
|
-
|
|
59
|
+
if is_custom:
|
|
60
|
+
provs = {t[0].split(":", 1)[0] for t in tiers.values() if ":" in t[0]}
|
|
61
|
+
multi_badge = " [Multi-Provider]" if len(provs) > 1 else f" [{next(iter(provs))}]"
|
|
62
|
+
source_label = f"Custom (`config.toml [agent_pool]`){multi_badge}"
|
|
63
|
+
else:
|
|
64
|
+
source_label = "Automatic Dynamic Discovery"
|
|
57
65
|
|
|
58
66
|
msg = (
|
|
59
67
|
f"**Agent Model Pool Status** ({source_label}):\n"
|
|
@@ -78,10 +86,37 @@ class PoolHandler(BaseCommandHandler):
|
|
|
78
86
|
if updates:
|
|
79
87
|
current = load_agent_pool() or {}
|
|
80
88
|
merged = {**current, **updates}
|
|
81
|
-
|
|
89
|
+
|
|
90
|
+
from opscloud.model.config import detect_provider, apply_stored_credentials
|
|
91
|
+
provs = set()
|
|
92
|
+
for v in merged.values():
|
|
93
|
+
if ":" in v:
|
|
94
|
+
provs.add(v.split(":", 1)[0])
|
|
95
|
+
else:
|
|
96
|
+
inferred = detect_provider(v)
|
|
97
|
+
if inferred:
|
|
98
|
+
provs.add(inferred)
|
|
99
|
+
|
|
100
|
+
provider_to_save = next(iter(provs)) if len(provs) == 1 else ("multi" if len(provs) > 1 else None)
|
|
101
|
+
save_agent_pool(merged, provider=provider_to_save)
|
|
102
|
+
|
|
103
|
+
pool_mgr = get_model_pool_manager()
|
|
104
|
+
with pool_mgr._lock:
|
|
105
|
+
pool_mgr._instances.clear()
|
|
106
|
+
|
|
107
|
+
for p in provs:
|
|
108
|
+
apply_stored_credentials(p)
|
|
109
|
+
|
|
110
|
+
from opscloud.model.config import has_provider_credentials
|
|
111
|
+
warnings = []
|
|
112
|
+
for p in provs:
|
|
113
|
+
if has_provider_credentials(p) is False:
|
|
114
|
+
warnings.append(f"⚠️ Notice: Credentials for provider '{p}' are not configured.")
|
|
115
|
+
warn_msg = ("\n\n" + "\n".join(warnings)) if warnings else ""
|
|
116
|
+
|
|
82
117
|
return CommandResult(
|
|
83
118
|
success=True,
|
|
84
|
-
message=f"**Agent Model Pool Updated:** `{merged}` saved to `config.toml [agent_pool]`.",
|
|
119
|
+
message=f"**Agent Model Pool Updated:** `{merged}` saved to `config.toml [agent_pool]`.{warn_msg}",
|
|
85
120
|
)
|
|
86
121
|
return CommandResult(
|
|
87
122
|
success=False,
|
{talkops_opscloud-0.3.0b4 → talkops_opscloud-0.3.0b6}/src/opscloud/commands/power/runtime.py
RENAMED
|
@@ -269,16 +269,13 @@ class AutoUpdateHandler(BaseCommandHandler):
|
|
|
269
269
|
|
|
270
270
|
|
|
271
271
|
def _reload_dotenv() -> None:
|
|
272
|
-
"""Re-read .env files into os.environ."""
|
|
272
|
+
"""Re-read .env files into os.environ using unified settings loader."""
|
|
273
273
|
try:
|
|
274
|
-
from
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
load_dotenv(project_env, override=True)
|
|
280
|
-
except ImportError:
|
|
281
|
-
pass
|
|
274
|
+
from opscloud.config.settings import _load_dotenv
|
|
275
|
+
|
|
276
|
+
_load_dotenv(refresh_loaded=True)
|
|
277
|
+
except Exception as exc:
|
|
278
|
+
logger.debug("Failed to reload dotenv: %s", exc)
|
|
282
279
|
|
|
283
280
|
|
|
284
281
|
def _check_pypi_version(*, prerelease: bool = False) -> str | None:
|
|
@@ -505,6 +505,18 @@ _STATIC_OPTIONS: tuple[ConfigOption, ...] = (
|
|
|
505
505
|
settings_field="model_context_limit",
|
|
506
506
|
default=128_000,
|
|
507
507
|
),
|
|
508
|
+
# ── Startup & Environment ─────────────────────────────
|
|
509
|
+
ConfigOption(
|
|
510
|
+
key="startup.read_project_dotenv",
|
|
511
|
+
group="Startup",
|
|
512
|
+
summary="Read nearest project .env file during directory walk-up",
|
|
513
|
+
kind=OptionKind.BOOL,
|
|
514
|
+
db_key="READ_PROJECT_DOTENV",
|
|
515
|
+
env_var="READ_PROJECT_DOTENV",
|
|
516
|
+
toml_keys=("startup", "read_project_dotenv"),
|
|
517
|
+
settings_field="read_project_dotenv",
|
|
518
|
+
default=True,
|
|
519
|
+
),
|
|
508
520
|
# ── Security & Approvals ──────────────────────────────
|
|
509
521
|
ConfigOption(
|
|
510
522
|
key="security.approval_mode",
|
|
@@ -166,6 +166,27 @@ DOTENV_DENIED_ENV_KEYS: Final[frozenset[str]] = frozenset(
|
|
|
166
166
|
}
|
|
167
167
|
)
|
|
168
168
|
|
|
169
|
+
PROJECT_DOTENV_DENIED_ENV_KEYS: Final[frozenset[str]] = frozenset(
|
|
170
|
+
{
|
|
171
|
+
"OPSCLOUD_APPROVAL_MODE",
|
|
172
|
+
"APPROVAL_MODE",
|
|
173
|
+
"OPSCLOUD_SHELL_ALLOW_LIST",
|
|
174
|
+
"SHELL_ALLOW_LIST",
|
|
175
|
+
"OPSCLOUD_READ_ONLY",
|
|
176
|
+
"READ_ONLY",
|
|
177
|
+
"OPSCLOUD_CONFIG_DIR",
|
|
178
|
+
"CONFIG_DIR",
|
|
179
|
+
"OPSCLOUD_READ_PROJECT_DOTENV",
|
|
180
|
+
"READ_PROJECT_DOTENV",
|
|
181
|
+
"OPSCLOUD_SERVER_DB_PATH",
|
|
182
|
+
"OPSCODE_APPROVAL_MODE",
|
|
183
|
+
"OPSCODE_SHELL_ALLOW_LIST",
|
|
184
|
+
"OPSCODE_READ_ONLY",
|
|
185
|
+
"OPSCODE_CONFIG_DIR",
|
|
186
|
+
"TERM_PROGRAM",
|
|
187
|
+
}
|
|
188
|
+
)
|
|
189
|
+
|
|
169
190
|
RELOADABLE_FIELDS: Final[frozenset[str]] = frozenset(
|
|
170
191
|
{
|
|
171
192
|
"model_name",
|
|
@@ -176,6 +197,7 @@ RELOADABLE_FIELDS: Final[frozenset[str]] = frozenset(
|
|
|
176
197
|
"aws_profile",
|
|
177
198
|
"shell_allow_list",
|
|
178
199
|
"theme",
|
|
200
|
+
"read_project_dotenv",
|
|
179
201
|
}
|
|
180
202
|
)
|
|
181
203
|
|