create-windy 0.6.11 → 0.6.14

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 (546) hide show
  1. package/dist/cli.js +580 -269
  2. package/package.json +1 -1
  3. package/template/.agents/skills/windy-business-module/SKILL.md +98 -70
  4. package/template/.windy-template.json +3 -3
  5. package/template/AGENTS.md +3 -6
  6. package/template/apps/agent-server/Dockerfile +2 -3
  7. package/template/apps/agent-server/README.md +38 -54
  8. package/template/apps/agent-server/pyproject.toml +0 -1
  9. package/template/apps/agent-server/src/southwind_agent_server/app.py +4 -2
  10. package/template/apps/agent-server/src/southwind_agent_server/attempt_context.py +191 -0
  11. package/template/apps/agent-server/src/southwind_agent_server/attempt_context_projection.py +203 -0
  12. package/template/apps/agent-server/src/southwind_agent_server/client_completion_contracts.py +61 -0
  13. package/template/apps/agent-server/src/southwind_agent_server/client_completion_governance.py +82 -0
  14. package/template/apps/agent-server/src/southwind_agent_server/client_completion_routes.py +121 -0
  15. package/template/apps/agent-server/src/southwind_agent_server/client_completion_runtime.py +158 -0
  16. package/template/apps/agent-server/src/southwind_agent_server/context_message_digest.py +24 -0
  17. package/template/apps/agent-server/src/southwind_agent_server/context_version_contracts.py +71 -0
  18. package/template/apps/agent-server/src/southwind_agent_server/context_version_port.py +307 -0
  19. package/template/apps/agent-server/src/southwind_agent_server/contracts.py +39 -0
  20. package/template/apps/agent-server/src/southwind_agent_server/deterministic.py +2 -0
  21. package/template/apps/agent-server/src/southwind_agent_server/engine.py +9 -1
  22. package/template/apps/agent-server/src/southwind_agent_server/engine_identity.py +2 -0
  23. package/template/apps/agent-server/src/southwind_agent_server/fingerprint.py +15 -0
  24. package/template/apps/agent-server/src/southwind_agent_server/health_routes.py +37 -3
  25. package/template/apps/agent-server/src/southwind_agent_server/openai_engine.py +46 -26
  26. package/template/apps/agent-server/src/southwind_agent_server/openai_engine_validation.py +32 -0
  27. package/template/apps/agent-server/src/southwind_agent_server/openai_provider.py +7 -0
  28. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_insert.py +5 -2
  29. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_queries.py +1 -0
  30. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_store.py +6 -1
  31. package/template/apps/agent-server/src/southwind_agent_server/postgres_store.py +3 -2
  32. package/template/apps/agent-server/src/southwind_agent_server/postgres_store_backend.py +1 -0
  33. package/template/apps/agent-server/src/southwind_agent_server/provider_governance.py +21 -0
  34. package/template/apps/agent-server/src/southwind_agent_server/report_lifecycle.py +2 -1
  35. package/template/apps/agent-server/src/southwind_agent_server/report_presenter.py +1 -0
  36. package/template/apps/agent-server/src/southwind_agent_server/report_routes.py +7 -1
  37. package/template/apps/agent-server/src/southwind_agent_server/report_store.py +10 -56
  38. package/template/apps/agent-server/src/southwind_agent_server/report_store_protocol.py +75 -0
  39. package/template/apps/agent-server/src/southwind_agent_server/report_types.py +9 -2
  40. package/template/apps/agent-server/src/southwind_agent_server/runtime_budget.py +74 -0
  41. package/template/apps/agent-server/src/southwind_agent_server/runtime_factory.py +11 -3
  42. package/template/apps/agent-server/src/southwind_agent_server/service.py +41 -65
  43. package/template/apps/agent-server/src/southwind_agent_server/service_control.py +64 -0
  44. package/template/apps/agent-server/src/southwind_agent_server/service_execution.py +3 -0
  45. package/template/apps/agent-server/src/southwind_agent_server/sqlite_errors.py +2 -0
  46. package/template/apps/agent-server/src/southwind_agent_server/sqlite_schema.py +9 -1
  47. package/template/apps/agent-server/src/southwind_agent_server/sqlite_store.py +6 -5
  48. package/template/apps/agent-server/src/southwind_agent_server/store.py +2 -0
  49. package/template/apps/agent-server/src/southwind_agent_server/trajectory.py +137 -0
  50. package/template/apps/agent-server/src/southwind_agent_server/unavailable_engine.py +58 -0
  51. package/template/apps/agent-server/tests/test_api.py +30 -11
  52. package/template/apps/agent-server/tests/test_client_completion.py +230 -0
  53. package/template/apps/agent-server/tests/test_provider_attempt_reporting.py +12 -24
  54. package/template/apps/agent-server/tests/test_report_resilience.py +2 -0
  55. package/template/apps/agent-server/tests/test_report_routes.py +58 -1
  56. package/template/apps/agent-server/tests/test_report_summary_parity.py +1 -0
  57. package/template/apps/agent-server/tests/test_run_capacity.py +2 -0
  58. package/template/apps/agent-server/tests/test_runtime_factory_readiness.py +18 -3
  59. package/template/apps/agent-server/tests/test_trajectory.py +91 -0
  60. package/template/apps/agent-server/uv.lock +0 -259
  61. package/template/apps/server/Dockerfile +9 -4
  62. package/template/apps/server/src/agent/actor-projection-audit.ts +6 -0
  63. package/template/apps/server/src/agent/agent-run-delegation-policy.ts +115 -0
  64. package/template/apps/server/src/agent/agent-session-bootstrap.ts +23 -0
  65. package/template/apps/server/src/agent/{debug-session-facade-provider-failure.test.ts → agent-session-facade-provider-failure.test.ts} +24 -33
  66. package/template/apps/server/src/agent/{debug-session-facade.test.ts → agent-session-facade.test.ts} +34 -45
  67. package/template/apps/server/src/agent/{debug-session-facade.ts → agent-session-facade.ts} +50 -57
  68. package/template/apps/server/src/agent/{debug-session-id.test.ts → agent-session-id.test.ts} +5 -5
  69. package/template/apps/server/src/agent/{debug-session-id.ts → agent-session-id.ts} +7 -7
  70. package/template/apps/server/src/agent/{debug-session-provider-reader.ts → agent-session-provider-reader.ts} +18 -15
  71. package/template/apps/server/src/agent/{debug-session-routes.test.ts → agent-session-routes.test.ts} +16 -16
  72. package/template/apps/server/src/agent/{debug-session-routes.ts → agent-session-routes.ts} +12 -12
  73. package/template/apps/server/src/agent/{debug-session-validation.ts → agent-session-validation.ts} +13 -11
  74. package/template/apps/server/src/agent/client-session/authorization.ts +47 -0
  75. package/template/apps/server/src/agent/client-session/bootstrap.ts +96 -0
  76. package/template/apps/server/src/agent/client-session/capabilities.ts +19 -0
  77. package/template/apps/server/src/agent/client-session/completion.ts +299 -0
  78. package/template/apps/server/src/agent/client-session/contracts.ts +136 -0
  79. package/template/apps/server/src/agent/client-session/digest.ts +39 -0
  80. package/template/apps/server/src/agent/client-session/drizzle-repository.integration.test.ts +170 -0
  81. package/template/apps/server/src/agent/client-session/drizzle-repository.ts +345 -0
  82. package/template/apps/server/src/agent/client-session/errors.ts +28 -0
  83. package/template/apps/server/src/agent/client-session/fixtures/page-agent-1.12.2-request.json +52 -0
  84. package/template/apps/server/src/agent/client-session/host-auth.test.ts +144 -0
  85. package/template/apps/server/src/agent/client-session/host-auth.ts +110 -0
  86. package/template/apps/server/src/agent/client-session/manifest-admission.ts +240 -0
  87. package/template/apps/server/src/agent/client-session/openai-stream.ts +123 -0
  88. package/template/apps/server/src/agent/client-session/presentation.ts +46 -0
  89. package/template/apps/server/src/agent/client-session/remote-provider.test.ts +144 -0
  90. package/template/apps/server/src/agent/client-session/remote-provider.ts +216 -0
  91. package/template/apps/server/src/agent/client-session/repository.ts +225 -0
  92. package/template/apps/server/src/agent/client-session/request.test.ts +69 -0
  93. package/template/apps/server/src/agent/client-session/request.ts +289 -0
  94. package/template/apps/server/src/agent/client-session/revocation.ts +23 -0
  95. package/template/apps/server/src/agent/client-session/routes.ts +315 -0
  96. package/template/apps/server/src/agent/client-session/runtime-audit.ts +42 -0
  97. package/template/apps/server/src/agent/client-session/service.test-support.ts +226 -0
  98. package/template/apps/server/src/agent/client-session/service.test.ts +268 -0
  99. package/template/apps/server/src/agent/client-session/service.ts +346 -0
  100. package/template/apps/server/src/agent/context-memory/attempt-context-contracts.ts +60 -0
  101. package/template/apps/server/src/agent/context-memory/authoritative-source-registry.ts +127 -0
  102. package/template/apps/server/src/agent/context-memory/context-builder.test.ts +160 -0
  103. package/template/apps/server/src/agent/context-memory/context-builder.ts +184 -0
  104. package/template/apps/server/src/agent/context-memory/contracts.ts +284 -0
  105. package/template/apps/server/src/agent/context-memory/digest.ts +22 -0
  106. package/template/apps/server/src/agent/context-memory/memory-authorization.ts +82 -0
  107. package/template/apps/server/src/agent/context-memory/memory-content.ts +69 -0
  108. package/template/apps/server/src/agent/context-memory/memory-object-registry.ts +87 -0
  109. package/template/apps/server/src/agent/context-memory/memory-projector-contracts.ts +121 -0
  110. package/template/apps/server/src/agent/context-memory/memory-projector-validation.ts +155 -0
  111. package/template/apps/server/src/agent/context-memory/memory-projector.test.ts +19 -0
  112. package/template/apps/server/src/agent/context-memory/memory-projector.ts +259 -0
  113. package/template/apps/server/src/agent/context-memory/memory-retrieval-policy.ts +195 -0
  114. package/template/apps/server/src/agent/context-memory/memory-retriever.test.ts +339 -0
  115. package/template/apps/server/src/agent/context-memory/memory-retriever.ts +184 -0
  116. package/template/apps/server/src/agent/context-memory/search-provider-port.test.ts +62 -0
  117. package/template/apps/server/src/agent/context-memory/search-provider-port.ts +75 -0
  118. package/template/apps/server/src/agent/context-memory/working-context-expiry.ts +95 -0
  119. package/template/apps/server/src/agent/context-message-recovery.ts +23 -0
  120. package/template/apps/server/src/agent/context-version-routes.ts +241 -0
  121. package/template/apps/server/src/agent/context-version-runtime.ts +332 -0
  122. package/template/apps/server/src/agent/context-version-support.ts +93 -0
  123. package/template/apps/server/src/agent/context-version-validation.ts +118 -0
  124. package/template/apps/server/src/agent/drizzle-run-binding-repository.ts +11 -0
  125. package/template/apps/server/src/agent/idempotency-key.ts +9 -1
  126. package/template/apps/server/src/agent/memory-runtime-adapters.ts +266 -0
  127. package/template/apps/server/src/agent/memory-scope-binding.ts +14 -0
  128. package/template/apps/server/src/agent/module-ai-port-factory.ts +41 -0
  129. package/template/apps/server/src/agent/provider-input-governance.ts +19 -0
  130. package/template/apps/server/src/agent/remote-runtime-response.ts +162 -0
  131. package/template/apps/server/src/agent/remote-runtime.ts +53 -153
  132. package/template/apps/server/src/agent/run-audit.ts +2 -2
  133. package/template/apps/server/src/agent/run-authorization.test.ts +27 -0
  134. package/template/apps/server/src/agent/run-authorization.ts +60 -1
  135. package/template/apps/server/src/agent/run-binding-repository.ts +9 -0
  136. package/template/apps/server/src/agent/run-browser-authorization.ts +79 -0
  137. package/template/apps/server/src/agent/run-contracts.ts +23 -0
  138. package/template/apps/server/src/agent/run-facade.ts +139 -139
  139. package/template/apps/server/src/agent/run-failure-cleanup.ts +58 -0
  140. package/template/apps/server/src/agent/run-operation-policy.ts +20 -0
  141. package/template/apps/server/src/agent/run-route-input.ts +19 -1
  142. package/template/apps/server/src/agent/run-routes.ts +133 -5
  143. package/template/apps/server/src/agent/run-runtime-request.ts +89 -0
  144. package/template/apps/server/src/agent/run-session-authorization.ts +95 -0
  145. package/template/apps/server/src/agent/run-start-preparation.ts +71 -0
  146. package/template/apps/server/src/agent/runtime-bootstrap-input.ts +42 -0
  147. package/template/apps/server/src/agent/runtime-bootstrap-report.test.ts +53 -1
  148. package/template/apps/server/src/agent/runtime-bootstrap.ts +114 -111
  149. package/template/apps/server/src/agent/runtime-tool-composition.ts +38 -0
  150. package/template/apps/server/src/agent/session-context-source-support.ts +38 -0
  151. package/template/apps/server/src/agent/session-context-source.ts +346 -0
  152. package/template/apps/server/src/agent/session-invalidation/contracts.ts +217 -0
  153. package/template/apps/server/src/agent/session-invalidation/dispatcher.contract.test.ts +333 -0
  154. package/template/apps/server/src/agent/session-invalidation/dispatcher.ts +205 -0
  155. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.test.ts +127 -0
  156. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.ts +202 -0
  157. package/template/apps/server/src/agent/session-invalidation/read-guard.ts +39 -0
  158. package/template/apps/server/src/agent/session-invalidation/runtime.ts +69 -0
  159. package/template/apps/server/src/agent/session-invalidation/test-envelopes.ts +24 -0
  160. package/template/apps/server/src/agent/session-invalidation/worker.contract.test.ts +135 -0
  161. package/template/apps/server/src/agent/session-invalidation/worker.ts +76 -0
  162. package/template/apps/server/src/agent/session-log/checkpoint-digest.ts +36 -0
  163. package/template/apps/server/src/agent/session-log/domain.ts +123 -0
  164. package/template/apps/server/src/agent/session-log/events.ts +229 -0
  165. package/template/apps/server/src/agent/session-log/history.ts +143 -0
  166. package/template/apps/server/src/agent/session-log/in-memory-repository.ts +340 -0
  167. package/template/apps/server/src/agent/session-log/lifecycle.ts +67 -0
  168. package/template/apps/server/src/agent/session-log/replay-policy.ts +76 -0
  169. package/template/apps/server/src/agent/session-log/repository.ts +103 -0
  170. package/template/apps/server/src/agent/session-log/service.ts +349 -0
  171. package/template/apps/server/src/agent/session-log/session-log.test.ts +282 -0
  172. package/template/apps/server/src/agent/session-persistence/drizzle-context-memory.ts +348 -0
  173. package/template/apps/server/src/agent/session-persistence/drizzle-governed-context.ts +328 -0
  174. package/template/apps/server/src/agent/session-persistence/drizzle-invalidation-outbox.ts +260 -0
  175. package/template/apps/server/src/agent/session-persistence/drizzle-memory-projection-deletion.ts +56 -0
  176. package/template/apps/server/src/agent/session-persistence/drizzle-run-projection-receipt.ts +80 -0
  177. package/template/apps/server/src/agent/session-persistence/drizzle-session-fork.ts +147 -0
  178. package/template/apps/server/src/agent/session-persistence/drizzle-session-list.ts +24 -0
  179. package/template/apps/server/src/agent/session-persistence/drizzle-session-mapping.ts +154 -0
  180. package/template/apps/server/src/agent/session-persistence/drizzle-session-mutations.ts +64 -0
  181. package/template/apps/server/src/agent/session-persistence/drizzle-session-repository.ts +335 -0
  182. package/template/apps/server/src/agent/session-persistence/invalidation-projections.ts +229 -0
  183. package/template/apps/server/src/agent/session-persistence/payload-codec.ts +90 -0
  184. package/template/apps/server/src/agent/session-projection-access.ts +155 -0
  185. package/template/apps/server/src/agent/session-projection-bootstrap.ts +87 -0
  186. package/template/apps/server/src/agent/session-projection-errors.ts +22 -0
  187. package/template/apps/server/src/agent/session-projection-facade.ts +349 -0
  188. package/template/apps/server/src/agent/session-projection-routes.ts +215 -0
  189. package/template/apps/server/src/agent/session-projection-view.ts +137 -0
  190. package/template/apps/server/src/agent/session-result-memory.ts +228 -0
  191. package/template/apps/server/src/agent/session-run-lifecycle.ts +85 -0
  192. package/template/apps/server/src/agent/session-run-link-contracts.ts +56 -0
  193. package/template/apps/server/src/agent/session-run-link.ts +343 -0
  194. package/template/apps/server/src/agent/session-run-recovery.ts +16 -0
  195. package/template/apps/server/src/agent/session-runtime-composition.ts +265 -0
  196. package/template/apps/server/src/agent/session-source-chain-authorizer.ts +141 -0
  197. package/template/apps/server/src/agent/session-terminal-reconciler.ts +100 -0
  198. package/template/apps/server/src/agent/session-turn-state.ts +49 -0
  199. package/template/apps/server/src/agent/tool-audit.ts +3 -3
  200. package/template/apps/server/src/agent/tool-execution-receipt.ts +13 -0
  201. package/template/apps/server/src/agent/tool-host.ts +41 -4
  202. package/template/apps/server/src/agent/tool-registry-composition.ts +52 -0
  203. package/template/apps/server/src/agent/tool-registry.test.ts +5 -5
  204. package/template/apps/server/src/agent/tool-registry.ts +53 -59
  205. package/template/apps/server/src/agent/unavailable-routes.ts +49 -5
  206. package/template/apps/server/src/agent/workflow-durable-runtime-input.ts +32 -0
  207. package/template/apps/server/src/agent/workflow-runtime-bootstrap.ts +59 -0
  208. package/template/apps/server/src/agent-workflow/adapter-dispatch.ts +148 -0
  209. package/template/apps/server/src/agent-workflow/approval-node-adapter.ts +77 -0
  210. package/template/apps/server/src/agent-workflow/artifact-access-error.ts +9 -0
  211. package/template/apps/server/src/agent-workflow/artifact-node-adapter.ts +67 -0
  212. package/template/apps/server/src/agent-workflow/artifact-policy.ts +71 -0
  213. package/template/apps/server/src/agent-workflow/artifact-source-authorization.ts +85 -0
  214. package/template/apps/server/src/agent-workflow/authorization.ts +238 -0
  215. package/template/apps/server/src/agent-workflow/budget-ledger.ts +118 -0
  216. package/template/apps/server/src/agent-workflow/budget-validation.ts +305 -0
  217. package/template/apps/server/src/agent-workflow/canonical-agent-run-binding.ts +17 -0
  218. package/template/apps/server/src/agent-workflow/canonical-agent-run-evidence.ts +142 -0
  219. package/template/apps/server/src/agent-workflow/canonical-agent-run-port.ts +304 -0
  220. package/template/apps/server/src/agent-workflow/canonical-agent-run-remote.ts +64 -0
  221. package/template/apps/server/src/agent-workflow/canonical-json.ts +16 -0
  222. package/template/apps/server/src/agent-workflow/command-drive.ts +195 -0
  223. package/template/apps/server/src/agent-workflow/command-error.ts +9 -0
  224. package/template/apps/server/src/agent-workflow/command-facade.ts +290 -0
  225. package/template/apps/server/src/agent-workflow/command-input.ts +133 -0
  226. package/template/apps/server/src/agent-workflow/condition-node-adapter.ts +69 -0
  227. package/template/apps/server/src/agent-workflow/definition-budget-validation.ts +41 -0
  228. package/template/apps/server/src/agent-workflow/definition-node-validation.ts +197 -0
  229. package/template/apps/server/src/agent-workflow/definition-validation.ts +198 -0
  230. package/template/apps/server/src/agent-workflow/delegated-tool-authorization.ts +15 -0
  231. package/template/apps/server/src/agent-workflow/delegation-child-delivery.ts +129 -0
  232. package/template/apps/server/src/agent-workflow/delegation-execution-authorization.ts +218 -0
  233. package/template/apps/server/src/agent-workflow/delegation-policy-validation.ts +253 -0
  234. package/template/apps/server/src/agent-workflow/delegation-policy.ts +179 -0
  235. package/template/apps/server/src/agent-workflow/drizzle-artifact-port.ts +211 -0
  236. package/template/apps/server/src/agent-workflow/drizzle-artifact-support.ts +152 -0
  237. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-settlement.ts +271 -0
  238. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-support.ts +226 -0
  239. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger.ts +189 -0
  240. package/template/apps/server/src/agent-workflow/drizzle-cancellation-reconcile.ts +177 -0
  241. package/template/apps/server/src/agent-workflow/drizzle-delegated-tool-authorization.ts +155 -0
  242. package/template/apps/server/src/agent-workflow/drizzle-delegation-completion.ts +84 -0
  243. package/template/apps/server/src/agent-workflow/drizzle-delegation-lifecycle.ts +139 -0
  244. package/template/apps/server/src/agent-workflow/drizzle-delegation-port.ts +288 -0
  245. package/template/apps/server/src/agent-workflow/drizzle-effect-command-fence.ts +333 -0
  246. package/template/apps/server/src/agent-workflow/drizzle-evaluation-repository.ts +214 -0
  247. package/template/apps/server/src/agent-workflow/drizzle-event-validation.ts +43 -0
  248. package/template/apps/server/src/agent-workflow/drizzle-recovery-admission.ts +115 -0
  249. package/template/apps/server/src/agent-workflow/drizzle-repository-lineage.ts +103 -0
  250. package/template/apps/server/src/agent-workflow/drizzle-repository-mappers.ts +317 -0
  251. package/template/apps/server/src/agent-workflow/drizzle-repository-write.ts +311 -0
  252. package/template/apps/server/src/agent-workflow/drizzle-repository.ts +285 -0
  253. package/template/apps/server/src/agent-workflow/drizzle-side-effect-repository.ts +83 -0
  254. package/template/apps/server/src/agent-workflow/drizzle-write-support.ts +101 -0
  255. package/template/apps/server/src/agent-workflow/durable-continuation-authorization.ts +109 -0
  256. package/template/apps/server/src/agent-workflow/durable-continuation-driver.ts +97 -0
  257. package/template/apps/server/src/agent-workflow/durable-continuation-runtime.ts +173 -0
  258. package/template/apps/server/src/agent-workflow/durable-job-node-adapter.ts +106 -0
  259. package/template/apps/server/src/agent-workflow/effect-command-fence.ts +250 -0
  260. package/template/apps/server/src/agent-workflow/evaluation-evidence-coordinates.ts +225 -0
  261. package/template/apps/server/src/agent-workflow/evaluation-evidence-metrics.ts +280 -0
  262. package/template/apps/server/src/agent-workflow/evaluation-evidence-reader.ts +326 -0
  263. package/template/apps/server/src/agent-workflow/evaluation-metrics-validation.ts +85 -0
  264. package/template/apps/server/src/agent-workflow/evaluation-projection.ts +70 -0
  265. package/template/apps/server/src/agent-workflow/evaluation-repository.ts +134 -0
  266. package/template/apps/server/src/agent-workflow/evaluation-service.ts +292 -0
  267. package/template/apps/server/src/agent-workflow/evaluation-tool-registration.ts +95 -0
  268. package/template/apps/server/src/agent-workflow/evaluation-validation.ts +331 -0
  269. package/template/apps/server/src/agent-workflow/event-validation.ts +277 -0
  270. package/template/apps/server/src/agent-workflow/governed-tool-schema.ts +55 -0
  271. package/template/apps/server/src/agent-workflow/in-memory-evaluation-repository.ts +123 -0
  272. package/template/apps/server/src/agent-workflow/in-memory-mutation-validation.ts +154 -0
  273. package/template/apps/server/src/agent-workflow/in-memory-repository-support.ts +277 -0
  274. package/template/apps/server/src/agent-workflow/in-memory-repository.ts +339 -0
  275. package/template/apps/server/src/agent-workflow/in-memory-side-effect-store.ts +78 -0
  276. package/template/apps/server/src/agent-workflow/input-receipt.ts +55 -0
  277. package/template/apps/server/src/agent-workflow/model-node-adapter.ts +86 -0
  278. package/template/apps/server/src/agent-workflow/model-pricing-catalog.ts +215 -0
  279. package/template/apps/server/src/agent-workflow/node-adapter-factory.ts +83 -0
  280. package/template/apps/server/src/agent-workflow/node-adapters.ts +50 -0
  281. package/template/apps/server/src/agent-workflow/node-execution-ports.ts +185 -0
  282. package/template/apps/server/src/agent-workflow/node-input-receipt-port.ts +42 -0
  283. package/template/apps/server/src/agent-workflow/node-result-receipt.ts +50 -0
  284. package/template/apps/server/src/agent-workflow/platform-node-adapter-support.ts +185 -0
  285. package/template/apps/server/src/agent-workflow/platform-node-adapters.ts +256 -0
  286. package/template/apps/server/src/agent-workflow/platform-node-approval.ts +146 -0
  287. package/template/apps/server/src/agent-workflow/platform-node-direct-adapters.ts +65 -0
  288. package/template/apps/server/src/agent-workflow/production-delegation-scope.ts +58 -0
  289. package/template/apps/server/src/agent-workflow/production-node-policies.ts +62 -0
  290. package/template/apps/server/src/agent-workflow/query-service.ts +198 -0
  291. package/template/apps/server/src/agent-workflow/release.ts +96 -0
  292. package/template/apps/server/src/agent-workflow/repository.ts +157 -0
  293. package/template/apps/server/src/agent-workflow/routes.ts +307 -0
  294. package/template/apps/server/src/agent-workflow/runtime-composition.ts +308 -0
  295. package/template/apps/server/src/agent-workflow/scheduler-cancellation-reconcile.ts +253 -0
  296. package/template/apps/server/src/agent-workflow/scheduler-cancellation-support.ts +145 -0
  297. package/template/apps/server/src/agent-workflow/scheduler-cancellation.ts +2 -0
  298. package/template/apps/server/src/agent-workflow/scheduler-context.ts +85 -0
  299. package/template/apps/server/src/agent-workflow/scheduler-deadline.ts +65 -0
  300. package/template/apps/server/src/agent-workflow/scheduler-effect-result.ts +205 -0
  301. package/template/apps/server/src/agent-workflow/scheduler-execution-convergence.ts +174 -0
  302. package/template/apps/server/src/agent-workflow/scheduler-execution.ts +211 -0
  303. package/template/apps/server/src/agent-workflow/scheduler-failure.ts +102 -0
  304. package/template/apps/server/src/agent-workflow/scheduler-join-cancellation.ts +282 -0
  305. package/template/apps/server/src/agent-workflow/scheduler-mutation-queue.ts +13 -0
  306. package/template/apps/server/src/agent-workflow/scheduler-node-timeout.ts +139 -0
  307. package/template/apps/server/src/agent-workflow/scheduler-parallel-dispatch.ts +99 -0
  308. package/template/apps/server/src/agent-workflow/scheduler-recovery-activation.ts +63 -0
  309. package/template/apps/server/src/agent-workflow/scheduler-recovery-budget.ts +41 -0
  310. package/template/apps/server/src/agent-workflow/scheduler-recovery-effect.ts +331 -0
  311. package/template/apps/server/src/agent-workflow/scheduler-recovery-event-time.ts +26 -0
  312. package/template/apps/server/src/agent-workflow/scheduler-recovery-failed-policy.ts +129 -0
  313. package/template/apps/server/src/agent-workflow/scheduler-recovery-node.ts +208 -0
  314. package/template/apps/server/src/agent-workflow/scheduler-recovery-policy-convergence.ts +140 -0
  315. package/template/apps/server/src/agent-workflow/scheduler-reservation-convergence.ts +40 -0
  316. package/template/apps/server/src/agent-workflow/scheduler-side-effect-execution.ts +249 -0
  317. package/template/apps/server/src/agent-workflow/scheduler-support.ts +235 -0
  318. package/template/apps/server/src/agent-workflow/scheduler-workflow-cancellation.ts +296 -0
  319. package/template/apps/server/src/agent-workflow/scheduler.ts +289 -0
  320. package/template/apps/server/src/agent-workflow/service-completion.ts +102 -0
  321. package/template/apps/server/src/agent-workflow/service-mutation-identity.ts +94 -0
  322. package/template/apps/server/src/agent-workflow/service-node-admission.ts +36 -0
  323. package/template/apps/server/src/agent-workflow/service-node-run-update.ts +55 -0
  324. package/template/apps/server/src/agent-workflow/service-recovery-events.ts +38 -0
  325. package/template/apps/server/src/agent-workflow/service-recovery.ts +264 -0
  326. package/template/apps/server/src/agent-workflow/service-retry.ts +86 -0
  327. package/template/apps/server/src/agent-workflow/service-run-command.ts +131 -0
  328. package/template/apps/server/src/agent-workflow/service-state-error.ts +21 -0
  329. package/template/apps/server/src/agent-workflow/service-state-invariants.ts +44 -0
  330. package/template/apps/server/src/agent-workflow/service-support.ts +152 -0
  331. package/template/apps/server/src/agent-workflow/service.ts +307 -0
  332. package/template/apps/server/src/agent-workflow/side-effect-state.ts +226 -0
  333. package/template/apps/server/src/agent-workflow/state-machine.ts +321 -0
  334. package/template/apps/server/src/agent-workflow/subagent-node-adapter.ts +229 -0
  335. package/template/apps/server/src/agent-workflow/tool-node-adapter.ts +259 -0
  336. package/template/apps/server/src/agent-workflow/usage.ts +149 -0
  337. package/template/apps/server/src/agent-workflow/wait-signal-service.ts +147 -0
  338. package/template/apps/server/src/agent-workflow/workflow-artifact-token.ts +109 -0
  339. package/template/apps/server/src/agent-workflow/workflow-value-validation.ts +101 -0
  340. package/template/apps/server/src/agent-workflow/workspace-policy.ts +109 -0
  341. package/template/apps/server/src/ai-runtime-report/remote-parser.ts +41 -0
  342. package/template/apps/server/src/ai-runtime-report/service.test.ts +2 -0
  343. package/template/apps/server/src/app/agent-runtime-composition.ts +38 -0
  344. package/template/apps/server/src/app/client-agent-host-auth-binding.ts +10 -0
  345. package/template/apps/server/src/auth/actor-resolver.test.ts +33 -0
  346. package/template/apps/server/src/auth/actor-resolver.ts +6 -1
  347. package/template/apps/server/src/auth/composition.ts +36 -0
  348. package/template/apps/server/src/auth/routes.test-support.ts +2 -0
  349. package/template/apps/server/src/auth/routes.test.ts +18 -0
  350. package/template/apps/server/src/auth/runtime.ts +2 -0
  351. package/template/apps/server/src/auth/service-options.ts +16 -0
  352. package/template/apps/server/src/auth/service.ts +7 -12
  353. package/template/apps/server/src/index.ts +35 -37
  354. package/template/apps/server/src/license/pairing-service.test.ts +1 -1
  355. package/template/apps/server/src/module-host/agent-session-memory-port.ts +91 -0
  356. package/template/apps/server/src/module-host/{debug-session-provider-registration.test.ts → agent-session-provider-registration.test.ts} +42 -17
  357. package/template/apps/server/src/module-host/{debug-session-provider-registration.ts → agent-session-provider-registration.ts} +18 -18
  358. package/template/apps/server/src/module-host/agent-source-invalidation-port.ts +53 -0
  359. package/template/apps/server/src/module-host/http-runtime.ts +14 -0
  360. package/template/apps/server/src/module-host/initialize-contracts.ts +4 -5
  361. package/template/apps/server/src/module-host/initialize.ts +4 -4
  362. package/template/apps/server/src/module-host/request-context.test.ts +5 -5
  363. package/template/apps/server/src/module-host/request-context.ts +8 -0
  364. package/template/apps/server/src/module-host/route-install-context.ts +65 -0
  365. package/template/apps/server/src/module-host/route-installer.ts +11 -56
  366. package/template/apps/server/src/module-host/scoped-host.ts +17 -12
  367. package/template/apps/server/src/module-host/storage-authorization-binding.test.ts +3 -3
  368. package/template/apps/server/src/module-host.ts +3 -5
  369. package/template/apps/server/src/runtime.ts +3 -36
  370. package/template/apps/server/src/storage/routes-stream-cancellation.test.ts +19 -0
  371. package/template/apps/server/src/storage/routes.ts +3 -1
  372. package/template/apps/server/src/system/actor.ts +15 -2
  373. package/template/apps/server/src/system/authorization-invalidation-bridge.ts +30 -0
  374. package/template/apps/server/src/system/authorization-invalidation-composition.ts +36 -0
  375. package/template/apps/server/src/system/drizzle-system.ts +8 -1
  376. package/template/apps/server/src/system/identity-route-config.ts +9 -1
  377. package/template/apps/server/src/system/routes.ts +3 -0
  378. package/template/apps/server/src/system/seed.ts +3 -0
  379. package/template/apps/server/src/system/user-account-policy.ts +91 -0
  380. package/template/apps/web/package.json +1 -0
  381. package/template/apps/web/src/layout/AppSidebar.vue +2 -0
  382. package/template/apps/web/src/pages/system/AgentSessionPage.vue +73 -0
  383. package/template/apps/web/src/pages/system/AgentSessionPage.webtest.ts +66 -0
  384. package/template/apps/web/src/pages/system/AgentWorkflowPage.vue +69 -0
  385. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionDetail.vue +114 -0
  386. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionList.vue +84 -0
  387. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.vue +119 -0
  388. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.webtest.ts +46 -0
  389. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.vue +163 -0
  390. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.webtest.ts +62 -0
  391. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.vue +71 -0
  392. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.webtest.ts +34 -0
  393. package/template/apps/web/src/pages/system/components/agent-session/agent-session-presenter.ts +56 -0
  394. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeCard.vue +39 -0
  395. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeDetail.vue +172 -0
  396. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunDetail.vue +151 -0
  397. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunGraph.vue +96 -0
  398. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunList.vue +100 -0
  399. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunSummary.vue +148 -0
  400. package/template/apps/web/src/pages/system/components/agent-workflow/agent-workflow-presenter.ts +74 -0
  401. package/template/apps/web/src/pages/system/components/agent-workflow/workflow-graph-layout.ts +108 -0
  402. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.vue +9 -0
  403. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.webtest.ts +22 -0
  404. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunTable.webtest.ts +2 -0
  405. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeTrajectory.vue +118 -0
  406. package/template/apps/web/src/pages/system/composables/useAgentSessions.ts +209 -0
  407. package/template/apps/web/src/pages/system/composables/useAgentSessions.webtest.ts +138 -0
  408. package/template/apps/web/src/pages/system/composables/useAgentWorkflowRuns.ts +173 -0
  409. package/template/apps/web/src/router/index.ts +4 -0
  410. package/template/apps/web/src/router/platform-admin-route-bindings.ts +6 -0
  411. package/template/apps/web/src/services/agent-session-api.ts +159 -0
  412. package/template/apps/web/src/services/agent-session-api.webtest.ts +65 -0
  413. package/template/apps/web/src/services/agent-workflow-api.ts +181 -0
  414. package/template/apps/web/src/services/ai-runtime-api.ts +4 -0
  415. package/template/docker-compose.yml +11 -8
  416. package/template/docs/adr/0003-agent-session-event-source.md +3 -0
  417. package/template/docs/architecture/agent-harness.md +464 -0
  418. package/template/docs/architecture/agent-workflow.md +99 -0
  419. package/template/docs/architecture/ai-runtime.md +55 -47
  420. package/template/docs/architecture/module-host.md +4 -3
  421. package/template/docs/operations/adk-retirement.md +98 -0
  422. package/template/docs/operations/agent-session-memory.md +162 -0
  423. package/template/docs/operations/agent-session-troubleshooting.md +196 -0
  424. package/template/docs/operations/agent-workflow-recovery.md +74 -0
  425. package/template/docs/operations/incremental-delivery.md +1 -1
  426. package/template/docs/platform/agent-production-store.md +82 -0
  427. package/template/docs/platform/agent-run-reattachment.md +52 -0
  428. package/template/docs/platform/agent-runtime-observability.md +4 -3
  429. package/template/docs/platform/agent-runtime.md +116 -281
  430. package/template/docs/platform/agent-tool-approval.md +61 -0
  431. package/template/docs/platform/background-ai-operations.md +50 -0
  432. package/template/docs/platform/client-agent-session.md +173 -0
  433. package/template/docs/platform/embedding-ai-runtime.md +94 -0
  434. package/template/docs/platform/platform-authentication.md +5 -8
  435. package/template/package.json +0 -1
  436. package/template/packages/ai-client/index.ts +1 -0
  437. package/template/packages/ai-client/package.json +2 -1
  438. package/template/packages/ai-client/src/agent/client/client.ts +15 -2
  439. package/template/packages/ai-client/src/agent/client/run-protocol.test.ts +39 -25
  440. package/template/packages/ai-client/src/agent/client/types.ts +4 -0
  441. package/template/packages/ai-client/src/agent/contracts/contracts.test.ts +49 -7
  442. package/template/packages/ai-client/src/agent/contracts/events.ts +61 -0
  443. package/template/packages/ai-client/src/agent/contracts/runs.ts +1 -0
  444. package/template/packages/ai-client/src/client-agent/contracts.ts +131 -0
  445. package/template/packages/ai-client/src/client-agent/http.test.ts +60 -0
  446. package/template/packages/ai-client/src/client-agent/http.ts +66 -0
  447. package/template/packages/ai-client/src/client-agent/index.ts +3 -0
  448. package/template/packages/ai-client/src/client-agent/validation.test.ts +57 -0
  449. package/template/packages/ai-client/src/client-agent/validation.ts +152 -0
  450. package/template/packages/config/index.test.ts +18 -0
  451. package/template/packages/config/package.json +1 -1
  452. package/template/packages/config/src/platform-validation.ts +8 -0
  453. package/template/packages/config/src/platform.ts +22 -9
  454. package/template/packages/database/drizzle/0055_square_yellowjacket.sql +47 -0
  455. package/template/packages/database/drizzle/0056_tricky_living_mummy.sql +2 -0
  456. package/template/packages/database/drizzle/0057_mature_doomsday.sql +4 -0
  457. package/template/packages/database/drizzle/0058_agent_session_memory.sql +159 -0
  458. package/template/packages/database/drizzle/0059_agent_source_module_key.sql +16 -0
  459. package/template/packages/database/drizzle/0060_slimy_rocket_raccoon.sql +43 -0
  460. package/template/packages/database/drizzle/0061_agent_workflow.sql +303 -0
  461. package/template/packages/database/drizzle/meta/0055_snapshot.json +11071 -0
  462. package/template/packages/database/drizzle/meta/0056_snapshot.json +11098 -0
  463. package/template/packages/database/drizzle/meta/0057_snapshot.json +10878 -0
  464. package/template/packages/database/drizzle/meta/0058_snapshot.json +12294 -0
  465. package/template/packages/database/drizzle/meta/0059_snapshot.json +12344 -0
  466. package/template/packages/database/drizzle/meta/0060_snapshot.json +12326 -0
  467. package/template/packages/database/drizzle/meta/0061_snapshot.json +14395 -0
  468. package/template/packages/database/drizzle/meta/_journal.json +49 -0
  469. package/template/packages/database/package.json +1 -1
  470. package/template/packages/database/src/agent-runtime-schema.test.ts +26 -0
  471. package/template/packages/database/src/schema/agent-context-message.ts +38 -0
  472. package/template/packages/database/src/schema/agent-runtime.ts +7 -0
  473. package/template/packages/database/src/schema/agent-session-receipt.ts +36 -0
  474. package/template/packages/database/src/schema/agent-session.ts +344 -0
  475. package/template/packages/database/src/schema/agent-workflow-delegation.ts +126 -0
  476. package/template/packages/database/src/schema/agent-workflow-effects.ts +213 -0
  477. package/template/packages/database/src/schema/agent-workflow-evaluation.ts +67 -0
  478. package/template/packages/database/src/schema/agent-workflow.ts +270 -0
  479. package/template/packages/database/src/schema/client-agent.ts +95 -0
  480. package/template/packages/database/src/schema/index.ts +8 -0
  481. package/template/packages/jobs/package.json +1 -1
  482. package/template/packages/modules/index.ts +2 -0
  483. package/template/packages/modules/package.json +1 -1
  484. package/template/packages/modules/src/ai-client-execution-composition.test.ts +98 -0
  485. package/template/packages/modules/src/ai-client-execution-policy.ts +54 -0
  486. package/template/packages/modules/src/ai-operation-composition.ts +2 -0
  487. package/template/packages/modules/src/manifest.ts +15 -0
  488. package/template/packages/modules/src/system-admin-routes.ts +16 -0
  489. package/template/packages/modules/src/system-admin-ui-catalog.ts +4 -1
  490. package/template/packages/modules/src/system-agent-audit-actions.ts +26 -0
  491. package/template/packages/modules/src/system-ai-api-bindings.ts +262 -0
  492. package/template/packages/modules/src/system-api-control-plane.ts +4 -78
  493. package/template/packages/modules/src/system-audit-actions.ts +113 -0
  494. package/template/packages/modules/src/system-features.ts +17 -0
  495. package/template/packages/modules/src/system-module-catalog.ts +21 -11
  496. package/template/packages/modules/src/system-modules.ts +22 -0
  497. package/template/packages/modules/src/system-permissions.ts +8 -0
  498. package/template/packages/server-sdk/index.ts +43 -0
  499. package/template/packages/server-sdk/package.json +5 -1
  500. package/template/packages/server-sdk/src/agent-session-memory-port.ts +64 -0
  501. package/template/packages/server-sdk/src/agent-session-provider.ts +63 -0
  502. package/template/packages/server-sdk/src/agent-source-invalidation-port.ts +54 -0
  503. package/template/packages/server-sdk/src/ai-operation-registration.ts +2 -0
  504. package/template/packages/server-sdk/src/client-agent-session.ts +95 -0
  505. package/template/packages/server-sdk/src/debug-session-provider.ts +14 -63
  506. package/template/packages/server-sdk/src/module-host.ts +7 -3
  507. package/template/packages/server-sdk/src/request-context.ts +6 -0
  508. package/template/packages/shared/index.ts +3 -0
  509. package/template/packages/shared/package.json +1 -1
  510. package/template/packages/shared/src/agent-workflow-definition.ts +113 -0
  511. package/template/packages/shared/src/agent-workflow-delegation.ts +123 -0
  512. package/template/packages/shared/src/agent-workflow-evaluation.ts +159 -0
  513. package/template/packages/shared/src/agent-workflow-events.ts +99 -0
  514. package/template/packages/shared/src/agent-workflow-run.ts +259 -0
  515. package/template/packages/shared/src/agent-workflow.ts +3 -0
  516. package/template/packages/shared/src/ai-runtime-report.ts +25 -0
  517. package/template/packages/shared/src/rbac.ts +24 -0
  518. package/template/packages/storage/package.json +1 -1
  519. package/template/packages/storage/src/upload-streams.test.ts +31 -0
  520. package/template/packages/storage/src/upload-streams.ts +20 -6
  521. package/template/apps/agent-server/adk_web_agents/__init__.py +0 -1
  522. package/template/apps/agent-server/adk_web_agents/canonical_debug/__init__.py +0 -1
  523. package/template/apps/agent-server/adk_web_agents/canonical_debug/agent.py +0 -145
  524. package/template/apps/agent-server/adk_web_agents/safe_debug/__init__.py +0 -3
  525. package/template/apps/agent-server/adk_web_agents/safe_debug/agent.py +0 -40
  526. package/template/apps/agent-server/adk_web_agents/services.py +0 -25
  527. package/template/apps/agent-server/project/adk-web-debug.json +0 -4
  528. package/template/apps/agent-server/src/southwind_agent_server/adk_adapter.py +0 -333
  529. package/template/apps/agent-server/src/southwind_agent_server/adk_debug.py +0 -348
  530. package/template/apps/agent-server/src/southwind_agent_server/adk_debug_sessions.py +0 -325
  531. package/template/apps/agent-server/src/southwind_agent_server/adk_failure.py +0 -13
  532. package/template/apps/agent-server/src/southwind_agent_server/adk_model.py +0 -304
  533. package/template/apps/agent-server/src/southwind_agent_server/adk_tools.py +0 -143
  534. package/template/apps/agent-server/tests/test_adk_adapter.py +0 -307
  535. package/template/apps/agent-server/tests/test_adk_debug_result_polling.py +0 -139
  536. package/template/apps/agent-server/tests/test_adk_debug_sessions.py +0 -215
  537. package/template/apps/agent-server/tests/test_adk_web_agent.py +0 -12
  538. package/template/apps/agent-server/tests/test_adk_web_canonical_debug.py +0 -282
  539. package/template/apps/server/src/agent/run-debug-authorization.ts +0 -27
  540. package/template/apps/server/src/agent/run-facade-adk-debug.test.ts +0 -95
  541. package/template/apps/server/src/runtime-adk-debug.test.ts +0 -270
  542. package/template/apps/server/src/runtime-adk-debug.ts +0 -164
  543. package/template/apps/server/src/runtime-request-actor.test.ts +0 -55
  544. package/template/apps/server/src/runtime-request-actor.ts +0 -22
  545. package/template/docker-compose.agent-debug.yml +0 -58
  546. package/template/scripts/dev-adk-web.ts +0 -107
@@ -1,26 +1,22 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import type { ModuleManifest } from "@southwind-ai/modules";
3
3
  import {
4
- MODULE_DEBUG_SESSION_SCHEMA_VERSION,
5
- type ModuleDebugSessionProviderV1,
4
+ MODULE_AGENT_SESSION_SCHEMA_VERSION,
5
+ type ModuleAgentSessionProviderV1,
6
6
  } from "@southwind-ai/server-sdk";
7
7
  import { featureKey } from "@southwind-ai/shared";
8
- import {
9
- bindModuleUserProjection,
10
- createRequestGuardContext,
11
- type RequestActor,
12
- } from "../guards.js";
8
+ import { createRequestGuardContext, type RequestActor } from "../guards.js";
13
9
  import type { InitializedModuleHosts } from "../module-host.js";
14
10
  import { manifest } from "../module-host/test-fixtures.js";
15
11
  import { createServerRuntime } from "../runtime.js";
16
- import { DebugSessionFacadeV1 } from "./debug-session-facade.js";
17
- import { DebugSessionIdCodecV1 } from "./debug-session-id.js";
12
+ import { AgentSessionFacadeV1 } from "./agent-session-facade.js";
13
+ import { AgentSessionIdCodecV1 } from "./agent-session-id.js";
18
14
 
19
15
  const OPERATION_KEY = "known.copilot.global";
20
16
  const SOURCE_ID = "conversation-sensitive-42";
21
17
  const SECRET_FAILURE = `provider failed for ${SOURCE_ID}`;
22
18
 
23
- describe("ADK 调试会话 Provider 故障隔离", () => {
19
+ describe("Agent 会话 Provider 故障隔离", () => {
24
20
  test("一个 Provider 故障时 fail closed,避免把 partial 伪装成完整列表", async () => {
25
21
  const failing = provider("known.failing-history", {
26
22
  list: async () => {
@@ -53,11 +49,10 @@ describe("ADK 调试会话 Provider 故障隔离", () => {
53
49
  action: "known.copilot.history.read",
54
50
  outcome: "failure",
55
51
  target: {
56
- type: "agent-debug-session-provider",
52
+ type: "agent-session-provider",
57
53
  id: "known.failing-history",
58
54
  },
59
55
  metadata: {
60
- debugDataActorId: "user_dev_admin",
61
56
  mode: "list",
62
57
  phase: "list",
63
58
  failureCode: "PROVIDER_UNAVAILABLE",
@@ -130,7 +125,7 @@ describe("ADK 调试会话 Provider 故障隔离", () => {
130
125
  });
131
126
  });
132
127
 
133
- function failingProvider(key: string): ModuleDebugSessionProviderV1 {
128
+ function failingProvider(key: string): ModuleAgentSessionProviderV1 {
134
129
  return provider(key, {
135
130
  list: async () => {
136
131
  throw new Error(SECRET_FAILURE);
@@ -141,10 +136,10 @@ function failingProvider(key: string): ModuleDebugSessionProviderV1 {
141
136
 
142
137
  function provider(
143
138
  key: string,
144
- methods: Pick<ModuleDebugSessionProviderV1, "list" | "get">,
145
- ): ModuleDebugSessionProviderV1 {
139
+ methods: Pick<ModuleAgentSessionProviderV1, "list" | "get">,
140
+ ): ModuleAgentSessionProviderV1 {
146
141
  return {
147
- schemaVersion: MODULE_DEBUG_SESSION_SCHEMA_VERSION,
142
+ schemaVersion: MODULE_AGENT_SESSION_SCHEMA_VERSION,
148
143
  key,
149
144
  operationKeys: [OPERATION_KEY],
150
145
  featureKey: "known.copilot",
@@ -154,10 +149,10 @@ function provider(
154
149
  };
155
150
  }
156
151
 
157
- function createFixture(providers: readonly ModuleDebugSessionProviderV1[]) {
158
- const module = debugManifest();
152
+ function createFixture(providers: readonly ModuleAgentSessionProviderV1[]) {
153
+ const module = agentManifest();
159
154
  const hosts = {
160
- debugSessionProviders: providers.map((provider) => ({
155
+ agentSessionProviders: providers.map((provider) => ({
161
156
  moduleName: "known",
162
157
  provider,
163
158
  })),
@@ -173,25 +168,21 @@ function createFixture(providers: readonly ModuleDebugSessionProviderV1[]) {
173
168
  licenseResolver: { resolve: () => ({ status: "valid" }) },
174
169
  },
175
170
  );
176
- const runtime = {
177
- ...base,
178
- agentDebugOperationForActor: (actorId: string) =>
179
- actorId === "service_adk_debug" ? OPERATION_KEY : undefined,
180
- };
171
+ const runtime = base;
181
172
  const context = createRequestGuardContext(
182
- new Request("http://localhost/api/agent/debug/sessions/v1"),
173
+ new Request("http://localhost/api/agent/sessions/v1"),
183
174
  {
184
- resolveActor: () => bindModuleUserProjection(actor(), "user_dev_admin"),
175
+ resolveActor: () => actor(),
185
176
  resolveLicense: () => ({ status: "valid" }),
186
177
  licenseEnforced: false,
187
178
  },
188
179
  );
189
180
  return {
190
181
  context,
191
- facade: new DebugSessionFacadeV1(
182
+ facade: new AgentSessionFacadeV1(
192
183
  hosts,
193
184
  runtime,
194
- new DebugSessionIdCodecV1("test-secret-012345678901234567890123456789"),
185
+ new AgentSessionIdCodecV1("test-secret-012345678901234567890123456789"),
195
186
  ),
196
187
  runtime,
197
188
  };
@@ -199,10 +190,10 @@ function createFixture(providers: readonly ModuleDebugSessionProviderV1[]) {
199
190
 
200
191
  function actor(): RequestActor {
201
192
  return {
202
- id: "service_adk_debug",
203
- type: "service",
204
- name: "ADK Debug",
205
- roleCodes: ["adk-debug"],
193
+ id: "user_dev_admin",
194
+ type: "user",
195
+ name: "开发管理员",
196
+ roleCodes: ["analyst"],
206
197
  permissionKeys: ["known.copilot.execute"],
207
198
  };
208
199
  }
@@ -221,7 +212,7 @@ function signal(): AbortSignal {
221
212
  return new AbortController().signal;
222
213
  }
223
214
 
224
- function debugManifest(): ModuleManifest {
215
+ function agentManifest(): ModuleManifest {
225
216
  return manifest("known", {
226
217
  features: [
227
218
  {
@@ -1,29 +1,25 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import type { ModuleManifest } from "@southwind-ai/modules";
3
3
  import {
4
- MODULE_DEBUG_SESSION_SCHEMA_VERSION,
5
- type ModuleDebugSessionProviderV1,
4
+ MODULE_AGENT_SESSION_SCHEMA_VERSION,
5
+ type ModuleAgentSessionProviderV1,
6
6
  } from "@southwind-ai/server-sdk";
7
7
  import { featureKey } from "@southwind-ai/shared";
8
- import {
9
- bindModuleUserProjection,
10
- createRequestGuardContext,
11
- type RequestActor,
12
- } from "../guards.js";
8
+ import { createRequestGuardContext, type RequestActor } from "../guards.js";
13
9
  import { initializeModuleHosts } from "../module-host.js";
14
10
  import { manifest } from "../module-host/test-fixtures.js";
15
11
  import { createServerRuntime } from "../runtime.js";
16
12
  import {
17
- DebugSessionFacadeError,
18
- DebugSessionFacadeV1,
19
- } from "./debug-session-facade.js";
20
- import { DebugSessionIdCodecV1 } from "./debug-session-id.js";
13
+ AgentSessionFacadeError,
14
+ AgentSessionFacadeV1,
15
+ } from "./agent-session-facade.js";
16
+ import { AgentSessionIdCodecV1 } from "./agent-session-id.js";
21
17
 
22
18
  const OPERATION_KEY = "known.copilot.global";
23
19
  const SOURCE_ID = "conversation-private-42";
24
20
 
25
- describe("ADK 调试会话 V1 facade", () => {
26
- test("投影真实业务用户并只返回不透明 ID 与有界通用 DTO", async () => {
21
+ describe("Agent 会话 V1 facade", () => {
22
+ test("使用当前登录用户并只返回不透明 ID 与有界通用 DTO", async () => {
27
23
  const seenActors: string[] = [];
28
24
  const fixture = await createFixture({
29
25
  list: async ({ actor }) => {
@@ -54,7 +50,7 @@ describe("ADK 调试会话 V1 facade", () => {
54
50
 
55
51
  const listed = await fixture.facade.list(fixture.context, signal());
56
52
  const id = listed.sessions[0]?.id;
57
- expect(id).toMatch(/^wdbg1_/);
53
+ expect(id).toMatch(/^wags1_/);
58
54
  expect(JSON.stringify(listed)).not.toContain(SOURCE_ID);
59
55
  expect(listed.sessions[0]).toMatchObject({
60
56
  title: "历史研判",
@@ -81,9 +77,9 @@ describe("ADK 调试会话 V1 facade", () => {
81
77
  .filter(({ action }) => action === "known.copilot.history.read");
82
78
  expect(audits).toHaveLength(2);
83
79
  expect(audits[0]?.metadata).toMatchObject({
84
- debugDataActorId: "user_dev_admin",
85
80
  mode: "list",
86
81
  });
82
+ expect(audits[0]?.actor.id).toBe("user_dev_admin");
87
83
  });
88
84
 
89
85
  test("每次详情读取重新 list 授权,未知和非法 ID 同形安全失败", async () => {
@@ -154,7 +150,7 @@ describe("ADK 调试会话 V1 facade", () => {
154
150
  });
155
151
  });
156
152
 
157
- test("非调试身份、缺少权限与 Provider 越界响应均 fail closed", async () => {
153
+ test("缺少权限与 Provider 越界响应均 fail closed", async () => {
158
154
  const fixture = await createFixture({
159
155
  list: async () => ({ sessions: [summary()], truncated: false }),
160
156
  get: async () => ({
@@ -186,12 +182,12 @@ describe("ADK 调试会话 V1 facade", () => {
186
182
  );
187
183
  await expect(
188
184
  forbidden.facade.list(forbidden.context, signal()),
189
- ).rejects.toBeInstanceOf(DebugSessionFacadeError);
185
+ ).rejects.toBeInstanceOf(AgentSessionFacadeError);
190
186
 
191
- const ordinaryContext = createContext(
192
- { ...actor(), id: "user_ordinary", type: "user" },
193
- false,
194
- );
187
+ const ordinaryContext = createContext({
188
+ ...actor([]),
189
+ id: "user_ordinary",
190
+ });
195
191
  await expect(
196
192
  fixture.facade.list(ordinaryContext, signal()),
197
193
  ).rejects.toMatchObject({ code: "FORBIDDEN", status: 403 });
@@ -199,12 +195,12 @@ describe("ADK 调试会话 V1 facade", () => {
199
195
  });
200
196
 
201
197
  async function createFixture(
202
- methods: Pick<ModuleDebugSessionProviderV1, "list" | "get">,
198
+ methods: Pick<ModuleAgentSessionProviderV1, "list" | "get">,
203
199
  permissionKeys = ["known.copilot.execute"],
204
200
  ) {
205
- const module = debugManifest();
206
- const provider: ModuleDebugSessionProviderV1 = {
207
- schemaVersion: MODULE_DEBUG_SESSION_SCHEMA_VERSION,
201
+ const module = agentManifest();
202
+ const provider: ModuleAgentSessionProviderV1 = {
203
+ schemaVersion: MODULE_AGENT_SESSION_SCHEMA_VERSION,
208
204
  key: "known.copilot.history",
209
205
  operationKeys: [OPERATION_KEY],
210
206
  featureKey: "known.copilot",
@@ -218,7 +214,7 @@ async function createFixture(
218
214
  {
219
215
  manifest: module,
220
216
  setup(host) {
221
- host.registerDebugSessionProviders([provider]);
217
+ host.registerAgentSessionProviders([provider]);
222
218
  },
223
219
  },
224
220
  ],
@@ -230,31 +226,24 @@ async function createFixture(
230
226
  licenseResolver: { resolve: () => ({ status: "valid" }) },
231
227
  },
232
228
  );
233
- const runtime = {
234
- ...base,
235
- agentDebugOperationForActor: (actorId: string) =>
236
- actorId === "service_adk_debug" ? OPERATION_KEY : undefined,
237
- };
238
- const context = createContext(actor(permissionKeys), true);
229
+ const runtime = base;
230
+ const context = createContext(actor(permissionKeys));
239
231
  return {
240
232
  context,
241
- facade: new DebugSessionFacadeV1(
233
+ facade: new AgentSessionFacadeV1(
242
234
  hosts,
243
235
  runtime,
244
- new DebugSessionIdCodecV1("test-secret-012345678901234567890123456789"),
236
+ new AgentSessionIdCodecV1("test-secret-012345678901234567890123456789"),
245
237
  ),
246
238
  runtime,
247
239
  };
248
240
  }
249
241
 
250
- function createContext(value: RequestActor, projected: boolean) {
251
- const actorValue = projected
252
- ? bindModuleUserProjection(value, "user_dev_admin")
253
- : value;
242
+ function createContext(value: RequestActor) {
254
243
  return createRequestGuardContext(
255
- new Request("http://localhost/api/agent/debug/sessions/v1"),
244
+ new Request("http://localhost/api/agent/sessions/v1"),
256
245
  {
257
- resolveActor: () => actorValue,
246
+ resolveActor: () => value,
258
247
  resolveLicense: () => ({ status: "valid" }),
259
248
  licenseEnforced: false,
260
249
  },
@@ -265,10 +254,10 @@ function actor(
265
254
  permissionKeys: string[] = ["known.copilot.execute"],
266
255
  ): RequestActor {
267
256
  return {
268
- id: "service_adk_debug",
269
- type: "service",
270
- name: "ADK Debug",
271
- roleCodes: ["adk-debug"],
257
+ id: "user_dev_admin",
258
+ type: "user",
259
+ name: "开发管理员",
260
+ roleCodes: ["analyst"],
272
261
  permissionKeys,
273
262
  };
274
263
  }
@@ -287,7 +276,7 @@ function signal(): AbortSignal {
287
276
  return new AbortController().signal;
288
277
  }
289
278
 
290
- function debugManifest(): ModuleManifest {
279
+ function agentManifest(): ModuleManifest {
291
280
  return manifest("known", {
292
281
  features: [
293
282
  {
@@ -1,41 +1,38 @@
1
1
  import { randomUUIDv7 } from "bun";
2
2
  import {
3
- MODULE_DEBUG_SESSION_SCHEMA_VERSION,
4
- type ModuleDebugSessionSummaryV1,
3
+ MODULE_AGENT_SESSION_SCHEMA_VERSION,
4
+ type ModuleAgentSessionSummaryV1,
5
5
  } from "@southwind-ai/server-sdk";
6
6
  import { evaluateAccessGuards } from "../access-guards.js";
7
7
  import { auditActor, type RequestGuardContext } from "../guards.js";
8
8
  import type {
9
9
  InitializedModuleHosts,
10
- RegisteredModuleDebugSessionProvider,
10
+ RegisteredModuleAgentSessionProvider,
11
11
  } from "../module-host.js";
12
12
  import { toModuleActor } from "../module-host.js";
13
13
  import type { createServerRuntime } from "../runtime.js";
14
- import { debugActorAuditMetadata } from "./run-debug-authorization.js";
15
- import { DebugSessionIdCodecV1 } from "./debug-session-id.js";
16
- import { readAllDebugSessionSummaries } from "./debug-session-provider-reader.js";
14
+ import { AgentSessionIdCodecV1 } from "./agent-session-id.js";
15
+ import { readAllAgentSessionSummaries } from "./agent-session-provider-reader.js";
17
16
  import {
18
- DebugSessionProviderContractError,
19
- validateDebugSessionDetail,
20
- } from "./debug-session-validation.js";
17
+ AgentSessionProviderContractError,
18
+ validateAgentSessionDetail,
19
+ } from "./agent-session-validation.js";
21
20
 
22
21
  type ServerRuntime = Pick<
23
22
  ReturnType<typeof createServerRuntime>,
24
- | "agentDebugOperationForActor"
25
- | "auditSink"
26
- | "recordDecisions"
27
- | "resolveFeature"
23
+ "auditSink" | "recordDecisions" | "resolveFeature"
28
24
  >;
29
25
 
30
- export interface DebugSessionSummaryDtoV1 {
26
+ export interface AgentSessionSummaryDtoV1 {
31
27
  readonly id: string;
28
+ readonly operationKey: string;
32
29
  readonly title: string;
33
30
  readonly scopeLabel?: string;
34
31
  readonly updatedAt: string;
35
32
  readonly revision: string;
36
33
  }
37
34
 
38
- export interface DebugSessionDetailDtoV1 extends DebugSessionSummaryDtoV1 {
35
+ export interface AgentSessionDetailDtoV1 extends AgentSessionSummaryDtoV1 {
39
36
  readonly messages: readonly {
40
37
  sequence: number;
41
38
  role: "user" | "assistant";
@@ -44,7 +41,7 @@ export interface DebugSessionDetailDtoV1 extends DebugSessionSummaryDtoV1 {
44
41
  }[];
45
42
  }
46
43
 
47
- export class DebugSessionFacadeError extends Error {
44
+ export class AgentSessionFacadeError extends Error {
48
45
  constructor(
49
46
  readonly code:
50
47
  | "FORBIDDEN"
@@ -59,11 +56,11 @@ export class DebugSessionFacadeError extends Error {
59
56
  }
60
57
  }
61
58
 
62
- export class DebugSessionFacadeV1 {
59
+ export class AgentSessionFacadeV1 {
63
60
  constructor(
64
61
  private readonly hosts: InitializedModuleHosts,
65
62
  private readonly runtime: ServerRuntime,
66
- private readonly ids: DebugSessionIdCodecV1,
63
+ private readonly ids: AgentSessionIdCodecV1,
67
64
  ) {}
68
65
 
69
66
  async list(context: RequestGuardContext, signal: AbortSignal) {
@@ -72,7 +69,7 @@ export class DebugSessionFacadeV1 {
72
69
  const results = await Promise.all(
73
70
  authorized.map(async (entry) => {
74
71
  try {
75
- const sessions = await readAllDebugSessionSummaries({
72
+ const sessions = await readAllAgentSessionSummaries({
76
73
  provider: entry.provider,
77
74
  actor,
78
75
  operationKey: entry.operationKey,
@@ -97,7 +94,7 @@ export class DebugSessionFacadeV1 {
97
94
  Date.parse(right.updatedAt) - Date.parse(left.updatedAt),
98
95
  );
99
96
  return {
100
- schemaVersion: MODULE_DEBUG_SESSION_SCHEMA_VERSION,
97
+ schemaVersion: MODULE_AGENT_SESSION_SCHEMA_VERSION,
101
98
  sessions: projected,
102
99
  truncated: false,
103
100
  };
@@ -109,9 +106,9 @@ export class DebugSessionFacadeV1 {
109
106
  signal: AbortSignal,
110
107
  ) {
111
108
  if (!this.ids.isWellFormed(sessionId)) {
112
- throw new DebugSessionFacadeError(
109
+ throw new AgentSessionFacadeError(
113
110
  "INVALID_SESSION_ID",
114
- "调试会话 ID 无效",
111
+ "Agent 会话 ID 无效",
115
112
  400,
116
113
  );
117
114
  }
@@ -119,9 +116,9 @@ export class DebugSessionFacadeV1 {
119
116
  const actor = toModuleActor(context.actor);
120
117
  let providerFailed = false;
121
118
  for (const entry of authorized) {
122
- let summaries: readonly ModuleDebugSessionSummaryV1[];
119
+ let summaries: readonly ModuleAgentSessionSummaryV1[];
123
120
  try {
124
- summaries = await readAllDebugSessionSummaries({
121
+ summaries = await readAllAgentSessionSummaries({
125
122
  provider: entry.provider,
126
123
  actor,
127
124
  operationKey: entry.operationKey,
@@ -143,7 +140,7 @@ export class DebugSessionFacadeV1 {
143
140
  signal,
144
141
  });
145
142
  if (!detail) break;
146
- const validated = validateDebugSessionDetail(
143
+ const validated = validateAgentSessionDetail(
147
144
  detail,
148
145
  summary.sourceId,
149
146
  );
@@ -155,11 +152,11 @@ export class DebugSessionFacadeV1 {
155
152
  validated.messages.length,
156
153
  );
157
154
  return {
158
- schemaVersion: MODULE_DEBUG_SESSION_SCHEMA_VERSION,
155
+ schemaVersion: MODULE_AGENT_SESSION_SCHEMA_VERSION,
159
156
  session: {
160
157
  ...this.project(entry, actor.id, validated),
161
158
  messages: validated.messages,
162
- } satisfies DebugSessionDetailDtoV1,
159
+ } satisfies AgentSessionDetailDtoV1,
163
160
  };
164
161
  } catch (error) {
165
162
  providerFailed = true;
@@ -169,24 +166,17 @@ export class DebugSessionFacadeV1 {
169
166
  }
170
167
  }
171
168
  if (providerFailed) throw providerUnavailable();
172
- throw new DebugSessionFacadeError(
169
+ throw new AgentSessionFacadeError(
173
170
  "SESSION_NOT_FOUND",
174
- "调试会话不存在或不可访问",
171
+ "Agent 会话不存在或不可访问",
175
172
  404,
176
173
  );
177
174
  }
178
175
 
179
176
  private async authorizedProviders(context: RequestGuardContext) {
180
- const operationKey = this.runtime.agentDebugOperationForActor(
181
- context.actor.id,
182
- );
183
- if (!operationKey) {
184
- throw new DebugSessionFacadeError("FORBIDDEN", "调试会话访问被拒绝", 403);
185
- }
186
- const candidates = this.hosts.debugSessionProviders.filter(({ provider }) =>
187
- provider.operationKeys.includes(operationKey),
188
- );
189
- for (const { moduleName, provider } of candidates) {
177
+ const authorized: AuthorizedProvider[] = [];
178
+ for (const entry of this.hosts.agentSessionProviders) {
179
+ const { moduleName, provider } = entry;
190
180
  const manifest = this.hosts.manifestOf(moduleName);
191
181
  const feature = manifest.features.find(
192
182
  ({ key }) => key === provider.featureKey,
@@ -195,22 +185,26 @@ export class DebugSessionFacadeV1 {
195
185
  permission: { permissionKey: provider.permissionKey },
196
186
  feature,
197
187
  });
198
- if (!access.decision.allowed) {
199
- throw new DebugSessionFacadeError(
200
- "FORBIDDEN",
201
- "调试会话访问被拒绝",
202
- 403,
203
- );
188
+ if (!access.decision.allowed) continue;
189
+ for (const operationKey of provider.operationKeys) {
190
+ authorized.push({ ...entry, operationKey });
204
191
  }
205
192
  }
206
- return candidates.map((entry) => ({ ...entry, operationKey }));
193
+ if (!authorized.length) {
194
+ throw new AgentSessionFacadeError(
195
+ "FORBIDDEN",
196
+ "Agent 会话访问被拒绝",
197
+ 403,
198
+ );
199
+ }
200
+ return authorized;
207
201
  }
208
202
 
209
203
  private project(
210
204
  entry: AuthorizedProvider,
211
205
  actorId: string,
212
- summary: ModuleDebugSessionSummaryV1,
213
- ): DebugSessionSummaryDtoV1 {
206
+ summary: ModuleAgentSessionSummaryV1,
207
+ ): AgentSessionSummaryDtoV1 {
214
208
  return {
215
209
  id: this.ids.issue({
216
210
  actorId,
@@ -218,6 +212,7 @@ export class DebugSessionFacadeV1 {
218
212
  providerKey: entry.provider.key,
219
213
  sourceId: summary.sourceId,
220
214
  }),
215
+ operationKey: entry.operationKey,
221
216
  title: summary.title,
222
217
  ...(summary.scopeLabel ? { scopeLabel: summary.scopeLabel } : {}),
223
218
  updatedAt: summary.updatedAt,
@@ -238,13 +233,12 @@ export class DebugSessionFacadeV1 {
238
233
  outcome: "success",
239
234
  actor: auditActor(context),
240
235
  target: {
241
- type: "agent-debug-session",
236
+ type: "agent-session",
242
237
  id: sessionId ?? entry.provider.key,
243
238
  },
244
239
  module: entry.moduleName,
245
240
  requestId: context.requestId,
246
241
  metadata: {
247
- ...debugActorAuditMetadata(context.actor),
248
242
  mode,
249
243
  resultCount,
250
244
  },
@@ -265,13 +259,12 @@ export class DebugSessionFacadeV1 {
265
259
  outcome: "failure",
266
260
  actor: auditActor(context),
267
261
  target: {
268
- type: "agent-debug-session-provider",
262
+ type: "agent-session-provider",
269
263
  id: entry.provider.key,
270
264
  },
271
265
  module: entry.moduleName,
272
266
  requestId: context.requestId,
273
267
  metadata: {
274
- ...debugActorAuditMetadata(context.actor),
275
268
  mode,
276
269
  phase,
277
270
  failureCode: providerFailureCode(error),
@@ -281,22 +274,22 @@ export class DebugSessionFacadeV1 {
281
274
  }
282
275
  }
283
276
 
284
- type AuthorizedProvider = RegisteredModuleDebugSessionProvider & {
277
+ type AuthorizedProvider = RegisteredModuleAgentSessionProvider & {
285
278
  readonly operationKey: string;
286
279
  };
287
280
 
288
281
  function providerFailureCode(
289
282
  error: unknown,
290
283
  ): "PROVIDER_INVALID" | "PROVIDER_UNAVAILABLE" {
291
- return error instanceof DebugSessionProviderContractError
284
+ return error instanceof AgentSessionProviderContractError
292
285
  ? "PROVIDER_INVALID"
293
286
  : "PROVIDER_UNAVAILABLE";
294
287
  }
295
288
 
296
- function providerUnavailable(): DebugSessionFacadeError {
297
- return new DebugSessionFacadeError(
289
+ function providerUnavailable(): AgentSessionFacadeError {
290
+ return new AgentSessionFacadeError(
298
291
  "PROVIDER_UNAVAILABLE",
299
- "调试会话 Provider 暂不可用",
292
+ "Agent 会话 Provider 暂不可用",
300
293
  503,
301
294
  );
302
295
  }
@@ -1,9 +1,9 @@
1
1
  import { describe, expect, test } from "bun:test";
2
- import { DebugSessionIdCodecV1 } from "./debug-session-id.js";
2
+ import { AgentSessionIdCodecV1 } from "./agent-session-id.js";
3
3
 
4
- describe("ADK 调试会话不透明 ID", () => {
4
+ describe("Agent 会话不透明 ID", () => {
5
5
  test("稳定绑定业务用户、Operation、Provider 与 sourceId", () => {
6
- const codec = new DebugSessionIdCodecV1(
6
+ const codec = new AgentSessionIdCodecV1(
7
7
  "test-secret-012345678901234567890123456789",
8
8
  );
9
9
  const identity = {
@@ -28,8 +28,8 @@ describe("ADK 调试会话不透明 ID", () => {
28
28
  });
29
29
 
30
30
  test("短 Secret 与可逆业务 ID fail closed", () => {
31
- expect(() => new DebugSessionIdCodecV1("short")).toThrow("至少 32");
32
- const codec = new DebugSessionIdCodecV1(
31
+ expect(() => new AgentSessionIdCodecV1("short")).toThrow("至少 32");
32
+ const codec = new AgentSessionIdCodecV1(
33
33
  "test-secret-012345678901234567890123456789",
34
34
  );
35
35
  expect(codec.isWellFormed("private-conversation-id")).toBeFalse();
@@ -1,22 +1,22 @@
1
1
  import { createHmac } from "node:crypto";
2
2
 
3
- export const DEBUG_SESSION_ID_PREFIX = "wdbg1_";
3
+ export const AGENT_SESSION_ID_PREFIX = "wags1_";
4
4
 
5
- export interface DebugSessionIdentityV1 {
5
+ export interface AgentSessionIdentityV1 {
6
6
  readonly actorId: string;
7
7
  readonly operationKey: string;
8
8
  readonly providerKey: string;
9
9
  readonly sourceId: string;
10
10
  }
11
11
 
12
- export class DebugSessionIdCodecV1 {
12
+ export class AgentSessionIdCodecV1 {
13
13
  constructor(private readonly secret: string) {
14
14
  if (Buffer.byteLength(secret) < 32) {
15
- throw new Error("调试会话 ID Secret 必须至少 32 字节");
15
+ throw new Error("Agent 会话 ID Secret 必须至少 32 字节");
16
16
  }
17
17
  }
18
18
 
19
- issue(identity: DebugSessionIdentityV1): string {
19
+ issue(identity: AgentSessionIdentityV1): string {
20
20
  const digest = createHmac("sha256", this.secret)
21
21
  .update(
22
22
  JSON.stringify([
@@ -28,10 +28,10 @@ export class DebugSessionIdCodecV1 {
28
28
  ]),
29
29
  )
30
30
  .digest("base64url");
31
- return `${DEBUG_SESSION_ID_PREFIX}${digest}`;
31
+ return `${AGENT_SESSION_ID_PREFIX}${digest}`;
32
32
  }
33
33
 
34
34
  isWellFormed(value: string): boolean {
35
- return /^wdbg1_[A-Za-z0-9_-]{43}$/.test(value);
35
+ return /^wags1_[A-Za-z0-9_-]{43}$/.test(value);
36
36
  }
37
37
  }