agentengine-sdk-python 0.8.0__py3-none-any.whl → 0.8.2__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.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/METADATA +43 -7
- agentengine_sdk_python-0.8.2.dist-info/RECORD +778 -0
- {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/WHEEL +1 -1
- ksadk/a2a/__init__.py +2 -0
- ksadk/a2a/_space_client_events.py +381 -0
- ksadk/a2a/bootstrap.py +0 -2
- ksadk/a2a/card.py +6 -111
- ksadk/a2a/control_plane.py +239 -1
- ksadk/a2a/event_adapter.py +156 -64
- ksadk/a2a/executor.py +195 -172
- ksadk/a2a/routes.py +12 -5
- ksadk/a2a/server.py +1 -8
- ksadk/a2a/service_env.py +33 -0
- ksadk/a2a/space_client.py +43 -349
- ksadk/a2a_card.py +101 -0
- ksadk/a2ui/core.py +222 -53
- ksadk/agui/_agent_helpers.py +243 -0
- ksadk/agui/a2ui_projection.py +12 -5
- ksadk/agui/agent.py +474 -275
- ksadk/agui/config.py +11 -5
- ksadk/agui/routes.py +7 -15
- ksadk/api/client.py +530 -40
- ksadk/api/environment.py +27 -0
- ksadk/builders/code_builder.py +352 -53
- ksadk/builders/container_builder.py +71 -44
- ksadk/builders/framework_requirements.py +2 -1
- ksadk/builders/ks3_uploader.py +2 -2
- ksadk/builders/managed_runtime_builder.py +60 -28
- ksadk/cli/__init__.py +25 -0
- ksadk/cli/cmd_a2a.py +18 -31
- ksadk/cli/cmd_create.py +13 -26
- ksadk/cli/cmd_dashboard.py +15 -1
- ksadk/cli/cmd_deploy.py +28 -3
- ksadk/cli/cmd_eval.py +443 -0
- ksadk/cli/cmd_evalset.py +284 -0
- ksadk/cli/cmd_files.py +5 -1
- ksadk/cli/cmd_hermes.py +137 -163
- ksadk/cli/cmd_invoke.py +28 -38
- ksadk/cli/cmd_launch.py +12 -0
- ksadk/cli/cmd_managed_runtime.py +95 -0
- ksadk/cli/cmd_observe.py +85 -0
- ksadk/cli/cmd_openclaw.py +85 -479
- ksadk/cli/cmd_replay.py +28 -4
- ksadk/cli/cmd_run.py +29 -67
- ksadk/cli/cmd_studio.py +201 -0
- ksadk/cli/cmd_web.py +15 -6
- ksadk/cli/dry_run.py +2 -1
- ksadk/cli/env_options.py +83 -0
- ksadk/cli/global_options.py +3 -1
- ksadk/cli/hermes_env.py +151 -0
- ksadk/cli/invoke_payload.py +49 -0
- ksadk/cli/network_options.py +7 -5
- ksadk/cli/openclaw_env.py +458 -0
- ksadk/cli/runtime_bootstrap.py +51 -0
- ksadk/cli/ui.py +6 -0
- ksadk/cli/workflow_common.py +5 -5
- ksadk/codex/__init__.py +3 -3
- ksadk/codex/client.py +833 -49
- ksadk/codex/phase.py +1 -1
- ksadk/codex/runtime.py +720 -127
- ksadk/common/kop_client.py +232 -0
- ksadk/configs/__init__.py +1 -3
- ksadk/configs/env_registry.py +244 -45
- ksadk/configs/env_registry_pcm.py +181 -0
- ksadk/configs/env_var_spec.py +18 -0
- ksadk/configs/global_config.py +6 -1
- ksadk/configs/settings.py +5 -108
- ksadk/context_engine/__init__.py +98 -0
- ksadk/context_engine/assembler.py +176 -0
- ksadk/context_engine/baseline.py +419 -0
- ksadk/context_engine/cache_observability.py +228 -0
- ksadk/context_engine/capabilities.py +443 -0
- ksadk/context_engine/contributors.py +344 -0
- ksadk/context_engine/hosted_pipeline.py +417 -0
- ksadk/context_engine/models.py +117 -0
- ksadk/context_engine/planner.py +698 -0
- ksadk/context_engine/policies.py +319 -0
- ksadk/context_engine/projection.py +31 -0
- ksadk/context_engine/shadow_plan.py +266 -0
- ksadk/context_engine/tokenizer.py +164 -0
- ksadk/conversations/__init__.py +85 -94
- ksadk/conversations/context.py +126 -6
- ksadk/conversations/message_projection.py +292 -28
- ksadk/conversations/model_context.py +49 -3
- ksadk/conversations/runtime_compaction.py +207 -5
- ksadk/conversations/runtime_input.py +193 -3
- ksadk/conversations/runtime_invocation.py +81 -3
- ksadk/conversations/runtime_observability.py +157 -4
- ksadk/conversations/runtime_payloads.py +42 -0
- ksadk/conversations/runtime_preparation.py +280 -2
- ksadk/conversations/runtime_resume.py +71 -32
- ksadk/conversations/runtime_stream_events.py +94 -9
- ksadk/conversations/runtime_streaming.py +175 -22
- ksadk/conversations/semantic_summary.py +311 -1
- ksadk/conversations/session_lock.py +51 -0
- ksadk/deployment/env_forward.py +72 -0
- ksadk/deployment/managed_runtime.py +38 -0
- ksadk/deployment/manager.py +24 -8
- ksadk/deployment/providers/serverless.py +228 -92
- ksadk/evaluation/__init__.py +116 -0
- ksadk/evaluation/a2a_adapter.py +452 -0
- ksadk/evaluation/adapters.py +67 -0
- ksadk/evaluation/agent_eval_client.py +395 -0
- ksadk/evaluation/cloud_binding.py +80 -0
- ksadk/evaluation/cloud_converter.py +194 -0
- ksadk/evaluation/cloud_service.py +199 -0
- ksadk/evaluation/contracts.py +478 -0
- ksadk/evaluation/evalset.py +351 -0
- ksadk/evaluation/evaluators.py +627 -0
- ksadk/evaluation/evidence.py +258 -0
- ksadk/evaluation/executor.py +143 -0
- ksadk/evaluation/local_adapter.py +550 -0
- ksadk/evaluation/service_env.py +27 -0
- ksadk/evaluation/storage.py +68 -0
- ksadk/evaluation/studio_build_adapter.py +253 -0
- ksadk/evaluation/target.py +82 -0
- ksadk/events/__init__.py +13 -13
- ksadk/events/_v1_compat/__init__.py +1 -0
- ksadk/events/_v1_compat/models.py +299 -0
- ksadk/events/_v1_compat/parser.py +247 -0
- ksadk/events/_v1_compat/projection.py +753 -0
- ksadk/events/adapters/__init__.py +34 -0
- ksadk/events/adapters/_a2a_snapshot.py +622 -0
- ksadk/events/adapters/_a2a_support.py +275 -0
- ksadk/events/adapters/_codex_interactions.py +375 -0
- ksadk/events/adapters/_codex_items.py +801 -0
- ksadk/events/adapters/_codex_validators.py +311 -0
- ksadk/events/adapters/_langgraph_support.py +785 -0
- ksadk/events/adapters/a2a.py +841 -0
- ksadk/events/adapters/adk.py +503 -0
- ksadk/events/adapters/codex.py +717 -0
- ksadk/events/adapters/langgraph.py +745 -0
- ksadk/events/canonical.py +440 -0
- ksadk/events/canonical_replay.py +497 -0
- ksadk/events/canonical_store.py +468 -0
- ksadk/events/cold_recovery.py +257 -0
- ksadk/events/content.py +89 -0
- ksadk/events/identity.py +86 -0
- ksadk/events/pipeline.py +455 -0
- ksadk/events/projections.py +66 -0
- ksadk/events/reducer.py +661 -0
- ksadk/events/replay.py +3 -36
- ksadk/events/runtime_event.py +20 -256
- ksadk/events/session_event.py +324 -0
- ksadk/events/store.py +3 -316
- ksadk/events/v1_compat.py +41 -0
- ksadk/harness/__init__.py +3 -2
- ksadk/harness/app.py +114 -123
- ksadk/harness/config.py +1 -1
- ksadk/harness/runtime.py +467 -0
- ksadk/hermes_terminal.py +5 -0
- ksadk/identity/resolver.py +4 -3
- ksadk/interaction/__init__.py +28 -0
- ksadk/interaction/contracts.py +136 -0
- ksadk/interaction/ledger.py +189 -0
- ksadk/interaction/provider.py +122 -0
- ksadk/interaction/providers/__init__.py +52 -0
- ksadk/interaction/providers/adk.py +40 -0
- ksadk/interaction/providers/codex.py +94 -0
- ksadk/interaction/providers/langgraph.py +58 -0
- ksadk/kernel/__init__.py +117 -0
- ksadk/kernel/authorization.py +258 -0
- ksadk/kernel/bootstrap.py +1074 -0
- ksadk/kernel/contract_fingerprints.py +61 -0
- ksadk/kernel/contracts.py +362 -0
- ksadk/kernel/control.py +219 -0
- ksadk/kernel/errors.py +79 -0
- ksadk/kernel/ingress.py +1102 -0
- ksadk/kernel/mapping.py +111 -0
- ksadk/kernel/memory_store.py +1133 -0
- ksadk/kernel/postgres_store.py +1756 -0
- ksadk/kernel/recovery.py +452 -0
- ksadk/kernel/runtime_identity.py +103 -0
- ksadk/kernel/sql/001_agent_kernel.sql +120 -0
- ksadk/kernel/sqlite_store.py +1410 -0
- ksadk/kernel/state.py +145 -0
- ksadk/kernel/store.py +232 -0
- ksadk/kernel/worker.py +953 -0
- ksadk/knowledge_base/client.py +22 -4
- ksadk/knowledge_base/service.py +32 -5
- ksadk/managed_a2a_card.py +160 -0
- ksadk/managed_runtime.py +16 -9
- ksadk/memory/__init__.py +61 -0
- ksadk/memory/adk/backends/base_ltm_backend.py +96 -1
- ksadk/memory/adk/backends/http_ltm_backend.py +14 -5
- ksadk/memory/adk/backends/inmemory_ltm_backend.py +136 -3
- ksadk/memory/adk/backends/sdk_ltm_backend.py +394 -5
- ksadk/memory/adk/backends/sqlite_ltm_backend.py +95 -0
- ksadk/memory/adk/long_term_memory.py +3 -2
- ksadk/memory/coordinator.py +461 -0
- ksadk/memory/events.py +202 -0
- ksadk/memory/extraction.py +228 -0
- ksadk/memory/ltm_backend_factory.py +16 -3
- ksadk/memory/models.py +316 -0
- ksadk/memory/policy.py +215 -0
- ksadk/memory/provider.py +47 -0
- ksadk/memory/provider_adapter.py +159 -0
- ksadk/memory/provider_resolver.py +71 -0
- ksadk/memory/providers/__init__.py +5 -0
- ksadk/memory/providers/local_sqlite.py +490 -0
- ksadk/memory/resolved_policy.py +145 -0
- ksadk/memory/service.py +198 -8
- ksadk/memory/tool.py +4 -0
- ksadk/model_proxy/bootstrap.py +16 -9
- ksadk/model_proxy/config.py +22 -1
- ksadk/model_proxy/detect.py +202 -9
- ksadk/model_proxy/namespace.py +67 -15
- ksadk/model_proxy/server.py +168 -6
- ksadk/model_proxy/transform.py +105 -3
- ksadk/observability/__init__.py +25 -0
- ksadk/observability/session_log.py +420 -0
- ksadk/observability/trajectory.py +105 -0
- ksadk/prompts/__init__.py +71 -0
- ksadk/prompts/compiler.py +215 -0
- ksadk/prompts/models.py +82 -0
- ksadk/prompts/projection.py +89 -0
- ksadk/prompts/resolved.py +137 -0
- ksadk/prompts/sources.py +233 -0
- ksadk/runners/_langgraph_runner_streams.py +822 -0
- ksadk/runners/adk_runner.py +14 -31
- ksadk/runners/base_runner.py +44 -3
- ksadk/runners/factory.py +3 -3
- ksadk/runners/langgraph_runner.py +252 -433
- ksadk/runners/utils/__init__.py +0 -10
- ksadk/runners/utils/loader.py +16 -0
- ksadk/runtime/__init__.py +67 -41
- ksadk/runtime/_runner_adapter/__init__.py +1 -0
- ksadk/runtime/_runner_adapter/stream_mapping.py +788 -0
- ksadk/runtime/adapter.py +199 -16
- ksadk/runtime/conversation_execution.py +687 -0
- ksadk/runtime/executor.py +392 -0
- ksadk/runtime/factory.py +342 -0
- ksadk/runtime/framework_adapters.py +6 -12
- ksadk/runtime/hosted_finalizer.py +268 -0
- ksadk/runtime/launch.py +61 -0
- ksadk/runtime/preprocessing.py +49 -14
- ksadk/runtime/runner_adapter.py +330 -391
- ksadk/runtime/runner_loading.py +36 -0
- ksadk/runtime/usage.py +33 -0
- ksadk/sandbox/backends/e2b.py +36 -3
- ksadk/server/__init__.py +39 -4
- ksadk/server/app.py +18 -492
- ksadk/server/composition.py +36 -2
- ksadk/server/factory.py +210 -149
- ksadk/server/routes/common.py +15 -46
- ksadk/server/routes/control.py +13 -9
- ksadk/server/routes/kernel_ingress.py +258 -0
- ksadk/server/routes/misc.py +10 -33
- ksadk/server/routes/models.py +14 -6
- ksadk/server/routes/openai_compat.py +129 -27
- ksadk/server/routes/projection.py +84 -16
- ksadk/server/routes/run.py +347 -460
- ksadk/server/routes/sessions.py +37 -40
- ksadk/server/routes/streaming.py +52 -7
- ksadk/server/routes/workspace.py +54 -21
- ksadk/server/static/assets/{ArtifactsPanel-Cjnqt-8W.js → ArtifactsPanel-DSU1sWD_.js} +1 -1
- ksadk/server/static/assets/{CodeBlock-BqyqZfuB.js → CodeBlock-DOH6MVcn.js} +4 -4
- ksadk/server/static/assets/{MathMessageMarkdown-BpH7jiFM.js → MathMessageMarkdown-BL8my1R2.js} +4 -4
- ksadk/server/static/assets/MathMessageMarkdown-BorAY7qD.css +1 -0
- ksadk/server/static/assets/MermaidBlock-Dz4IP-Tx.js +312 -0
- ksadk/server/static/assets/NativeTerminalPanel-DUrK0JpZ.js +1 -0
- ksadk/server/static/assets/abnfDiagram-VCTEODGH-g20pFzNV.js +1 -0
- ksadk/server/static/assets/arc-C4FzinUA.js +1 -0
- ksadk/server/static/assets/architecture-7GRP2DOG-DjKratdf.js +1 -0
- ksadk/server/static/assets/architectureDiagram-5GKGNRK7-DpIqL5h4.js +36 -0
- ksadk/server/static/assets/blockDiagram-NRAW4CY4-BjkljTNz.js +129 -0
- ksadk/server/static/assets/c4Diagram-UCG6FXSJ-Dk_ieq2X.js +38 -0
- ksadk/server/static/assets/channel-4cQHKtx1.js +1 -0
- ksadk/server/static/assets/chunk-2Q5K7J3B-DmgWkESh.js +1 -0
- ksadk/server/static/assets/{chunk-FMBD7UC4-BGhvzDYt.js → chunk-5VM5RSS4-BVHAchFb.js} +1 -1
- ksadk/server/static/assets/{chunk-ND2GUHAM-D98vPd-E.js → chunk-F27PBJKO-C-ipQzuS.js} +1 -1
- ksadk/server/static/assets/chunk-G27WJ6UU-C2EyJbIK.js +231 -0
- ksadk/server/static/assets/{chunk-4BX2VUAB-CsWIQRhc.js → chunk-JWPE2WC7-vYvVJb_M.js} +1 -1
- ksadk/server/static/assets/chunk-LCL6LL3I-BcI6ysPT.js +206 -0
- ksadk/server/static/assets/chunk-POPQ4Y6H-C030x_Z1.js +1 -0
- ksadk/server/static/assets/chunk-RHFEMEQ7-yyGpsz4n.js +168 -0
- ksadk/server/static/assets/chunk-SVP7TREG-BLTlmMU7.js +88 -0
- ksadk/server/static/assets/chunk-XXDRQBXY-C_32ArgP.js +1 -0
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js +1 -0
- ksadk/server/static/assets/{cose-bilkent-S5V4N54A-CX3yotHq.js → cose-bilkent-JH36ORCC-9YQYwdl0.js} +1 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js +1 -0
- ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-ErLF5N13.js +62 -0
- ksadk/server/static/assets/cytoscape.esm-CyCl8rPi.js +321 -0
- ksadk/server/static/assets/dagre-3AP2YEHR-DFiQF-6f.js +4 -0
- ksadk/server/static/assets/dagre-BuhGnRI1.js +1 -0
- ksadk/server/static/assets/diagram-S7CK7UJ4-Bt1v8-GC.js +30 -0
- ksadk/server/static/assets/diagram-UQ7AKVKN-DSCxJdBK.js +41 -0
- ksadk/server/static/assets/diagram-VSXAHHWV-DHfYwp_9.js +3 -0
- ksadk/server/static/assets/diagram-VX7I27RA-DdzD-4Le.js +24 -0
- ksadk/server/static/assets/diagram-Z3DM3KII-Du-nAJ9F.js +24 -0
- ksadk/server/static/assets/{dist-D82mtD2s.js → dist-8hqcx0sU.js} +1 -1
- ksadk/server/static/assets/dist-B7seoj3d.js +1 -0
- ksadk/server/static/assets/{dist-DHn6nBzr.js → dist-BE7bu-DL.js} +1 -1
- ksadk/server/static/assets/{dist-eoW6tZXA.js → dist-BVDffZ0U.js} +1 -1
- ksadk/server/static/assets/{dist-C2xjE7cO.js → dist-BX8z72IC.js} +1 -1
- ksadk/server/static/assets/{dist-CgF3fj15.js → dist-Bf2M8m3N.js} +1 -1
- ksadk/server/static/assets/{dist-Bs-jQcRX.js → dist-BjU6y-A2.js} +1 -1
- ksadk/server/static/assets/{dist-Djgl2wVZ.js → dist-BytlxIDT.js} +1 -1
- ksadk/server/static/assets/{dist-CVQRZjPu.js → dist-CSh_DE14.js} +1 -1
- ksadk/server/static/assets/{dist-6CVKuTAe.js → dist-CXYYBw3_.js} +1 -1
- ksadk/server/static/assets/{dist-DlzCRy0S.js → dist-C_wsv-Qd.js} +1 -1
- ksadk/server/static/assets/{dist-DF06ORQo.js → dist-ClxGviKw.js} +1 -1
- ksadk/server/static/assets/{dist-Cf23NY4L.js → dist-CttYUqzS.js} +1 -1
- ksadk/server/static/assets/{dist-ivOya1LD.js → dist-DNp6rLRA.js} +1 -1
- ksadk/server/static/assets/{dist-BibcG1V9.js → dist-DUX-id_F.js} +1 -1
- ksadk/server/static/assets/{dist-BUHRxvDG.js → dist-DmldrHd_.js} +1 -1
- ksadk/server/static/assets/{dist-BZ9n9AjO.js → dist-DnfXs8Vn.js} +2 -2
- ksadk/server/static/assets/{dist-DqNnNFrw.js → dist-Dq9gLD7L.js} +1 -1
- ksadk/server/static/assets/{dist-CGcp2ex8.js → dist-W-TIVntx.js} +1 -1
- ksadk/server/static/assets/{dist-Cwt7koer.js → dist-dDdADKFA.js} +1 -1
- ksadk/server/static/assets/{dist-C7-3jInC.js → dist-dydu68Fl.js} +1 -1
- ksadk/server/static/assets/{dist-C99THtIA.js → dist-ngtN0DJB.js} +1 -1
- ksadk/server/static/assets/ebnfDiagram-PWID7BFC-Da9C9NO1.js +1 -0
- ksadk/server/static/assets/erDiagram-SSCWMZ5O-EAGqqR79.js +99 -0
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js +1 -0
- ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js +1 -0
- ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-DqJsKb59.js +292 -0
- ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js +1 -0
- ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-B6g4dtDi.js +106 -0
- ksadk/server/static/assets/index-8ipRcQ-M.js +240 -0
- ksadk/server/static/assets/index-ByFCqjlh.css +2 -0
- ksadk/server/static/assets/info-A6RAGUB7-B6iAblII.js +1 -0
- ksadk/server/static/assets/infoDiagram-RXCK75RN-Djm_nbd5.js +2 -0
- ksadk/server/static/assets/{ishikawaDiagram-YF4QCWOH-DLOHGvWw.js → ishikawaDiagram-5VMMS53U-DWya9SG2.js} +6 -6
- ksadk/server/static/assets/{journeyDiagram-JHISSGLW-BIzKeejT.js → journeyDiagram-EYS64GPL-DutxhSNI.js} +6 -6
- ksadk/server/static/assets/{kanban-definition-UN3LZRKU-BWHoFSw2.js → kanban-definition-3QL26DDD-DJdOF8Fm.js} +10 -10
- ksadk/server/static/assets/katex-vFWytM5c.js +257 -0
- ksadk/server/static/assets/{linear-CvMBw9cA.js → linear-BHjG8b-J.js} +1 -1
- ksadk/server/static/assets/mermaid-parser.core-KGSy4jWT.js +166 -0
- ksadk/server/static/assets/{mindmap-definition-RKZ34NQL-CSAQxEAe.js → mindmap-definition-FBJOCRG2-9-HC88D4.js} +29 -29
- ksadk/server/static/assets/packet-AYTQ26CC-BOYAipuq.js +1 -0
- ksadk/server/static/assets/pegDiagram-XKGWAZYB-DrEZd4fD.js +1 -0
- ksadk/server/static/assets/pie-WAS4IAKB-Ctq0Kbku.js +1 -0
- ksadk/server/static/assets/pieDiagram-E7YTZNPT-DpjqOFFp.js +39 -0
- ksadk/server/static/assets/{quadrantDiagram-W4KKPZXB-CxIR4JXI.js → quadrantDiagram-AXDQQJYC-BiNhgOXX.js} +6 -6
- ksadk/server/static/assets/radar-RG4KPBEZ-DN0-ul_0.js +1 -0
- ksadk/server/static/assets/railroad-74A4TZTK-C6cC_to0.js +1 -0
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BimjIuRc.js +1 -0
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js +1 -0
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js +1 -0
- ksadk/server/static/assets/railroadDiagram-O6MQD6OU-_Y3Ojg6G.js +1 -0
- ksadk/server/static/assets/requirementDiagram-EFPCY7ZU-DeCFdg9K.js +84 -0
- ksadk/server/static/assets/{sankeyDiagram-5OEKKPKP-DpGa6EAV.js → sankeyDiagram-P5KCCOFB-CPH75rhw.js} +7 -7
- ksadk/server/static/assets/{sequenceDiagram-3UESZ5HK-NTKNGGe5.js → sequenceDiagram-WJ2MYXX4-OEpQQdr4.js} +10 -10
- ksadk/server/static/assets/sizeCapture-X5ZJPWSS-heUErzhI.js +1 -0
- ksadk/server/static/assets/stateDiagram-HBIQ2CUA-DvA3jSMB.js +1 -0
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BgQY03nz.js +1 -0
- ksadk/server/static/assets/swimlanes-XN3QIQJK-CR-dfN_t.js +1 -0
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js +8 -0
- ksadk/server/static/assets/{timeline-definition-PNZ67QCA-jqoYs3jQ.js → timeline-definition-24CTP7MA-DAVJf1TX.js} +7 -7
- ksadk/server/static/assets/treeView-Q6P3EWNA-BMpO0wsB.js +1 -0
- ksadk/server/static/assets/treemap-WGGIJYW6-Et0aqzU3.js +1 -0
- ksadk/server/static/assets/vennDiagram-4TSXK5OY-DwM8eDkh.js +34 -0
- ksadk/server/static/assets/wardley-WFR3VGLG-CbY0mhpl.js +1 -0
- ksadk/server/static/assets/wardleyDiagram-VM6X3IG4-DZL-Zz2t.js +78 -0
- ksadk/server/static/assets/xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js +7 -0
- ksadk/server/static/index.html +2 -2
- ksadk/sessions/__init__.py +26 -9
- ksadk/sessions/_local_service_sync.py +688 -0
- ksadk/sessions/_local_tables.py +21 -0
- ksadk/sessions/_postgres_schema.py +305 -0
- ksadk/sessions/_postgres_tables.py +15 -0
- ksadk/sessions/base.py +80 -1
- ksadk/sessions/in_memory.py +53 -2
- ksadk/sessions/local_service.py +63 -604
- ksadk/sessions/postgres_service.py +58 -148
- ksadk/sessions/resilient.py +35 -1
- ksadk/skills/runtime/backends/e2b.py +1 -1
- ksadk/skills/service_client.py +13 -3
- ksadk/studio/__init__.py +5 -0
- ksadk/studio/agent_avatar_assets.py +120 -0
- ksadk/studio/agent_lifecycle.py +51 -0
- ksadk/studio/api.py +1598 -0
- ksadk/studio/api_catalog_routes.py +324 -0
- ksadk/studio/api_contracts.py +286 -0
- ksadk/studio/api_helpers.py +132 -0
- ksadk/studio/api_memory_routes.py +82 -0
- ksadk/studio/authoring.py +749 -0
- ksadk/studio/authoring_coordinator.py +1017 -0
- ksadk/studio/builder.py +397 -0
- ksadk/studio/capabilities.py +368 -0
- ksadk/studio/cloud.py +2099 -0
- ksadk/studio/codex_agent_service.py +694 -0
- ksadk/studio/codex_authoring.py +469 -0
- ksadk/studio/codex_builder.py +437 -0
- ksadk/studio/codex_manifest.py +307 -0
- ksadk/studio/codex_run.py +395 -0
- ksadk/studio/compiler.py +190 -0
- ksadk/studio/contracts.py +755 -0
- ksadk/studio/errors.py +47 -0
- ksadk/studio/event_store.py +214 -0
- ksadk/studio/framework_run.py +342 -0
- ksadk/studio/hosted_kernel.py +317 -0
- ksadk/studio/identifiers.py +33 -0
- ksadk/studio/manifest_resolver.py +131 -0
- ksadk/studio/mcp_runtime.py +229 -0
- ksadk/studio/model_client.py +629 -0
- ksadk/studio/model_profile_service.py +214 -0
- ksadk/studio/operations.py +275 -0
- ksadk/studio/otel_trace.py +1060 -0
- ksadk/studio/pagination.py +182 -0
- ksadk/studio/pcm_memory.py +85 -0
- ksadk/studio/python_tool_inspection.py +183 -0
- ksadk/studio/repository.py +327 -0
- ksadk/studio/resource_catalog.py +1260 -0
- ksadk/studio/run_service.py +1133 -0
- ksadk/studio/runtime_catalog.py +74 -0
- ksadk/studio/runtime_source.py +365 -0
- ksadk/studio/service.py +2249 -0
- ksadk/studio/shared_web.py +1004 -0
- ksadk/studio/skill_discovery.py +628 -0
- ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js +3 -0
- ksadk/studio/static/assets/index-BLpcdrgW.css +1 -0
- ksadk/studio/static/assets/index-CYekR2Xv.js +260 -0
- ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js +9 -0
- ksadk/studio/static/assets/rolldown-runtime-hePW80VL.js +1 -0
- ksadk/studio/static/index.html +15 -0
- ksadk/studio/templates.py +722 -0
- ksadk/studio/validator.py +265 -0
- ksadk/studio/workspace.py +135 -0
- ksadk/tools/gateway.py +9 -0
- ksadk/toolsets/__init__.py +27 -1
- ksadk/toolsets/a2a.py +426 -0
- ksadk/tracing/__init__.py +19 -21
- ksadk/tracing/setup.py +317 -403
- ksadk/tracing/span_utils.py +0 -44
- ksadk/version.py +1 -1
- ksadk_runtime_common/memory_backend/registry.py +56 -56
- ksadk_runtime_common/schemas/runtime_event_v1.json +37 -0
- ksadk_runtime_common/schemas/runtime_event_v2.json +271 -0
- ksadk_runtime_common/workspace_files/router.py +8 -2
- agentengine_sdk_python-0.8.0.dist-info/RECORD +0 -578
- ksadk/a2a/card_builder.py +0 -64
- ksadk/a2a/client.py +0 -309
- ksadk/events/parser.py +0 -191
- ksadk/harness/runner.py +0 -211
- ksadk/runners/codex_runner.py +0 -132
- ksadk/runners/utils/langfuse.py +0 -230
- ksadk/server/static/assets/MathMessageMarkdown-DeYh8QPr.css +0 -1
- ksadk/server/static/assets/MermaidBlock-DWuxETaJ.js +0 -303
- ksadk/server/static/assets/NativeTerminalPanel-MDTopWMO.js +0 -1
- ksadk/server/static/assets/arc-CFKwSk_B.js +0 -1
- ksadk/server/static/assets/architecture-7EHR7CIX-CynqOWjZ.js +0 -1
- ksadk/server/static/assets/architectureDiagram-3BPJPVTR-Dej8jX8c.js +0 -36
- ksadk/server/static/assets/blockDiagram-GPEHLZMM-1F64jqvy.js +0 -132
- ksadk/server/static/assets/c4Diagram-AAUBKEIU-9q7AUAKb.js +0 -10
- ksadk/server/static/assets/channel-iUGv2N24.js +0 -1
- ksadk/server/static/assets/chunk-2J33WTMH-6qgwJm7Q.js +0 -1
- ksadk/server/static/assets/chunk-55IACEB6-BK8paA20.js +0 -1
- ksadk/server/static/assets/chunk-727SXJPM-B-JEhy7h.js +0 -206
- ksadk/server/static/assets/chunk-AQP2D5EJ-DYBvMHAa.js +0 -231
- ksadk/server/static/assets/chunk-QZHKN3VN-YQIEXeF6.js +0 -1
- ksadk/server/static/assets/classDiagram-4FO5ZUOK-CDAUuoXK.js +0 -1
- ksadk/server/static/assets/classDiagram-v2-Q7XG4LA2-CDAUuoXK.js +0 -1
- ksadk/server/static/assets/cytoscape.esm-DelgaX4f.js +0 -321
- ksadk/server/static/assets/dagre-BM42HDAG-C7TguAWo.js +0 -4
- ksadk/server/static/assets/dagre-Bx709z4p.js +0 -1
- ksadk/server/static/assets/diagram-2AECGRRQ-Dd17_kws.js +0 -43
- ksadk/server/static/assets/diagram-5GNKFQAL-DVIClIil.js +0 -10
- ksadk/server/static/assets/diagram-KO2AKTUF-Df_3gYQa.js +0 -3
- ksadk/server/static/assets/diagram-LMA3HP47-BhLk6ZtA.js +0 -24
- ksadk/server/static/assets/diagram-OG6HWLK6-D4GNGvuu.js +0 -24
- ksadk/server/static/assets/dist-DyvYLMW9.js +0 -1
- ksadk/server/static/assets/erDiagram-TEJ5UH35-CnfRcY2M.js +0 -85
- ksadk/server/static/assets/eventmodeling-FCH6USID-ChYO-ijM.js +0 -1
- ksadk/server/static/assets/flowDiagram-I6XJVG4X-DGaJjGNJ.js +0 -162
- ksadk/server/static/assets/ganttDiagram-6RSMTGT7-DpCoB2g9.js +0 -292
- ksadk/server/static/assets/gitGraph-WXDBUCRP-BN_0Fk-j.js +0 -1
- ksadk/server/static/assets/gitGraphDiagram-PVQCEYII-9IKVFBVT.js +0 -106
- ksadk/server/static/assets/graphlib-B8gBHxth.js +0 -1
- ksadk/server/static/assets/index-QSwCHuB8.js +0 -177
- ksadk/server/static/assets/index-jOPmTOZH.css +0 -2
- ksadk/server/static/assets/info-J43DQDTF-Cp6o3vId.js +0 -1
- ksadk/server/static/assets/infoDiagram-5YYISTIA-CYIIsb8y.js +0 -2
- ksadk/server/static/assets/katex-DATssjp1.js +0 -265
- ksadk/server/static/assets/mermaid-parser.core-mGAcEwcq.js +0 -161
- ksadk/server/static/assets/packet-YPE3B663-wQzct3cT.js +0 -1
- ksadk/server/static/assets/pie-LRSECV5Y-BgTQiv-9.js +0 -1
- ksadk/server/static/assets/pieDiagram-4H26LBE5-By-ra07M.js +0 -30
- ksadk/server/static/assets/radar-GUYGQ44K-BIq5fXsn.js +0 -1
- ksadk/server/static/assets/requirementDiagram-4Y6WPE33-DpW90iu3.js +0 -84
- ksadk/server/static/assets/stateDiagram-AJRCARHV-DGpd9yFG.js +0 -1
- ksadk/server/static/assets/stateDiagram-v2-BHNVJYJU-B3o579IQ.js +0 -1
- ksadk/server/static/assets/treeView-BLDUP644-Dqi-E0EM.js +0 -1
- ksadk/server/static/assets/treemap-LRROVOQU-ClQP9CJ9.js +0 -1
- ksadk/server/static/assets/vennDiagram-CIIHVFJN-l3Z7-wbP.js +0 -34
- ksadk/server/static/assets/wardley-L42UT6IY-8XLvnNIs.js +0 -1
- ksadk/server/static/assets/wardleyDiagram-YWT4CUSO-BR54GPmr.js +0 -78
- ksadk/server/static/assets/xychartDiagram-2RQKCTM6-SkiH8GsK.js +0 -7
- ksadk/tracing/exporters/langfuse_exporter.py +0 -460
- {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/entry_points.txt +0 -0
- {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/licenses/LICENSE +0 -0
- {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"""Prompt, Context and Memory environment-variable registry entries."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import replace
|
|
6
|
+
|
|
7
|
+
from ksadk.configs.env_var_spec import EnvVarSpec
|
|
8
|
+
|
|
9
|
+
_PCM_ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
|
|
10
|
+
EnvVarSpec("KSADK_BASELINE_COLLECT", "context", "Enable PCM baseline collection.", "0"),
|
|
11
|
+
EnvVarSpec(
|
|
12
|
+
"KSADK_BASELINE_EXECUTION_TARGET", "context", "PCM baseline execution target label."
|
|
13
|
+
),
|
|
14
|
+
EnvVarSpec(
|
|
15
|
+
"KSADK_BASELINE_FLUSH_EACH_TURN",
|
|
16
|
+
"context",
|
|
17
|
+
"Flush PCM baseline output after every turn.",
|
|
18
|
+
"0",
|
|
19
|
+
),
|
|
20
|
+
EnvVarSpec("KSADK_BASELINE_PATH", "context", "PCM baseline JSONL output path."),
|
|
21
|
+
EnvVarSpec("KSADK_COMPACT_HARD_LIMIT_PCT", "context", "Hard compaction threshold percentage."),
|
|
22
|
+
EnvVarSpec(
|
|
23
|
+
"KSADK_COMPACT_HARD_LIMIT_PCT_DEFAULT",
|
|
24
|
+
"context",
|
|
25
|
+
"Default hard compaction threshold percentage.",
|
|
26
|
+
),
|
|
27
|
+
EnvVarSpec("KSADK_COMPACT_SOFT_LIMIT_PCT", "context", "Soft compaction threshold percentage."),
|
|
28
|
+
EnvVarSpec(
|
|
29
|
+
"KSADK_COMPACT_SOFT_LIMIT_PCT_DEFAULT",
|
|
30
|
+
"context",
|
|
31
|
+
"Default soft compaction threshold percentage.",
|
|
32
|
+
),
|
|
33
|
+
EnvVarSpec(
|
|
34
|
+
"KSADK_CONTEXT_CACHE_BREAK_OBSERVABILITY",
|
|
35
|
+
"context",
|
|
36
|
+
"Enable prompt cache-break diagnostics.",
|
|
37
|
+
"0",
|
|
38
|
+
),
|
|
39
|
+
EnvVarSpec(
|
|
40
|
+
"KSADK_CONTEXT_CONTRIBUTOR_ALLOW_PLATFORM_TRUST",
|
|
41
|
+
"context",
|
|
42
|
+
"Allow trusted platform context contributors.",
|
|
43
|
+
"0",
|
|
44
|
+
),
|
|
45
|
+
EnvVarSpec(
|
|
46
|
+
"KSADK_CONTEXT_CONTRIBUTOR_FAILURE_MODE",
|
|
47
|
+
"context",
|
|
48
|
+
"Context contributor failure policy.",
|
|
49
|
+
),
|
|
50
|
+
EnvVarSpec(
|
|
51
|
+
"KSADK_CONTEXT_CONTRIBUTOR_TIMEOUT_MS",
|
|
52
|
+
"context",
|
|
53
|
+
"Context contributor timeout in milliseconds.",
|
|
54
|
+
),
|
|
55
|
+
EnvVarSpec(
|
|
56
|
+
"KSADK_CONTEXT_EMERGENCY_KEEP_TAIL_GROUPS",
|
|
57
|
+
"context",
|
|
58
|
+
"Recent event groups retained during emergency compaction.",
|
|
59
|
+
),
|
|
60
|
+
EnvVarSpec(
|
|
61
|
+
"KSADK_CONTEXT_ENGINE_V2_ENABLED", "context", "Enable the PCM context planner.", "0"
|
|
62
|
+
),
|
|
63
|
+
EnvVarSpec(
|
|
64
|
+
"KSADK_CONTEXT_HARD_LIMIT_PERCENT",
|
|
65
|
+
"context",
|
|
66
|
+
"Hard request-context budget threshold percentage.",
|
|
67
|
+
),
|
|
68
|
+
EnvVarSpec(
|
|
69
|
+
"KSADK_CONTEXT_KEEP_TAIL_GROUPS",
|
|
70
|
+
"context",
|
|
71
|
+
"Recent event groups retained during normal compaction.",
|
|
72
|
+
),
|
|
73
|
+
EnvVarSpec(
|
|
74
|
+
"KSADK_CONTEXT_MAX_RETRY_AFTER_PTL",
|
|
75
|
+
"context",
|
|
76
|
+
"Maximum controlled retries after prompt-too-long.",
|
|
77
|
+
),
|
|
78
|
+
EnvVarSpec(
|
|
79
|
+
"KSADK_CONTEXT_RULE_FILES_MAX_TOKENS", "context", "Combined rule-file token budget."
|
|
80
|
+
),
|
|
81
|
+
EnvVarSpec("KSADK_CONTEXT_RULE_FILE_MAX_TOKENS", "context", "Per rule-file token budget."),
|
|
82
|
+
EnvVarSpec(
|
|
83
|
+
"KSADK_CONTEXT_SAFETY_BUFFER_TOKENS", "context", "Reserved context-window safety buffer."
|
|
84
|
+
),
|
|
85
|
+
EnvVarSpec("KSADK_CONTEXT_SEMANTIC_ENABLED", "context", "Enable semantic compaction.", "0"),
|
|
86
|
+
EnvVarSpec(
|
|
87
|
+
"KSADK_CONTEXT_SEMANTIC_TIMEOUT_MS",
|
|
88
|
+
"context",
|
|
89
|
+
"Semantic compaction timeout in milliseconds.",
|
|
90
|
+
),
|
|
91
|
+
EnvVarSpec(
|
|
92
|
+
"KSADK_CONTEXT_SOFT_LIMIT_PERCENT",
|
|
93
|
+
"context",
|
|
94
|
+
"Soft request-context budget threshold percentage.",
|
|
95
|
+
),
|
|
96
|
+
EnvVarSpec(
|
|
97
|
+
"KSADK_CONTEXT_TOOL_RESULT_MAX_TOKENS",
|
|
98
|
+
"context",
|
|
99
|
+
"Maximum token budget for one tool result.",
|
|
100
|
+
),
|
|
101
|
+
EnvVarSpec(
|
|
102
|
+
"KSADK_CONTEXT_WORKING_STATE_ENABLED",
|
|
103
|
+
"context",
|
|
104
|
+
"Enable structured working-state extraction.",
|
|
105
|
+
"0",
|
|
106
|
+
),
|
|
107
|
+
EnvVarSpec(
|
|
108
|
+
"KSADK_CONTEXT_WORKING_STATE_EXTRACTION_TIMEOUT_MS",
|
|
109
|
+
"context",
|
|
110
|
+
"Working-state extraction timeout in milliseconds.",
|
|
111
|
+
),
|
|
112
|
+
EnvVarSpec(
|
|
113
|
+
"KSADK_CONTEXT_WORKING_STATE_MAX_TOKENS", "context", "Working-state token budget."
|
|
114
|
+
),
|
|
115
|
+
EnvVarSpec(
|
|
116
|
+
"KSADK_CONTEXT_WORKING_STATE_MIN_TOKEN_GROWTH",
|
|
117
|
+
"context",
|
|
118
|
+
"Minimum growth before refreshing working state.",
|
|
119
|
+
),
|
|
120
|
+
EnvVarSpec(
|
|
121
|
+
"KSADK_LTM_FORCE_INMEMORY",
|
|
122
|
+
"memory",
|
|
123
|
+
"Force in-memory long-term-memory backend for tests.",
|
|
124
|
+
"0",
|
|
125
|
+
),
|
|
126
|
+
EnvVarSpec("KSADK_MEMORY_CORE_MAX_TOKENS", "memory", "Core-memory token budget."),
|
|
127
|
+
EnvVarSpec("KSADK_MEMORY_DB_PATH", "memory", "Local PCM memory database path."),
|
|
128
|
+
EnvVarSpec("KSADK_MEMORY_ENABLED", "memory", "Enable platform memory projection.", "0"),
|
|
129
|
+
EnvVarSpec(
|
|
130
|
+
"KSADK_MEMORY_FLUSH_BEFORE_COMPACTION",
|
|
131
|
+
"memory",
|
|
132
|
+
"Flush memory candidates before compaction.",
|
|
133
|
+
"0",
|
|
134
|
+
),
|
|
135
|
+
EnvVarSpec("KSADK_MEMORY_FLUSH_ENABLED", "memory", "Enable memory candidate commit.", "0"),
|
|
136
|
+
EnvVarSpec("KSADK_MEMORY_MIN_SCORE", "memory", "Minimum memory recall relevance score."),
|
|
137
|
+
EnvVarSpec(
|
|
138
|
+
"KSADK_MEMORY_MAX_RECORDS",
|
|
139
|
+
"memory",
|
|
140
|
+
"Maximum retained records for the local PCM memory provider.",
|
|
141
|
+
"10000",
|
|
142
|
+
),
|
|
143
|
+
EnvVarSpec("KSADK_MEMORY_PROVIDER", "memory", "Platform memory provider selector."),
|
|
144
|
+
EnvVarSpec("KSADK_MEMORY_RECALL_MAX_TOKENS", "memory", "Memory recall token budget."),
|
|
145
|
+
EnvVarSpec("KSADK_MEMORY_RECALL_TOP_K", "memory", "Maximum recalled memory items."),
|
|
146
|
+
EnvVarSpec(
|
|
147
|
+
"KSADK_MEMORY_RETENTION_DAYS",
|
|
148
|
+
"memory",
|
|
149
|
+
"Retention period in days for the local PCM memory provider.",
|
|
150
|
+
"90",
|
|
151
|
+
),
|
|
152
|
+
EnvVarSpec(
|
|
153
|
+
"KSADK_MEMORY_WRITE_MODE",
|
|
154
|
+
"memory",
|
|
155
|
+
"Memory write mode: off, explicit-only, or candidate.",
|
|
156
|
+
),
|
|
157
|
+
EnvVarSpec(
|
|
158
|
+
"KSADK_PLATFORM_SAFETY_TEXT",
|
|
159
|
+
"prompt",
|
|
160
|
+
"Platform safety rules injected by the prompt compiler.",
|
|
161
|
+
),
|
|
162
|
+
EnvVarSpec(
|
|
163
|
+
"KSADK_PROMPT_AUTO_DISCOVERY", "prompt", "Enable project prompt-source discovery.", "0"
|
|
164
|
+
),
|
|
165
|
+
EnvVarSpec(
|
|
166
|
+
"KSADK_PROMPT_COMPILER_ENABLED", "prompt", "Enable structured prompt compilation.", "0"
|
|
167
|
+
),
|
|
168
|
+
EnvVarSpec(
|
|
169
|
+
"KSADK_TOKENIZER_PROVIDER", "context", "Tokenizer provider used for context accounting."
|
|
170
|
+
),
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
# PCM rollout, budget and diagnostic environment variables are internal runtime
|
|
174
|
+
# controls. Public users configure the same behavior through AgentSpec policies,
|
|
175
|
+
# so these names intentionally do not expand the public environment reference.
|
|
176
|
+
PCM_ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = tuple(
|
|
177
|
+
replace(item, documented=False) for item in _PCM_ENV_VAR_REGISTRY_ITEMS
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
__all__ = ["PCM_ENV_VAR_REGISTRY_ITEMS"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""Shared environment-variable registry value object."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass(frozen=True)
|
|
9
|
+
class EnvVarSpec:
|
|
10
|
+
name: str
|
|
11
|
+
module: str
|
|
12
|
+
purpose: str
|
|
13
|
+
default: str = ""
|
|
14
|
+
sensitive: bool = False
|
|
15
|
+
documented: bool = True
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
__all__ = ["EnvVarSpec"]
|
ksadk/configs/global_config.py
CHANGED
|
@@ -43,8 +43,13 @@ CONFIG_GROUPS = {
|
|
|
43
43
|
# 嵌套对象,get_env_from_global_config 跳过它(不当 env-var),build 保留它
|
|
44
44
|
"IDENTITY_CACHE",
|
|
45
45
|
],
|
|
46
|
+
"evaluation": [
|
|
47
|
+
"AGENT_EVAL_BASE_URL",
|
|
48
|
+
"AGENT_EVAL_API_TOKEN",
|
|
49
|
+
"AGENT_EVAL_ACCOUNT_ID",
|
|
50
|
+
],
|
|
46
51
|
# 未来可扩展更多分组
|
|
47
|
-
# "observability": ["
|
|
52
|
+
# "observability": ["OTEL_EXPORTER_OTLP_ENDPOINT", ...],
|
|
48
53
|
# "plugins": {...},
|
|
49
54
|
}
|
|
50
55
|
|
ksadk/configs/settings.py
CHANGED
|
@@ -11,8 +11,8 @@ AgentEngine 统一配置管理
|
|
|
11
11
|
print(settings.model.api_key)
|
|
12
12
|
print(settings.model.api_base)
|
|
13
13
|
|
|
14
|
-
#
|
|
15
|
-
print(settings.
|
|
14
|
+
# 访问标准 OpenTelemetry 配置
|
|
15
|
+
print(settings.otel.otlp_endpoint)
|
|
16
16
|
|
|
17
17
|
# 访问 Agent 运行时信息
|
|
18
18
|
print(settings.agent.agent_id)
|
|
@@ -263,73 +263,6 @@ class ModelConfig:
|
|
|
263
263
|
return result
|
|
264
264
|
|
|
265
265
|
|
|
266
|
-
# =============================================================================
|
|
267
|
-
# Langfuse 配置
|
|
268
|
-
# =============================================================================
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
@dataclass
|
|
272
|
-
class LangfuseConfig:
|
|
273
|
-
"""Langfuse 可观测性配置
|
|
274
|
-
|
|
275
|
-
标准环境变量 (Langfuse 官方):
|
|
276
|
-
LANGFUSE_PUBLIC_KEY - API Public Key
|
|
277
|
-
LANGFUSE_SECRET_KEY - API Secret Key
|
|
278
|
-
LANGFUSE_HOST - Langfuse 服务地址
|
|
279
|
-
|
|
280
|
-
Serverless 平台扩展:
|
|
281
|
-
LANGFUSE_PROJECT_ID - 项目 ID (区分用户)
|
|
282
|
-
LANGCHAIN_TRACING_V2 - 启用 LangChain 追踪
|
|
283
|
-
"""
|
|
284
|
-
|
|
285
|
-
@property
|
|
286
|
-
def public_key(self) -> Optional[str]:
|
|
287
|
-
return os.getenv("LANGFUSE_PUBLIC_KEY")
|
|
288
|
-
|
|
289
|
-
@property
|
|
290
|
-
def secret_key(self) -> Optional[str]:
|
|
291
|
-
return os.getenv("LANGFUSE_SECRET_KEY")
|
|
292
|
-
|
|
293
|
-
@property
|
|
294
|
-
def host(self) -> str:
|
|
295
|
-
return (
|
|
296
|
-
_get_env(
|
|
297
|
-
"LANGFUSE_HOST",
|
|
298
|
-
"LANGFUSE_BASE_URL",
|
|
299
|
-
default="http://localhost:3000",
|
|
300
|
-
)
|
|
301
|
-
or "http://localhost:3000"
|
|
302
|
-
)
|
|
303
|
-
|
|
304
|
-
@property
|
|
305
|
-
def project_id(self) -> Optional[str]:
|
|
306
|
-
"""Langfuse 项目 ID (Serverless 平台扩展)"""
|
|
307
|
-
return os.getenv("LANGFUSE_PROJECT_ID")
|
|
308
|
-
|
|
309
|
-
@property
|
|
310
|
-
def tracing_enabled(self) -> bool:
|
|
311
|
-
"""是否启用 LangChain tracing"""
|
|
312
|
-
return os.getenv("LANGCHAIN_TRACING_V2", "").lower() == "true"
|
|
313
|
-
|
|
314
|
-
@property
|
|
315
|
-
def is_enabled(self) -> bool:
|
|
316
|
-
"""是否启用 Langfuse (有 public_key 就启用)"""
|
|
317
|
-
return bool(self.public_key)
|
|
318
|
-
|
|
319
|
-
@property
|
|
320
|
-
def is_configured(self) -> bool:
|
|
321
|
-
"""是否完整配置"""
|
|
322
|
-
return bool(self.public_key and self.secret_key)
|
|
323
|
-
|
|
324
|
-
def to_dict(self) -> dict:
|
|
325
|
-
"""转换为字典"""
|
|
326
|
-
return {
|
|
327
|
-
"public_key": self.public_key,
|
|
328
|
-
"secret_key": self.secret_key,
|
|
329
|
-
"host": self.host,
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
|
|
333
266
|
# =============================================================================
|
|
334
267
|
# Agent 配置
|
|
335
268
|
# =============================================================================
|
|
@@ -438,39 +371,6 @@ class AgentConfig:
|
|
|
438
371
|
"""是否有 Agent 信息"""
|
|
439
372
|
return bool(self.agent_id or self.agent_name)
|
|
440
373
|
|
|
441
|
-
# ------------------
|
|
442
|
-
# Langfuse 集成方法
|
|
443
|
-
# ------------------
|
|
444
|
-
|
|
445
|
-
def to_langfuse_params(self) -> dict:
|
|
446
|
-
"""转换为 Langfuse trace() 方法的原生参数"""
|
|
447
|
-
params: Dict[str, Any] = {}
|
|
448
|
-
if self.session_id:
|
|
449
|
-
params["session_id"] = self.session_id
|
|
450
|
-
if self.user_id:
|
|
451
|
-
params["user_id"] = self.user_id
|
|
452
|
-
if self.tags:
|
|
453
|
-
params["tags"] = self.tags
|
|
454
|
-
if self.version:
|
|
455
|
-
params["version"] = self.version
|
|
456
|
-
return params
|
|
457
|
-
|
|
458
|
-
def to_langfuse_metadata(self) -> dict:
|
|
459
|
-
"""转换为 Langfuse metadata 字段"""
|
|
460
|
-
metadata = {}
|
|
461
|
-
if self.agent_id:
|
|
462
|
-
metadata["agent_id"] = self.agent_id
|
|
463
|
-
if self.agent_name:
|
|
464
|
-
metadata["agent_name"] = self.agent_name
|
|
465
|
-
if self.tenant_id:
|
|
466
|
-
metadata["tenant_id"] = self.tenant_id
|
|
467
|
-
if self.environment:
|
|
468
|
-
metadata["environment"] = self.environment
|
|
469
|
-
if self.extra_metadata:
|
|
470
|
-
metadata.update(self.extra_metadata)
|
|
471
|
-
return metadata
|
|
472
|
-
|
|
473
|
-
|
|
474
374
|
# =============================================================================
|
|
475
375
|
# 金山云配置
|
|
476
376
|
# =============================================================================
|
|
@@ -594,16 +494,15 @@ class Settings:
|
|
|
594
494
|
if settings.model.is_configured:
|
|
595
495
|
llm = LiteLLM(api_key=settings.model.api_key)
|
|
596
496
|
|
|
597
|
-
#
|
|
598
|
-
if settings.
|
|
599
|
-
setup_tracing(
|
|
497
|
+
# 标准 OTLP 配置
|
|
498
|
+
if settings.otel.is_enabled:
|
|
499
|
+
setup_tracing()
|
|
600
500
|
|
|
601
501
|
# Agent 信息
|
|
602
502
|
print(settings.agent.agent_id)
|
|
603
503
|
"""
|
|
604
504
|
|
|
605
505
|
model: ModelConfig = field(default_factory=ModelConfig)
|
|
606
|
-
langfuse: LangfuseConfig = field(default_factory=LangfuseConfig)
|
|
607
506
|
agent: AgentConfig = field(default_factory=AgentConfig)
|
|
608
507
|
cloud: KingsoftCloudConfig = field(default_factory=KingsoftCloudConfig)
|
|
609
508
|
code: CodeModeConfig = field(default_factory=CodeModeConfig)
|
|
@@ -615,8 +514,6 @@ class Settings:
|
|
|
615
514
|
lines.append(
|
|
616
515
|
f" Model: {'✅ Configured' if self.model.is_configured else '❌ Not configured'}"
|
|
617
516
|
)
|
|
618
|
-
lines.append(f" Langfuse: {'✅ Enabled' if self.langfuse.is_enabled else '⚪ Disabled'}")
|
|
619
|
-
|
|
620
517
|
agent_info = self.agent.agent_id or self.agent.agent_name
|
|
621
518
|
lines.append(f" Agent: {'✅ ' + agent_info if agent_info else '⚪ No info'}")
|
|
622
519
|
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""Context Engine —— Prompt/Context/Memory 的运行时上下文协调层。
|
|
2
|
+
|
|
3
|
+
数据模型、capability 合同与 shadow 可观测基线已落地;后续 PR 新增 planner / assembler /
|
|
4
|
+
policies / contributors 的实际逻辑。本模块导出稳定类型与运行时合同。
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from ksadk.context_engine.assembler import AssembledInput, ContextAssembler, assemble
|
|
8
|
+
from ksadk.context_engine.capabilities import (
|
|
9
|
+
DEFAULT_CONTEXT_CAPABILITIES,
|
|
10
|
+
CapabilityCircuitOpen,
|
|
11
|
+
ContextAccuracy,
|
|
12
|
+
ContextCapabilities,
|
|
13
|
+
ContextIntegrationMode,
|
|
14
|
+
ContextOwner,
|
|
15
|
+
DeploymentMode,
|
|
16
|
+
adk_context_capabilities,
|
|
17
|
+
assert_capability_not_circuit_open,
|
|
18
|
+
capabilities_for_runner,
|
|
19
|
+
capabilities_for_runtime_type,
|
|
20
|
+
capability_hash,
|
|
21
|
+
codex_context_capabilities,
|
|
22
|
+
deepagents_context_capabilities,
|
|
23
|
+
detect_capability_mismatch,
|
|
24
|
+
is_capability_circuit_open,
|
|
25
|
+
langchain_context_capabilities,
|
|
26
|
+
langgraph_context_capabilities,
|
|
27
|
+
mark_capability_mismatch,
|
|
28
|
+
reset_capability_circuit,
|
|
29
|
+
)
|
|
30
|
+
from ksadk.context_engine.models import (
|
|
31
|
+
CONTEXT_POLICY_VERSION,
|
|
32
|
+
ContextBudget,
|
|
33
|
+
ContextDecision,
|
|
34
|
+
ContextItem,
|
|
35
|
+
ContextKind,
|
|
36
|
+
ContextPlan,
|
|
37
|
+
)
|
|
38
|
+
from ksadk.context_engine.planner import ContextPlanner, build_budget
|
|
39
|
+
from ksadk.context_engine.policies import (
|
|
40
|
+
ContextBudgetPolicy,
|
|
41
|
+
ContextPolicy,
|
|
42
|
+
SectionBudget,
|
|
43
|
+
compute_budget_tokens,
|
|
44
|
+
)
|
|
45
|
+
from ksadk.context_engine.projection import PROJECTION_VERSION, ProjectionResult
|
|
46
|
+
from ksadk.context_engine.tokenizer import (
|
|
47
|
+
HEURISTIC_TOKENIZER_NAME,
|
|
48
|
+
HeuristicTokenCounter,
|
|
49
|
+
TokenCounter,
|
|
50
|
+
get_default_token_counter,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
__all__ = [
|
|
54
|
+
"AssembledInput",
|
|
55
|
+
"CONTEXT_POLICY_VERSION",
|
|
56
|
+
"ContextAssembler",
|
|
57
|
+
"ContextAccuracy",
|
|
58
|
+
"ContextBudget",
|
|
59
|
+
"ContextBudgetPolicy",
|
|
60
|
+
"ContextCapabilities",
|
|
61
|
+
"ContextDecision",
|
|
62
|
+
"ContextIntegrationMode",
|
|
63
|
+
"ContextItem",
|
|
64
|
+
"ContextKind",
|
|
65
|
+
"ContextOwner",
|
|
66
|
+
"ContextPlan",
|
|
67
|
+
"ContextPlanner",
|
|
68
|
+
"ContextPolicy",
|
|
69
|
+
"DEFAULT_CONTEXT_CAPABILITIES",
|
|
70
|
+
"DeploymentMode",
|
|
71
|
+
"HEURISTIC_TOKENIZER_NAME",
|
|
72
|
+
"HeuristicTokenCounter",
|
|
73
|
+
"PROJECTION_VERSION",
|
|
74
|
+
"ProjectionResult",
|
|
75
|
+
"SectionBudget",
|
|
76
|
+
"TokenCounter",
|
|
77
|
+
"adk_context_capabilities",
|
|
78
|
+
"assemble",
|
|
79
|
+
"build_budget",
|
|
80
|
+
"capabilities_for_runner",
|
|
81
|
+
"capabilities_for_runtime_type",
|
|
82
|
+
"capability_hash",
|
|
83
|
+
"codex_context_capabilities",
|
|
84
|
+
"compute_budget_tokens",
|
|
85
|
+
"deepagents_context_capabilities",
|
|
86
|
+
"detect_capability_mismatch",
|
|
87
|
+
"get_default_token_counter",
|
|
88
|
+
"is_capability_circuit_open",
|
|
89
|
+
"langchain_context_capabilities",
|
|
90
|
+
"langgraph_context_capabilities",
|
|
91
|
+
"mark_capability_mismatch",
|
|
92
|
+
"reset_capability_circuit",
|
|
93
|
+
"assert_capability_not_circuit_open",
|
|
94
|
+
"CapabilityCircuitOpen",
|
|
95
|
+
"allowed_ownership_choices",
|
|
96
|
+
"validate_ownership_for_runtime",
|
|
97
|
+
"resolve_ownership",
|
|
98
|
+
]
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""Context Assembler —— 把 ContextPlan.selected 投影成 messages/responses 输入(方案 §8)。
|
|
2
|
+
|
|
3
|
+
Assembler 是 KsADK-owned(``ksadk_hosted``)路径的最终输入组装器:把 ``ContextPlan.selected``
|
|
4
|
+
按方案 §7.4 的稳定前缀→部署级→动态后缀顺序投影成 Chat/Responses 格式。assisted/native 路径
|
|
5
|
+
不调用本模块,由 RuntimeAdapter 自行投影(方案 §6.2)。
|
|
6
|
+
|
|
7
|
+
第一个版本只实现 Chat messages 与 Responses items 两种合法投影,不含模型调用;actual_token
|
|
8
|
+
由调用方在收到 usage 后回填 ``ContextPlan.runtime_reported_input_tokens``。
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from dataclasses import dataclass
|
|
14
|
+
from typing import Any, Literal
|
|
15
|
+
|
|
16
|
+
from ksadk.context_engine.models import ContextItem, ContextPlan
|
|
17
|
+
|
|
18
|
+
ProjectionFormat = Literal["chat", "responses"]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass(frozen=True)
|
|
22
|
+
class AssembledInput:
|
|
23
|
+
"""组装后的模型输入(shadow/可观测用,不直接发模型)。"""
|
|
24
|
+
|
|
25
|
+
format: ProjectionFormat
|
|
26
|
+
system: str
|
|
27
|
+
messages: list[dict[str, Any]]
|
|
28
|
+
responses_items: list[dict[str, Any]]
|
|
29
|
+
estimated_tokens: int
|
|
30
|
+
warnings: tuple[str, ...] = ()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _item_text(item: ContextItem) -> str:
|
|
34
|
+
content = item.content
|
|
35
|
+
if isinstance(content, str):
|
|
36
|
+
return content
|
|
37
|
+
if isinstance(content, list):
|
|
38
|
+
parts: list[str] = []
|
|
39
|
+
for part in content:
|
|
40
|
+
if isinstance(part, str):
|
|
41
|
+
parts.append(part)
|
|
42
|
+
elif isinstance(part, dict):
|
|
43
|
+
t = part.get("text") or part.get("content")
|
|
44
|
+
if isinstance(t, str):
|
|
45
|
+
parts.append(t)
|
|
46
|
+
return "\n".join(parts)
|
|
47
|
+
return str(content or "")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _split_prompt_and_rest(selected: list[ContextItem]) -> tuple[str, list[ContextItem]]:
|
|
51
|
+
"""稳定前缀(compiled_prompt)单独提为 system,其余按顺序进入 messages。"""
|
|
52
|
+
prompt_text = ""
|
|
53
|
+
rest: list[ContextItem] = []
|
|
54
|
+
for item in selected:
|
|
55
|
+
if item.kind == "compiled_prompt":
|
|
56
|
+
prompt_text = (
|
|
57
|
+
(prompt_text + "\n\n" + _item_text(item)).strip("\n\n")
|
|
58
|
+
if prompt_text
|
|
59
|
+
else _item_text(item)
|
|
60
|
+
)
|
|
61
|
+
else:
|
|
62
|
+
rest.append(item)
|
|
63
|
+
return prompt_text, rest
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _role_for(item: ContextItem) -> str:
|
|
67
|
+
if item.kind == "current_input":
|
|
68
|
+
return "user"
|
|
69
|
+
if item.kind == "history_round":
|
|
70
|
+
# history_round 的 content 形如 {"role": "...", "content": ...} 或带 role metadata
|
|
71
|
+
role = item.metadata.get("role")
|
|
72
|
+
if isinstance(role, str):
|
|
73
|
+
return role
|
|
74
|
+
return "assistant"
|
|
75
|
+
if item.kind == "tool_result":
|
|
76
|
+
return "tool"
|
|
77
|
+
return "assistant"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _current_input_last(items: list[ContextItem]) -> list[ContextItem]:
|
|
81
|
+
"""Keep the canonical current input at the end of Chat chronology.
|
|
82
|
+
|
|
83
|
+
Planner order represents retention priority, not physical message order. If
|
|
84
|
+
``current_input`` is projected before selected history, the runner can treat
|
|
85
|
+
it as history and inject it again as the new input. Preserve every other
|
|
86
|
+
item's relative order and move only ``current_input`` to the end.
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
return [item for item in items if item.kind != "current_input"] + [
|
|
90
|
+
item for item in items if item.kind == "current_input"
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class ContextAssembler:
|
|
95
|
+
"""把 ContextPlan 投影成 Chat/Responses 输入(方案 §8)。
|
|
96
|
+
|
|
97
|
+
纯函数式、无副作用。``assemble_chat`` 输出 OpenAI Chat 风格 messages;
|
|
98
|
+
``assemble_responses`` 输出 Responses API items。两者共用同一 selected 顺序。
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
def assemble_chat(self, plan: ContextPlan) -> AssembledInput:
|
|
102
|
+
system, rest = _split_prompt_and_rest(plan.selected)
|
|
103
|
+
rest = _current_input_last(rest)
|
|
104
|
+
messages: list[dict[str, Any]] = []
|
|
105
|
+
if system:
|
|
106
|
+
messages.append({"role": "system", "content": system})
|
|
107
|
+
warnings: list[str] = []
|
|
108
|
+
for item in rest:
|
|
109
|
+
role = _role_for(item)
|
|
110
|
+
content = _item_text(item)
|
|
111
|
+
if item.metadata.get("truncated_to_tokens") is not None:
|
|
112
|
+
warnings.append(f"{item.item_id}:truncated")
|
|
113
|
+
if item.metadata.get("replaced_with_artifact_summary"):
|
|
114
|
+
warnings.append(f"{item.item_id}:artifact_summary")
|
|
115
|
+
messages.append({"role": role, "content": content, "name": item.metadata.get("name")})
|
|
116
|
+
return AssembledInput(
|
|
117
|
+
format="chat",
|
|
118
|
+
system=system,
|
|
119
|
+
messages=messages,
|
|
120
|
+
responses_items=[],
|
|
121
|
+
estimated_tokens=plan.planned_input_tokens,
|
|
122
|
+
warnings=tuple(warnings),
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
def assemble_responses(self, plan: ContextPlan) -> AssembledInput:
|
|
126
|
+
system, rest = _split_prompt_and_rest(plan.selected)
|
|
127
|
+
rest = _current_input_last(rest)
|
|
128
|
+
items: list[dict[str, Any]] = []
|
|
129
|
+
if system:
|
|
130
|
+
items.append(
|
|
131
|
+
{
|
|
132
|
+
"type": "message",
|
|
133
|
+
"role": "system",
|
|
134
|
+
"content": [{"type": "input_text", "text": system}],
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
warnings: list[str] = []
|
|
138
|
+
for item in rest:
|
|
139
|
+
role = _role_for(item)
|
|
140
|
+
content = _item_text(item)
|
|
141
|
+
if item.metadata.get("truncated_to_tokens") is not None:
|
|
142
|
+
warnings.append(f"{item.item_id}:truncated")
|
|
143
|
+
if item.kind == "tool_result":
|
|
144
|
+
# Responses function_call_output
|
|
145
|
+
call_id = str(
|
|
146
|
+
item.metadata.get("call_id") or item.metadata.get("tool_call_id") or ""
|
|
147
|
+
)
|
|
148
|
+
items.append(
|
|
149
|
+
{"type": "function_call_output", "call_id": call_id, "output": content}
|
|
150
|
+
)
|
|
151
|
+
else:
|
|
152
|
+
item_type = "input_text" if role == "user" else "output_text"
|
|
153
|
+
items.append(
|
|
154
|
+
{
|
|
155
|
+
"type": "message",
|
|
156
|
+
"role": role,
|
|
157
|
+
"content": [{"type": item_type, "text": content}],
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
return AssembledInput(
|
|
161
|
+
format="responses",
|
|
162
|
+
system=system,
|
|
163
|
+
messages=[],
|
|
164
|
+
responses_items=items,
|
|
165
|
+
estimated_tokens=plan.planned_input_tokens,
|
|
166
|
+
warnings=tuple(warnings),
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def assemble(plan: ContextPlan, *, fmt: ProjectionFormat = "chat") -> AssembledInput:
|
|
171
|
+
"""便捷入口。"""
|
|
172
|
+
asm = ContextAssembler()
|
|
173
|
+
return asm.assemble_chat(plan) if fmt == "chat" else asm.assemble_responses(plan)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
__all__ = ["AssembledInput", "ContextAssembler", "ProjectionFormat", "assemble"]
|