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.
Files changed (494) hide show
  1. {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/METADATA +43 -7
  2. agentengine_sdk_python-0.8.2.dist-info/RECORD +778 -0
  3. {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/WHEEL +1 -1
  4. ksadk/a2a/__init__.py +2 -0
  5. ksadk/a2a/_space_client_events.py +381 -0
  6. ksadk/a2a/bootstrap.py +0 -2
  7. ksadk/a2a/card.py +6 -111
  8. ksadk/a2a/control_plane.py +239 -1
  9. ksadk/a2a/event_adapter.py +156 -64
  10. ksadk/a2a/executor.py +195 -172
  11. ksadk/a2a/routes.py +12 -5
  12. ksadk/a2a/server.py +1 -8
  13. ksadk/a2a/service_env.py +33 -0
  14. ksadk/a2a/space_client.py +43 -349
  15. ksadk/a2a_card.py +101 -0
  16. ksadk/a2ui/core.py +222 -53
  17. ksadk/agui/_agent_helpers.py +243 -0
  18. ksadk/agui/a2ui_projection.py +12 -5
  19. ksadk/agui/agent.py +474 -275
  20. ksadk/agui/config.py +11 -5
  21. ksadk/agui/routes.py +7 -15
  22. ksadk/api/client.py +530 -40
  23. ksadk/api/environment.py +27 -0
  24. ksadk/builders/code_builder.py +352 -53
  25. ksadk/builders/container_builder.py +71 -44
  26. ksadk/builders/framework_requirements.py +2 -1
  27. ksadk/builders/ks3_uploader.py +2 -2
  28. ksadk/builders/managed_runtime_builder.py +60 -28
  29. ksadk/cli/__init__.py +25 -0
  30. ksadk/cli/cmd_a2a.py +18 -31
  31. ksadk/cli/cmd_create.py +13 -26
  32. ksadk/cli/cmd_dashboard.py +15 -1
  33. ksadk/cli/cmd_deploy.py +28 -3
  34. ksadk/cli/cmd_eval.py +443 -0
  35. ksadk/cli/cmd_evalset.py +284 -0
  36. ksadk/cli/cmd_files.py +5 -1
  37. ksadk/cli/cmd_hermes.py +137 -163
  38. ksadk/cli/cmd_invoke.py +28 -38
  39. ksadk/cli/cmd_launch.py +12 -0
  40. ksadk/cli/cmd_managed_runtime.py +95 -0
  41. ksadk/cli/cmd_observe.py +85 -0
  42. ksadk/cli/cmd_openclaw.py +85 -479
  43. ksadk/cli/cmd_replay.py +28 -4
  44. ksadk/cli/cmd_run.py +29 -67
  45. ksadk/cli/cmd_studio.py +201 -0
  46. ksadk/cli/cmd_web.py +15 -6
  47. ksadk/cli/dry_run.py +2 -1
  48. ksadk/cli/env_options.py +83 -0
  49. ksadk/cli/global_options.py +3 -1
  50. ksadk/cli/hermes_env.py +151 -0
  51. ksadk/cli/invoke_payload.py +49 -0
  52. ksadk/cli/network_options.py +7 -5
  53. ksadk/cli/openclaw_env.py +458 -0
  54. ksadk/cli/runtime_bootstrap.py +51 -0
  55. ksadk/cli/ui.py +6 -0
  56. ksadk/cli/workflow_common.py +5 -5
  57. ksadk/codex/__init__.py +3 -3
  58. ksadk/codex/client.py +833 -49
  59. ksadk/codex/phase.py +1 -1
  60. ksadk/codex/runtime.py +720 -127
  61. ksadk/common/kop_client.py +232 -0
  62. ksadk/configs/__init__.py +1 -3
  63. ksadk/configs/env_registry.py +244 -45
  64. ksadk/configs/env_registry_pcm.py +181 -0
  65. ksadk/configs/env_var_spec.py +18 -0
  66. ksadk/configs/global_config.py +6 -1
  67. ksadk/configs/settings.py +5 -108
  68. ksadk/context_engine/__init__.py +98 -0
  69. ksadk/context_engine/assembler.py +176 -0
  70. ksadk/context_engine/baseline.py +419 -0
  71. ksadk/context_engine/cache_observability.py +228 -0
  72. ksadk/context_engine/capabilities.py +443 -0
  73. ksadk/context_engine/contributors.py +344 -0
  74. ksadk/context_engine/hosted_pipeline.py +417 -0
  75. ksadk/context_engine/models.py +117 -0
  76. ksadk/context_engine/planner.py +698 -0
  77. ksadk/context_engine/policies.py +319 -0
  78. ksadk/context_engine/projection.py +31 -0
  79. ksadk/context_engine/shadow_plan.py +266 -0
  80. ksadk/context_engine/tokenizer.py +164 -0
  81. ksadk/conversations/__init__.py +85 -94
  82. ksadk/conversations/context.py +126 -6
  83. ksadk/conversations/message_projection.py +292 -28
  84. ksadk/conversations/model_context.py +49 -3
  85. ksadk/conversations/runtime_compaction.py +207 -5
  86. ksadk/conversations/runtime_input.py +193 -3
  87. ksadk/conversations/runtime_invocation.py +81 -3
  88. ksadk/conversations/runtime_observability.py +157 -4
  89. ksadk/conversations/runtime_payloads.py +42 -0
  90. ksadk/conversations/runtime_preparation.py +280 -2
  91. ksadk/conversations/runtime_resume.py +71 -32
  92. ksadk/conversations/runtime_stream_events.py +94 -9
  93. ksadk/conversations/runtime_streaming.py +175 -22
  94. ksadk/conversations/semantic_summary.py +311 -1
  95. ksadk/conversations/session_lock.py +51 -0
  96. ksadk/deployment/env_forward.py +72 -0
  97. ksadk/deployment/managed_runtime.py +38 -0
  98. ksadk/deployment/manager.py +24 -8
  99. ksadk/deployment/providers/serverless.py +228 -92
  100. ksadk/evaluation/__init__.py +116 -0
  101. ksadk/evaluation/a2a_adapter.py +452 -0
  102. ksadk/evaluation/adapters.py +67 -0
  103. ksadk/evaluation/agent_eval_client.py +395 -0
  104. ksadk/evaluation/cloud_binding.py +80 -0
  105. ksadk/evaluation/cloud_converter.py +194 -0
  106. ksadk/evaluation/cloud_service.py +199 -0
  107. ksadk/evaluation/contracts.py +478 -0
  108. ksadk/evaluation/evalset.py +351 -0
  109. ksadk/evaluation/evaluators.py +627 -0
  110. ksadk/evaluation/evidence.py +258 -0
  111. ksadk/evaluation/executor.py +143 -0
  112. ksadk/evaluation/local_adapter.py +550 -0
  113. ksadk/evaluation/service_env.py +27 -0
  114. ksadk/evaluation/storage.py +68 -0
  115. ksadk/evaluation/studio_build_adapter.py +253 -0
  116. ksadk/evaluation/target.py +82 -0
  117. ksadk/events/__init__.py +13 -13
  118. ksadk/events/_v1_compat/__init__.py +1 -0
  119. ksadk/events/_v1_compat/models.py +299 -0
  120. ksadk/events/_v1_compat/parser.py +247 -0
  121. ksadk/events/_v1_compat/projection.py +753 -0
  122. ksadk/events/adapters/__init__.py +34 -0
  123. ksadk/events/adapters/_a2a_snapshot.py +622 -0
  124. ksadk/events/adapters/_a2a_support.py +275 -0
  125. ksadk/events/adapters/_codex_interactions.py +375 -0
  126. ksadk/events/adapters/_codex_items.py +801 -0
  127. ksadk/events/adapters/_codex_validators.py +311 -0
  128. ksadk/events/adapters/_langgraph_support.py +785 -0
  129. ksadk/events/adapters/a2a.py +841 -0
  130. ksadk/events/adapters/adk.py +503 -0
  131. ksadk/events/adapters/codex.py +717 -0
  132. ksadk/events/adapters/langgraph.py +745 -0
  133. ksadk/events/canonical.py +440 -0
  134. ksadk/events/canonical_replay.py +497 -0
  135. ksadk/events/canonical_store.py +468 -0
  136. ksadk/events/cold_recovery.py +257 -0
  137. ksadk/events/content.py +89 -0
  138. ksadk/events/identity.py +86 -0
  139. ksadk/events/pipeline.py +455 -0
  140. ksadk/events/projections.py +66 -0
  141. ksadk/events/reducer.py +661 -0
  142. ksadk/events/replay.py +3 -36
  143. ksadk/events/runtime_event.py +20 -256
  144. ksadk/events/session_event.py +324 -0
  145. ksadk/events/store.py +3 -316
  146. ksadk/events/v1_compat.py +41 -0
  147. ksadk/harness/__init__.py +3 -2
  148. ksadk/harness/app.py +114 -123
  149. ksadk/harness/config.py +1 -1
  150. ksadk/harness/runtime.py +467 -0
  151. ksadk/hermes_terminal.py +5 -0
  152. ksadk/identity/resolver.py +4 -3
  153. ksadk/interaction/__init__.py +28 -0
  154. ksadk/interaction/contracts.py +136 -0
  155. ksadk/interaction/ledger.py +189 -0
  156. ksadk/interaction/provider.py +122 -0
  157. ksadk/interaction/providers/__init__.py +52 -0
  158. ksadk/interaction/providers/adk.py +40 -0
  159. ksadk/interaction/providers/codex.py +94 -0
  160. ksadk/interaction/providers/langgraph.py +58 -0
  161. ksadk/kernel/__init__.py +117 -0
  162. ksadk/kernel/authorization.py +258 -0
  163. ksadk/kernel/bootstrap.py +1074 -0
  164. ksadk/kernel/contract_fingerprints.py +61 -0
  165. ksadk/kernel/contracts.py +362 -0
  166. ksadk/kernel/control.py +219 -0
  167. ksadk/kernel/errors.py +79 -0
  168. ksadk/kernel/ingress.py +1102 -0
  169. ksadk/kernel/mapping.py +111 -0
  170. ksadk/kernel/memory_store.py +1133 -0
  171. ksadk/kernel/postgres_store.py +1756 -0
  172. ksadk/kernel/recovery.py +452 -0
  173. ksadk/kernel/runtime_identity.py +103 -0
  174. ksadk/kernel/sql/001_agent_kernel.sql +120 -0
  175. ksadk/kernel/sqlite_store.py +1410 -0
  176. ksadk/kernel/state.py +145 -0
  177. ksadk/kernel/store.py +232 -0
  178. ksadk/kernel/worker.py +953 -0
  179. ksadk/knowledge_base/client.py +22 -4
  180. ksadk/knowledge_base/service.py +32 -5
  181. ksadk/managed_a2a_card.py +160 -0
  182. ksadk/managed_runtime.py +16 -9
  183. ksadk/memory/__init__.py +61 -0
  184. ksadk/memory/adk/backends/base_ltm_backend.py +96 -1
  185. ksadk/memory/adk/backends/http_ltm_backend.py +14 -5
  186. ksadk/memory/adk/backends/inmemory_ltm_backend.py +136 -3
  187. ksadk/memory/adk/backends/sdk_ltm_backend.py +394 -5
  188. ksadk/memory/adk/backends/sqlite_ltm_backend.py +95 -0
  189. ksadk/memory/adk/long_term_memory.py +3 -2
  190. ksadk/memory/coordinator.py +461 -0
  191. ksadk/memory/events.py +202 -0
  192. ksadk/memory/extraction.py +228 -0
  193. ksadk/memory/ltm_backend_factory.py +16 -3
  194. ksadk/memory/models.py +316 -0
  195. ksadk/memory/policy.py +215 -0
  196. ksadk/memory/provider.py +47 -0
  197. ksadk/memory/provider_adapter.py +159 -0
  198. ksadk/memory/provider_resolver.py +71 -0
  199. ksadk/memory/providers/__init__.py +5 -0
  200. ksadk/memory/providers/local_sqlite.py +490 -0
  201. ksadk/memory/resolved_policy.py +145 -0
  202. ksadk/memory/service.py +198 -8
  203. ksadk/memory/tool.py +4 -0
  204. ksadk/model_proxy/bootstrap.py +16 -9
  205. ksadk/model_proxy/config.py +22 -1
  206. ksadk/model_proxy/detect.py +202 -9
  207. ksadk/model_proxy/namespace.py +67 -15
  208. ksadk/model_proxy/server.py +168 -6
  209. ksadk/model_proxy/transform.py +105 -3
  210. ksadk/observability/__init__.py +25 -0
  211. ksadk/observability/session_log.py +420 -0
  212. ksadk/observability/trajectory.py +105 -0
  213. ksadk/prompts/__init__.py +71 -0
  214. ksadk/prompts/compiler.py +215 -0
  215. ksadk/prompts/models.py +82 -0
  216. ksadk/prompts/projection.py +89 -0
  217. ksadk/prompts/resolved.py +137 -0
  218. ksadk/prompts/sources.py +233 -0
  219. ksadk/runners/_langgraph_runner_streams.py +822 -0
  220. ksadk/runners/adk_runner.py +14 -31
  221. ksadk/runners/base_runner.py +44 -3
  222. ksadk/runners/factory.py +3 -3
  223. ksadk/runners/langgraph_runner.py +252 -433
  224. ksadk/runners/utils/__init__.py +0 -10
  225. ksadk/runners/utils/loader.py +16 -0
  226. ksadk/runtime/__init__.py +67 -41
  227. ksadk/runtime/_runner_adapter/__init__.py +1 -0
  228. ksadk/runtime/_runner_adapter/stream_mapping.py +788 -0
  229. ksadk/runtime/adapter.py +199 -16
  230. ksadk/runtime/conversation_execution.py +687 -0
  231. ksadk/runtime/executor.py +392 -0
  232. ksadk/runtime/factory.py +342 -0
  233. ksadk/runtime/framework_adapters.py +6 -12
  234. ksadk/runtime/hosted_finalizer.py +268 -0
  235. ksadk/runtime/launch.py +61 -0
  236. ksadk/runtime/preprocessing.py +49 -14
  237. ksadk/runtime/runner_adapter.py +330 -391
  238. ksadk/runtime/runner_loading.py +36 -0
  239. ksadk/runtime/usage.py +33 -0
  240. ksadk/sandbox/backends/e2b.py +36 -3
  241. ksadk/server/__init__.py +39 -4
  242. ksadk/server/app.py +18 -492
  243. ksadk/server/composition.py +36 -2
  244. ksadk/server/factory.py +210 -149
  245. ksadk/server/routes/common.py +15 -46
  246. ksadk/server/routes/control.py +13 -9
  247. ksadk/server/routes/kernel_ingress.py +258 -0
  248. ksadk/server/routes/misc.py +10 -33
  249. ksadk/server/routes/models.py +14 -6
  250. ksadk/server/routes/openai_compat.py +129 -27
  251. ksadk/server/routes/projection.py +84 -16
  252. ksadk/server/routes/run.py +347 -460
  253. ksadk/server/routes/sessions.py +37 -40
  254. ksadk/server/routes/streaming.py +52 -7
  255. ksadk/server/routes/workspace.py +54 -21
  256. ksadk/server/static/assets/{ArtifactsPanel-Cjnqt-8W.js → ArtifactsPanel-DSU1sWD_.js} +1 -1
  257. ksadk/server/static/assets/{CodeBlock-BqyqZfuB.js → CodeBlock-DOH6MVcn.js} +4 -4
  258. ksadk/server/static/assets/{MathMessageMarkdown-BpH7jiFM.js → MathMessageMarkdown-BL8my1R2.js} +4 -4
  259. ksadk/server/static/assets/MathMessageMarkdown-BorAY7qD.css +1 -0
  260. ksadk/server/static/assets/MermaidBlock-Dz4IP-Tx.js +312 -0
  261. ksadk/server/static/assets/NativeTerminalPanel-DUrK0JpZ.js +1 -0
  262. ksadk/server/static/assets/abnfDiagram-VCTEODGH-g20pFzNV.js +1 -0
  263. ksadk/server/static/assets/arc-C4FzinUA.js +1 -0
  264. ksadk/server/static/assets/architecture-7GRP2DOG-DjKratdf.js +1 -0
  265. ksadk/server/static/assets/architectureDiagram-5GKGNRK7-DpIqL5h4.js +36 -0
  266. ksadk/server/static/assets/blockDiagram-NRAW4CY4-BjkljTNz.js +129 -0
  267. ksadk/server/static/assets/c4Diagram-UCG6FXSJ-Dk_ieq2X.js +38 -0
  268. ksadk/server/static/assets/channel-4cQHKtx1.js +1 -0
  269. ksadk/server/static/assets/chunk-2Q5K7J3B-DmgWkESh.js +1 -0
  270. ksadk/server/static/assets/{chunk-FMBD7UC4-BGhvzDYt.js → chunk-5VM5RSS4-BVHAchFb.js} +1 -1
  271. ksadk/server/static/assets/{chunk-ND2GUHAM-D98vPd-E.js → chunk-F27PBJKO-C-ipQzuS.js} +1 -1
  272. ksadk/server/static/assets/chunk-G27WJ6UU-C2EyJbIK.js +231 -0
  273. ksadk/server/static/assets/{chunk-4BX2VUAB-CsWIQRhc.js → chunk-JWPE2WC7-vYvVJb_M.js} +1 -1
  274. ksadk/server/static/assets/chunk-LCL6LL3I-BcI6ysPT.js +206 -0
  275. ksadk/server/static/assets/chunk-POPQ4Y6H-C030x_Z1.js +1 -0
  276. ksadk/server/static/assets/chunk-RHFEMEQ7-yyGpsz4n.js +168 -0
  277. ksadk/server/static/assets/chunk-SVP7TREG-BLTlmMU7.js +88 -0
  278. ksadk/server/static/assets/chunk-XXDRQBXY-C_32ArgP.js +1 -0
  279. ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js +1 -0
  280. ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js +1 -0
  281. ksadk/server/static/assets/{cose-bilkent-S5V4N54A-CX3yotHq.js → cose-bilkent-JH36ORCC-9YQYwdl0.js} +1 -1
  282. ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js +1 -0
  283. ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-ErLF5N13.js +62 -0
  284. ksadk/server/static/assets/cytoscape.esm-CyCl8rPi.js +321 -0
  285. ksadk/server/static/assets/dagre-3AP2YEHR-DFiQF-6f.js +4 -0
  286. ksadk/server/static/assets/dagre-BuhGnRI1.js +1 -0
  287. ksadk/server/static/assets/diagram-S7CK7UJ4-Bt1v8-GC.js +30 -0
  288. ksadk/server/static/assets/diagram-UQ7AKVKN-DSCxJdBK.js +41 -0
  289. ksadk/server/static/assets/diagram-VSXAHHWV-DHfYwp_9.js +3 -0
  290. ksadk/server/static/assets/diagram-VX7I27RA-DdzD-4Le.js +24 -0
  291. ksadk/server/static/assets/diagram-Z3DM3KII-Du-nAJ9F.js +24 -0
  292. ksadk/server/static/assets/{dist-D82mtD2s.js → dist-8hqcx0sU.js} +1 -1
  293. ksadk/server/static/assets/dist-B7seoj3d.js +1 -0
  294. ksadk/server/static/assets/{dist-DHn6nBzr.js → dist-BE7bu-DL.js} +1 -1
  295. ksadk/server/static/assets/{dist-eoW6tZXA.js → dist-BVDffZ0U.js} +1 -1
  296. ksadk/server/static/assets/{dist-C2xjE7cO.js → dist-BX8z72IC.js} +1 -1
  297. ksadk/server/static/assets/{dist-CgF3fj15.js → dist-Bf2M8m3N.js} +1 -1
  298. ksadk/server/static/assets/{dist-Bs-jQcRX.js → dist-BjU6y-A2.js} +1 -1
  299. ksadk/server/static/assets/{dist-Djgl2wVZ.js → dist-BytlxIDT.js} +1 -1
  300. ksadk/server/static/assets/{dist-CVQRZjPu.js → dist-CSh_DE14.js} +1 -1
  301. ksadk/server/static/assets/{dist-6CVKuTAe.js → dist-CXYYBw3_.js} +1 -1
  302. ksadk/server/static/assets/{dist-DlzCRy0S.js → dist-C_wsv-Qd.js} +1 -1
  303. ksadk/server/static/assets/{dist-DF06ORQo.js → dist-ClxGviKw.js} +1 -1
  304. ksadk/server/static/assets/{dist-Cf23NY4L.js → dist-CttYUqzS.js} +1 -1
  305. ksadk/server/static/assets/{dist-ivOya1LD.js → dist-DNp6rLRA.js} +1 -1
  306. ksadk/server/static/assets/{dist-BibcG1V9.js → dist-DUX-id_F.js} +1 -1
  307. ksadk/server/static/assets/{dist-BUHRxvDG.js → dist-DmldrHd_.js} +1 -1
  308. ksadk/server/static/assets/{dist-BZ9n9AjO.js → dist-DnfXs8Vn.js} +2 -2
  309. ksadk/server/static/assets/{dist-DqNnNFrw.js → dist-Dq9gLD7L.js} +1 -1
  310. ksadk/server/static/assets/{dist-CGcp2ex8.js → dist-W-TIVntx.js} +1 -1
  311. ksadk/server/static/assets/{dist-Cwt7koer.js → dist-dDdADKFA.js} +1 -1
  312. ksadk/server/static/assets/{dist-C7-3jInC.js → dist-dydu68Fl.js} +1 -1
  313. ksadk/server/static/assets/{dist-C99THtIA.js → dist-ngtN0DJB.js} +1 -1
  314. ksadk/server/static/assets/ebnfDiagram-PWID7BFC-Da9C9NO1.js +1 -0
  315. ksadk/server/static/assets/erDiagram-SSCWMZ5O-EAGqqR79.js +99 -0
  316. ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js +1 -0
  317. ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js +1 -0
  318. ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-DqJsKb59.js +292 -0
  319. ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js +1 -0
  320. ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-B6g4dtDi.js +106 -0
  321. ksadk/server/static/assets/index-8ipRcQ-M.js +240 -0
  322. ksadk/server/static/assets/index-ByFCqjlh.css +2 -0
  323. ksadk/server/static/assets/info-A6RAGUB7-B6iAblII.js +1 -0
  324. ksadk/server/static/assets/infoDiagram-RXCK75RN-Djm_nbd5.js +2 -0
  325. ksadk/server/static/assets/{ishikawaDiagram-YF4QCWOH-DLOHGvWw.js → ishikawaDiagram-5VMMS53U-DWya9SG2.js} +6 -6
  326. ksadk/server/static/assets/{journeyDiagram-JHISSGLW-BIzKeejT.js → journeyDiagram-EYS64GPL-DutxhSNI.js} +6 -6
  327. ksadk/server/static/assets/{kanban-definition-UN3LZRKU-BWHoFSw2.js → kanban-definition-3QL26DDD-DJdOF8Fm.js} +10 -10
  328. ksadk/server/static/assets/katex-vFWytM5c.js +257 -0
  329. ksadk/server/static/assets/{linear-CvMBw9cA.js → linear-BHjG8b-J.js} +1 -1
  330. ksadk/server/static/assets/mermaid-parser.core-KGSy4jWT.js +166 -0
  331. ksadk/server/static/assets/{mindmap-definition-RKZ34NQL-CSAQxEAe.js → mindmap-definition-FBJOCRG2-9-HC88D4.js} +29 -29
  332. ksadk/server/static/assets/packet-AYTQ26CC-BOYAipuq.js +1 -0
  333. ksadk/server/static/assets/pegDiagram-XKGWAZYB-DrEZd4fD.js +1 -0
  334. ksadk/server/static/assets/pie-WAS4IAKB-Ctq0Kbku.js +1 -0
  335. ksadk/server/static/assets/pieDiagram-E7YTZNPT-DpjqOFFp.js +39 -0
  336. ksadk/server/static/assets/{quadrantDiagram-W4KKPZXB-CxIR4JXI.js → quadrantDiagram-AXDQQJYC-BiNhgOXX.js} +6 -6
  337. ksadk/server/static/assets/radar-RG4KPBEZ-DN0-ul_0.js +1 -0
  338. ksadk/server/static/assets/railroad-74A4TZTK-C6cC_to0.js +1 -0
  339. ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BimjIuRc.js +1 -0
  340. ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js +1 -0
  341. ksadk/server/static/assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js +1 -0
  342. ksadk/server/static/assets/railroadDiagram-O6MQD6OU-_Y3Ojg6G.js +1 -0
  343. ksadk/server/static/assets/requirementDiagram-EFPCY7ZU-DeCFdg9K.js +84 -0
  344. ksadk/server/static/assets/{sankeyDiagram-5OEKKPKP-DpGa6EAV.js → sankeyDiagram-P5KCCOFB-CPH75rhw.js} +7 -7
  345. ksadk/server/static/assets/{sequenceDiagram-3UESZ5HK-NTKNGGe5.js → sequenceDiagram-WJ2MYXX4-OEpQQdr4.js} +10 -10
  346. ksadk/server/static/assets/sizeCapture-X5ZJPWSS-heUErzhI.js +1 -0
  347. ksadk/server/static/assets/stateDiagram-HBIQ2CUA-DvA3jSMB.js +1 -0
  348. ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BgQY03nz.js +1 -0
  349. ksadk/server/static/assets/swimlanes-XN3QIQJK-CR-dfN_t.js +1 -0
  350. ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js +8 -0
  351. ksadk/server/static/assets/{timeline-definition-PNZ67QCA-jqoYs3jQ.js → timeline-definition-24CTP7MA-DAVJf1TX.js} +7 -7
  352. ksadk/server/static/assets/treeView-Q6P3EWNA-BMpO0wsB.js +1 -0
  353. ksadk/server/static/assets/treemap-WGGIJYW6-Et0aqzU3.js +1 -0
  354. ksadk/server/static/assets/vennDiagram-4TSXK5OY-DwM8eDkh.js +34 -0
  355. ksadk/server/static/assets/wardley-WFR3VGLG-CbY0mhpl.js +1 -0
  356. ksadk/server/static/assets/wardleyDiagram-VM6X3IG4-DZL-Zz2t.js +78 -0
  357. ksadk/server/static/assets/xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js +7 -0
  358. ksadk/server/static/index.html +2 -2
  359. ksadk/sessions/__init__.py +26 -9
  360. ksadk/sessions/_local_service_sync.py +688 -0
  361. ksadk/sessions/_local_tables.py +21 -0
  362. ksadk/sessions/_postgres_schema.py +305 -0
  363. ksadk/sessions/_postgres_tables.py +15 -0
  364. ksadk/sessions/base.py +80 -1
  365. ksadk/sessions/in_memory.py +53 -2
  366. ksadk/sessions/local_service.py +63 -604
  367. ksadk/sessions/postgres_service.py +58 -148
  368. ksadk/sessions/resilient.py +35 -1
  369. ksadk/skills/runtime/backends/e2b.py +1 -1
  370. ksadk/skills/service_client.py +13 -3
  371. ksadk/studio/__init__.py +5 -0
  372. ksadk/studio/agent_avatar_assets.py +120 -0
  373. ksadk/studio/agent_lifecycle.py +51 -0
  374. ksadk/studio/api.py +1598 -0
  375. ksadk/studio/api_catalog_routes.py +324 -0
  376. ksadk/studio/api_contracts.py +286 -0
  377. ksadk/studio/api_helpers.py +132 -0
  378. ksadk/studio/api_memory_routes.py +82 -0
  379. ksadk/studio/authoring.py +749 -0
  380. ksadk/studio/authoring_coordinator.py +1017 -0
  381. ksadk/studio/builder.py +397 -0
  382. ksadk/studio/capabilities.py +368 -0
  383. ksadk/studio/cloud.py +2099 -0
  384. ksadk/studio/codex_agent_service.py +694 -0
  385. ksadk/studio/codex_authoring.py +469 -0
  386. ksadk/studio/codex_builder.py +437 -0
  387. ksadk/studio/codex_manifest.py +307 -0
  388. ksadk/studio/codex_run.py +395 -0
  389. ksadk/studio/compiler.py +190 -0
  390. ksadk/studio/contracts.py +755 -0
  391. ksadk/studio/errors.py +47 -0
  392. ksadk/studio/event_store.py +214 -0
  393. ksadk/studio/framework_run.py +342 -0
  394. ksadk/studio/hosted_kernel.py +317 -0
  395. ksadk/studio/identifiers.py +33 -0
  396. ksadk/studio/manifest_resolver.py +131 -0
  397. ksadk/studio/mcp_runtime.py +229 -0
  398. ksadk/studio/model_client.py +629 -0
  399. ksadk/studio/model_profile_service.py +214 -0
  400. ksadk/studio/operations.py +275 -0
  401. ksadk/studio/otel_trace.py +1060 -0
  402. ksadk/studio/pagination.py +182 -0
  403. ksadk/studio/pcm_memory.py +85 -0
  404. ksadk/studio/python_tool_inspection.py +183 -0
  405. ksadk/studio/repository.py +327 -0
  406. ksadk/studio/resource_catalog.py +1260 -0
  407. ksadk/studio/run_service.py +1133 -0
  408. ksadk/studio/runtime_catalog.py +74 -0
  409. ksadk/studio/runtime_source.py +365 -0
  410. ksadk/studio/service.py +2249 -0
  411. ksadk/studio/shared_web.py +1004 -0
  412. ksadk/studio/skill_discovery.py +628 -0
  413. ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js +3 -0
  414. ksadk/studio/static/assets/index-BLpcdrgW.css +1 -0
  415. ksadk/studio/static/assets/index-CYekR2Xv.js +260 -0
  416. ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js +9 -0
  417. ksadk/studio/static/assets/rolldown-runtime-hePW80VL.js +1 -0
  418. ksadk/studio/static/index.html +15 -0
  419. ksadk/studio/templates.py +722 -0
  420. ksadk/studio/validator.py +265 -0
  421. ksadk/studio/workspace.py +135 -0
  422. ksadk/tools/gateway.py +9 -0
  423. ksadk/toolsets/__init__.py +27 -1
  424. ksadk/toolsets/a2a.py +426 -0
  425. ksadk/tracing/__init__.py +19 -21
  426. ksadk/tracing/setup.py +317 -403
  427. ksadk/tracing/span_utils.py +0 -44
  428. ksadk/version.py +1 -1
  429. ksadk_runtime_common/memory_backend/registry.py +56 -56
  430. ksadk_runtime_common/schemas/runtime_event_v1.json +37 -0
  431. ksadk_runtime_common/schemas/runtime_event_v2.json +271 -0
  432. ksadk_runtime_common/workspace_files/router.py +8 -2
  433. agentengine_sdk_python-0.8.0.dist-info/RECORD +0 -578
  434. ksadk/a2a/card_builder.py +0 -64
  435. ksadk/a2a/client.py +0 -309
  436. ksadk/events/parser.py +0 -191
  437. ksadk/harness/runner.py +0 -211
  438. ksadk/runners/codex_runner.py +0 -132
  439. ksadk/runners/utils/langfuse.py +0 -230
  440. ksadk/server/static/assets/MathMessageMarkdown-DeYh8QPr.css +0 -1
  441. ksadk/server/static/assets/MermaidBlock-DWuxETaJ.js +0 -303
  442. ksadk/server/static/assets/NativeTerminalPanel-MDTopWMO.js +0 -1
  443. ksadk/server/static/assets/arc-CFKwSk_B.js +0 -1
  444. ksadk/server/static/assets/architecture-7EHR7CIX-CynqOWjZ.js +0 -1
  445. ksadk/server/static/assets/architectureDiagram-3BPJPVTR-Dej8jX8c.js +0 -36
  446. ksadk/server/static/assets/blockDiagram-GPEHLZMM-1F64jqvy.js +0 -132
  447. ksadk/server/static/assets/c4Diagram-AAUBKEIU-9q7AUAKb.js +0 -10
  448. ksadk/server/static/assets/channel-iUGv2N24.js +0 -1
  449. ksadk/server/static/assets/chunk-2J33WTMH-6qgwJm7Q.js +0 -1
  450. ksadk/server/static/assets/chunk-55IACEB6-BK8paA20.js +0 -1
  451. ksadk/server/static/assets/chunk-727SXJPM-B-JEhy7h.js +0 -206
  452. ksadk/server/static/assets/chunk-AQP2D5EJ-DYBvMHAa.js +0 -231
  453. ksadk/server/static/assets/chunk-QZHKN3VN-YQIEXeF6.js +0 -1
  454. ksadk/server/static/assets/classDiagram-4FO5ZUOK-CDAUuoXK.js +0 -1
  455. ksadk/server/static/assets/classDiagram-v2-Q7XG4LA2-CDAUuoXK.js +0 -1
  456. ksadk/server/static/assets/cytoscape.esm-DelgaX4f.js +0 -321
  457. ksadk/server/static/assets/dagre-BM42HDAG-C7TguAWo.js +0 -4
  458. ksadk/server/static/assets/dagre-Bx709z4p.js +0 -1
  459. ksadk/server/static/assets/diagram-2AECGRRQ-Dd17_kws.js +0 -43
  460. ksadk/server/static/assets/diagram-5GNKFQAL-DVIClIil.js +0 -10
  461. ksadk/server/static/assets/diagram-KO2AKTUF-Df_3gYQa.js +0 -3
  462. ksadk/server/static/assets/diagram-LMA3HP47-BhLk6ZtA.js +0 -24
  463. ksadk/server/static/assets/diagram-OG6HWLK6-D4GNGvuu.js +0 -24
  464. ksadk/server/static/assets/dist-DyvYLMW9.js +0 -1
  465. ksadk/server/static/assets/erDiagram-TEJ5UH35-CnfRcY2M.js +0 -85
  466. ksadk/server/static/assets/eventmodeling-FCH6USID-ChYO-ijM.js +0 -1
  467. ksadk/server/static/assets/flowDiagram-I6XJVG4X-DGaJjGNJ.js +0 -162
  468. ksadk/server/static/assets/ganttDiagram-6RSMTGT7-DpCoB2g9.js +0 -292
  469. ksadk/server/static/assets/gitGraph-WXDBUCRP-BN_0Fk-j.js +0 -1
  470. ksadk/server/static/assets/gitGraphDiagram-PVQCEYII-9IKVFBVT.js +0 -106
  471. ksadk/server/static/assets/graphlib-B8gBHxth.js +0 -1
  472. ksadk/server/static/assets/index-QSwCHuB8.js +0 -177
  473. ksadk/server/static/assets/index-jOPmTOZH.css +0 -2
  474. ksadk/server/static/assets/info-J43DQDTF-Cp6o3vId.js +0 -1
  475. ksadk/server/static/assets/infoDiagram-5YYISTIA-CYIIsb8y.js +0 -2
  476. ksadk/server/static/assets/katex-DATssjp1.js +0 -265
  477. ksadk/server/static/assets/mermaid-parser.core-mGAcEwcq.js +0 -161
  478. ksadk/server/static/assets/packet-YPE3B663-wQzct3cT.js +0 -1
  479. ksadk/server/static/assets/pie-LRSECV5Y-BgTQiv-9.js +0 -1
  480. ksadk/server/static/assets/pieDiagram-4H26LBE5-By-ra07M.js +0 -30
  481. ksadk/server/static/assets/radar-GUYGQ44K-BIq5fXsn.js +0 -1
  482. ksadk/server/static/assets/requirementDiagram-4Y6WPE33-DpW90iu3.js +0 -84
  483. ksadk/server/static/assets/stateDiagram-AJRCARHV-DGpd9yFG.js +0 -1
  484. ksadk/server/static/assets/stateDiagram-v2-BHNVJYJU-B3o579IQ.js +0 -1
  485. ksadk/server/static/assets/treeView-BLDUP644-Dqi-E0EM.js +0 -1
  486. ksadk/server/static/assets/treemap-LRROVOQU-ClQP9CJ9.js +0 -1
  487. ksadk/server/static/assets/vennDiagram-CIIHVFJN-l3Z7-wbP.js +0 -34
  488. ksadk/server/static/assets/wardley-L42UT6IY-8XLvnNIs.js +0 -1
  489. ksadk/server/static/assets/wardleyDiagram-YWT4CUSO-BR54GPmr.js +0 -78
  490. ksadk/server/static/assets/xychartDiagram-2RQKCTM6-SkiH8GsK.js +0 -7
  491. ksadk/tracing/exporters/langfuse_exporter.py +0 -460
  492. {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/entry_points.txt +0 -0
  493. {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/licenses/LICENSE +0 -0
  494. {agentengine_sdk_python-0.8.0.dist-info → agentengine_sdk_python-0.8.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,232 @@
1
+ """KOP (Kingsoft Open Protocol) client — 公共 AICP 控制面调用层。
2
+
3
+ skill / a2a / mcp 等运行时模块通过本层访问 agentengine-server 对外 Action
4
+ (KOP 协议:`{base}/?Action=xxx&Version=xxx` + AWS V4 签名),避免每个模块
5
+ 各自实现一遍鉴权 + URL 构造 + header 装配。
6
+
7
+ 本层是同步(基于 requests + requests-aws4auth);async 调用方用
8
+ ``asyncio.to_thread`` 包裹。AICP 控制面是低频调用,同步足够。
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import json
14
+ import logging
15
+ import os
16
+ from typing import Any, Mapping, Optional
17
+ from urllib.parse import urlsplit
18
+
19
+ import requests
20
+
21
+ from ksadk.common.auth import AWSV4Auth
22
+
23
+ logger = logging.getLogger(__name__)
24
+
25
+ DEFAULT_API_VERSION = "2024-06-12"
26
+ DEFAULT_REGION = "cn-beijing-6"
27
+ DEFAULT_SERVICE = "aicp"
28
+
29
+ # 精确匹配 AICP 控制面域名(公网 + 内网 + internal),不接受用户自定义 URL 走签名。
30
+ _AICP_HOSTS = {
31
+ "aicp.api.ksyun.com",
32
+ "aicp.inner.api.ksyun.com",
33
+ "aicp.internal.api.ksyun.com",
34
+ }
35
+
36
+
37
+ def is_kop_endpoint(base_url: str) -> bool:
38
+ """Return True only for exact AICP control-plane hosts.
39
+
40
+ User-controlled URLs must never receive KOP signing headers.
41
+ """
42
+ host = (urlsplit(base_url or "").hostname or "").lower()
43
+ return host in _AICP_HOSTS
44
+
45
+
46
+ class KOPError(RuntimeError):
47
+ """KOP action 失败(非 2xx 或 Code != 0/200)。"""
48
+
49
+ def __init__(self, *, code: int, message: str, request_id: str = "", action: str = "") -> None:
50
+ super().__init__(f"KOP {action} failed: code={code} message={message}")
51
+ self.code = code
52
+ self.message = message
53
+ self.request_id = request_id
54
+ self.action = action
55
+
56
+
57
+ class KOPClient:
58
+ """AICP KOP 控制面调用客户端。
59
+
60
+ 凭证优先级:构造参数 > KSADK_*_ACCESS_KEY/SECRET_KEY > KSYUN_ACCESS_KEY/SECRET_KEY。
61
+ base_url 为空时按 region 探测默认 AICP(inner 优先,回落 public)。
62
+ 非 AICP base_url(如本地 server 直连)走普通 POST,不签名。
63
+ """
64
+
65
+ def __init__(
66
+ self,
67
+ *,
68
+ base_url: Optional[str] = None,
69
+ access_key: Optional[str] = None,
70
+ secret_key: Optional[str] = None,
71
+ region: Optional[str] = None,
72
+ service: Optional[str] = None,
73
+ api_version: Optional[str] = None,
74
+ account_id: Optional[str] = None,
75
+ service_token: Optional[str] = None,
76
+ timeout: float = 15.0,
77
+ ) -> None:
78
+ self.base_url = (base_url or os.getenv("KSADK_A2A_SERVICE_URL") or "").strip().rstrip("/")
79
+ if not self.base_url:
80
+ inner = os.getenv("KSADK_A2A_SERVICE_ENDPOINT", "").strip()
81
+ if inner:
82
+ scheme = os.getenv("KSADK_A2A_SERVICE_SCHEME", "https").strip() or "https"
83
+ self.base_url = f"{scheme}://{inner}".rstrip("/")
84
+ if not self.base_url:
85
+ # 默认探测:内网 inner 优先(runtime 在集群内),回落公网 public。
86
+ self.base_url = self._detect_default_base_url()
87
+ self.region = (
88
+ region
89
+ or os.getenv("KSADK_A2A_SERVICE_REGION")
90
+ or os.getenv("KSYUN_REGION")
91
+ or DEFAULT_REGION
92
+ ).strip()
93
+ self.service = (service or DEFAULT_SERVICE).strip()
94
+ self.api_version = (api_version or DEFAULT_API_VERSION).strip()
95
+ self.account_id = (
96
+ account_id
97
+ or os.getenv("KSADK_A2A_ACCOUNT_ID")
98
+ or os.getenv("KSYUN_ACCOUNT_ID")
99
+ or ""
100
+ ).strip()
101
+ self.service_token = (
102
+ service_token or os.getenv("KSADK_A2A_SERVICE_TOKEN") or ""
103
+ ).strip()
104
+ self.timeout = timeout
105
+ self._kop_mode = is_kop_endpoint(self.base_url)
106
+ ak = (
107
+ access_key
108
+ or os.getenv("KSADK_A2A_ACCESS_KEY")
109
+ or os.getenv("KSYUN_ACCESS_KEY")
110
+ or ""
111
+ ).strip()
112
+ sk = (
113
+ secret_key
114
+ or os.getenv("KSADK_A2A_SECRET_KEY")
115
+ or os.getenv("KSYUN_SECRET_KEY")
116
+ or ""
117
+ ).strip()
118
+ self._auth = AWSV4Auth(
119
+ access_key_id=ak,
120
+ secret_access_key=sk,
121
+ region=self.region,
122
+ service=self.service,
123
+ )
124
+ self._session: Optional[requests.Session] = None
125
+
126
+ @property
127
+ def is_kop_mode(self) -> bool:
128
+ return self._kop_mode
129
+
130
+ def _session_obj(self) -> requests.Session:
131
+ if self._session is None:
132
+ self._session = requests.Session()
133
+ return self._session
134
+
135
+ def _headers(self, action: str) -> dict[str, str]:
136
+ import uuid
137
+
138
+ headers = {"Accept": "application/json", "Content-Type": "application/json"}
139
+ if self.account_id:
140
+ headers["X-Ksc-Account-Id"] = self.account_id
141
+ if self.service_token:
142
+ headers["Authorization"] = f"Bearer {self.service_token}"
143
+ if self._kop_mode:
144
+ headers["Host"] = urlsplit(self.base_url).netloc
145
+ headers["X-Ksc-Request-Id"] = str(uuid.uuid4())
146
+ headers["X-Ksc-Region"] = self.region
147
+ headers["X-Ksc-Source"] = "ksadk-runtime"
148
+ # 预发环境路由:AICP 据此把请求转发到预发 server(线上 KOP 默认路由到线上 server)。
149
+ logical_region = (os.getenv("KSYUN_REGION") or "").strip().lower()
150
+ if logical_region == "pre-online":
151
+ headers["X-KSC-CUSTOM-SOURCE"] = os.getenv("AGENTENGINE_PRE_CUSTOM_SOURCE", "pre")
152
+ if action:
153
+ headers["X-Action"] = action
154
+ headers["X-Version"] = self.api_version
155
+ return headers
156
+
157
+ def _build_url(self, action: str) -> str:
158
+ if self._kop_mode:
159
+ return f"{self.base_url}/?Action={action}&Version={self.api_version}"
160
+ return f"{self.base_url}/agentengine/api/v1/{action}"
161
+
162
+ def post_action(
163
+ self, action: str, payload: Optional[Mapping[str, Any]] = None
164
+ ) -> dict[str, Any]:
165
+ """POST 一个 KOP Action,返回 Data 字段(已解包信封)。
166
+
167
+ 非KOP 模式走 ``/agentengine/api/v1/{action}``;KOP 模式走 ``?Action=&Version=`` + 签名。
168
+ """
169
+ url = self._build_url(action)
170
+ headers = self._headers(action)
171
+ body = json.dumps(dict(payload or {}), ensure_ascii=False)
172
+ auth = (
173
+ self._auth.get_auth()
174
+ if self._kop_mode and self._auth.is_enabled and not self.service_token
175
+ else None
176
+ )
177
+ try:
178
+ response = self._session_obj().post(
179
+ url,
180
+ data=body.encode("utf-8"),
181
+ headers=headers,
182
+ auth=auth,
183
+ timeout=self.timeout,
184
+ )
185
+ except requests.RequestException as exc:
186
+ raise KOPError(
187
+ code=503,
188
+ message=f"KOP control plane unavailable: {exc}",
189
+ action=action,
190
+ ) from exc
191
+ if not 200 <= response.status_code < 300:
192
+ raise KOPError(
193
+ code=response.status_code,
194
+ message=f"KOP HTTP error: {response.text[:200]}",
195
+ action=action,
196
+ )
197
+ try:
198
+ envelope = response.json()
199
+ except ValueError as exc:
200
+ raise KOPError(
201
+ code=response.status_code or 502,
202
+ message="non-JSON response",
203
+ action=action,
204
+ ) from exc
205
+ if not isinstance(envelope, dict):
206
+ raise KOPError(
207
+ code=response.status_code or 502,
208
+ message="response not an object",
209
+ action=action,
210
+ )
211
+ code = int(envelope.get("Code") or 0)
212
+ if code and code != 200:
213
+ raise KOPError(
214
+ code=code,
215
+ message=str(envelope.get("Message") or "KOP error"),
216
+ request_id=str(envelope.get("RequestId") or ""),
217
+ action=action,
218
+ )
219
+ data = envelope.get("Data")
220
+ return data if isinstance(data, dict) else {}
221
+
222
+ def _detect_default_base_url(self) -> str:
223
+ """默认 AICP 地址探测:内网 inner 优先,失败回落公网 public。"""
224
+ inner = "http://aicp.inner.api.ksyun.com"
225
+ public = "https://aicp.api.ksyun.com"
226
+ try:
227
+ import socket
228
+ host = urlsplit(inner).hostname or ""
229
+ socket.create_connection((host, 80), timeout=1).close()
230
+ return inner
231
+ except OSError:
232
+ return public
ksadk/configs/__init__.py CHANGED
@@ -8,7 +8,7 @@ AgentEngine 统一配置管理
8
8
 
9
9
  环境变量优先级 (举例):
10
10
  Model: OPENAI_API_KEY > LLM_API_KEY > MODEL_API_KEY
11
- Langfuse: LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_HOST
11
+ Tracing: OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS
12
12
  Agent: AGENT_ID > AGENT_RUNTIME_ID
13
13
 
14
14
  默认值:
@@ -24,7 +24,6 @@ from ksadk.configs.settings import (
24
24
  AgentConfig,
25
25
  CodeModeConfig,
26
26
  KingsoftCloudConfig,
27
- LangfuseConfig,
28
27
  # 各配置类
29
28
  ModelConfig,
30
29
  OTelConfig,
@@ -44,7 +43,6 @@ __all__ = [
44
43
  "Settings",
45
44
  # 配置类
46
45
  "ModelConfig",
47
- "LangfuseConfig",
48
46
  "AgentConfig",
49
47
  "KingsoftCloudConfig",
50
48
  "CodeModeConfig",
@@ -1,24 +1,51 @@
1
1
  from __future__ import annotations
2
2
 
3
- from dataclasses import dataclass
4
-
5
-
6
- @dataclass(frozen=True)
7
- class EnvVarSpec:
8
- name: str
9
- module: str
10
- purpose: str
11
- default: str = ""
12
- sensitive: bool = False
13
-
3
+ from ksadk.configs.env_registry_pcm import PCM_ENV_VAR_REGISTRY_ITEMS
4
+ from ksadk.configs.env_var_spec import EnvVarSpec
14
5
 
15
6
  _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
7
+ EnvVarSpec(
8
+ "KSADK_AGENT_EVAL",
9
+ "evaluation",
10
+ "Enable internal Agent evaluation integration.",
11
+ "0",
12
+ documented=False,
13
+ ),
16
14
  EnvVarSpec("KSADK_ADK_RESUMABLE", "runners", "Enable ADK invocation resume support.", "false"),
17
15
  EnvVarSpec("KSADK_ADK_SESSION_BACKEND", "sessions", "ADK-native session backend selector."),
18
16
  EnvVarSpec("KSADK_ADK_SESSION_PATH", "sessions", "ADK-native SQLite session database path."),
19
17
  EnvVarSpec(
20
18
  "KSADK_ADK_SESSION_URL", "sessions", "ADK-native database session URL.", sensitive=True
21
19
  ),
20
+ EnvVarSpec(
21
+ "KSADK_A2A_AGENT_ID",
22
+ "a2a",
23
+ "Opaque registered A2A Agent id injected post-registration; "
24
+ "required to wire full inbound JSON-RPC in v2. v1 discovery-only card "
25
+ "does not depend on it.",
26
+ ),
27
+ EnvVarSpec(
28
+ "KSADK_A2A_ACCOUNT_ID",
29
+ "a2a",
30
+ "Runtime owner account id injected by the deploy layer (ar-* agent's account).",
31
+ ),
32
+ EnvVarSpec(
33
+ "KSADK_A2A_RUNTIME_ID",
34
+ "a2a",
35
+ "Hosted Agent runtime resource id (ar-*) injected by the deploy layer; "
36
+ "the v1 discovery-only card mounts whenever this is non-empty.",
37
+ ),
38
+ EnvVarSpec(
39
+ "KSADK_A2A_AGENT_NAME",
40
+ "a2a",
41
+ "AgentCard display name injected by the deploy layer; falls back to "
42
+ "AGENTENGINE_MANAGED_RUNTIME_NAME then to the agent id.",
43
+ ),
44
+ EnvVarSpec(
45
+ "KSADK_A2A_AGENT_VERSION",
46
+ "a2a",
47
+ "AgentCard business version injected by the deploy layer; defaults to 0.1.0.",
48
+ ),
22
49
  EnvVarSpec(
23
50
  "KSADK_A2A_CONTROL_PLANE_URL",
24
51
  "a2a",
@@ -36,6 +63,27 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
36
63
  "SQLite path for durable A2A task-event delivery batches.",
37
64
  ".agentengine/a2a_event_outbox.sqlite3",
38
65
  ),
66
+ EnvVarSpec(
67
+ "KSADK_A2A_INTERNAL_BASE_URL",
68
+ "a2a",
69
+ "Internal HTTP(S) origin used as AgentCard base_url before the gateway rewrites it; "
70
+ "must be an absolute origin with no path/query/fragment.",
71
+ ),
72
+ EnvVarSpec(
73
+ "KSADK_A2A_SPACE_ID",
74
+ "a2a",
75
+ "Primary A2A Space id configured for this Runtime Agent.",
76
+ ),
77
+ EnvVarSpec(
78
+ "KSADK_A2A_SPACE_IDS",
79
+ "a2a",
80
+ "Compatibility JSON array of A2A Space ids configured for this Runtime Agent.",
81
+ ),
82
+ EnvVarSpec(
83
+ "KSADK_A2A_TENANT_ID",
84
+ "a2a",
85
+ "Runtime tenant id injected by the deploy layer; falls back to account id.",
86
+ ),
39
87
  EnvVarSpec(
40
88
  "KSADK_A2A_TOKEN_DIR",
41
89
  "a2a",
@@ -43,9 +91,53 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
43
91
  "/var/run/secrets/agentengine/a2a",
44
92
  ),
45
93
  EnvVarSpec(
46
- "KSADK_A2A_SPACE_IDS",
94
+ "KSADK_A2A_SERVICE_URL",
47
95
  "a2a",
48
- "JSON array of A2A Space ids configured for this Runtime Agent.",
96
+ "A2A control plane service URL (KOP public API); auto-detected if unset.",
97
+ ),
98
+ EnvVarSpec(
99
+ "KSADK_A2A_SERVICE_TOKEN",
100
+ "a2a",
101
+ "Bearer token for A2A control plane service authentication.",
102
+ sensitive=True,
103
+ ),
104
+ EnvVarSpec(
105
+ "KSADK_A2A_SERVICE_ENDPOINT",
106
+ "a2a",
107
+ "A2A service endpoint hostname (used for auto-detection with scheme).",
108
+ ),
109
+ EnvVarSpec(
110
+ "KSADK_A2A_SERVICE_SCHEME",
111
+ "a2a",
112
+ "A2A service URL scheme (http/https) for auto-detection.",
113
+ ),
114
+ EnvVarSpec(
115
+ "KSADK_A2A_SERVICE_REGION",
116
+ "a2a",
117
+ "A2A service region for KOP signing.",
118
+ ),
119
+ EnvVarSpec(
120
+ "KSADK_A2A_ACCESS_KEY",
121
+ "a2a",
122
+ "A2A KOP access key for signing; falls back to KSYUN_ACCESS_KEY.",
123
+ sensitive=True,
124
+ ),
125
+ EnvVarSpec(
126
+ "KSADK_A2A_SECRET_KEY",
127
+ "a2a",
128
+ "A2A KOP secret key for signing; falls back to KSYUN_SECRET_KEY.",
129
+ sensitive=True,
130
+ ),
131
+ EnvVarSpec(
132
+ "KSADK_A2A_SERVICE",
133
+ "a2a",
134
+ "A2A KOP signing service name (default: aicp).",
135
+ ),
136
+ EnvVarSpec(
137
+ "KSADK_EVAL_JUDGE_API_KEY",
138
+ "eval",
139
+ "API key for the LLM Judge evaluation backend.",
140
+ sensitive=True,
49
141
  ),
50
142
  EnvVarSpec(
51
143
  "KSADK_A2UI_GENERATION_TIMEOUT_SECONDS",
@@ -117,6 +209,55 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
117
209
  "Codex proxy override: 1 forces the local Responses-to-Chat proxy and "
118
210
  "0 forces direct mode.",
119
211
  ),
212
+ EnvVarSpec(
213
+ "KSADK_CODEX_SANDBOX",
214
+ "codex",
215
+ "Codex sandbox mode: read_only (default, no writes) / workspace_write "
216
+ "(write inside workspace) / full_access (write anywhere).",
217
+ ),
218
+ EnvVarSpec(
219
+ "KSADK_CODEX_APPROVAL",
220
+ "codex",
221
+ "Codex approval mode: deny_all (default for read_only) / auto_review "
222
+ "(auto-approve with review log).",
223
+ ),
224
+ EnvVarSpec(
225
+ "KSADK_CODEX_HOME",
226
+ "codex",
227
+ "Explicit Codex home directory override for the native runtime.",
228
+ ),
229
+ EnvVarSpec(
230
+ "KSADK_CODEX_ISOLATE_HOME",
231
+ "codex",
232
+ "Isolate native Codex state under the project workspace; set to 0 for debugging only.",
233
+ "1",
234
+ ),
235
+ EnvVarSpec(
236
+ "KSADK_STUDIO_NO_SECURITY",
237
+ "studio",
238
+ "Disable Studio loopback session and CSRF checks for controlled tests only.",
239
+ "0",
240
+ ),
241
+ EnvVarSpec(
242
+ "KSADK_STUDIO_AUTHORIZER",
243
+ "studio",
244
+ "Internal authoring backend selector; bounded chat is the default and the "
245
+ "filesystem-capable Codex authorizer requires an explicit opt-in.",
246
+ "chat",
247
+ documented=False,
248
+ ),
249
+ EnvVarSpec(
250
+ "KSADK_STUDIO_SESSION_TOKEN",
251
+ "studio",
252
+ "Explicit local Studio browser session token; generated randomly when unset.",
253
+ sensitive=True,
254
+ ),
255
+ EnvVarSpec(
256
+ "KSADK_STUDIO_TRACE_CONTENT",
257
+ "studio",
258
+ "Persist Studio trace event content; set to 0 to retain metadata only.",
259
+ "1",
260
+ ),
120
261
  EnvVarSpec(
121
262
  "KSADK_COMMAND_", "sandbox", "Internal prefix for command policy environment controls."
122
263
  ),
@@ -143,6 +284,19 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
143
284
  "Enable L2 snip deterministic redundancy removal in compaction pipeline.",
144
285
  "true",
145
286
  ),
287
+ *PCM_ENV_VAR_REGISTRY_ITEMS,
288
+ EnvVarSpec(
289
+ "KSADK_DEPLOYMENT_MODE",
290
+ "runtime",
291
+ "Deployment-mode ownership declaration.",
292
+ documented=False,
293
+ ),
294
+ EnvVarSpec(
295
+ "KSADK_EVAL_COMMIT",
296
+ "evaluation",
297
+ "Source commit recorded by evaluation runs.",
298
+ documented=False,
299
+ ),
146
300
  EnvVarSpec(
147
301
  "KSADK_CORE_RUNTIME_REQUIREMENTS",
148
302
  "builders",
@@ -186,6 +340,12 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
186
340
  EnvVarSpec(
187
341
  "KSADK_KB_SECRET_KEY", "knowledge_base", "Knowledge-base API secret key.", sensitive=True
188
342
  ),
343
+ EnvVarSpec(
344
+ "KSADK_KB_SESSION_TOKEN",
345
+ "knowledge_base",
346
+ "Knowledge-base STS session token.",
347
+ sensitive=True,
348
+ ),
189
349
  EnvVarSpec("KSADK_KB_TOP_K", "knowledge_base", "Knowledge-base retrieval result count.", "5"),
190
350
  EnvVarSpec(
191
351
  "KSADK_LANGGRAPH_CHECKPOINT_DSN",
@@ -193,6 +353,12 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
193
353
  "LangGraph PostgreSQL checkpoint DSN.",
194
354
  sensitive=True,
195
355
  ),
356
+ EnvVarSpec(
357
+ "KSADK_LANGGRAPH_AUTO_CHECKPOINT",
358
+ "sessions",
359
+ "Allow a hosted LangGraph runner to rebuild a factory-exported graph with the managed PostgreSQL saver.",
360
+ "false",
361
+ ),
196
362
  EnvVarSpec(
197
363
  "KSADK_LOCAL_SKILLS_DIR", "skills", "Local directory containing extracted Skill packages."
198
364
  ),
@@ -224,6 +390,12 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
224
390
  EnvVarSpec(
225
391
  "KSADK_LTM_SECRET_KEY", "memory", "Long-term-memory API secret key.", sensitive=True
226
392
  ),
393
+ EnvVarSpec(
394
+ "KSADK_LTM_SESSION_TOKEN",
395
+ "memory",
396
+ "Long-term-memory STS session token.",
397
+ sensitive=True,
398
+ ),
227
399
  EnvVarSpec("KSADK_LTM_TOP_K", "memory", "Long-term-memory retrieval result count.", "5"),
228
400
  EnvVarSpec(
229
401
  "KSADK_MCP_RUNTIME_REQUIREMENTS",
@@ -306,12 +478,30 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
306
478
  "runners",
307
479
  "Header name for remote Responses session propagation.",
308
480
  ),
481
+ EnvVarSpec(
482
+ "KSADK_RUNTIME_IMAGE_SOURCE_COMMIT",
483
+ "runtime",
484
+ "Build-injected source commit for Runtime image provenance.",
485
+ documented=False,
486
+ ),
487
+ EnvVarSpec(
488
+ "KSADK_RUNTIME_IMAGE_WHEEL_SHA256",
489
+ "runtime",
490
+ "Build-injected wheel digest for Runtime image provenance.",
491
+ documented=False,
492
+ ),
309
493
  EnvVarSpec(
310
494
  "KSADK_RUNTIME_PORT", "cli", "Runtime HTTP port exported to template runtimes.", "8080"
311
495
  ),
312
496
  EnvVarSpec(
313
497
  "KSADK_RUNTIME_REQUIREMENTS", "builders", "Internal bundled runtime requirements constant."
314
498
  ),
499
+ EnvVarSpec(
500
+ "KSADK_RUNTIME_STATE_DIR",
501
+ "runtime",
502
+ "Internal Runtime state directory override.",
503
+ documented=False,
504
+ ),
315
505
  EnvVarSpec(
316
506
  "KSADK_ALLOW_POD_PROCESS_TOOLS",
317
507
  "sandbox",
@@ -442,6 +632,17 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
442
632
  "KSADK_SESSION_DSN", "sessions", "Conversation session database DSN.", sensitive=True
443
633
  ),
444
634
  EnvVarSpec("KSADK_SESSION_NAMESPACE", "sessions", "Conversation session namespace."),
635
+ EnvVarSpec(
636
+ "KSADK_AGENT_ID",
637
+ "platform",
638
+ "Stable AgentEngine agent identity used only as a fallback checkpoint namespace.",
639
+ ),
640
+ EnvVarSpec(
641
+ "KSADK_AGENT_KERNEL",
642
+ "kernel",
643
+ "Opt in to Agent Kernel ingress locally; managed deployment may use AGENT_KERNEL_ENABLED instead.",
644
+ "false",
645
+ ),
445
646
  EnvVarSpec("KSADK_SESSION_PATH", "sessions", "Conversation local SQLite database path."),
446
647
  EnvVarSpec(
447
648
  "KSADK_SESSION_PG_CONNECT_TIMEOUT",
@@ -609,7 +810,7 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
609
810
  "KSADK_WEB_VERSION",
610
811
  "web",
611
812
  "Published KsADK Web npm version used for a reproducible wheel build.",
612
- "0.3.0",
813
+ "0.3.2",
613
814
  ),
614
815
  EnvVarSpec(
615
816
  "KSADK_WORKING_SET_MAX_FILES",
@@ -629,38 +830,11 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
629
830
  EnvVarSpec(
630
831
  "CLOUD_MONITOR_APP_KEY",
631
832
  "tracing",
632
- "CloudMonitor AppKey for optional OTLP ingestion.",
833
+ "Deprecated: CloudMonitor AppKey translated to Ksc-Appkey OTLP header only when "
834
+ "both CLOUD_MONITOR_OTLP_TRACES_HEADERS and CLOUD_MONITOR_OTLP_HEADERS are absent. "
835
+ "Server should inject OTLP headers directly.",
633
836
  sensitive=True,
634
837
  ),
635
- EnvVarSpec(
636
- "CLOUD_MONITOR_LANGFUSE_ENABLED",
637
- "tracing",
638
- "Enable or disable the CloudMonitor Langfuse SDK callback; defaults to enabled "
639
- "when keys and host are present.",
640
- ),
641
- EnvVarSpec(
642
- "CLOUD_MONITOR_LANGFUSE_HOST",
643
- "tracing",
644
- "CloudMonitor AppMonitor Langfuse SDK host.",
645
- ),
646
- EnvVarSpec(
647
- "CLOUD_MONITOR_LANGFUSE_PUBLIC_KEY",
648
- "tracing",
649
- "CloudMonitor AppMonitor Langfuse public key returned by the platform.",
650
- sensitive=True,
651
- ),
652
- EnvVarSpec(
653
- "CLOUD_MONITOR_LANGFUSE_SECRET_KEY",
654
- "tracing",
655
- "CloudMonitor AppMonitor Langfuse secret key returned by the platform.",
656
- sensitive=True,
657
- ),
658
- EnvVarSpec(
659
- "CLOUD_MONITOR_OTLP_ENABLED",
660
- "tracing",
661
- "Enable or disable the CloudMonitor OTLP exporter; defaults to enabled when "
662
- "endpoint and AppKey are present.",
663
- ),
664
838
  EnvVarSpec(
665
839
  "CLOUD_MONITOR_OTLP_ENDPOINT",
666
840
  "tracing",
@@ -670,7 +844,7 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
670
844
  EnvVarSpec(
671
845
  "CLOUD_MONITOR_OTLP_HEADERS",
672
846
  "tracing",
673
- "Additional CloudMonitor OTLP HTTP headers, comma-separated and URL-encoded.",
847
+ "CloudMonitor OTLP HTTP headers including Ksc-Appkey, comma-separated and URL-encoded.",
674
848
  sensitive=True,
675
849
  ),
676
850
  EnvVarSpec(
@@ -683,6 +857,12 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
683
857
  "tracing",
684
858
  "CloudMonitor OTLP HTTP traces endpoint; takes precedence over the generic endpoint.",
685
859
  ),
860
+ EnvVarSpec(
861
+ "CLOUD_MONITOR_OTLP_TRACES_HEADERS",
862
+ "tracing",
863
+ "CloudMonitor OTLP HTTP traces headers; takes precedence over generic headers.",
864
+ sensitive=True,
865
+ ),
686
866
  EnvVarSpec(
687
867
  "CLOUD_MONITOR_OTLP_TRACES_PROTOCOL",
688
868
  "tracing",
@@ -726,6 +906,12 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
726
906
  "OpenTelemetry resource attributes in key=value comma-separated form.",
727
907
  ),
728
908
  EnvVarSpec("OTEL_SERVICE_NAME", "tracing", "OpenTelemetry service name."),
909
+ EnvVarSpec(
910
+ "OPENCLAW_CONFIG_PATCH_JSON",
911
+ "openclaw",
912
+ "OpenClaw configuration patch JSON supplied at deployment time.",
913
+ sensitive=True,
914
+ ),
729
915
  EnvVarSpec(
730
916
  "KSADK_OTLP_MAX_EXPORT_BATCH_SIZE",
731
917
  "tracing",
@@ -737,6 +923,19 @@ _ENV_VAR_REGISTRY_ITEMS: tuple[EnvVarSpec, ...] = (
737
923
  ENV_VAR_REGISTRY: tuple[EnvVarSpec, ...] = tuple(
738
924
  sorted(_ENV_VAR_REGISTRY_ITEMS, key=lambda spec: spec.name)
739
925
  )
926
+ _ENV_SENSITIVITY_BY_NAME = {spec.name: spec.sensitive for spec in ENV_VAR_REGISTRY}
927
+
928
+
929
+ def is_sensitive_env_var(name: str) -> bool:
930
+ normalized = str(name or "").strip().upper()
931
+ if _ENV_SENSITIVITY_BY_NAME.get(normalized, False):
932
+ return True
933
+ if normalized.startswith("OTEL_EXPORTER_OTLP_") and normalized.endswith("_HEADERS"):
934
+ return True
935
+ return any(
936
+ token in normalized
937
+ for token in ("KEY", "TOKEN", "SECRET", "PASSWORD", "AUTHORIZATION", "SIGNATURE")
938
+ )
740
939
 
741
940
 
742
941
  def iter_env_vars() -> tuple[EnvVarSpec, ...]: