agentengine-sdk-python 0.8.3__py3-none-any.whl → 0.8.5__py3-none-any.whl
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.
- {agentengine_sdk_python-0.8.3.dist-info → agentengine_sdk_python-0.8.5.dist-info}/METADATA +13 -9
- agentengine_sdk_python-0.8.5.dist-info/RECORD +1296 -0
- ksadk/_build_provenance.json +1 -1
- ksadk/_process.py +83 -0
- ksadk/_str_enum.py +17 -0
- ksadk/a2ui/core.py +3 -3
- ksadk/api/client.py +111 -91
- ksadk/builders/code_builder.py +74 -21
- ksadk/builders/framework_requirements.py +22 -3
- ksadk/builders/ks3_uploader.py +36 -7
- ksadk/builders/managed_runtime_builder.py +1 -0
- ksadk/cli/__init__.py +68 -3
- ksadk/cli/cmd_config.py +4 -4
- ksadk/cli/cmd_create.py +12 -12
- ksadk/cli/cmd_hermes.py +24 -2
- ksadk/cli/cmd_invoke.py +28 -5
- ksadk/cli/cmd_managed_runtime.py +13 -1
- ksadk/cli/cmd_openclaw.py +26 -1
- ksadk/cli/cmd_plugin.py +76 -13
- ksadk/cli/cmd_studio.py +64 -16
- ksadk/cli/cmd_web.py +2 -5
- ksadk/cli/openclaw_env.py +1 -1
- ksadk/cli/resource_common.py +26 -0
- ksadk/cli/runtime_bootstrap.py +23 -1
- ksadk/codex/client.py +425 -96
- ksadk/codex/projection.py +24 -0
- ksadk/codex/runtime.py +56 -298
- ksadk/common/auth.py +16 -10
- ksadk/configs/__init__.py +1 -1
- ksadk/configs/env_registry.py +153 -31
- ksadk/configs/env_registry_studio.py +86 -0
- ksadk/configs/global_config.py +1 -1
- ksadk/configs/settings.py +3 -3
- ksadk/connector/__init__.py +17 -0
- ksadk/connector/channel.py +477 -0
- ksadk/context_engine/capabilities.py +52 -4
- ksadk/conversations/attachment_storage.py +10 -3
- ksadk/conversations/attachments.py +16 -5
- ksadk/conversations/message_projection.py +133 -21
- ksadk/conversations/normalize.py +28 -10
- ksadk/conversations/projector.py +4 -6
- ksadk/conversations/runtime_baseline.py +37 -0
- ksadk/conversations/runtime_invocation.py +22 -4
- ksadk/conversations/runtime_observability.py +39 -10
- ksadk/conversations/runtime_payloads.py +9 -0
- ksadk/conversations/runtime_persistence.py +105 -9
- ksadk/conversations/runtime_preparation.py +42 -33
- ksadk/conversations/runtime_resume.py +50 -2
- ksadk/conversations/runtime_stream_events.py +34 -35
- ksadk/conversations/runtime_streaming.py +33 -7
- ksadk/deployment/env_forward.py +2 -2
- ksadk/deployment/providers/serverless.py +1 -1
- ksadk/events/adapters/_codex_items.py +16 -8
- ksadk/events/adapters/_codex_validators.py +18 -7
- ksadk/events/adapters/_langgraph_support.py +34 -0
- ksadk/events/adapters/langgraph.py +15 -1
- ksadk/events/canonical_store.py +3 -1
- ksadk/events/projections.py +1 -1
- ksadk/events/session_event.py +2 -2
- ksadk/harness/__init__.py +14 -0
- ksadk/harness/app.py +11 -0
- ksadk/harness/artifact_store.py +213 -0
- ksadk/harness/capabilities.py +115 -0
- ksadk/harness/capability_runtime.py +237 -0
- ksadk/harness/closure_contract.py +92 -0
- ksadk/harness/compaction_record.py +122 -0
- ksadk/harness/compiler.py +284 -0
- ksadk/harness/config.py +2 -2
- ksadk/harness/conformance/__init__.py +33 -0
- ksadk/harness/conformance/contract.py +506 -0
- ksadk/harness/conformance/fixtures.py +102 -0
- ksadk/harness/context_engine.py +403 -0
- ksadk/harness/context_maintenance.py +259 -0
- ksadk/harness/context_manifest.py +188 -0
- ksadk/harness/context_tuning.py +168 -0
- ksadk/harness/draft_runtime.py +322 -0
- ksadk/harness/engine/__init__.py +40 -0
- ksadk/harness/engine/base.py +122 -0
- ksadk/harness/engine/budgets.py +108 -0
- ksadk/harness/engine/capability_declarations.py +59 -0
- ksadk/harness/engine/completion_guard.py +42 -0
- ksadk/harness/engine/context_pipeline.py +579 -0
- ksadk/harness/engine/graph_builder.py +859 -0
- ksadk/harness/engine/langgraph.py +931 -0
- ksadk/harness/engine/mcp_disclosure.py +750 -0
- ksadk/harness/engine/policy_runtime.py +70 -0
- ksadk/harness/engine/postgres_checkpointer.py +63 -0
- ksadk/harness/engine/run_control_bridge.py +80 -0
- ksadk/harness/engine/run_types.py +88 -0
- ksadk/harness/engine/skill_disclosure.py +189 -0
- ksadk/harness/engine/spans.py +41 -0
- ksadk/harness/engine/subagents.py +343 -0
- ksadk/harness/engine/thread_ids.py +112 -0
- ksadk/harness/engine/tool_dispatch.py +144 -0
- ksadk/harness/event_tree.py +212 -0
- ksadk/harness/events.py +461 -0
- ksadk/harness/execution_policy.py +94 -0
- ksadk/harness/insights.py +210 -0
- ksadk/harness/lifecycle.py +578 -0
- ksadk/harness/lifecycle_conformance.py +233 -0
- ksadk/harness/lifecycle_local_plane.py +104 -0
- ksadk/harness/loop/__init__.py +44 -0
- ksadk/harness/loop/reason.py +454 -0
- ksadk/harness/loop/tools.py +762 -0
- ksadk/harness/managed_runtime.py +884 -0
- ksadk/harness/mcp_matrix.py +474 -0
- ksadk/harness/mcp_runtime.py +471 -0
- ksadk/harness/memory_consolidation.py +157 -0
- ksadk/harness/memory_loop.py +156 -0
- ksadk/harness/memory_runtime.py +541 -0
- ksadk/harness/metrics.py +90 -0
- ksadk/harness/model_capability.py +253 -0
- ksadk/harness/model_provider.py +220 -0
- ksadk/harness/observability/__init__.py +29 -0
- ksadk/harness/observability/inspection.py +528 -0
- ksadk/harness/observability/metrics.py +167 -0
- ksadk/harness/observability/otel_exporter.py +218 -0
- ksadk/harness/prompt_cache.py +70 -0
- ksadk/harness/public_activity.py +154 -0
- ksadk/harness/readiness.py +249 -0
- ksadk/harness/reasoner.py +466 -13
- ksadk/harness/release_readiness.py +140 -0
- ksadk/harness/resource_ref.py +69 -0
- ksadk/harness/run_control.py +668 -0
- ksadk/harness/runtime.py +171 -136
- ksadk/harness/runtime_capabilities.py +158 -0
- ksadk/harness/runtime_server.py +514 -0
- ksadk/harness/sandbox_adapters.py +739 -0
- ksadk/harness/sandbox_backend.py +530 -0
- ksadk/harness/sandbox_conformance.py +288 -0
- ksadk/harness/sandbox_lease.py +77 -0
- ksadk/harness/sandbox_lease_conformance.py +259 -0
- ksadk/harness/sandbox_matrix.py +170 -0
- ksadk/harness/sandbox_reconciliation.py +140 -0
- ksadk/harness/sandbox_recovery.py +586 -0
- ksadk/harness/sandbox_recovery_conformance.py +246 -0
- ksadk/harness/session_store.py +243 -0
- ksadk/harness/skill_composition.py +212 -0
- ksadk/harness/skill_feedback.py +123 -0
- ksadk/harness/skill_matrix.py +233 -0
- ksadk/harness/skill_runtime.py +259 -0
- ksadk/harness/spec.py +332 -0
- ksadk/harness/state.py +153 -0
- ksadk/harness/strategies.py +149 -0
- ksadk/harness/subagent.py +253 -0
- ksadk/harness/tool_policy.py +131 -0
- ksadk/harness/tool_receipts.py +96 -0
- ksadk/harness/tool_reliability.py +81 -0
- ksadk/harness/tools.py +38 -13
- ksadk/harness/user_errors.py +69 -0
- ksadk/harness/working_context.py +81 -0
- ksadk/harness/working_context_patch.py +99 -0
- ksadk/identity/resolver.py +18 -0
- ksadk/interaction/__init__.py +1 -1
- ksadk/interaction/ledger.py +1 -1
- ksadk/interaction/provider.py +2 -1
- ksadk/interaction/providers/__init__.py +3 -1
- ksadk/interaction/providers/adk.py +1 -1
- ksadk/interaction/providers/codex.py +1 -1
- ksadk/interaction/providers/harness.py +50 -0
- ksadk/interaction/providers/langgraph.py +2 -1
- ksadk/kernel/__init__.py +10 -0
- ksadk/kernel/approval_presentation.py +91 -0
- ksadk/kernel/authorization.py +1 -1
- ksadk/kernel/bootstrap.py +114 -106
- ksadk/kernel/contract_fingerprints.py +1 -1
- ksadk/kernel/contracts.py +5 -0
- ksadk/kernel/control.py +32 -1
- ksadk/kernel/execution_grants.py +221 -0
- ksadk/kernel/execution_grants_memory.py +133 -0
- ksadk/kernel/execution_grants_postgres.py +217 -0
- ksadk/kernel/execution_grants_sqlite.py +209 -0
- ksadk/kernel/ingress.py +42 -29
- ksadk/kernel/mapping.py +1 -1
- ksadk/kernel/memory_store.py +24 -11
- ksadk/kernel/postgres_store.py +63 -33
- ksadk/kernel/recovery.py +78 -14
- ksadk/kernel/sql/001_agent_kernel.sql +23 -0
- ksadk/kernel/sqlite_store.py +331 -25
- ksadk/kernel/state.py +2 -3
- ksadk/kernel/store.py +72 -2
- ksadk/kernel/worker.py +144 -51
- ksadk/kernel/worker_history.py +72 -0
- ksadk/kernel/worker_identity.py +47 -0
- ksadk/knowledge_base/client.py +57 -27
- ksadk/mcp_runtime/__init__.py +12 -4
- ksadk/memory/adk/backends/sdk_ltm_backend.py +161 -41
- ksadk/memory/adk/resilient_session_service.py +25 -17
- ksadk/memory/adk/short_term_memory.py +26 -9
- ksadk/memory/coordinator.py +22 -6
- ksadk/memory/extraction.py +40 -1
- ksadk/memory/models.py +84 -5
- ksadk/memory/provider_resolver.py +8 -0
- ksadk/memory/providers/local_postgres.py +200 -0
- ksadk/memory/providers/local_sqlite.py +42 -3
- ksadk/memory/retrieval.py +189 -0
- ksadk/memory/store_adapter.py +150 -0
- ksadk/model_policy.py +2 -2
- ksadk/model_proxy/detect.py +254 -0
- ksadk/model_proxy/server.py +14 -7
- ksadk/model_proxy/transform.py +40 -2
- ksadk/plugins/__init__.py +5 -1
- ksadk/plugins/artifacts.py +275 -0
- ksadk/plugins/bridges/__init__.py +4 -2
- ksadk/plugins/bridges/codex.py +120 -13
- ksadk/plugins/bridges/dsh.py +351 -156
- ksadk/plugins/builtins.py +72 -35
- ksadk/plugins/bundle_security.py +28 -4
- ksadk/plugins/codex_manifest.py +983 -0
- ksadk/plugins/companion_artifacts.py +83 -0
- ksadk/plugins/companions.py +368 -0
- ksadk/plugins/composition.py +8 -0
- ksadk/plugins/contracts.py +119 -1
- ksadk/plugins/delivery.py +153 -0
- ksadk/plugins/dsh_channels.py +156 -0
- ksadk/plugins/dsh_home.py +140 -0
- ksadk/plugins/dsh_installation_digest.py +71 -0
- ksadk/plugins/dsh_teams.py +105 -0
- ksadk/plugins/dsh_toolchain.py +203 -32
- ksadk/plugins/ecosystem_probe.py +6 -6
- ksadk/plugins/execution_host.py +99 -0
- ksadk/plugins/host.py +102 -39
- ksadk/plugins/kernel_adapter.py +205 -0
- ksadk/plugins/providers/__init__.py +23 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/client.js +19 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/index.mjs +7 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/package.json +12 -0
- ksadk/plugins/providers/bundles/dsh-knowledge/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-knowledge/index.mjs +53 -0
- ksadk/plugins/providers/bundles/dsh-knowledge/package.json +16 -0
- ksadk/plugins/providers/bundles/dsh-memory/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-memory/index.mjs +175 -0
- ksadk/plugins/providers/bundles/dsh-memory/package.json +16 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/client.mjs +166 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/index.mjs +9 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/package.json +12 -0
- ksadk/plugins/providers/bundles/dsh-skill-center/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-skill-center/index.mjs +125 -0
- ksadk/plugins/providers/bundles/dsh-skill-center/package.json +16 -0
- ksadk/plugins/providers/bundles/dsh-teams-client/client.js +29 -0
- ksadk/plugins/providers/bundles/dsh-teams-client/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-client/index.mjs +11 -0
- ksadk/plugins/providers/bundles/dsh-teams-client/package.json +35 -0
- ksadk/plugins/providers/bundles/dsh-teams-leader-policy/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-leader-policy/index.mjs +13 -0
- ksadk/plugins/providers/bundles/dsh-teams-leader-policy/package.json +27 -0
- ksadk/plugins/providers/bundles/dsh-teams-profile/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-profile/index.mjs +12 -0
- ksadk/plugins/providers/bundles/dsh-teams-profile/package.json +26 -0
- ksadk/plugins/providers/bundles/dsh-teams-router/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-router/index.mjs +16 -0
- ksadk/plugins/providers/bundles/dsh-teams-router/package.json +27 -0
- ksadk/plugins/providers/bundles/dsh-teams-tasks/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-tasks/index.mjs +16 -0
- ksadk/plugins/providers/bundles/dsh-teams-tasks/package.json +27 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/index.mjs +25 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/package.json +29 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/tools.json +235 -0
- ksadk/plugins/providers/bundles/ksadk-codex/index.mjs +1 -1
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/index.mjs +920 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/package.json +27 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-companion-host/client.mjs +133 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-companion-host/index.mjs +14 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/client.js +115 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/index.mjs +19 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/package.json +7 -0
- ksadk/plugins/providers/bundles/ksadk-harness/index.mjs +1 -1
- ksadk/plugins/providers/codex.py +344 -70
- ksadk/plugins/providers/codex_native.py +368 -0
- ksadk/plugins/providers/codex_turn.py +301 -0
- ksadk/plugins/providers/dsh_capabilities.py +1450 -0
- ksadk/plugins/providers/dsh_mcp.py +467 -0
- ksadk/plugins/providers/harness.py +294 -141
- ksadk/plugins/providers/harness_delegation.py +593 -0
- ksadk/plugins/providers/harness_managed.py +456 -0
- ksadk/plugins/providers/harness_tools.py +326 -0
- ksadk/plugins/providers/mcp_projection.py +150 -0
- ksadk/plugins/providers/platform_resources.py +657 -0
- ksadk/plugins/providers/shipped_dsh.py +4 -1
- ksadk/plugins/resolver.py +8 -1
- ksadk/plugins/subagent_providers/codex.py +28 -6
- ksadk/plugins/teams/__init__.py +5 -0
- ksadk/plugins/teams/api.py +405 -0
- ksadk/plugins/teams/application.py +680 -0
- ksadk/plugins/teams/artifacts.py +60 -0
- ksadk/plugins/teams/context.py +96 -0
- ksadk/plugins/teams/contracts.py +136 -0
- ksadk/plugins/teams/domain.py +1427 -0
- ksadk/plugins/teams/domain_values.py +24 -0
- ksadk/plugins/teams/errors.py +13 -0
- ksadk/plugins/teams/migration.py +311 -0
- ksadk/plugins/teams/migration_cli.py +322 -0
- ksadk/plugins/teams/postgres_store.py +138 -0
- ksadk/plugins/teams/runtime.py +777 -0
- ksadk/plugins/teams/source_projection.py +84 -0
- ksadk/plugins/teams/store.py +311 -0
- ksadk/plugins/teams/task_decisions.py +423 -0
- ksadk/plugins/teams/transport.py +91 -0
- ksadk/plugins/teams/workspaces.py +255 -0
- ksadk/resource_runtime/__init__.py +4 -0
- ksadk/resource_runtime/broker.py +616 -0
- ksadk/resource_runtime/build_artifacts.py +165 -0
- ksadk/resource_runtime/contracts.py +138 -0
- ksadk/resource_runtime/discovery_receipts.py +100 -0
- ksadk/resource_runtime/discovery_skills.py +172 -0
- ksadk/resource_runtime/errors.py +6 -0
- ksadk/resource_runtime/ipc.py +142 -0
- ksadk/resource_runtime/kernel_approval.py +165 -0
- ksadk/resource_runtime/knowledge.py +114 -0
- ksadk/resource_runtime/langgraph.py +94 -0
- ksadk/resource_runtime/leases.py +191 -0
- ksadk/resource_runtime/managed_projection.py +186 -0
- ksadk/resource_runtime/mcp_server.py +138 -0
- ksadk/resource_runtime/memory_provider.py +318 -0
- ksadk/resource_runtime/memory_receipts.py +34 -0
- ksadk/resource_runtime/operation_ledger.py +211 -0
- ksadk/resource_runtime/plugin_config.py +48 -0
- ksadk/resource_runtime/policy_authorization.py +54 -0
- ksadk/resource_runtime/process.py +110 -0
- ksadk/resource_runtime/skill_artifacts.py +153 -0
- ksadk/resource_runtime/skill_runtime.py +42 -0
- ksadk/resource_runtime/skill_workspace.py +118 -0
- ksadk/resource_runtime/skills.py +215 -0
- ksadk/resource_runtime/snapshots.py +180 -0
- ksadk/resource_runtime/socket_server.py +103 -0
- ksadk/resource_runtime/supervisor.py +380 -0
- ksadk/resource_runtime/worker.py +504 -0
- ksadk/runners/_langgraph_runner_streams.py +182 -38
- ksadk/runners/_langgraph_state_reader.py +106 -0
- ksadk/runners/_session_identity.py +285 -0
- ksadk/runners/adk_runner.py +166 -63
- ksadk/runners/base_runner.py +29 -1
- ksadk/runners/langgraph_runner.py +542 -195
- ksadk/runners/patch_langchain.py +47 -0
- ksadk/runners/usage_accumulator.py +11 -3
- ksadk/runtime/_runner_adapter/stream_mapping.py +194 -20
- ksadk/runtime/adapter.py +2 -0
- ksadk/runtime/conversation_execution.py +117 -17
- ksadk/runtime/executor.py +87 -3
- ksadk/runtime/factory.py +65 -274
- ksadk/runtime/framework_adapters.py +23 -0
- ksadk/runtime/preprocessing.py +21 -5
- ksadk/runtime/runner_adapter.py +106 -18
- ksadk/runtime/skill_eval_result.py +36 -0
- ksadk/runtime/timing.py +46 -0
- ksadk/runtime/usage.py +49 -18
- ksadk/runtime_context.py +142 -2
- ksadk/sandbox/backends/e2b.py +288 -25
- ksadk/sandbox/backends/local_process.py +72 -39
- ksadk/sandbox/base.py +64 -1
- ksadk/sandbox/diagnostics.py +82 -0
- ksadk/sandbox/e2b_connection.py +66 -0
- ksadk/sandbox/local_controls.py +746 -0
- ksadk/sandbox/local_launcher.py +90 -0
- ksadk/scheduler/dispatcher.py +1 -1
- ksadk/scheduler/sqlite_store.py +18 -0
- ksadk/server/composition.py +2 -0
- ksadk/server/factory.py +5 -0
- ksadk/server/invocation_identity.py +118 -0
- ksadk/server/persistence_capability.py +516 -0
- ksadk/server/routes/common.py +32 -3
- ksadk/server/routes/control.py +271 -52
- ksadk/server/routes/dependencies.py +16 -0
- ksadk/server/routes/kernel_ingress.py +9 -1
- ksadk/server/routes/misc.py +233 -25
- ksadk/server/routes/models.py +47 -4
- ksadk/server/routes/openai_compat.py +76 -13
- ksadk/server/routes/projection.py +252 -12
- ksadk/server/routes/run.py +106 -35
- ksadk/server/routes/sessions.py +491 -138
- ksadk/server/routes/streaming.py +43 -9
- ksadk/server/routes/workspace.py +130 -21
- ksadk/server/static/assets/{ArtifactsPanel-10GPXIJ6.js → ArtifactsPanel-C1YoaKhx.js} +1 -1
- ksadk/server/static/assets/{CodeBlock-BXk1l-G1.js → CodeBlock-DHuAWfr5.js} +10 -7
- ksadk/server/static/assets/MathMessageMarkdown-cvdrBwYr.js +8 -0
- ksadk/server/static/assets/{MermaidBlock--OEYoXIJ.js → MermaidBlock-DeBkbJvI.js} +9 -9
- ksadk/server/static/assets/{NativeTerminalPanel-DrEe1syq.js → NativeTerminalPanel-oJj44_sV.js} +1 -1
- ksadk/server/static/assets/{abnfDiagram-VCTEODGH-eeTFJLvo.js → abnfDiagram-VCTEODGH-Dhfv25o2.js} +1 -1
- ksadk/server/static/assets/{arc-S3ZNbIAd.js → arc-C35w-pn1.js} +1 -1
- ksadk/server/static/assets/architecture-7GRP2DOG-BCsa26zi.js +1 -0
- ksadk/server/static/assets/{architectureDiagram-5GKGNRK7-CRjgEJDX.js → architectureDiagram-5GKGNRK7-FoMY_u6D.js} +1 -1
- ksadk/server/static/assets/{blockDiagram-NRAW4CY4-C7bsBoNH.js → blockDiagram-NRAW4CY4-zD4Rt7oE.js} +1 -1
- ksadk/server/static/assets/{c4Diagram-UCG6FXSJ-BX3c33Ob.js → c4Diagram-UCG6FXSJ-BCtGGkhN.js} +1 -1
- ksadk/server/static/assets/channel-_KDifNys.js +1 -0
- ksadk/server/static/assets/chunk-2Q5K7J3B-HdVkJ9F0.js +1 -0
- ksadk/server/static/assets/{chunk-5VM5RSS4-bZ7ws-8m.js → chunk-5VM5RSS4-C2Ms13_k.js} +1 -1
- ksadk/server/static/assets/{chunk-F27PBJKO-D2r0pvhY.js → chunk-F27PBJKO-BoTj-qgx.js} +1 -1
- ksadk/server/static/assets/{chunk-G27WJ6UU-CZwF3oUP.js → chunk-G27WJ6UU-DOMyyjHH.js} +1 -1
- ksadk/server/static/assets/{chunk-JWPE2WC7-DigFYCML.js → chunk-JWPE2WC7-DbJJqDli.js} +1 -1
- ksadk/server/static/assets/{chunk-LCL6LL3I-CnorGV5q.js → chunk-LCL6LL3I-CLuRCt_W.js} +1 -1
- ksadk/server/static/assets/{chunk-POPQ4Y6H-CexntQA-.js → chunk-POPQ4Y6H-D0Dz847e.js} +1 -1
- ksadk/server/static/assets/{chunk-RHFEMEQ7-CHTC7UxA.js → chunk-RHFEMEQ7-BWSRzEcd.js} +1 -1
- ksadk/server/static/assets/{chunk-SVP7TREG-BC1EWt_-.js → chunk-SVP7TREG-CPoHqkCY.js} +1 -1
- ksadk/server/static/assets/{chunk-XXDRQBXY-BTG24xN0.js → chunk-XXDRQBXY-Bx1jS-X-.js} +1 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-BVCW3ZqZ.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-BVCW3ZqZ.js +1 -0
- ksadk/server/static/assets/{cose-bilkent-JH36ORCC-CkonRdAS.js → cose-bilkent-JH36ORCC-LzyWm4m0.js} +1 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-CNXjFctL.js +1 -0
- ksadk/server/static/assets/{cynefinDiagram-5FMLGOSQ-DEOCBe15.js → cynefinDiagram-5FMLGOSQ-BlW_bHED.js} +1 -1
- ksadk/server/static/assets/{dagre-3AP2YEHR-DBThPuLa.js → dagre-3AP2YEHR-Bu_S86_i.js} +1 -1
- ksadk/server/static/assets/{dagre-ClTPrTht.js → dagre-B7nCawed.js} +1 -1
- ksadk/server/static/assets/{diagram-S7CK7UJ4-DsZHrnpJ.js → diagram-S7CK7UJ4-W_Zow2Km.js} +1 -1
- ksadk/server/static/assets/{diagram-UQ7AKVKN-BJR4nhVr.js → diagram-UQ7AKVKN-CLIKAHON.js} +1 -1
- ksadk/server/static/assets/{diagram-VSXAHHWV-xzcERX0a.js → diagram-VSXAHHWV-Dv6_QAlN.js} +1 -1
- ksadk/server/static/assets/{diagram-VX7I27RA-tn2xM1xu.js → diagram-VX7I27RA-BWAWRDtZ.js} +1 -1
- ksadk/server/static/assets/{diagram-Z3DM3KII-BZPGBkw5.js → diagram-Z3DM3KII-XA_rWMss.js} +1 -1
- ksadk/server/static/assets/dist-0X_j2Rcc.js +1 -0
- ksadk/server/static/assets/{dist-4zN1_tq5.js → dist-1nXCdsej.js} +1 -1
- ksadk/server/static/assets/{dist-M67Hwu0n.js → dist-2vL2sAdF.js} +1 -1
- ksadk/server/static/assets/{dist-BJLUwH6W.js → dist-B3bA05-e.js} +1 -1
- ksadk/server/static/assets/{dist-8VWI-2bZ.js → dist-BLpRy_Yx.js} +1 -1
- ksadk/server/static/assets/{dist-D1V3f1B4.js → dist-BO_UwatH.js} +1 -1
- ksadk/server/static/assets/{dist-Cq4OL6nO.js → dist-BdNFAney.js} +1 -1
- ksadk/server/static/assets/{dist-DfGFrb0v.js → dist-C0J5_3qM.js} +1 -1
- ksadk/server/static/assets/{dist-DyqV4fL4.js → dist-CGt_UGeO.js} +1 -1
- ksadk/server/static/assets/{dist-DjhwGUgZ.js → dist-CIRMvUM4.js} +1 -1
- ksadk/server/static/assets/{dist-B1oWRmrH.js → dist-CIpWk_5f.js} +1 -1
- ksadk/server/static/assets/{dist-CXpH_Rdd.js → dist-CPyieXEf.js} +1 -1
- ksadk/server/static/assets/{dist-Btyo4vX4.js → dist-D-92S-Fd.js} +1 -1
- ksadk/server/static/assets/{dist-u8tVH5Ak.js → dist-DNKuMzWc.js} +1 -1
- ksadk/server/static/assets/{dist-DQAB0qn_.js → dist-DWfdmz9s.js} +2 -2
- ksadk/server/static/assets/{dist-B-46q3Hk.js → dist-DppE_r-D.js} +1 -1
- ksadk/server/static/assets/{dist-C71CsujO.js → dist-DyG6Ya-z.js} +1 -1
- ksadk/server/static/assets/{dist-DJmCPRVB.js → dist-M-SrdhhZ.js} +1 -1
- ksadk/server/static/assets/{dist-Bbwqa8TG.js → dist-mqD5TZup.js} +1 -1
- ksadk/server/static/assets/{dist-BI1qQH4n.js → dist-n3n6t_FO.js} +1 -1
- ksadk/server/static/assets/{dist-DUwKa_l6.js → dist-qe8xjesy.js} +1 -1
- ksadk/server/static/assets/{dist-B0gdk4rl.js → dist-t6MzE0jU.js} +1 -1
- ksadk/server/static/assets/{ebnfDiagram-PWID7BFC-DVfMsLge.js → ebnfDiagram-PWID7BFC-BfCzF1Xi.js} +1 -1
- ksadk/server/static/assets/{erDiagram-SSCWMZ5O-CWEZSYaw.js → erDiagram-SSCWMZ5O-Dpz9_0zn.js} +1 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-B5-8RH9c.js +1 -0
- ksadk/server/static/assets/flowDiagram-A5DVABFB-BppFxEKw.js +1 -0
- ksadk/server/static/assets/{ganttDiagram-EL5Y4UJY-TWIxoyYL.js → ganttDiagram-EL5Y4UJY-DDaG1f4_.js} +1 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-B-AhYj4C.js +1 -0
- ksadk/server/static/assets/{gitGraphDiagram-WWUBYQGX-DDh2hd2S.js → gitGraphDiagram-WWUBYQGX-DcxzRwYC.js} +1 -1
- ksadk/server/static/assets/index-BMd2mucF.css +2 -0
- ksadk/server/static/assets/index-D5qyyhTH.js +244 -0
- ksadk/server/static/assets/info-A6RAGUB7-0uiKrC35.js +1 -0
- ksadk/server/static/assets/{infoDiagram-RXCK75RN-CgoyWiDR.js → infoDiagram-RXCK75RN-CYMdn6lQ.js} +1 -1
- ksadk/server/static/assets/{ishikawaDiagram-5VMMS53U-CyRIu_om.js → ishikawaDiagram-5VMMS53U-CLHFAD6c.js} +1 -1
- ksadk/server/static/assets/{journeyDiagram-EYS64GPL-DN5JXHzN.js → journeyDiagram-EYS64GPL-BHSKQGAl.js} +1 -1
- ksadk/server/static/assets/{kanban-definition-3QL26DDD-CNP3ui66.js → kanban-definition-3QL26DDD-D5W3tjTT.js} +1 -1
- ksadk/server/static/assets/{katex-DWEzQy1d.js → katex-mtjOi4KM.js} +1 -1
- ksadk/server/static/assets/{linear-C-qHp7d2.js → linear-BETqsxE_.js} +1 -1
- ksadk/server/static/assets/{mermaid-parser.core-Cl-K943T.js → mermaid-parser.core-DPWrvs90.js} +2 -2
- ksadk/server/static/assets/{mindmap-definition-FBJOCRG2-D5DB5mYm.js → mindmap-definition-FBJOCRG2-CJG2mfBP.js} +1 -1
- ksadk/server/static/assets/packet-AYTQ26CC-BVTmZ_cw.js +1 -0
- ksadk/server/static/assets/{pegDiagram-XKGWAZYB-BQVc9ia_.js → pegDiagram-XKGWAZYB-GjAPNaqn.js} +1 -1
- ksadk/server/static/assets/pie-WAS4IAKB-DyfxBU7V.js +1 -0
- ksadk/server/static/assets/{pieDiagram-E7YTZNPT-B6UCAvtY.js → pieDiagram-E7YTZNPT-ToIewrqr.js} +1 -1
- ksadk/server/static/assets/{quadrantDiagram-AXDQQJYC-mIr2d3eb.js → quadrantDiagram-AXDQQJYC-4d78KiEY.js} +1 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-FFontjL2.js +1 -0
- ksadk/server/static/assets/railroad-74A4TZTK-D0Uidzen.js +1 -0
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BOo_9T2h.js +1 -0
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-D6-BjW7Z.js +1 -0
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-CXx__yMm.js +1 -0
- ksadk/server/static/assets/{railroadDiagram-O6MQD6OU-Dt3FFDmK.js → railroadDiagram-O6MQD6OU-DKzx4xfv.js} +1 -1
- ksadk/server/static/assets/{requirementDiagram-EFPCY7ZU-Cz_vQtgF.js → requirementDiagram-EFPCY7ZU-CJYljxQS.js} +1 -1
- ksadk/server/static/assets/{sankeyDiagram-P5KCCOFB-wlO1TsH5.js → sankeyDiagram-P5KCCOFB-DLU2fV1w.js} +1 -1
- ksadk/server/static/assets/{sequenceDiagram-WJ2MYXX4-CHRbElYq.js → sequenceDiagram-WJ2MYXX4-CVqysrA9.js} +1 -1
- ksadk/server/static/assets/{sizeCapture-X5ZJPWSS-DXX54iyO.js → sizeCapture-X5ZJPWSS-BUxfmTHc.js} +1 -1
- ksadk/server/static/assets/{stateDiagram-HBIQ2CUA-Dp_lw9II.js → stateDiagram-HBIQ2CUA-CNFgYI9E.js} +1 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BXAFScz8.js +1 -0
- ksadk/server/static/assets/{swimlanes-XN3QIQJK-D8O5UlLG.js → swimlanes-XN3QIQJK-B6qCMe8N.js} +1 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-uIQ2lJKH.js +8 -0
- ksadk/server/static/assets/{timeline-definition-24CTP7MA-8mfKcxvG.js → timeline-definition-24CTP7MA-CMD3x_U_.js} +1 -1
- ksadk/server/static/assets/treeView-Q6P3EWNA-CK5GgucZ.js +1 -0
- ksadk/server/static/assets/treemap-WGGIJYW6-Bq1u1SpG.js +1 -0
- ksadk/server/static/assets/{vennDiagram-4TSXK5OY-EnNl0DE7.js → vennDiagram-4TSXK5OY-BqtUqvXM.js} +1 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-QAt06uEz.js +1 -0
- ksadk/server/static/assets/{wardleyDiagram-VM6X3IG4-DBu5fbYr.js → wardleyDiagram-VM6X3IG4-B5KfDjI-.js} +1 -1
- ksadk/server/static/assets/{xychartDiagram-S5SC5T6Z-BSVXs4IY.js → xychartDiagram-S5SC5T6Z-BaUlSZrn.js} +1 -1
- ksadk/server/static/index.html +2 -2
- ksadk/server/terminal_sessions.py +34 -2
- ksadk/session_context.py +66 -0
- ksadk/sessions/__init__.py +11 -21
- ksadk/sessions/_local_service_sync.py +263 -1
- ksadk/sessions/base.py +176 -0
- ksadk/sessions/errors.py +4 -0
- ksadk/sessions/in_memory.py +309 -19
- ksadk/sessions/invocation_identity.py +235 -0
- ksadk/sessions/local_service.py +83 -1
- ksadk/sessions/persistence.py +275 -0
- ksadk/sessions/postgres_service.py +358 -0
- ksadk/sessions/resilience.py +8 -0
- ksadk/sessions/resilient.py +362 -4
- ksadk/sessions/topology.py +135 -0
- ksadk/skills/__init__.py +26 -0
- ksadk/skills/events.py +464 -0
- ksadk/skills/manifest_cache.py +263 -0
- ksadk/skills/mcp_server/__init__.py +0 -0
- ksadk/skills/mcp_server/_registry.py +33 -0
- ksadk/skills/mcp_server/_routing.py +26 -0
- ksadk/skills/mcp_server/_workspace_files.py +160 -0
- ksadk/skills/mcp_server/register.py +415 -0
- ksadk/skills/mcp_server/server.py +218 -0
- ksadk/skills/models.py +37 -4
- ksadk/skills/observability.py +132 -0
- ksadk/skills/package_store.py +261 -40
- ksadk/skills/runtime/agent.py +67 -9
- ksadk/skills/runtime/artifact_delivery.py +139 -0
- ksadk/skills/runtime/artifacts.py +87 -0
- ksadk/skills/runtime/backends/e2b.py +460 -27
- ksadk/skills/runtime/backends/local.py +629 -62
- ksadk/skills/runtime/base.py +81 -7
- ksadk/skills/runtime/executor.py +268 -1
- ksadk/skills/runtime/loader.py +118 -5
- ksadk/skills/runtime/pinned.py +114 -0
- ksadk/skills/runtime/request.py +49 -0
- ksadk/skills/service_client.py +167 -28
- ksadk/skills/tool_defs.py +108 -3
- ksadk/studio/api.py +810 -93
- ksadk/studio/api_catalog_routes.py +18 -0
- ksadk/studio/api_contracts.py +8 -2
- ksadk/studio/api_plugin_routes.py +562 -104
- ksadk/studio/api_resource_connections.py +221 -0
- ksadk/studio/authoring.py +12 -6
- ksadk/studio/authoring_coordinator.py +23 -16
- ksadk/studio/builder.py +88 -0
- ksadk/studio/capabilities.py +23 -6
- ksadk/studio/channel_connections.py +333 -0
- ksadk/studio/cloud.py +370 -112
- ksadk/studio/cloud_shared_web.py +638 -0
- ksadk/studio/codex_agent_service.py +130 -28
- ksadk/studio/codex_builder.py +242 -3
- ksadk/studio/codex_credentials.py +90 -0
- ksadk/studio/codex_manifest.py +31 -4
- ksadk/studio/codex_plugin_store.py +746 -0
- ksadk/studio/codex_provider_build.py +231 -0
- ksadk/studio/codex_run.py +190 -26
- ksadk/studio/compatibility_report.py +12 -1
- ksadk/studio/compiler.py +88 -14
- ksadk/studio/configuration.py +182 -0
- ksadk/studio/contracts.py +165 -11
- ksadk/studio/dsh_application.py +247 -0
- ksadk/studio/dsh_capability_service.py +1374 -0
- ksadk/studio/dsh_lifecycle.py +58 -0
- ksadk/studio/dsh_models.py +59 -0
- ksadk/studio/dsh_provider_registration.py +367 -21
- ksadk/studio/entry.py +53 -0
- ksadk/studio/event_store.py +36 -5
- ksadk/studio/execution_host.py +525 -0
- ksadk/studio/framework_run.py +32 -10
- ksadk/studio/hosted_kernel.py +89 -14
- ksadk/studio/kernel_registry.py +418 -0
- ksadk/studio/kernel_sqlite_migration.py +181 -0
- ksadk/studio/mcp_runtime.py +11 -3
- ksadk/studio/model_client.py +1180 -66
- ksadk/studio/model_profile_service.py +26 -11
- ksadk/studio/native_documents.py +172 -0
- ksadk/studio/plugin_composition.py +202 -24
- ksadk/studio/plugin_kernel_adapter.py +21 -106
- ksadk/studio/plugin_lifecycle.py +80 -0
- ksadk/studio/plugin_runtime.py +448 -56
- ksadk/studio/provider_recovery.py +59 -0
- ksadk/studio/recovery_page.py +70 -0
- ksadk/studio/resource_authority.py +664 -0
- ksadk/studio/resource_binding_validation.py +77 -0
- ksadk/studio/resource_build_admission.py +196 -0
- ksadk/studio/resource_build_materializer.py +149 -0
- ksadk/studio/resource_catalog.py +149 -2
- ksadk/studio/resource_connections.py +220 -0
- ksadk/studio/run_activity.py +895 -0
- ksadk/studio/run_documents.py +127 -0
- ksadk/studio/run_service.py +789 -83
- ksadk/studio/runtime_catalog.py +53 -10
- ksadk/studio/runtime_source.py +16 -8
- ksadk/studio/scheduler_assistant.py +317 -0
- ksadk/studio/scheduler_runtime.py +32 -280
- ksadk/studio/scheduler_service.py +3 -0
- ksadk/studio/service.py +861 -120
- ksadk/studio/shared_web.py +579 -82
- ksadk/studio/static/assets/ChannelsPage-D_PGmKVq.js +8 -0
- ksadk/studio/static/assets/CodeBlock-DMIf4h33-UIqo-BPW.js +44 -0
- ksadk/studio/static/assets/ExecutionTree-v3HexvPo-Bk8wzGSy.js +1 -0
- ksadk/studio/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- ksadk/studio/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- ksadk/studio/static/assets/MathMessageMarkdown-BesSeCYl-BEOyPC3w.css +1 -0
- ksadk/studio/static/assets/MathMessageMarkdown-BesSeCYl-OhNwH4K9.js +8 -0
- ksadk/studio/static/assets/MermaidBlock-H_0qzQDf-BdXtxug_.js +11 -0
- ksadk/studio/static/assets/MessageMarkdown-CwMTvgFj-g0I-I4dD.js +59 -0
- ksadk/studio/static/assets/PrismRenderer-5pK6tUdb.js +3 -0
- ksadk/studio/static/assets/TeamsPage-DqX4HWKQ.js +3 -0
- ksadk/studio/static/assets/abnfDiagram-VCTEODGH-Bnb1O3tA.js +1 -0
- ksadk/studio/static/assets/arc-Pry-7G1_.js +1 -0
- ksadk/studio/static/assets/architecture-7GRP2DOG-BMOPAkUC.js +1 -0
- ksadk/studio/static/assets/architectureDiagram-5GKGNRK7-5Zn1gqJv.js +36 -0
- ksadk/studio/static/assets/array-BifhSqXX.js +1 -0
- ksadk/studio/static/assets/blockDiagram-I7D4REHJ-CLB4L11u.js +129 -0
- ksadk/studio/static/assets/c4Diagram-7LVT6UL2-BOma_Z_F.js +38 -0
- ksadk/studio/static/assets/channel-r8itPEik.js +1 -0
- ksadk/studio/static/assets/chunk-2E4U76K2-BFf_huql.js +2 -0
- ksadk/studio/static/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- ksadk/studio/static/assets/chunk-2ZTRR5NV-C2qZJila.js +2 -0
- ksadk/studio/static/assets/chunk-3Z5EZCMW-DMniOlPd.js +1 -0
- ksadk/studio/static/assets/chunk-4HAMMTFA-DVtDP4rm.js +62 -0
- ksadk/studio/static/assets/chunk-5V3GS4D5-i-ZDOEnP.js +1 -0
- ksadk/studio/static/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- ksadk/studio/static/assets/chunk-6AZGARVD-BB6FqMl-.js +1 -0
- ksadk/studio/static/assets/chunk-6EIED4P4-DdUJkP0f.js +1 -0
- ksadk/studio/static/assets/chunk-6K3QC6MW-CqVsVn-y.js +1 -0
- ksadk/studio/static/assets/chunk-6TQVIW2G-DKlLbNIP.js +1 -0
- ksadk/studio/static/assets/chunk-747NJXEK-BFkZPlab.js +2 -0
- ksadk/studio/static/assets/chunk-75Z2AOVW-BZNhM4vB.js +2 -0
- ksadk/studio/static/assets/chunk-CLGD4ZFX-D-GTtyKs.js +1 -0
- ksadk/studio/static/assets/chunk-DU6HZSFF-CpEZCUgg.js +128 -0
- ksadk/studio/static/assets/chunk-F27PBJKO-D7pvKf0C.js +1 -0
- ksadk/studio/static/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
- ksadk/studio/static/assets/chunk-GMAD6QVW-DE_8H717.js +72 -0
- ksadk/studio/static/assets/chunk-GVQU2GXP-BfEB0lNv.js +1 -0
- ksadk/studio/static/assets/chunk-I5DQTOEV-Hm2LfiYI.js +1 -0
- ksadk/studio/static/assets/chunk-ICYGCRZG-749o-pGJ.js +1 -0
- ksadk/studio/static/assets/chunk-IH6LHLGP-CC6I9F3i.js +1 -0
- ksadk/studio/static/assets/chunk-IMKFNOWR-D38axYOR.js +231 -0
- ksadk/studio/static/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- ksadk/studio/static/assets/chunk-KI3K4JFJ-Rma-0k_M.js +1 -0
- ksadk/studio/static/assets/chunk-L3NEJ4N5-Dq5xn7aL.js +1 -0
- ksadk/studio/static/assets/chunk-LNGE3PJU-DWpGwHrW.js +34 -0
- ksadk/studio/static/assets/chunk-OSK3NFVY-DiCQjx9b.js +10 -0
- ksadk/studio/static/assets/chunk-OUJLGHUK-D0j2JRSg.js +2 -0
- ksadk/studio/static/assets/chunk-P2QGCYS3-VdhKmfYq.js +1 -0
- ksadk/studio/static/assets/chunk-POPQ4Y6H-C1_rzO5M.js +1 -0
- ksadk/studio/static/assets/chunk-PWAF6VOD-B45HvflI.js +1 -0
- ksadk/studio/static/assets/chunk-SHT3W25Y-DsCFnRVE.js +168 -0
- ksadk/studio/static/assets/chunk-SVP7TREG-DljApgRX.js +88 -0
- ksadk/studio/static/assets/chunk-TICWLB2K-DWqRtyqa.js +206 -0
- ksadk/studio/static/assets/chunk-TLUHSLCS-DUeGgnD5.js +2 -0
- ksadk/studio/static/assets/chunk-UY3FDG6J-CnmaAkG5.js +1 -0
- ksadk/studio/static/assets/chunk-XHIXRSVI-BFQ6B8BE.js +1 -0
- ksadk/studio/static/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
- ksadk/studio/static/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- ksadk/studio/static/assets/classDiagram-ZZMXUADV-DjeMNJmu.js +1 -0
- ksadk/studio/static/assets/classDiagram-v2-VYDZK3BY-DjeMNJmu.js +1 -0
- ksadk/studio/static/assets/clsx-DB0hHKMi.js +1 -0
- ksadk/studio/static/assets/cose-bilkent-JH36ORCC-om8AY0Mc.js +1 -0
- ksadk/studio/static/assets/createLucideIcon-DR0LGTP5.js +1 -0
- ksadk/studio/static/assets/cynefin-OW5HDTMX-7tP7QfM3.js +1 -0
- ksadk/studio/static/assets/cynefinDiagram-5FMLGOSQ-6BrmK52S.js +62 -0
- ksadk/studio/static/assets/cytoscape.esm-CGd-uY3x.js +321 -0
- ksadk/studio/static/assets/dagre-GXQ25YYZ-buZBRlwz.js +4 -0
- ksadk/studio/static/assets/dagre-PrKaheQc.js +1 -0
- ksadk/studio/static/assets/defaultLocale-BFoDCU3G.js +1 -0
- ksadk/studio/static/assets/diagram-S7CK7UJ4-C6aH78c4.js +30 -0
- ksadk/studio/static/assets/diagram-UQ7AKVKN-DY_tQ6C_.js +41 -0
- ksadk/studio/static/assets/diagram-VSXAHHWV-DX9p5cQT.js +3 -0
- ksadk/studio/static/assets/diagram-VX7I27RA-DB2WSH8X.js +24 -0
- ksadk/studio/static/assets/diagram-Z3DM3KII-Ce1BJwHE.js +24 -0
- ksadk/studio/static/assets/dist-v5Q1xZ2K.js +1 -0
- ksadk/studio/static/assets/ebnfDiagram-PWID7BFC-Daukxwqf.js +1 -0
- ksadk/studio/static/assets/erDiagram-RLTQ6QDP-CGthTMmJ.js +99 -0
- ksadk/studio/static/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +1 -0
- ksadk/studio/static/assets/flowDiagram-HODETNUW-CZ1tEenp.js +1 -0
- ksadk/studio/static/assets/ganttDiagram-EL5Y4UJY-BfoAZW9X.js +292 -0
- ksadk/studio/static/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +1 -0
- ksadk/studio/static/assets/gitGraphDiagram-WWUBYQGX-S985OIJF.js +106 -0
- ksadk/studio/static/assets/graphlib-DS17s2tU.js +1 -0
- ksadk/studio/static/assets/iconfont-4HN3C9Pg.woff2 +0 -0
- ksadk/studio/static/assets/index-CfEnms6Y.css +2 -0
- ksadk/studio/static/assets/index-Dp61rOWZ.js +0 -0
- ksadk/studio/static/assets/index.dom-BQenBtFm.js +1 -0
- ksadk/studio/static/assets/info-A6RAGUB7-BlU-8_xu.js +1 -0
- ksadk/studio/static/assets/infoDiagram-27XIBGKW-CO3W8tFn.js +2 -0
- ksadk/studio/static/assets/init-C-OQMol4.js +1 -0
- ksadk/studio/static/assets/ishikawaDiagram-5VMMS53U-BUGEl8cO.js +70 -0
- ksadk/studio/static/assets/journeyDiagram-3NMN7TZE-Ch2ZYxvr.js +139 -0
- ksadk/studio/static/assets/kanban-definition-UXKFOSKX-Da-Fp4vC.js +89 -0
- ksadk/studio/static/assets/katex-DhON-x74.js +257 -0
- ksadk/studio/static/assets/kingsoft-cloud-BOcLiQ3e.ico +0 -0
- ksadk/studio/static/assets/line-BDaeq300.js +1 -0
- ksadk/studio/static/assets/linear-DmucvK78.js +1 -0
- ksadk/studio/static/assets/mermaid-parser.core-Cj5mYdBi.js +4 -0
- ksadk/studio/static/assets/mindmap-definition-YA3MSWOX-CvlsVQ38.js +96 -0
- ksadk/studio/static/assets/ordinal-BDEzSJ7C.js +1 -0
- ksadk/studio/static/assets/packet-AYTQ26CC-BSJEH9Lb.js +1 -0
- ksadk/studio/static/assets/path-fybaL0A-.js +1 -0
- ksadk/studio/static/assets/pegDiagram-XKGWAZYB-BuHuNgT5.js +1 -0
- ksadk/studio/static/assets/pie-WAS4IAKB-qxv01Y8W.js +1 -0
- ksadk/studio/static/assets/pieDiagram-E7YTZNPT-DlrWiSOv.js +39 -0
- ksadk/studio/static/assets/preload-helper-CO68xz6u.js +1 -0
- ksadk/studio/static/assets/presentation-yYw7xK60-BmcZriri.js +1 -0
- ksadk/studio/static/assets/quadrantDiagram-AXDQQJYC-BA3hpUZM.js +7 -0
- ksadk/studio/static/assets/radar-RG4KPBEZ-B6h6pWOs.js +1 -0
- ksadk/studio/static/assets/railroad-74A4TZTK-CGtTWdGc.js +1 -0
- ksadk/studio/static/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +1 -0
- ksadk/studio/static/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +1 -0
- ksadk/studio/static/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +1 -0
- ksadk/studio/static/assets/railroadDiagram-O6MQD6OU-BxpAazym.js +1 -0
- ksadk/studio/static/assets/requirementDiagram-BXWQKSXE-E-Ge0FcV.js +84 -0
- ksadk/studio/static/assets/rolldown-runtime-Dy4uBu1J-DK3Fl9T5.js +1 -0
- ksadk/studio/static/assets/rough.esm-Dy-Kn_BL.js +1 -0
- ksadk/studio/static/assets/sankeyDiagram-P5KCCOFB-CA6YKhQ3.js +40 -0
- ksadk/studio/static/assets/sequenceDiagram-WJ2MYXX4-CcElXGg4.js +162 -0
- ksadk/studio/static/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
- ksadk/studio/static/assets/src-B6xuSHsQ.js +1 -0
- ksadk/studio/static/assets/stateDiagram-D77RDMKH-DdXZOFqY.js +1 -0
- ksadk/studio/static/assets/stateDiagram-v2-MP3YSRHH-CJbOM-QK.js +1 -0
- ksadk/studio/static/assets/swimlanes-42K2YHIH-NtgEEHLY.js +1 -0
- ksadk/studio/static/assets/swimlanesDiagram-VR7AAH4N-D-AVlW8B.js +8 -0
- ksadk/studio/static/assets/timeline-definition-24CTP7MA-CIuYhNy3.js +120 -0
- ksadk/studio/static/assets/treeView-Q6P3EWNA-BTTYcvrF.js +1 -0
- ksadk/studio/static/assets/treemap-WGGIJYW6-Cg7tyfH8.js +1 -0
- ksadk/studio/static/assets/vennDiagram-4TSXK5OY-7HbApbrv.js +34 -0
- ksadk/studio/static/assets/wardley-WFR3VGLG-C6N1rULY.js +1 -0
- ksadk/studio/static/assets/wardleyDiagram-VM6X3IG4-CMJiaedy.js +78 -0
- ksadk/studio/static/assets/xychartDiagram-S5SC5T6Z-BdgtMvW2.js +7 -0
- ksadk/studio/static/index.html +8 -2
- ksadk/studio/teams_catalog.py +133 -0
- ksadk/studio/teams_installation.py +214 -0
- ksadk/studio/teams_node.py +545 -0
- ksadk/studio/teams_node_runner.py +69 -0
- ksadk/studio/teams_remote.py +274 -0
- ksadk/studio/templates.py +40 -19
- ksadk/studio/validator.py +13 -0
- ksadk/studio/workspace.py +19 -4
- ksadk/studio/workspace_plugins.py +136 -0
- ksadk/studio/workspace_registry.py +286 -0
- ksadk/toolsets/__init__.py +11 -0
- ksadk/toolsets/skills.py +446 -378
- ksadk/toolsets/workspace.py +3 -3
- ksadk/toolsets/workspace_identity.py +15 -0
- ksadk/version.py +1 -1
- ksadk_runtime_common/memory_backend/providers/lancedb.py +56 -2
- ksadk_runtime_common/schemas/memory_backend_manifest.schema.json +148 -148
- ksadk_runtime_common/workspace_files/router.py +26 -13
- agentengine_sdk_python-0.8.3.dist-info/RECORD +0 -833
- ksadk/server/static/assets/MathMessageMarkdown-D9uB55Oh.js +0 -8
- ksadk/server/static/assets/architecture-7GRP2DOG-Dk9nRQ6-.js +0 -1
- ksadk/server/static/assets/channel-s354Yo6o.js +0 -1
- ksadk/server/static/assets/chunk-2Q5K7J3B-CDpPpKR5.js +0 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-Dd0nucl9.js +0 -1
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-Dd0nucl9.js +0 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-BBlT4uMf.js +0 -1
- ksadk/server/static/assets/dist-DdRBIceA.js +0 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-Dr5okd8V.js +0 -1
- ksadk/server/static/assets/flowDiagram-A5DVABFB-VEO-cVcO.js +0 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-CKiKY9Cf.js +0 -1
- ksadk/server/static/assets/index-B2k_urY8.js +0 -241
- ksadk/server/static/assets/index-ILPt6IWF.css +0 -2
- ksadk/server/static/assets/info-A6RAGUB7-ubA4Nm_p.js +0 -1
- ksadk/server/static/assets/packet-AYTQ26CC-C7R3NUlK.js +0 -1
- ksadk/server/static/assets/pie-WAS4IAKB-BIT6qjr3.js +0 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-l5noef9X.js +0 -1
- ksadk/server/static/assets/railroad-74A4TZTK-Baea6ZvM.js +0 -1
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-OKn8zZnU.js +0 -1
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-DdKAKC4l.js +0 -1
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-Bds8udlG.js +0 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-5b-8o2iS.js +0 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-uf6WPRA4.js +0 -8
- ksadk/server/static/assets/treeView-Q6P3EWNA-CK5CSrSO.js +0 -1
- ksadk/server/static/assets/treemap-WGGIJYW6-Ch2BKgAM.js +0 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-YW3Q0ml_.js +0 -1
- ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js +0 -3
- ksadk/studio/static/assets/index-DXs1Eq4M.css +0 -1
- ksadk/studio/static/assets/index-DeDqwTsD.js +0 -283
- {agentengine_sdk_python-0.8.3.dist-info → agentengine_sdk_python-0.8.5.dist-info}/WHEEL +0 -0
- {agentengine_sdk_python-0.8.3.dist-info → agentengine_sdk_python-0.8.5.dist-info}/entry_points.txt +0 -0
- {agentengine_sdk_python-0.8.3.dist-info → agentengine_sdk_python-0.8.5.dist-info}/licenses/LICENSE +0 -0
- {agentengine_sdk_python-0.8.3.dist-info → agentengine_sdk_python-0.8.5.dist-info}/top_level.txt +0 -0
|
@@ -8,8 +8,9 @@ FASTAPI_REQUIREMENT = "fastapi>=0.136.0,<0.137.0"
|
|
|
8
8
|
STARLETTE_REQUIREMENT = "starlette>=1.0,<1.4"
|
|
9
9
|
|
|
10
10
|
ADK_REQUIREMENTS = (
|
|
11
|
-
#
|
|
11
|
+
# 与 ksadk 自身 adk extra 对齐,支持 1.x 与 2.x。
|
|
12
12
|
"google-adk>=1.34.0,<3.0.0",
|
|
13
|
+
"greenlet>=1.0.0",
|
|
13
14
|
"litellm>=1.0.0",
|
|
14
15
|
)
|
|
15
16
|
|
|
@@ -22,8 +23,22 @@ LANGCHAIN_ECOSYSTEM_REQUIREMENTS = (
|
|
|
22
23
|
|
|
23
24
|
DEEPAGENTS_REQUIREMENTS = ("deepagents>=0.6.2,<1.0.0",)
|
|
24
25
|
|
|
25
|
-
# codex runtime:openai-codex SDK(自带 codex CLI 二进制,见 PyPI cli-bin wheel)
|
|
26
|
-
|
|
26
|
+
# codex runtime:openai-codex SDK(自带 codex CLI 二进制,见 PyPI cli-bin wheel)。
|
|
27
|
+
# 版本必须与 pyproject.toml 的 ksadk[codex] extra 保持一致:适配层
|
|
28
|
+
# (ksadk/codex/client.py)依赖 app-server 私有协议,SDK/CLI 是精确 co-pin。
|
|
29
|
+
CODEX_REQUIREMENTS = ("openai-codex==0.154.0",)
|
|
30
|
+
|
|
31
|
+
# KsADK Harness is a managed LangGraph runtime. Keep its checkpoint adapter
|
|
32
|
+
# explicit: LangGraph split the SQLite saver into a separately distributed
|
|
33
|
+
# package, so installing only ``langgraph`` leaves
|
|
34
|
+
# ``langgraph.checkpoint.sqlite`` unavailable in a freshly built agent.
|
|
35
|
+
HARNESS_REQUIREMENTS = (
|
|
36
|
+
"langgraph>=1.2.0,<1.3.0",
|
|
37
|
+
"langgraph-checkpoint-sqlite>=2.0.0",
|
|
38
|
+
"langchain>=1.3.14,<2.0.0",
|
|
39
|
+
"langchain-core>=1.5.0,<2.0.0",
|
|
40
|
+
"langchain-openai>=1.4.0,<2.0.0",
|
|
41
|
+
)
|
|
27
42
|
|
|
28
43
|
|
|
29
44
|
def code_requirements_for_framework(framework: str) -> list[str]:
|
|
@@ -45,6 +60,8 @@ def requirements_for_framework(framework: str) -> list[str]:
|
|
|
45
60
|
return list(ADK_REQUIREMENTS)
|
|
46
61
|
if normalized == "codex":
|
|
47
62
|
return list(CODEX_REQUIREMENTS)
|
|
63
|
+
if normalized == "harness":
|
|
64
|
+
return list(HARNESS_REQUIREMENTS)
|
|
48
65
|
if normalized in {"langchain", "langgraph", "deepagents"}:
|
|
49
66
|
requirements = list(LANGCHAIN_ECOSYSTEM_REQUIREMENTS)
|
|
50
67
|
if normalized == "deepagents":
|
|
@@ -60,6 +77,8 @@ def minimal_requirements_for_framework(framework: str) -> list[str]:
|
|
|
60
77
|
return list(ADK_REQUIREMENTS)
|
|
61
78
|
if normalized == "codex":
|
|
62
79
|
return list(CODEX_REQUIREMENTS)
|
|
80
|
+
if normalized == "harness":
|
|
81
|
+
return list(HARNESS_REQUIREMENTS)
|
|
63
82
|
if normalized in {"langchain", "langgraph", "deepagents"}:
|
|
64
83
|
requirements = [
|
|
65
84
|
"langchain>=1.3.14,<2.0.0",
|
ksadk/builders/ks3_uploader.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
KS3 上传模块 - 金山云对象存储上传
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import os
|
|
6
7
|
import socket
|
|
7
8
|
import time
|
|
@@ -27,7 +28,15 @@ class KS3Uploader:
|
|
|
27
28
|
UPLOAD_TIMEOUT_PER_MB_SECONDS = 4.0
|
|
28
29
|
UPLOAD_TIMEOUT_MAX_SECONDS = 3600
|
|
29
30
|
|
|
30
|
-
def __init__(
|
|
31
|
+
def __init__(
|
|
32
|
+
self,
|
|
33
|
+
region: str = "cn-beijing-6",
|
|
34
|
+
bucket: Optional[str] = None,
|
|
35
|
+
*,
|
|
36
|
+
access_key: Optional[str] = None,
|
|
37
|
+
secret_key: Optional[str] = None,
|
|
38
|
+
public_read: bool = True,
|
|
39
|
+
):
|
|
31
40
|
"""初始化 KS3 上传器
|
|
32
41
|
|
|
33
42
|
Args:
|
|
@@ -37,7 +46,15 @@ class KS3Uploader:
|
|
|
37
46
|
- 如果未指定,优先从环境变量 KS3_BUCKET 读取
|
|
38
47
|
- 如果环境变量也未设置,默认使用 agentengine-{region}
|
|
39
48
|
"""
|
|
49
|
+
# ks3sdk logs the signed Authorization header at INFO. Studio uploads
|
|
50
|
+
# run inside a long-lived server process, so keep that transport logger
|
|
51
|
+
# above INFO before any request can be emitted.
|
|
52
|
+
logging.getLogger("ks3.http").setLevel(logging.WARNING)
|
|
53
|
+
|
|
40
54
|
self.region = region
|
|
55
|
+
self.access_key = access_key
|
|
56
|
+
self.secret_key = secret_key
|
|
57
|
+
self.public_read = public_read
|
|
41
58
|
|
|
42
59
|
# 确定 bucket 名称 (优先级: 参数 > 环境变量 > 默认值)
|
|
43
60
|
if bucket:
|
|
@@ -260,8 +277,12 @@ class KS3Uploader:
|
|
|
260
277
|
def _upload_via_host(self, file_path: Path, object_key: str, host: str) -> bool:
|
|
261
278
|
from ks3.connection import Connection # type: ignore[import-untyped]
|
|
262
279
|
|
|
263
|
-
ak = os.environ.get("KSYUN_ACCESS_KEY") or os.environ.get(
|
|
264
|
-
|
|
280
|
+
ak = self.access_key or os.environ.get("KSYUN_ACCESS_KEY") or os.environ.get(
|
|
281
|
+
"KS3_ACCESS_KEY"
|
|
282
|
+
)
|
|
283
|
+
sk = self.secret_key or os.environ.get("KSYUN_SECRET_KEY") or os.environ.get(
|
|
284
|
+
"KS3_SECRET_KEY"
|
|
285
|
+
)
|
|
265
286
|
|
|
266
287
|
conn = Connection(
|
|
267
288
|
ak,
|
|
@@ -291,10 +312,14 @@ class KS3Uploader:
|
|
|
291
312
|
resumable=True,
|
|
292
313
|
resumable_filename=str(resume_path),
|
|
293
314
|
)
|
|
294
|
-
|
|
315
|
+
headers = {"x-kss-acl": "public-read"} if self.public_read else {}
|
|
316
|
+
result = upload_task.upload(headers=headers)
|
|
295
317
|
else:
|
|
296
318
|
click.echo(f" 普通上传: {file_path.stat().st_size / (1024 * 1024):.2f} MB")
|
|
297
|
-
|
|
319
|
+
if self.public_read:
|
|
320
|
+
result = key.set_contents_from_filename(str(file_path), policy="public-read")
|
|
321
|
+
else:
|
|
322
|
+
result = key.set_contents_from_filename(str(file_path))
|
|
298
323
|
|
|
299
324
|
status = getattr(result, "status", None)
|
|
300
325
|
if status is None:
|
|
@@ -313,8 +338,12 @@ class KS3Uploader:
|
|
|
313
338
|
成功返回 ks3:// URI, 失败返回 None
|
|
314
339
|
"""
|
|
315
340
|
# 检查环境变量 (优先使用 KSYUN_* 金山云 IAM 凭证)
|
|
316
|
-
ak = os.environ.get("KSYUN_ACCESS_KEY") or os.environ.get(
|
|
317
|
-
|
|
341
|
+
ak = self.access_key or os.environ.get("KSYUN_ACCESS_KEY") or os.environ.get(
|
|
342
|
+
"KS3_ACCESS_KEY"
|
|
343
|
+
)
|
|
344
|
+
sk = self.secret_key or os.environ.get("KSYUN_SECRET_KEY") or os.environ.get(
|
|
345
|
+
"KS3_SECRET_KEY"
|
|
346
|
+
)
|
|
318
347
|
|
|
319
348
|
if not ak or not sk:
|
|
320
349
|
click.secho("❌ 请在 .env 文件中设置金山云 IAM 凭证:", fg="red")
|
ksadk/cli/__init__.py
CHANGED
|
@@ -339,16 +339,44 @@ def _register_optional_command(cli: click.Group, module_path: str, *cmd_names: s
|
|
|
339
339
|
|
|
340
340
|
|
|
341
341
|
def _register_commands():
|
|
342
|
+
# Runtime fast path: when the hosted entrypoint runs ``ksadk web`` the
|
|
343
|
+
# process only needs the web command. Importing the other commands here
|
|
344
|
+
# pulls in deploy/create/run deps (ks3, questionary, ...) that the hosted
|
|
345
|
+
# Python runtime image does not ship, so a full register crashes the
|
|
346
|
+
# runtime before the server starts. Only import what argv actually needs;
|
|
347
|
+
# ``--help`` and other exploratory invocations still register everything.
|
|
348
|
+
import sys as _sys
|
|
349
|
+
|
|
350
|
+
_argv = [a for a in _sys.argv[1:] if not a.startswith("-")]
|
|
351
|
+
_runtime_only = bool(_argv) and _argv[0] == "web"
|
|
352
|
+
|
|
353
|
+
from ksadk.cli.cmd_web import web
|
|
354
|
+
|
|
355
|
+
_add_command_once(cli, web)
|
|
356
|
+
|
|
357
|
+
# The desktop shell invokes exactly ``ksadk studio``. Avoid importing the
|
|
358
|
+
# full command registry (A2A, deploy, eval, etc.) on this hot path: those
|
|
359
|
+
# optional SDKs are unrelated to Studio and their import warnings used to
|
|
360
|
+
# obscure the real startup error. This also shortens the time to the first
|
|
361
|
+
# local health check in Electron.
|
|
362
|
+
if bool(_argv) and _argv[0] == "studio":
|
|
363
|
+
from ksadk.cli.cmd_studio import studio
|
|
364
|
+
|
|
365
|
+
_add_command_once(cli, studio)
|
|
366
|
+
return
|
|
367
|
+
|
|
368
|
+
if _runtime_only:
|
|
369
|
+
# Skip create/deploy/run/managed_runtime imports on the runtime path.
|
|
370
|
+
return
|
|
371
|
+
|
|
342
372
|
from ksadk.cli.cmd_create import create
|
|
343
373
|
from ksadk.cli.cmd_deploy import deploy
|
|
344
374
|
from ksadk.cli.cmd_managed_runtime import managed_runtime
|
|
345
375
|
from ksadk.cli.cmd_run import run
|
|
346
|
-
from ksadk.cli.cmd_web import web
|
|
347
376
|
|
|
348
377
|
# 注册现有命令
|
|
349
378
|
_add_command_once(cli, run)
|
|
350
379
|
_add_command_once(cli, deploy)
|
|
351
|
-
_add_command_once(cli, web)
|
|
352
380
|
_add_command_once(cli, managed_runtime)
|
|
353
381
|
|
|
354
382
|
# init 作为主命令 (PRD 规范)
|
|
@@ -391,7 +419,7 @@ def _register_commands():
|
|
|
391
419
|
_register_optional_command(cli, "ksadk.cli.cmd_hermes", "hermes")
|
|
392
420
|
|
|
393
421
|
|
|
394
|
-
def
|
|
422
|
+
def _main():
|
|
395
423
|
# 全局加载 .env 文件
|
|
396
424
|
try:
|
|
397
425
|
from dotenv import find_dotenv, load_dotenv
|
|
@@ -443,6 +471,31 @@ def main():
|
|
|
443
471
|
except ImportError:
|
|
444
472
|
pass
|
|
445
473
|
|
|
474
|
+
# Studio and ordinary CLI commands consume the same saved workspace values.
|
|
475
|
+
from pathlib import Path
|
|
476
|
+
|
|
477
|
+
from ksadk.studio.configuration import WorkspaceConfiguration
|
|
478
|
+
from ksadk.studio.workspace import Workspace
|
|
479
|
+
|
|
480
|
+
try:
|
|
481
|
+
root = Path.cwd()
|
|
482
|
+
if any(
|
|
483
|
+
(root / ".agentkit" / name).is_file()
|
|
484
|
+
for name in ("config.yaml", "settings.yaml", "secrets.env")
|
|
485
|
+
):
|
|
486
|
+
configuration = WorkspaceConfiguration(Workspace(root))
|
|
487
|
+
effective = configuration.environment()
|
|
488
|
+
os.environ.update(effective)
|
|
489
|
+
if (
|
|
490
|
+
"codexProxy" in configuration.settings()
|
|
491
|
+
and "KSADK_CODEX_USE_PROXY" not in effective
|
|
492
|
+
):
|
|
493
|
+
os.environ.pop("KSADK_CODEX_USE_PROXY", None)
|
|
494
|
+
except Exception as error:
|
|
495
|
+
cli_error = cli_error_from_exception(error, show_help=False)
|
|
496
|
+
emit_cli_error(cli_error)
|
|
497
|
+
raise SystemExit(cli_error.exit_code) from None
|
|
498
|
+
|
|
446
499
|
# 全局配置回退: .env 未设置的变量从 ~/.agentengine/settings.json 补充
|
|
447
500
|
try:
|
|
448
501
|
from ksadk.configs.global_config import get_env_from_global_config
|
|
@@ -476,5 +529,17 @@ def main():
|
|
|
476
529
|
raise SystemExit(cli_error.exit_code) from None
|
|
477
530
|
|
|
478
531
|
|
|
532
|
+
def main():
|
|
533
|
+
"""Run the CLI without exposing a traceback for an operator interrupt."""
|
|
534
|
+
|
|
535
|
+
try:
|
|
536
|
+
return _main()
|
|
537
|
+
except KeyboardInterrupt:
|
|
538
|
+
# Ctrl+C can arrive while optional commands are still importing, before
|
|
539
|
+
# Click or Uvicorn installs its own signal handling. Treat it as the
|
|
540
|
+
# same clean operator stop and preserve the conventional exit status.
|
|
541
|
+
raise SystemExit(130) from None
|
|
542
|
+
|
|
543
|
+
|
|
479
544
|
if __name__ == "__main__":
|
|
480
545
|
main()
|
ksadk/cli/cmd_config.py
CHANGED
|
@@ -184,7 +184,7 @@ def _apply_set_command(
|
|
|
184
184
|
if not updates_yaml and not updates_env and invalid_items:
|
|
185
185
|
raise usage_error(
|
|
186
186
|
"至少提供一个有效的 KEY=VALUE 配置项。",
|
|
187
|
-
hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=
|
|
187
|
+
hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=deepseek-v4.1-flash`"],
|
|
188
188
|
)
|
|
189
189
|
|
|
190
190
|
result = {
|
|
@@ -323,7 +323,7 @@ def _run_config_set_command(
|
|
|
323
323
|
if not set_items:
|
|
324
324
|
raise usage_error(
|
|
325
325
|
"请至少提供一个 KEY=VALUE 配置项。",
|
|
326
|
-
hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=
|
|
326
|
+
hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=deepseek-v4.1-flash`"],
|
|
327
327
|
)
|
|
328
328
|
return _apply_set_command(set_items, output_path, env_path, is_global)
|
|
329
329
|
|
|
@@ -464,7 +464,7 @@ def run_config_wizard(config_file: str | None, set_items: tuple, is_global: bool
|
|
|
464
464
|
|
|
465
465
|
new_env["OPENAI_MODEL_NAME"] = _ask_or_exit(
|
|
466
466
|
questionary.text(
|
|
467
|
-
"模型名称 (OPENAI_MODEL_NAME) [选填,默认使用金山云星流平台
|
|
467
|
+
"模型名称 (OPENAI_MODEL_NAME) [选填,默认使用金山云星流平台deepseek-v4.1-flash]:",
|
|
468
468
|
default=existing_env.get("OPENAI_MODEL_NAME", ""),
|
|
469
469
|
style=_questionary_style(),
|
|
470
470
|
)
|
|
@@ -784,7 +784,7 @@ def config_set(set_items: tuple, is_global: bool, output_mode: str | None):
|
|
|
784
784
|
\b
|
|
785
785
|
示例:
|
|
786
786
|
agentengine config set region=cn-beijing-6
|
|
787
|
-
agentengine config set OPENAI_MODEL_NAME=
|
|
787
|
+
agentengine config set OPENAI_MODEL_NAME=deepseek-v4.1-flash OPENAI_BASE_URL=https://example.com/v1
|
|
788
788
|
agentengine config set KSYUN_REGION=cn-beijing-6 --global
|
|
789
789
|
"""
|
|
790
790
|
_ = output_mode
|
ksadk/cli/cmd_create.py
CHANGED
|
@@ -104,7 +104,7 @@ from google.adk.agents import Agent
|
|
|
104
104
|
from google.adk.models.lite_llm import LiteLlm
|
|
105
105
|
|
|
106
106
|
model = LiteLlm(
|
|
107
|
-
model=f"openai/{{os.getenv('OPENAI_MODEL_NAME', '
|
|
107
|
+
model=f"openai/{{os.getenv('OPENAI_MODEL_NAME', 'deepseek-v4.1-flash')}}",
|
|
108
108
|
api_base=os.getenv("OPENAI_BASE_URL"),
|
|
109
109
|
api_key=os.getenv("OPENAI_API_KEY"),
|
|
110
110
|
stream=True, # 启用流式输出
|
|
@@ -147,7 +147,7 @@ from langchain.agents import create_agent
|
|
|
147
147
|
from langchain_openai import ChatOpenAI
|
|
148
148
|
|
|
149
149
|
llm = ChatOpenAI(
|
|
150
|
-
model=os.getenv("OPENAI_MODEL_NAME", "
|
|
150
|
+
model=os.getenv("OPENAI_MODEL_NAME", "deepseek-v4.1-flash"),
|
|
151
151
|
base_url=os.getenv("OPENAI_BASE_URL"),
|
|
152
152
|
api_key=os.getenv("OPENAI_API_KEY"),
|
|
153
153
|
streaming=True,
|
|
@@ -194,7 +194,7 @@ from typing import TypedDict, Annotated
|
|
|
194
194
|
import operator
|
|
195
195
|
|
|
196
196
|
llm = ChatOpenAI(
|
|
197
|
-
model=os.getenv("OPENAI_MODEL_NAME", "
|
|
197
|
+
model=os.getenv("OPENAI_MODEL_NAME", "deepseek-v4.1-flash"),
|
|
198
198
|
base_url=os.getenv("OPENAI_BASE_URL"),
|
|
199
199
|
api_key=os.getenv("OPENAI_API_KEY"),
|
|
200
200
|
streaming=True,
|
|
@@ -234,7 +234,7 @@ from deepagents import create_deep_agent
|
|
|
234
234
|
from langchain_openai import ChatOpenAI
|
|
235
235
|
|
|
236
236
|
llm = ChatOpenAI(
|
|
237
|
-
model=os.getenv("OPENAI_MODEL_NAME", "
|
|
237
|
+
model=os.getenv("OPENAI_MODEL_NAME", "deepseek-v4.1-flash"),
|
|
238
238
|
base_url=os.getenv("OPENAI_BASE_URL"),
|
|
239
239
|
api_key=os.getenv("OPENAI_API_KEY"),
|
|
240
240
|
streaming=True,
|
|
@@ -671,7 +671,7 @@ def _generate_codex_env_content(global_env: dict) -> str:
|
|
|
671
671
|
"# 本地 Codex 模型配置(仅用于 ksadk web,不会进入 ManagedRuntime bundle)",
|
|
672
672
|
"# OPENAI_API_KEY=",
|
|
673
673
|
f"OPENAI_BASE_URL={base_url}" if base_url else "# OPENAI_BASE_URL=",
|
|
674
|
-
f"OPENAI_MODEL_NAME={model_name}" if model_name else "# OPENAI_MODEL_NAME=
|
|
674
|
+
f"OPENAI_MODEL_NAME={model_name}" if model_name else "# OPENAI_MODEL_NAME=deepseek-v4.1-flash",
|
|
675
675
|
"",
|
|
676
676
|
"# 可选:自定义上游仅支持 Chat Completions 时,强制启用协议转换代理",
|
|
677
677
|
"# KSADK_CODEX_USE_PROXY=1",
|
|
@@ -1601,7 +1601,7 @@ runtime:
|
|
|
1601
1601
|
name: codex
|
|
1602
1602
|
|
|
1603
1603
|
# codex 的模型与开发者指令(CodexRuntimeAdapter 传入 codex thread)
|
|
1604
|
-
model:
|
|
1604
|
+
model: deepseek-v4.1-flash
|
|
1605
1605
|
prompt: |
|
|
1606
1606
|
你是 codex 编码助手。简洁回答,能跑命令验证就跑(shell 工具),中文回复。
|
|
1607
1607
|
""",
|
|
@@ -1820,7 +1820,7 @@ KSYUN_REGION={ks_region}
|
|
|
1820
1820
|
if model_name:
|
|
1821
1821
|
env_content += f"OPENAI_MODEL_NAME={model_name}\n"
|
|
1822
1822
|
else:
|
|
1823
|
-
env_content += "# OPENAI_MODEL_NAME=
|
|
1823
|
+
env_content += "# OPENAI_MODEL_NAME=deepseek-v4.1-flash\n"
|
|
1824
1824
|
elif framework == "hermes":
|
|
1825
1825
|
env_content = f"""# ======================
|
|
1826
1826
|
# Hermes 标准部署最小配置
|
|
@@ -1840,7 +1840,7 @@ KSYUN_REGION={ks_region}
|
|
|
1840
1840
|
if model_name:
|
|
1841
1841
|
env_content += f"OPENAI_MODEL_NAME={model_name}\n"
|
|
1842
1842
|
else:
|
|
1843
|
-
env_content += "# OPENAI_MODEL_NAME=
|
|
1843
|
+
env_content += "# OPENAI_MODEL_NAME=deepseek-v4.1-flash\n"
|
|
1844
1844
|
|
|
1845
1845
|
env_content += """
|
|
1846
1846
|
# Hermes runtime
|
|
@@ -1851,7 +1851,7 @@ HERMES_DASHBOARD_HOST=127.0.0.1
|
|
|
1851
1851
|
HERMES_DASHBOARD_PORT=9119
|
|
1852
1852
|
PORT=8080
|
|
1853
1853
|
# HERMES_CONTEXT_LENGTH=200000
|
|
1854
|
-
# HERMES_FALLBACK_MODEL=
|
|
1854
|
+
# HERMES_FALLBACK_MODEL=glm-5.3-flash
|
|
1855
1855
|
"""
|
|
1856
1856
|
env_example_content = """# ======================
|
|
1857
1857
|
# Hermes 标准部署最小配置示例
|
|
@@ -1863,7 +1863,7 @@ KSYUN_REGION=cn-beijing-6
|
|
|
1863
1863
|
|
|
1864
1864
|
OPENAI_API_KEY=your-model-api-key
|
|
1865
1865
|
OPENAI_BASE_URL=https://kspmas.ksyun.com/v1/
|
|
1866
|
-
OPENAI_MODEL_NAME=
|
|
1866
|
+
OPENAI_MODEL_NAME=deepseek-v4.1-flash
|
|
1867
1867
|
|
|
1868
1868
|
# Hermes runtime
|
|
1869
1869
|
API_SERVER_ENABLED=true
|
|
@@ -1873,7 +1873,7 @@ HERMES_DASHBOARD_HOST=127.0.0.1
|
|
|
1873
1873
|
HERMES_DASHBOARD_PORT=9119
|
|
1874
1874
|
PORT=8080
|
|
1875
1875
|
# HERMES_CONTEXT_LENGTH=200000
|
|
1876
|
-
# HERMES_FALLBACK_MODEL=
|
|
1876
|
+
# HERMES_FALLBACK_MODEL=glm-5.3-flash
|
|
1877
1877
|
"""
|
|
1878
1878
|
elif framework == "codex":
|
|
1879
1879
|
env_content = _generate_codex_env_content(global_env)
|
|
@@ -1893,7 +1893,7 @@ PORT=8080
|
|
|
1893
1893
|
if model_name:
|
|
1894
1894
|
env_content += f"OPENAI_MODEL_NAME={model_name}\n"
|
|
1895
1895
|
else:
|
|
1896
|
-
env_content += "# OPENAI_MODEL_NAME=
|
|
1896
|
+
env_content += "# OPENAI_MODEL_NAME=deepseek-v4.1-flash\n"
|
|
1897
1897
|
|
|
1898
1898
|
env_content += """
|
|
1899
1899
|
# ======================
|
ksadk/cli/cmd_hermes.py
CHANGED
|
@@ -24,6 +24,7 @@ from ksadk.cli.error_utils import remote_error, resolution_error
|
|
|
24
24
|
from ksadk.cli.model_catalog import fetch_provider_model_metadata
|
|
25
25
|
from ksadk.cli.network_options import build_network_payload, network_cli_kwargs, network_options
|
|
26
26
|
from ksadk.cli.resource_common import (
|
|
27
|
+
build_component_config,
|
|
27
28
|
CONTEXT_SETTINGS,
|
|
28
29
|
ResourceActionSet,
|
|
29
30
|
ResourceDescriptor,
|
|
@@ -65,8 +66,8 @@ from ksadk.hermes_terminal import (
|
|
|
65
66
|
)
|
|
66
67
|
|
|
67
68
|
DEFAULT_HERMES_IMAGE = "ghcr.io/kingsoftcloud/hermes-agent:v2026.7.7.2-ksadk-v070"
|
|
68
|
-
DEFAULT_HERMES_CONTEXT_LENGTHS = (("
|
|
69
|
-
DEFAULT_HERMES_MODEL_NAME = "
|
|
69
|
+
DEFAULT_HERMES_CONTEXT_LENGTHS = (("deepseek-v4.1-flash", "128000"),)
|
|
70
|
+
DEFAULT_HERMES_MODEL_NAME = "deepseek-v4.1-flash"
|
|
70
71
|
DEFAULT_HERMES_PUBLIC_BASE_URL = "https://kspmas.ksyun.com/v1/"
|
|
71
72
|
DEFAULT_HERMES_RUNTIME_BASE_URL = DEFAULT_HERMES_PUBLIC_BASE_URL
|
|
72
73
|
KSPMAS_PUBLIC_BASES = (
|
|
@@ -163,6 +164,8 @@ def _build_hermes_update_payload(
|
|
|
163
164
|
update_payload["storage"] = storage_config
|
|
164
165
|
if network_payload:
|
|
165
166
|
update_payload["network"] = network_payload
|
|
167
|
+
if payload.get("component_config"):
|
|
168
|
+
update_payload["component_config"] = payload["component_config"]
|
|
166
169
|
return update_payload
|
|
167
170
|
|
|
168
171
|
|
|
@@ -428,6 +431,9 @@ def _render_hermes_dry_run(
|
|
|
428
431
|
@click.option("--storage-size-gi", type=int, default=20, show_default=True, help="PVC 容量(Gi)")
|
|
429
432
|
@click.option("--storage-mount-path", default=None, help="PVC 挂载目录(默认: /home/node/.hermes)")
|
|
430
433
|
@click.option("--no-storage", is_flag=True, help="禁用默认 PVC 挂载")
|
|
434
|
+
@click.option("--skill-space-id", "skill_space_ids", multiple=True, help="Skill 中心空间 ID(可重复传入多个)")
|
|
435
|
+
@click.option("--sandbox-template-id", default=None, help="沙箱模板 ID(启用 E2B 沙箱执行 execute_skills)")
|
|
436
|
+
@click.option("--sandbox-api-key", default=None, help="沙箱 API Key(可选,默认从服务端注入)")
|
|
431
437
|
@env_options
|
|
432
438
|
@click.option(
|
|
433
439
|
"--observability/--no-observability",
|
|
@@ -468,6 +474,9 @@ def deploy(
|
|
|
468
474
|
subnet_id: Optional[str],
|
|
469
475
|
security_group_id: Optional[str],
|
|
470
476
|
availability_zone: Optional[str],
|
|
477
|
+
skill_space_ids: tuple[str, ...],
|
|
478
|
+
sandbox_template_id: Optional[str],
|
|
479
|
+
sandbox_api_key: Optional[str],
|
|
471
480
|
dry_run: bool,
|
|
472
481
|
output_mode: str | None,
|
|
473
482
|
):
|
|
@@ -510,6 +519,9 @@ def deploy(
|
|
|
510
519
|
include_storage_on_update=include_storage_on_update,
|
|
511
520
|
extra_env=extra_env,
|
|
512
521
|
env_file=env_file,
|
|
522
|
+
skill_space_ids=skill_space_ids,
|
|
523
|
+
sandbox_template_id=sandbox_template_id,
|
|
524
|
+
sandbox_api_key=sandbox_api_key,
|
|
513
525
|
**network_cli_kwargs(
|
|
514
526
|
enable_public_access=enable_public_access,
|
|
515
527
|
enable_vpc_access=enable_vpc_access,
|
|
@@ -551,6 +563,9 @@ async def _deploy_hermes(
|
|
|
551
563
|
subnet_id: str | None = None,
|
|
552
564
|
security_group_id: str | None = None,
|
|
553
565
|
availability_zone: str | None = None,
|
|
566
|
+
skill_space_ids: tuple[str, ...] = (),
|
|
567
|
+
sandbox_template_id: str | None = None,
|
|
568
|
+
sandbox_api_key: str | None = None,
|
|
554
569
|
dry_run: bool = False,
|
|
555
570
|
) -> None:
|
|
556
571
|
project_dir = Path(".").resolve()
|
|
@@ -606,6 +621,11 @@ async def _deploy_hermes(
|
|
|
606
621
|
auto_dotenv=auto_dotenv,
|
|
607
622
|
shell_keys=shell_keys,
|
|
608
623
|
)
|
|
624
|
+
component_config = build_component_config(
|
|
625
|
+
skill_space_ids=skill_space_ids,
|
|
626
|
+
sandbox_template_id=sandbox_template_id,
|
|
627
|
+
sandbox_api_key=sandbox_api_key,
|
|
628
|
+
)
|
|
609
629
|
payload = {
|
|
610
630
|
"name": agent_name,
|
|
611
631
|
"description": "Hermes Agent (managed by AgentEngine)",
|
|
@@ -619,6 +639,8 @@ async def _deploy_hermes(
|
|
|
619
639
|
"env_vars": env_vars,
|
|
620
640
|
"ui_config": {"profile": "hermes", "path": "/", "url": None},
|
|
621
641
|
}
|
|
642
|
+
if component_config:
|
|
643
|
+
payload["component_config"] = component_config
|
|
622
644
|
storage_config = build_storage_config(
|
|
623
645
|
"hermes",
|
|
624
646
|
no_storage=no_storage,
|
ksadk/cli/cmd_invoke.py
CHANGED
|
@@ -18,7 +18,6 @@ import click
|
|
|
18
18
|
|
|
19
19
|
from ksadk.api import AgentEngineAPIError, AgentEngineClient
|
|
20
20
|
from ksadk.cli.agent_ref import merge_agent_inputs, resolve_agent_ref, resolve_openclaw_ref
|
|
21
|
-
from ksadk.cli.invoke_payload import build_chat_request
|
|
22
21
|
from ksadk.cli.cmd_files import (
|
|
23
22
|
_build_sync_payload,
|
|
24
23
|
_collect_local_files_report,
|
|
@@ -27,6 +26,7 @@ from ksadk.cli.cmd_files import (
|
|
|
27
26
|
_normalize_workspace_dir,
|
|
28
27
|
_push_workspace_files,
|
|
29
28
|
)
|
|
29
|
+
from ksadk.cli.invoke_payload import build_chat_request
|
|
30
30
|
from ksadk.cli.resource_common import (
|
|
31
31
|
CONTEXT_SETTINGS,
|
|
32
32
|
CompatibilityAliasCommand,
|
|
@@ -1311,7 +1311,15 @@ async def _invoke_once(
|
|
|
1311
1311
|
last_refresh_time = 0.0
|
|
1312
1312
|
full_reasoning = ""
|
|
1313
1313
|
async for chunk in _stream_chat(
|
|
1314
|
-
endpoint,
|
|
1314
|
+
endpoint,
|
|
1315
|
+
message,
|
|
1316
|
+
api_key,
|
|
1317
|
+
session_id,
|
|
1318
|
+
True,
|
|
1319
|
+
insecure,
|
|
1320
|
+
model,
|
|
1321
|
+
api_format,
|
|
1322
|
+
default_model,
|
|
1315
1323
|
):
|
|
1316
1324
|
content, reasoning = _extract_content(chunk)
|
|
1317
1325
|
|
|
@@ -1341,7 +1349,15 @@ async def _invoke_once(
|
|
|
1341
1349
|
live.refresh() # 确保最后一次刷新
|
|
1342
1350
|
else:
|
|
1343
1351
|
async for chunk in _stream_chat(
|
|
1344
|
-
endpoint,
|
|
1352
|
+
endpoint,
|
|
1353
|
+
message,
|
|
1354
|
+
api_key,
|
|
1355
|
+
session_id,
|
|
1356
|
+
True,
|
|
1357
|
+
insecure,
|
|
1358
|
+
model,
|
|
1359
|
+
api_format,
|
|
1360
|
+
default_model,
|
|
1345
1361
|
):
|
|
1346
1362
|
content, reasoning = _extract_content(chunk)
|
|
1347
1363
|
if reasoning:
|
|
@@ -1510,8 +1526,15 @@ def _extract_content(chunk: dict) -> tuple[str, str]:
|
|
|
1510
1526
|
event_name = str(chunk.get("_event") or "")
|
|
1511
1527
|
if event_name == "response.output_text.delta":
|
|
1512
1528
|
return str(chunk.get("delta") or ""), ""
|
|
1513
|
-
|
|
1514
|
-
|
|
1529
|
+
# reasoning delta 有 4 个变体名(与 remote_runner / 前端 chatProtocol 对齐),
|
|
1530
|
+
# 主 runtime 发 reasoning.delta,Studio shared_web 发 reasoning_summary_text.delta。
|
|
1531
|
+
if event_name in {
|
|
1532
|
+
"response.reasoning.delta",
|
|
1533
|
+
"response.reasoning_text.delta",
|
|
1534
|
+
"response.reasoning_summary.delta",
|
|
1535
|
+
"response.reasoning_summary_text.delta",
|
|
1536
|
+
}:
|
|
1537
|
+
return "", str(chunk.get("delta") or chunk.get("text") or "")
|
|
1515
1538
|
if event_name == "response.completed":
|
|
1516
1539
|
return "", ""
|
|
1517
1540
|
|
ksadk/cli/cmd_managed_runtime.py
CHANGED
|
@@ -83,8 +83,20 @@ def managed_runtime(manifest_path: Path, port: int, host: str) -> None:
|
|
|
83
83
|
"""Serve one mounted, declarative ``agentengine.yaml`` in hosted mode."""
|
|
84
84
|
|
|
85
85
|
manifest_path = manifest_path.resolve()
|
|
86
|
-
_load_managed_runtime_manifest(manifest_path)
|
|
86
|
+
manifest = _load_managed_runtime_manifest(manifest_path)
|
|
87
87
|
work_dir = _prepare_writable_runtime_dir(manifest_path)
|
|
88
|
+
from ksadk.plugins.delivery import prepare_cloud_plugins
|
|
89
|
+
|
|
90
|
+
try:
|
|
91
|
+
prepare_cloud_plugins(manifest, work_dir)
|
|
92
|
+
except Exception as exc:
|
|
93
|
+
# Transport exceptions can contain signed URLs; keep startup logs secret-free.
|
|
94
|
+
import httpx
|
|
95
|
+
|
|
96
|
+
detail = "artifact transport failed" if isinstance(exc, httpx.HTTPError) else str(exc)
|
|
97
|
+
raise click.ClickException(
|
|
98
|
+
"plugin delivery failed before runtime startup: " + detail
|
|
99
|
+
) from None
|
|
88
100
|
# The command is a production process entrypoint, never a local UI action.
|
|
89
101
|
# ``web`` owns the RuntimeAdapter composition, while no_open prevents an
|
|
90
102
|
# accidental browser launch if this container is ever run with a display.
|
ksadk/cli/cmd_openclaw.py
CHANGED
|
@@ -46,6 +46,7 @@ from ksadk.cli.error_utils import abort_with_cli_error, remote_error, resolution
|
|
|
46
46
|
from ksadk.cli.model_catalog import fetch_provider_model_catalog, find_model_in_catalog
|
|
47
47
|
from ksadk.cli.network_options import build_network_payload, network_cli_kwargs, network_options
|
|
48
48
|
from ksadk.cli.resource_common import (
|
|
49
|
+
build_component_config,
|
|
49
50
|
CONTEXT_SETTINGS,
|
|
50
51
|
ResourceActionDescriptor,
|
|
51
52
|
ResourceDescriptor,
|
|
@@ -271,6 +272,7 @@ def _build_openclaw_update_payload(
|
|
|
271
272
|
network_payload: dict[str, Any] | None,
|
|
272
273
|
include_env: bool,
|
|
273
274
|
include_storage: bool,
|
|
275
|
+
component_config: dict[str, Any] | None = None,
|
|
274
276
|
):
|
|
275
277
|
"""构建已有 OpenClaw 的最小更新请求,默认保留服务端现有配置。"""
|
|
276
278
|
update_payload: dict[str, Any] = {
|
|
@@ -290,6 +292,8 @@ def _build_openclaw_update_payload(
|
|
|
290
292
|
update_payload["storage"] = storage_config
|
|
291
293
|
if network_payload:
|
|
292
294
|
update_payload["network"] = network_payload
|
|
295
|
+
if component_config:
|
|
296
|
+
update_payload["component_config"] = component_config
|
|
293
297
|
return update_payload
|
|
294
298
|
|
|
295
299
|
|
|
@@ -430,7 +434,7 @@ def _strip_provider_prefix(provider_id: str, model_id: str) -> str:
|
|
|
430
434
|
def _default_openclaw_model_inputs(provider_id: str, model_id: str) -> list[str]:
|
|
431
435
|
if str(provider_id or "").strip().lower() == "ksyun" and str(
|
|
432
436
|
model_id or ""
|
|
433
|
-
).strip().lower() in {"
|
|
437
|
+
).strip().lower() in {"deepseek-v4.1-flash", "glm-5.3-flash"}:
|
|
434
438
|
return ["text"]
|
|
435
439
|
return ["text", "image"]
|
|
436
440
|
|
|
@@ -2952,6 +2956,9 @@ def channel_doctor(
|
|
|
2952
2956
|
"--storage-mount-path", default=None, help="PVC 挂载目录(默认: /home/node/.openclaw)"
|
|
2953
2957
|
)
|
|
2954
2958
|
@click.option("--no-storage", is_flag=True, help="禁用默认 PVC 挂载")
|
|
2959
|
+
@click.option("--skill-space-id", "skill_space_ids", multiple=True, help="Skill 中心空间 ID(可重复传入多个)")
|
|
2960
|
+
@click.option("--sandbox-template-id", default=None, help="沙箱模板 ID(启用 E2B 沙箱执行 execute_skills)")
|
|
2961
|
+
@click.option("--sandbox-api-key", default=None, help="沙箱 API Key(可选,默认从服务端注入)")
|
|
2955
2962
|
@click.option(
|
|
2956
2963
|
"--agent-id",
|
|
2957
2964
|
"agent_id_opt",
|
|
@@ -2987,6 +2994,9 @@ def deploy(
|
|
|
2987
2994
|
subnet_id: Optional[str],
|
|
2988
2995
|
security_group_id: Optional[str],
|
|
2989
2996
|
availability_zone: Optional[str],
|
|
2997
|
+
skill_space_ids: tuple[str, ...],
|
|
2998
|
+
sandbox_template_id: Optional[str],
|
|
2999
|
+
sandbox_api_key: Optional[str],
|
|
2990
3000
|
dry_run: bool,
|
|
2991
3001
|
):
|
|
2992
3002
|
"""部署 OpenClaw 到云端
|
|
@@ -3052,6 +3062,9 @@ def deploy(
|
|
|
3052
3062
|
mem0_region=mem0_region,
|
|
3053
3063
|
extra_env=extra_env,
|
|
3054
3064
|
env_file=env_file,
|
|
3065
|
+
skill_space_ids=skill_space_ids,
|
|
3066
|
+
sandbox_template_id=sandbox_template_id,
|
|
3067
|
+
sandbox_api_key=sandbox_api_key,
|
|
3055
3068
|
storage_size_gi=storage_size_gi,
|
|
3056
3069
|
storage_mount_path=storage_mount_path,
|
|
3057
3070
|
no_storage=no_storage,
|
|
@@ -3101,6 +3114,9 @@ async def _deploy_openclaw(
|
|
|
3101
3114
|
subnet_id: Optional[str] = None,
|
|
3102
3115
|
security_group_id: Optional[str] = None,
|
|
3103
3116
|
availability_zone: Optional[str] = None,
|
|
3117
|
+
skill_space_ids: tuple[str, ...] = (),
|
|
3118
|
+
sandbox_template_id: str | None = None,
|
|
3119
|
+
sandbox_api_key: str | None = None,
|
|
3104
3120
|
dry_run: bool,
|
|
3105
3121
|
):
|
|
3106
3122
|
"""异步部署 OpenClaw"""
|
|
@@ -3233,6 +3249,13 @@ async def _deploy_openclaw(
|
|
|
3233
3249
|
"auth_type": "None",
|
|
3234
3250
|
"inbound_identity_auth": "None",
|
|
3235
3251
|
}
|
|
3252
|
+
component_config = build_component_config(
|
|
3253
|
+
skill_space_ids=skill_space_ids,
|
|
3254
|
+
sandbox_template_id=sandbox_template_id,
|
|
3255
|
+
sandbox_api_key=sandbox_api_key,
|
|
3256
|
+
)
|
|
3257
|
+
if component_config:
|
|
3258
|
+
request_data["component_config"] = component_config
|
|
3236
3259
|
if memory_config:
|
|
3237
3260
|
request_data["memory_config"] = memory_config
|
|
3238
3261
|
storage_config = build_storage_config(
|
|
@@ -3307,6 +3330,7 @@ async def _deploy_openclaw(
|
|
|
3307
3330
|
network_payload=network_payload,
|
|
3308
3331
|
include_env=include_env_on_update,
|
|
3309
3332
|
include_storage=include_storage_on_update,
|
|
3333
|
+
component_config=component_config,
|
|
3310
3334
|
)
|
|
3311
3335
|
await client.update_agent(existing_agent_id, update_payload)
|
|
3312
3336
|
else:
|
|
@@ -3364,6 +3388,7 @@ async def _deploy_openclaw(
|
|
|
3364
3388
|
network_payload=network_payload,
|
|
3365
3389
|
include_env=include_env_on_update,
|
|
3366
3390
|
include_storage=include_storage_on_update,
|
|
3391
|
+
component_config=component_config,
|
|
3367
3392
|
)
|
|
3368
3393
|
res = await client.update_agent(existing_agent_id, update_payload)
|
|
3369
3394
|
agent_id = existing_agent_id
|