create-windy 0.6.12 → 0.6.15

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 (654) hide show
  1. package/dist/cli.js +785 -291
  2. package/package.json +1 -1
  3. package/template/.agents/skills/windy-business-module/SKILL.md +148 -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/attempt-authority.test.ts +162 -0
  75. package/template/apps/server/src/agent/client-session/attempt-authority.ts +191 -0
  76. package/template/apps/server/src/agent/client-session/authorization.ts +47 -0
  77. package/template/apps/server/src/agent/client-session/bootstrap.ts +112 -0
  78. package/template/apps/server/src/agent/client-session/capabilities.ts +19 -0
  79. package/template/apps/server/src/agent/client-session/completion.ts +350 -0
  80. package/template/apps/server/src/agent/client-session/contracts.ts +159 -0
  81. package/template/apps/server/src/agent/client-session/creation.ts +103 -0
  82. package/template/apps/server/src/agent/client-session/digest.ts +49 -0
  83. package/template/apps/server/src/agent/client-session/drizzle-records.ts +150 -0
  84. package/template/apps/server/src/agent/client-session/drizzle-repository.integration.test.ts +197 -0
  85. package/template/apps/server/src/agent/client-session/drizzle-repository.ts +236 -0
  86. package/template/apps/server/src/agent/client-session/errors.ts +28 -0
  87. package/template/apps/server/src/agent/client-session/finalization.ts +99 -0
  88. package/template/apps/server/src/agent/client-session/fixtures/page-agent-1.12.2-request.json +52 -0
  89. package/template/apps/server/src/agent/client-session/host-auth.test.ts +144 -0
  90. package/template/apps/server/src/agent/client-session/host-auth.ts +122 -0
  91. package/template/apps/server/src/agent/client-session/host-revocation-composition.test.ts +77 -0
  92. package/template/apps/server/src/agent/client-session/host-revocation-composition.ts +28 -0
  93. package/template/apps/server/src/agent/client-session/launch-authority.contract.test.ts +21 -0
  94. package/template/apps/server/src/agent/client-session/manifest-admission.ts +251 -0
  95. package/template/apps/server/src/agent/client-session/openai-stream.ts +123 -0
  96. package/template/apps/server/src/agent/client-session/presentation.ts +46 -0
  97. package/template/apps/server/src/agent/client-session/remote-provider.test.ts +144 -0
  98. package/template/apps/server/src/agent/client-session/remote-provider.ts +216 -0
  99. package/template/apps/server/src/agent/client-session/repository.ts +225 -0
  100. package/template/apps/server/src/agent/client-session/request.test.ts +69 -0
  101. package/template/apps/server/src/agent/client-session/request.ts +289 -0
  102. package/template/apps/server/src/agent/client-session/revocation.ts +23 -0
  103. package/template/apps/server/src/agent/client-session/routes.ts +315 -0
  104. package/template/apps/server/src/agent/client-session/runtime-audit.ts +42 -0
  105. package/template/apps/server/src/agent/client-session/service.test-support.ts +248 -0
  106. package/template/apps/server/src/agent/client-session/service.test.ts +268 -0
  107. package/template/apps/server/src/agent/client-session/service.ts +316 -0
  108. package/template/apps/server/src/agent/client-session/terminal-digest.test.ts +23 -0
  109. package/template/apps/server/src/agent/client-workflow-artifact/active-blob-references.ts +8 -0
  110. package/template/apps/server/src/agent/client-workflow-artifact/artifact-builder.ts +60 -0
  111. package/template/apps/server/src/agent/client-workflow-artifact/authority-current.ts +59 -0
  112. package/template/apps/server/src/agent/client-workflow-artifact/binding-registry.test.ts +189 -0
  113. package/template/apps/server/src/agent/client-workflow-artifact/binding-registry.ts +153 -0
  114. package/template/apps/server/src/agent/client-workflow-artifact/bootstrap.ts +77 -0
  115. package/template/apps/server/src/agent/client-workflow-artifact/cancellation.ts +47 -0
  116. package/template/apps/server/src/agent/client-workflow-artifact/completed-recovery.ts +31 -0
  117. package/template/apps/server/src/agent/client-workflow-artifact/contracts.ts +104 -0
  118. package/template/apps/server/src/agent/client-workflow-artifact/drizzle-locks.ts +30 -0
  119. package/template/apps/server/src/agent/client-workflow-artifact/drizzle-mapper.ts +138 -0
  120. package/template/apps/server/src/agent/client-workflow-artifact/drizzle-repository.ts +346 -0
  121. package/template/apps/server/src/agent/client-workflow-artifact/error.ts +21 -0
  122. package/template/apps/server/src/agent/client-workflow-artifact/handler.ts +167 -0
  123. package/template/apps/server/src/agent/client-workflow-artifact/host-revocation.ts +29 -0
  124. package/template/apps/server/src/agent/client-workflow-artifact/in-memory-repository.ts +232 -0
  125. package/template/apps/server/src/agent/client-workflow-artifact/job-port.ts +101 -0
  126. package/template/apps/server/src/agent/client-workflow-artifact/presentation.ts +41 -0
  127. package/template/apps/server/src/agent/client-workflow-artifact/recovery.contract.test.ts +253 -0
  128. package/template/apps/server/src/agent/client-workflow-artifact/release-binding.ts +85 -0
  129. package/template/apps/server/src/agent/client-workflow-artifact/repository.test.ts +204 -0
  130. package/template/apps/server/src/agent/client-workflow-artifact/repository.ts +97 -0
  131. package/template/apps/server/src/agent/client-workflow-artifact/routes-handler.contract.test.ts +201 -0
  132. package/template/apps/server/src/agent/client-workflow-artifact/routes.ts +161 -0
  133. package/template/apps/server/src/agent/client-workflow-artifact/runtime-composition.ts +101 -0
  134. package/template/apps/server/src/agent/client-workflow-artifact/scope-authority.ts +39 -0
  135. package/template/apps/server/src/agent/client-workflow-artifact/service-authorization.ts +117 -0
  136. package/template/apps/server/src/agent/client-workflow-artifact/service-support.ts +28 -0
  137. package/template/apps/server/src/agent/client-workflow-artifact/service.contract.test.ts +345 -0
  138. package/template/apps/server/src/agent/client-workflow-artifact/service.ts +350 -0
  139. package/template/apps/server/src/agent/client-workflow-artifact/session-boundary.ts +39 -0
  140. package/template/apps/server/src/agent/client-workflow-artifact/source-access.contract.test.ts +98 -0
  141. package/template/apps/server/src/agent/client-workflow-artifact/source-access.ts +80 -0
  142. package/template/apps/server/src/agent/client-workflow-artifact/takeover.ts +122 -0
  143. package/template/apps/server/src/agent/client-workflow-artifact/task-authority.contract.test.ts +97 -0
  144. package/template/apps/server/src/agent/client-workflow-artifact/task-authority.ts +147 -0
  145. package/template/apps/server/src/agent/client-workflow-artifact/terminal-authority.contract.test.ts +100 -0
  146. package/template/apps/server/src/agent/client-workflow-artifact/terminal-replay.ts +31 -0
  147. package/template/apps/server/src/agent/client-workflow-artifact/terminal-seal.ts +211 -0
  148. package/template/apps/server/src/agent/client-workflow-artifact/workflow-artifact.test-support.ts +173 -0
  149. package/template/apps/server/src/agent/client-workflow-artifact/workflow-loader.contract.test.ts +254 -0
  150. package/template/apps/server/src/agent/client-workflow-artifact/workflow-loader.ts +285 -0
  151. package/template/apps/server/src/agent/context-memory/attempt-context-contracts.ts +60 -0
  152. package/template/apps/server/src/agent/context-memory/authoritative-source-registry.ts +127 -0
  153. package/template/apps/server/src/agent/context-memory/context-builder.test.ts +160 -0
  154. package/template/apps/server/src/agent/context-memory/context-builder.ts +184 -0
  155. package/template/apps/server/src/agent/context-memory/contracts.ts +284 -0
  156. package/template/apps/server/src/agent/context-memory/digest.ts +22 -0
  157. package/template/apps/server/src/agent/context-memory/memory-authorization.ts +82 -0
  158. package/template/apps/server/src/agent/context-memory/memory-content.ts +69 -0
  159. package/template/apps/server/src/agent/context-memory/memory-object-registry.ts +87 -0
  160. package/template/apps/server/src/agent/context-memory/memory-projector-contracts.ts +121 -0
  161. package/template/apps/server/src/agent/context-memory/memory-projector-validation.ts +155 -0
  162. package/template/apps/server/src/agent/context-memory/memory-projector.test.ts +19 -0
  163. package/template/apps/server/src/agent/context-memory/memory-projector.ts +259 -0
  164. package/template/apps/server/src/agent/context-memory/memory-retrieval-policy.ts +195 -0
  165. package/template/apps/server/src/agent/context-memory/memory-retriever.test.ts +339 -0
  166. package/template/apps/server/src/agent/context-memory/memory-retriever.ts +184 -0
  167. package/template/apps/server/src/agent/context-memory/search-provider-port.test.ts +62 -0
  168. package/template/apps/server/src/agent/context-memory/search-provider-port.ts +75 -0
  169. package/template/apps/server/src/agent/context-memory/working-context-expiry.ts +95 -0
  170. package/template/apps/server/src/agent/context-message-recovery.ts +23 -0
  171. package/template/apps/server/src/agent/context-version-routes.ts +241 -0
  172. package/template/apps/server/src/agent/context-version-runtime.ts +332 -0
  173. package/template/apps/server/src/agent/context-version-support.ts +93 -0
  174. package/template/apps/server/src/agent/context-version-validation.ts +118 -0
  175. package/template/apps/server/src/agent/drizzle-run-binding-repository.ts +11 -0
  176. package/template/apps/server/src/agent/idempotency-key.ts +9 -1
  177. package/template/apps/server/src/agent/memory-runtime-adapters.ts +266 -0
  178. package/template/apps/server/src/agent/memory-scope-binding.ts +14 -0
  179. package/template/apps/server/src/agent/module-ai-port-factory.ts +41 -0
  180. package/template/apps/server/src/agent/provider-input-governance.ts +19 -0
  181. package/template/apps/server/src/agent/remote-runtime-response.ts +162 -0
  182. package/template/apps/server/src/agent/remote-runtime.ts +53 -153
  183. package/template/apps/server/src/agent/run-audit.ts +2 -2
  184. package/template/apps/server/src/agent/run-authorization.test.ts +27 -0
  185. package/template/apps/server/src/agent/run-authorization.ts +60 -1
  186. package/template/apps/server/src/agent/run-binding-repository.ts +9 -0
  187. package/template/apps/server/src/agent/run-browser-authorization.ts +79 -0
  188. package/template/apps/server/src/agent/run-contracts.ts +23 -0
  189. package/template/apps/server/src/agent/run-facade.test-support.ts +17 -4
  190. package/template/apps/server/src/agent/run-facade.test.ts +16 -0
  191. package/template/apps/server/src/agent/run-facade.ts +139 -139
  192. package/template/apps/server/src/agent/run-failure-cleanup.ts +58 -0
  193. package/template/apps/server/src/agent/run-operation-policy.ts +20 -0
  194. package/template/apps/server/src/agent/run-route-input.ts +19 -1
  195. package/template/apps/server/src/agent/run-routes.ts +133 -5
  196. package/template/apps/server/src/agent/run-runtime-request.ts +89 -0
  197. package/template/apps/server/src/agent/run-session-authorization.ts +97 -0
  198. package/template/apps/server/src/agent/run-start-preparation.ts +71 -0
  199. package/template/apps/server/src/agent/runtime-bootstrap-input.ts +46 -0
  200. package/template/apps/server/src/agent/runtime-bootstrap-report.test.ts +53 -1
  201. package/template/apps/server/src/agent/runtime-bootstrap.ts +115 -112
  202. package/template/apps/server/src/agent/runtime-public-ports.ts +40 -0
  203. package/template/apps/server/src/agent/runtime-tool-composition.ts +38 -0
  204. package/template/apps/server/src/agent/session-context-source-support.ts +38 -0
  205. package/template/apps/server/src/agent/session-context-source.ts +346 -0
  206. package/template/apps/server/src/agent/session-invalidation/contracts.ts +216 -0
  207. package/template/apps/server/src/agent/session-invalidation/dispatcher.contract.test.ts +333 -0
  208. package/template/apps/server/src/agent/session-invalidation/dispatcher.ts +205 -0
  209. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.test.ts +127 -0
  210. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.ts +202 -0
  211. package/template/apps/server/src/agent/session-invalidation/read-guard.ts +39 -0
  212. package/template/apps/server/src/agent/session-invalidation/runtime.ts +69 -0
  213. package/template/apps/server/src/agent/session-invalidation/test-envelopes.ts +24 -0
  214. package/template/apps/server/src/agent/session-invalidation/worker.contract.test.ts +135 -0
  215. package/template/apps/server/src/agent/session-invalidation/worker.ts +76 -0
  216. package/template/apps/server/src/agent/session-log/checkpoint-digest.ts +36 -0
  217. package/template/apps/server/src/agent/session-log/domain.ts +123 -0
  218. package/template/apps/server/src/agent/session-log/events.ts +229 -0
  219. package/template/apps/server/src/agent/session-log/history.ts +143 -0
  220. package/template/apps/server/src/agent/session-log/in-memory-repository.ts +340 -0
  221. package/template/apps/server/src/agent/session-log/lifecycle.ts +67 -0
  222. package/template/apps/server/src/agent/session-log/replay-policy.ts +76 -0
  223. package/template/apps/server/src/agent/session-log/repository.ts +103 -0
  224. package/template/apps/server/src/agent/session-log/service.ts +349 -0
  225. package/template/apps/server/src/agent/session-log/session-log.test.ts +282 -0
  226. package/template/apps/server/src/agent/session-persistence/drizzle-context-memory.ts +348 -0
  227. package/template/apps/server/src/agent/session-persistence/drizzle-governed-context.ts +328 -0
  228. package/template/apps/server/src/agent/session-persistence/drizzle-invalidation-outbox.ts +260 -0
  229. package/template/apps/server/src/agent/session-persistence/drizzle-memory-projection-deletion.ts +56 -0
  230. package/template/apps/server/src/agent/session-persistence/drizzle-run-projection-receipt.ts +80 -0
  231. package/template/apps/server/src/agent/session-persistence/drizzle-session-fork.ts +147 -0
  232. package/template/apps/server/src/agent/session-persistence/drizzle-session-list.ts +24 -0
  233. package/template/apps/server/src/agent/session-persistence/drizzle-session-mapping.ts +154 -0
  234. package/template/apps/server/src/agent/session-persistence/drizzle-session-mutations.ts +64 -0
  235. package/template/apps/server/src/agent/session-persistence/drizzle-session-repository.ts +335 -0
  236. package/template/apps/server/src/agent/session-persistence/invalidation-projections.ts +229 -0
  237. package/template/apps/server/src/agent/session-persistence/payload-codec.ts +90 -0
  238. package/template/apps/server/src/agent/session-projection-access.ts +167 -0
  239. package/template/apps/server/src/agent/session-projection-bootstrap.ts +87 -0
  240. package/template/apps/server/src/agent/session-projection-errors.ts +22 -0
  241. package/template/apps/server/src/agent/session-projection-facade.ts +349 -0
  242. package/template/apps/server/src/agent/session-projection-routes.ts +215 -0
  243. package/template/apps/server/src/agent/session-projection-view.ts +137 -0
  244. package/template/apps/server/src/agent/session-result-memory.ts +228 -0
  245. package/template/apps/server/src/agent/session-run-lifecycle.ts +85 -0
  246. package/template/apps/server/src/agent/session-run-link-contracts.ts +56 -0
  247. package/template/apps/server/src/agent/session-run-link.ts +343 -0
  248. package/template/apps/server/src/agent/session-run-recovery.ts +16 -0
  249. package/template/apps/server/src/agent/session-runtime-composition.ts +265 -0
  250. package/template/apps/server/src/agent/session-source-chain-authorizer.ts +141 -0
  251. package/template/apps/server/src/agent/session-terminal-reconciler.ts +100 -0
  252. package/template/apps/server/src/agent/session-turn-state.ts +49 -0
  253. package/template/apps/server/src/agent/tool-audit.ts +3 -3
  254. package/template/apps/server/src/agent/tool-execution-receipt.ts +13 -0
  255. package/template/apps/server/src/agent/tool-host.ts +41 -4
  256. package/template/apps/server/src/agent/tool-registry-composition.ts +52 -0
  257. package/template/apps/server/src/agent/tool-registry.test.ts +5 -5
  258. package/template/apps/server/src/agent/tool-registry.ts +53 -59
  259. package/template/apps/server/src/agent/unavailable-routes.ts +70 -5
  260. package/template/apps/server/src/agent/workflow-durable-runtime-input.ts +32 -0
  261. package/template/apps/server/src/agent/workflow-runtime-bootstrap.ts +61 -0
  262. package/template/apps/server/src/agent-workflow/adapter-dispatch.ts +148 -0
  263. package/template/apps/server/src/agent-workflow/approval-node-adapter.ts +77 -0
  264. package/template/apps/server/src/agent-workflow/artifact-access-error.ts +9 -0
  265. package/template/apps/server/src/agent-workflow/artifact-node-adapter.ts +67 -0
  266. package/template/apps/server/src/agent-workflow/artifact-policy.ts +71 -0
  267. package/template/apps/server/src/agent-workflow/artifact-source-authorization.ts +91 -0
  268. package/template/apps/server/src/agent-workflow/authorization.ts +238 -0
  269. package/template/apps/server/src/agent-workflow/budget-ledger.ts +118 -0
  270. package/template/apps/server/src/agent-workflow/budget-validation.ts +305 -0
  271. package/template/apps/server/src/agent-workflow/canonical-agent-run-binding.ts +17 -0
  272. package/template/apps/server/src/agent-workflow/canonical-agent-run-evidence.ts +142 -0
  273. package/template/apps/server/src/agent-workflow/canonical-agent-run-port.ts +304 -0
  274. package/template/apps/server/src/agent-workflow/canonical-agent-run-remote.ts +64 -0
  275. package/template/apps/server/src/agent-workflow/canonical-json.ts +16 -0
  276. package/template/apps/server/src/agent-workflow/command-drive.ts +195 -0
  277. package/template/apps/server/src/agent-workflow/command-error.ts +9 -0
  278. package/template/apps/server/src/agent-workflow/command-facade.ts +349 -0
  279. package/template/apps/server/src/agent-workflow/command-input.ts +133 -0
  280. package/template/apps/server/src/agent-workflow/condition-node-adapter.ts +69 -0
  281. package/template/apps/server/src/agent-workflow/definition-budget-validation.ts +41 -0
  282. package/template/apps/server/src/agent-workflow/definition-node-validation.ts +197 -0
  283. package/template/apps/server/src/agent-workflow/definition-validation.ts +198 -0
  284. package/template/apps/server/src/agent-workflow/delegated-tool-authorization.ts +15 -0
  285. package/template/apps/server/src/agent-workflow/delegation-child-delivery.ts +129 -0
  286. package/template/apps/server/src/agent-workflow/delegation-execution-authorization.ts +218 -0
  287. package/template/apps/server/src/agent-workflow/delegation-policy-validation.ts +253 -0
  288. package/template/apps/server/src/agent-workflow/delegation-policy.ts +179 -0
  289. package/template/apps/server/src/agent-workflow/drizzle-artifact-port.ts +211 -0
  290. package/template/apps/server/src/agent-workflow/drizzle-artifact-support.ts +152 -0
  291. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-settlement.ts +271 -0
  292. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-support.ts +226 -0
  293. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger.ts +189 -0
  294. package/template/apps/server/src/agent-workflow/drizzle-cancellation-reconcile.ts +177 -0
  295. package/template/apps/server/src/agent-workflow/drizzle-delegated-tool-authorization.ts +155 -0
  296. package/template/apps/server/src/agent-workflow/drizzle-delegation-completion.ts +84 -0
  297. package/template/apps/server/src/agent-workflow/drizzle-delegation-lifecycle.ts +139 -0
  298. package/template/apps/server/src/agent-workflow/drizzle-delegation-port.ts +288 -0
  299. package/template/apps/server/src/agent-workflow/drizzle-effect-command-fence.ts +333 -0
  300. package/template/apps/server/src/agent-workflow/drizzle-evaluation-repository.ts +214 -0
  301. package/template/apps/server/src/agent-workflow/drizzle-event-validation.ts +43 -0
  302. package/template/apps/server/src/agent-workflow/drizzle-recovery-admission.ts +115 -0
  303. package/template/apps/server/src/agent-workflow/drizzle-repository-lineage.ts +103 -0
  304. package/template/apps/server/src/agent-workflow/drizzle-repository-mappers.ts +317 -0
  305. package/template/apps/server/src/agent-workflow/drizzle-repository-write.ts +311 -0
  306. package/template/apps/server/src/agent-workflow/drizzle-repository.ts +285 -0
  307. package/template/apps/server/src/agent-workflow/drizzle-side-effect-repository.ts +83 -0
  308. package/template/apps/server/src/agent-workflow/drizzle-write-support.ts +101 -0
  309. package/template/apps/server/src/agent-workflow/durable-continuation-authorization.ts +109 -0
  310. package/template/apps/server/src/agent-workflow/durable-continuation-driver.ts +97 -0
  311. package/template/apps/server/src/agent-workflow/durable-continuation-runtime.ts +173 -0
  312. package/template/apps/server/src/agent-workflow/durable-job-node-adapter.ts +106 -0
  313. package/template/apps/server/src/agent-workflow/effect-command-fence.ts +250 -0
  314. package/template/apps/server/src/agent-workflow/evaluation-evidence-coordinates.ts +225 -0
  315. package/template/apps/server/src/agent-workflow/evaluation-evidence-metrics.ts +280 -0
  316. package/template/apps/server/src/agent-workflow/evaluation-evidence-reader.ts +326 -0
  317. package/template/apps/server/src/agent-workflow/evaluation-metrics-validation.ts +85 -0
  318. package/template/apps/server/src/agent-workflow/evaluation-projection.ts +70 -0
  319. package/template/apps/server/src/agent-workflow/evaluation-repository.ts +134 -0
  320. package/template/apps/server/src/agent-workflow/evaluation-service.ts +292 -0
  321. package/template/apps/server/src/agent-workflow/evaluation-tool-registration.ts +95 -0
  322. package/template/apps/server/src/agent-workflow/evaluation-validation.ts +331 -0
  323. package/template/apps/server/src/agent-workflow/event-validation.ts +277 -0
  324. package/template/apps/server/src/agent-workflow/governed-tool-schema.ts +55 -0
  325. package/template/apps/server/src/agent-workflow/in-memory-evaluation-repository.ts +123 -0
  326. package/template/apps/server/src/agent-workflow/in-memory-mutation-validation.ts +154 -0
  327. package/template/apps/server/src/agent-workflow/in-memory-repository-support.ts +277 -0
  328. package/template/apps/server/src/agent-workflow/in-memory-repository.ts +339 -0
  329. package/template/apps/server/src/agent-workflow/in-memory-side-effect-store.ts +78 -0
  330. package/template/apps/server/src/agent-workflow/input-receipt.ts +55 -0
  331. package/template/apps/server/src/agent-workflow/model-node-adapter.ts +86 -0
  332. package/template/apps/server/src/agent-workflow/model-pricing-catalog.ts +215 -0
  333. package/template/apps/server/src/agent-workflow/node-adapter-factory.ts +83 -0
  334. package/template/apps/server/src/agent-workflow/node-adapters.ts +50 -0
  335. package/template/apps/server/src/agent-workflow/node-execution-ports.ts +185 -0
  336. package/template/apps/server/src/agent-workflow/node-input-receipt-port.ts +42 -0
  337. package/template/apps/server/src/agent-workflow/node-result-receipt.ts +50 -0
  338. package/template/apps/server/src/agent-workflow/platform-node-adapter-support.ts +185 -0
  339. package/template/apps/server/src/agent-workflow/platform-node-adapters.ts +264 -0
  340. package/template/apps/server/src/agent-workflow/platform-node-approval.ts +146 -0
  341. package/template/apps/server/src/agent-workflow/platform-node-direct-adapters.ts +65 -0
  342. package/template/apps/server/src/agent-workflow/production-delegation-scope.ts +58 -0
  343. package/template/apps/server/src/agent-workflow/production-node-policies.ts +62 -0
  344. package/template/apps/server/src/agent-workflow/project-launch-authority.contract.test.ts +53 -0
  345. package/template/apps/server/src/agent-workflow/project-launch-authority.ts +92 -0
  346. package/template/apps/server/src/agent-workflow/query-service.ts +198 -0
  347. package/template/apps/server/src/agent-workflow/release.ts +96 -0
  348. package/template/apps/server/src/agent-workflow/repository.ts +157 -0
  349. package/template/apps/server/src/agent-workflow/routes.ts +307 -0
  350. package/template/apps/server/src/agent-workflow/runtime-composition.ts +324 -0
  351. package/template/apps/server/src/agent-workflow/scheduler-cancellation-reconcile.ts +253 -0
  352. package/template/apps/server/src/agent-workflow/scheduler-cancellation-support.ts +145 -0
  353. package/template/apps/server/src/agent-workflow/scheduler-cancellation.ts +2 -0
  354. package/template/apps/server/src/agent-workflow/scheduler-context.ts +85 -0
  355. package/template/apps/server/src/agent-workflow/scheduler-deadline.ts +65 -0
  356. package/template/apps/server/src/agent-workflow/scheduler-effect-result.ts +205 -0
  357. package/template/apps/server/src/agent-workflow/scheduler-execution-convergence.ts +174 -0
  358. package/template/apps/server/src/agent-workflow/scheduler-execution.ts +211 -0
  359. package/template/apps/server/src/agent-workflow/scheduler-failure.ts +102 -0
  360. package/template/apps/server/src/agent-workflow/scheduler-join-cancellation.ts +282 -0
  361. package/template/apps/server/src/agent-workflow/scheduler-mutation-queue.ts +13 -0
  362. package/template/apps/server/src/agent-workflow/scheduler-node-timeout.ts +139 -0
  363. package/template/apps/server/src/agent-workflow/scheduler-parallel-dispatch.ts +99 -0
  364. package/template/apps/server/src/agent-workflow/scheduler-recovery-activation.ts +63 -0
  365. package/template/apps/server/src/agent-workflow/scheduler-recovery-budget.ts +41 -0
  366. package/template/apps/server/src/agent-workflow/scheduler-recovery-effect.ts +331 -0
  367. package/template/apps/server/src/agent-workflow/scheduler-recovery-event-time.ts +26 -0
  368. package/template/apps/server/src/agent-workflow/scheduler-recovery-failed-policy.ts +129 -0
  369. package/template/apps/server/src/agent-workflow/scheduler-recovery-node.ts +208 -0
  370. package/template/apps/server/src/agent-workflow/scheduler-recovery-policy-convergence.ts +140 -0
  371. package/template/apps/server/src/agent-workflow/scheduler-reservation-convergence.ts +40 -0
  372. package/template/apps/server/src/agent-workflow/scheduler-side-effect-execution.ts +249 -0
  373. package/template/apps/server/src/agent-workflow/scheduler-support.ts +235 -0
  374. package/template/apps/server/src/agent-workflow/scheduler-workflow-cancellation.ts +296 -0
  375. package/template/apps/server/src/agent-workflow/scheduler.ts +289 -0
  376. package/template/apps/server/src/agent-workflow/service-completion.ts +102 -0
  377. package/template/apps/server/src/agent-workflow/service-mutation-identity.ts +94 -0
  378. package/template/apps/server/src/agent-workflow/service-node-admission.ts +36 -0
  379. package/template/apps/server/src/agent-workflow/service-node-run-update.ts +55 -0
  380. package/template/apps/server/src/agent-workflow/service-recovery-events.ts +38 -0
  381. package/template/apps/server/src/agent-workflow/service-recovery.ts +264 -0
  382. package/template/apps/server/src/agent-workflow/service-retry.ts +86 -0
  383. package/template/apps/server/src/agent-workflow/service-run-command.ts +131 -0
  384. package/template/apps/server/src/agent-workflow/service-state-error.ts +21 -0
  385. package/template/apps/server/src/agent-workflow/service-state-invariants.ts +44 -0
  386. package/template/apps/server/src/agent-workflow/service-support.ts +152 -0
  387. package/template/apps/server/src/agent-workflow/service.ts +307 -0
  388. package/template/apps/server/src/agent-workflow/side-effect-state.ts +226 -0
  389. package/template/apps/server/src/agent-workflow/state-machine.ts +321 -0
  390. package/template/apps/server/src/agent-workflow/subagent-node-adapter.ts +229 -0
  391. package/template/apps/server/src/agent-workflow/tool-node-adapter.ts +259 -0
  392. package/template/apps/server/src/agent-workflow/usage.ts +149 -0
  393. package/template/apps/server/src/agent-workflow/wait-signal-service.ts +147 -0
  394. package/template/apps/server/src/agent-workflow/workflow-artifact-token.ts +109 -0
  395. package/template/apps/server/src/agent-workflow/workflow-value-validation.ts +101 -0
  396. package/template/apps/server/src/agent-workflow/workspace-policy.ts +109 -0
  397. package/template/apps/server/src/ai-runtime-report/remote-parser.ts +41 -0
  398. package/template/apps/server/src/ai-runtime-report/service.test.ts +2 -0
  399. package/template/apps/server/src/app/agent-runtime-composition.ts +43 -0
  400. package/template/apps/server/src/app/client-agent-host-auth-binding.ts +10 -0
  401. package/template/apps/server/src/app/client-agent-workflow-artifact-binding.ts +14 -0
  402. package/template/apps/server/src/application-services.ts +6 -0
  403. package/template/apps/server/src/auth/actor-resolver.test.ts +33 -0
  404. package/template/apps/server/src/auth/actor-resolver.ts +6 -1
  405. package/template/apps/server/src/auth/composition.ts +36 -0
  406. package/template/apps/server/src/auth/routes.test-support.ts +2 -0
  407. package/template/apps/server/src/auth/routes.test.ts +18 -0
  408. package/template/apps/server/src/auth/runtime.ts +2 -0
  409. package/template/apps/server/src/auth/service-options.ts +16 -0
  410. package/template/apps/server/src/auth/service.ts +7 -12
  411. package/template/apps/server/src/data-access/scope-containment.test.ts +31 -0
  412. package/template/apps/server/src/data-access/scope-containment.ts +48 -0
  413. package/template/apps/server/src/index.ts +35 -37
  414. package/template/apps/server/src/jobs/artifact-publication.test.ts +192 -0
  415. package/template/apps/server/src/jobs/artifact-publication.ts +56 -0
  416. package/template/apps/server/src/jobs/artifact-publisher.ts +101 -0
  417. package/template/apps/server/src/jobs/drizzle-artifact.ts +73 -1
  418. package/template/apps/server/src/jobs/drizzle-execution-repository.ts +14 -1
  419. package/template/apps/server/src/jobs/drizzle-execution.integration.test.ts +65 -0
  420. package/template/apps/server/src/jobs/drizzle-repository.integration.test.ts +1 -0
  421. package/template/apps/server/src/jobs/execution-repository.ts +28 -0
  422. package/template/apps/server/src/jobs/execution.test.ts +3 -1
  423. package/template/apps/server/src/jobs/in-memory-execution.ts +16 -0
  424. package/template/apps/server/src/jobs/in-memory-lease.ts +45 -1
  425. package/template/apps/server/src/jobs/legacy-adapter.integration.test.ts +2 -0
  426. package/template/apps/server/src/jobs/postgres-cleanup-contract.test.ts +58 -0
  427. package/template/apps/server/src/jobs/worker.ts +8 -14
  428. package/template/apps/server/src/license/pairing-service.test.ts +1 -1
  429. package/template/apps/server/src/module-host/agent-session-memory-port.ts +91 -0
  430. package/template/apps/server/src/module-host/{debug-session-provider-registration.test.ts → agent-session-provider-registration.test.ts} +42 -17
  431. package/template/apps/server/src/module-host/{debug-session-provider-registration.ts → agent-session-provider-registration.ts} +18 -18
  432. package/template/apps/server/src/module-host/agent-source-invalidation-port.ts +53 -0
  433. package/template/apps/server/src/module-host/background-ai-unavailable.ts +18 -0
  434. package/template/apps/server/src/module-host/durable-context.ts +19 -22
  435. package/template/apps/server/src/module-host/http-runtime.ts +14 -0
  436. package/template/apps/server/src/module-host/implementation-completeness.test.ts +80 -1
  437. package/template/apps/server/src/module-host/implementation-completeness.ts +28 -1
  438. package/template/apps/server/src/module-host/initialize-contracts.ts +4 -5
  439. package/template/apps/server/src/module-host/initialize.ts +4 -4
  440. package/template/apps/server/src/module-host/request-context.test.ts +5 -5
  441. package/template/apps/server/src/module-host/request-context.ts +40 -8
  442. package/template/apps/server/src/module-host/route-install-context.ts +65 -0
  443. package/template/apps/server/src/module-host/route-installer.ts +11 -56
  444. package/template/apps/server/src/module-host/scoped-host.ts +17 -12
  445. package/template/apps/server/src/module-host/storage-authorization-binding.test.ts +3 -3
  446. package/template/apps/server/src/module-host/storage-port.ts +3 -0
  447. package/template/apps/server/src/module-host/workflow-input-artifact-port.test.ts +104 -0
  448. package/template/apps/server/src/module-host/workflow-input-artifact-port.ts +229 -0
  449. package/template/apps/server/src/module-host/workflow-input-materialization.test.ts +163 -0
  450. package/template/apps/server/src/module-host/workflow-input-materialization.ts +161 -0
  451. package/template/apps/server/src/module-host.ts +3 -5
  452. package/template/apps/server/src/runtime.ts +3 -36
  453. package/template/apps/server/src/storage/routes-stream-cancellation.test.ts +19 -0
  454. package/template/apps/server/src/storage/routes.ts +3 -1
  455. package/template/apps/server/src/system/actor.ts +15 -2
  456. package/template/apps/server/src/system/authorization-invalidation-bridge.ts +30 -0
  457. package/template/apps/server/src/system/authorization-invalidation-composition.ts +36 -0
  458. package/template/apps/server/src/system/drizzle-system.ts +8 -1
  459. package/template/apps/server/src/system/identity-route-config.ts +9 -1
  460. package/template/apps/server/src/system/routes.ts +3 -0
  461. package/template/apps/server/src/system/seed.ts +3 -0
  462. package/template/apps/server/src/system/user-account-policy.ts +91 -0
  463. package/template/apps/server/src/workflow/drizzle-repository.integration.test.ts +1 -0
  464. package/template/apps/web/package.json +1 -0
  465. package/template/apps/web/src/layout/AppSidebar.vue +2 -0
  466. package/template/apps/web/src/pages/system/AgentSessionPage.vue +73 -0
  467. package/template/apps/web/src/pages/system/AgentSessionPage.webtest.ts +66 -0
  468. package/template/apps/web/src/pages/system/AgentWorkflowPage.vue +69 -0
  469. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionDetail.vue +114 -0
  470. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionList.vue +84 -0
  471. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.vue +119 -0
  472. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.webtest.ts +46 -0
  473. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.vue +163 -0
  474. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.webtest.ts +62 -0
  475. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.vue +71 -0
  476. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.webtest.ts +34 -0
  477. package/template/apps/web/src/pages/system/components/agent-session/agent-session-presenter.ts +56 -0
  478. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeCard.vue +39 -0
  479. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeDetail.vue +172 -0
  480. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunDetail.vue +151 -0
  481. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunGraph.vue +96 -0
  482. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunList.vue +100 -0
  483. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunSummary.vue +148 -0
  484. package/template/apps/web/src/pages/system/components/agent-workflow/agent-workflow-presenter.ts +74 -0
  485. package/template/apps/web/src/pages/system/components/agent-workflow/workflow-graph-layout.ts +108 -0
  486. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.vue +9 -0
  487. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.webtest.ts +22 -0
  488. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunTable.webtest.ts +2 -0
  489. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeTrajectory.vue +118 -0
  490. package/template/apps/web/src/pages/system/composables/useAgentSessions.ts +209 -0
  491. package/template/apps/web/src/pages/system/composables/useAgentSessions.webtest.ts +138 -0
  492. package/template/apps/web/src/pages/system/composables/useAgentWorkflowRuns.ts +173 -0
  493. package/template/apps/web/src/router/index.ts +4 -0
  494. package/template/apps/web/src/router/platform-admin-route-bindings.ts +6 -0
  495. package/template/apps/web/src/services/agent-session-api.ts +159 -0
  496. package/template/apps/web/src/services/agent-session-api.webtest.ts +65 -0
  497. package/template/apps/web/src/services/agent-workflow-api.ts +181 -0
  498. package/template/apps/web/src/services/ai-runtime-api.ts +4 -0
  499. package/template/docker-compose.yml +11 -8
  500. package/template/docs/adr/0003-agent-session-event-source.md +3 -0
  501. package/template/docs/architecture/agent-harness.md +464 -0
  502. package/template/docs/architecture/agent-workflow.md +110 -0
  503. package/template/docs/architecture/ai-runtime.md +55 -47
  504. package/template/docs/architecture/durable-jobs.md +7 -0
  505. package/template/docs/architecture/module-host.md +4 -3
  506. package/template/docs/operations/adk-retirement.md +98 -0
  507. package/template/docs/operations/agent-session-memory.md +163 -0
  508. package/template/docs/operations/agent-session-troubleshooting.md +281 -0
  509. package/template/docs/operations/agent-workflow-recovery.md +85 -0
  510. package/template/docs/operations/incremental-delivery.md +1 -1
  511. package/template/docs/platform/agent-production-store.md +82 -0
  512. package/template/docs/platform/agent-run-reattachment.md +52 -0
  513. package/template/docs/platform/agent-runtime-observability.md +4 -3
  514. package/template/docs/platform/agent-runtime.md +116 -281
  515. package/template/docs/platform/agent-tool-approval.md +61 -0
  516. package/template/docs/platform/background-ai-operations.md +50 -0
  517. package/template/docs/platform/client-agent-session.md +319 -0
  518. package/template/docs/platform/embedding-ai-runtime.md +94 -0
  519. package/template/docs/platform/platform-authentication.md +5 -8
  520. package/template/package.json +0 -1
  521. package/template/packages/ai-client/index.ts +1 -0
  522. package/template/packages/ai-client/package.json +3 -1
  523. package/template/packages/ai-client/src/agent/client/client.ts +15 -2
  524. package/template/packages/ai-client/src/agent/client/run-protocol.test.ts +39 -25
  525. package/template/packages/ai-client/src/agent/client/types.ts +4 -0
  526. package/template/packages/ai-client/src/agent/contracts/contracts.test.ts +49 -7
  527. package/template/packages/ai-client/src/agent/contracts/events.ts +61 -0
  528. package/template/packages/ai-client/src/agent/contracts/runs.ts +1 -0
  529. package/template/packages/ai-client/src/client-agent/contracts.ts +131 -0
  530. package/template/packages/ai-client/src/client-agent/http.test.ts +60 -0
  531. package/template/packages/ai-client/src/client-agent/http.ts +66 -0
  532. package/template/packages/ai-client/src/client-agent/index.ts +4 -0
  533. package/template/packages/ai-client/src/client-agent/validation.test.ts +57 -0
  534. package/template/packages/ai-client/src/client-agent/validation.ts +152 -0
  535. package/template/packages/ai-client/src/client-agent/workflow-artifact/contracts.ts +85 -0
  536. package/template/packages/ai-client/src/client-agent/workflow-artifact/http.test.ts +49 -0
  537. package/template/packages/ai-client/src/client-agent/workflow-artifact/http.ts +82 -0
  538. package/template/packages/ai-client/src/client-agent/workflow-artifact/index.ts +3 -0
  539. package/template/packages/ai-client/src/client-agent/workflow-artifact/validation.test.ts +154 -0
  540. package/template/packages/ai-client/src/client-agent/workflow-artifact/validation.ts +332 -0
  541. package/template/packages/config/index.test.ts +18 -0
  542. package/template/packages/config/package.json +1 -1
  543. package/template/packages/config/src/platform-validation.ts +8 -0
  544. package/template/packages/config/src/platform.ts +22 -9
  545. package/template/packages/database/drizzle/0055_square_yellowjacket.sql +47 -0
  546. package/template/packages/database/drizzle/0056_tricky_living_mummy.sql +2 -0
  547. package/template/packages/database/drizzle/0057_mature_doomsday.sql +4 -0
  548. package/template/packages/database/drizzle/0058_agent_session_memory.sql +159 -0
  549. package/template/packages/database/drizzle/0059_agent_source_module_key.sql +16 -0
  550. package/template/packages/database/drizzle/0060_slimy_rocket_raccoon.sql +43 -0
  551. package/template/packages/database/drizzle/0061_agent_workflow.sql +303 -0
  552. package/template/packages/database/drizzle/0062_client_agent_workflow_artifact.sql +63 -0
  553. package/template/packages/database/drizzle/meta/0055_snapshot.json +11071 -0
  554. package/template/packages/database/drizzle/meta/0056_snapshot.json +11098 -0
  555. package/template/packages/database/drizzle/meta/0057_snapshot.json +10878 -0
  556. package/template/packages/database/drizzle/meta/0058_snapshot.json +12294 -0
  557. package/template/packages/database/drizzle/meta/0059_snapshot.json +12344 -0
  558. package/template/packages/database/drizzle/meta/0060_snapshot.json +12326 -0
  559. package/template/packages/database/drizzle/meta/0061_snapshot.json +14395 -0
  560. package/template/packages/database/drizzle/meta/0062_snapshot.json +14839 -0
  561. package/template/packages/database/drizzle/meta/_journal.json +56 -0
  562. package/template/packages/database/package.json +1 -1
  563. package/template/packages/database/src/agent-runtime-schema.test.ts +203 -0
  564. package/template/packages/database/src/schema/agent-context-message.ts +38 -0
  565. package/template/packages/database/src/schema/agent-runtime.ts +7 -0
  566. package/template/packages/database/src/schema/agent-session-receipt.ts +36 -0
  567. package/template/packages/database/src/schema/agent-session.ts +344 -0
  568. package/template/packages/database/src/schema/agent-workflow-delegation.ts +126 -0
  569. package/template/packages/database/src/schema/agent-workflow-effects.ts +213 -0
  570. package/template/packages/database/src/schema/agent-workflow-evaluation.ts +67 -0
  571. package/template/packages/database/src/schema/agent-workflow.ts +270 -0
  572. package/template/packages/database/src/schema/client-agent-workflow-artifact.ts +158 -0
  573. package/template/packages/database/src/schema/client-agent.ts +95 -0
  574. package/template/packages/database/src/schema/index.ts +9 -0
  575. package/template/packages/jobs/package.json +1 -1
  576. package/template/packages/jobs/src/handlers.test.ts +10 -0
  577. package/template/packages/jobs/src/handlers.ts +28 -11
  578. package/template/packages/modules/index.ts +2 -0
  579. package/template/packages/modules/package.json +1 -1
  580. package/template/packages/modules/src/ai-client-execution-composition.test.ts +98 -0
  581. package/template/packages/modules/src/ai-client-execution-policy.ts +60 -0
  582. package/template/packages/modules/src/ai-operation-composition.ts +2 -0
  583. package/template/packages/modules/src/manifest.ts +17 -0
  584. package/template/packages/modules/src/system-admin-routes.ts +16 -0
  585. package/template/packages/modules/src/system-admin-ui-catalog.ts +4 -1
  586. package/template/packages/modules/src/system-agent-audit-actions.ts +29 -0
  587. package/template/packages/modules/src/system-ai-api-bindings.ts +277 -0
  588. package/template/packages/modules/src/system-api-control-plane.ts +4 -78
  589. package/template/packages/modules/src/system-audit-actions.ts +128 -0
  590. package/template/packages/modules/src/system-features.ts +17 -0
  591. package/template/packages/modules/src/system-module-catalog.ts +21 -11
  592. package/template/packages/modules/src/system-modules.ts +22 -0
  593. package/template/packages/modules/src/system-permissions.ts +8 -0
  594. package/template/packages/server-sdk/index.ts +95 -0
  595. package/template/packages/server-sdk/package.json +9 -1
  596. package/template/packages/server-sdk/src/agent-session-memory-port.ts +64 -0
  597. package/template/packages/server-sdk/src/agent-session-provider.ts +63 -0
  598. package/template/packages/server-sdk/src/agent-source-invalidation-port.ts +54 -0
  599. package/template/packages/server-sdk/src/ai-operation-registration.ts +2 -0
  600. package/template/packages/server-sdk/src/client-agent-session.ts +107 -0
  601. package/template/packages/server-sdk/src/client-agent-workflow-artifact.contract.test.ts +113 -0
  602. package/template/packages/server-sdk/src/client-agent-workflow-artifact.ts +183 -0
  603. package/template/packages/server-sdk/src/debug-session-provider.ts +14 -63
  604. package/template/packages/server-sdk/src/durable-handler.ts +7 -0
  605. package/template/packages/server-sdk/src/module-host.ts +7 -3
  606. package/template/packages/server-sdk/src/request-context.ts +13 -0
  607. package/template/packages/server-sdk/src/workflow-input-artifact-port.ts +104 -0
  608. package/template/packages/server-sdk/src/workflow-input-artifact-validation.contract.test.ts +124 -0
  609. package/template/packages/server-sdk/src/workflow-input-artifact-validation.ts +347 -0
  610. package/template/packages/server-sdk/src/workflow-input-materialization-handler.ts +43 -0
  611. package/template/packages/shared/index.ts +3 -0
  612. package/template/packages/shared/package.json +1 -1
  613. package/template/packages/shared/src/agent-workflow-definition.ts +113 -0
  614. package/template/packages/shared/src/agent-workflow-delegation.ts +123 -0
  615. package/template/packages/shared/src/agent-workflow-evaluation.ts +159 -0
  616. package/template/packages/shared/src/agent-workflow-events.ts +99 -0
  617. package/template/packages/shared/src/agent-workflow-run.ts +259 -0
  618. package/template/packages/shared/src/agent-workflow.ts +3 -0
  619. package/template/packages/shared/src/ai-runtime-report.ts +25 -0
  620. package/template/packages/shared/src/rbac.ts +24 -0
  621. package/template/packages/storage/package.json +1 -1
  622. package/template/packages/storage/src/blob-store-put-once.test.ts +70 -0
  623. package/template/packages/storage/src/blob-store.ts +9 -0
  624. package/template/packages/storage/src/local-file-blob-put-once.ts +120 -0
  625. package/template/packages/storage/src/local-file-blob-store.ts +53 -1
  626. package/template/packages/storage/src/memory-blob-store.ts +73 -33
  627. package/template/packages/storage/src/upload-streams.test.ts +31 -0
  628. package/template/packages/storage/src/upload-streams.ts +20 -6
  629. package/template/apps/agent-server/adk_web_agents/__init__.py +0 -1
  630. package/template/apps/agent-server/adk_web_agents/canonical_debug/__init__.py +0 -1
  631. package/template/apps/agent-server/adk_web_agents/canonical_debug/agent.py +0 -145
  632. package/template/apps/agent-server/adk_web_agents/safe_debug/__init__.py +0 -3
  633. package/template/apps/agent-server/adk_web_agents/safe_debug/agent.py +0 -40
  634. package/template/apps/agent-server/adk_web_agents/services.py +0 -25
  635. package/template/apps/agent-server/project/adk-web-debug.json +0 -4
  636. package/template/apps/agent-server/src/southwind_agent_server/adk_adapter.py +0 -333
  637. package/template/apps/agent-server/src/southwind_agent_server/adk_debug.py +0 -348
  638. package/template/apps/agent-server/src/southwind_agent_server/adk_debug_sessions.py +0 -325
  639. package/template/apps/agent-server/src/southwind_agent_server/adk_failure.py +0 -13
  640. package/template/apps/agent-server/src/southwind_agent_server/adk_model.py +0 -304
  641. package/template/apps/agent-server/src/southwind_agent_server/adk_tools.py +0 -143
  642. package/template/apps/agent-server/tests/test_adk_adapter.py +0 -307
  643. package/template/apps/agent-server/tests/test_adk_debug_result_polling.py +0 -139
  644. package/template/apps/agent-server/tests/test_adk_debug_sessions.py +0 -215
  645. package/template/apps/agent-server/tests/test_adk_web_agent.py +0 -12
  646. package/template/apps/agent-server/tests/test_adk_web_canonical_debug.py +0 -282
  647. package/template/apps/server/src/agent/run-debug-authorization.ts +0 -27
  648. package/template/apps/server/src/agent/run-facade-adk-debug.test.ts +0 -95
  649. package/template/apps/server/src/runtime-adk-debug.test.ts +0 -270
  650. package/template/apps/server/src/runtime-adk-debug.ts +0 -164
  651. package/template/apps/server/src/runtime-request-actor.test.ts +0 -55
  652. package/template/apps/server/src/runtime-request-actor.ts +0 -22
  653. package/template/docker-compose.agent-debug.yml +0 -58
  654. package/template/scripts/dev-adk-web.ts +0 -107
@@ -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
  }
@@ -1,33 +1,33 @@
1
1
  import type {
2
2
  ModuleActor,
3
- ModuleDebugSessionProviderV1,
4
- ModuleDebugSessionSummaryV1,
3
+ ModuleAgentSessionProviderV1,
4
+ ModuleAgentSessionSummaryV1,
5
5
  } from "@southwind-ai/server-sdk";
6
6
  import {
7
- DebugSessionProviderContractError,
8
- validateDebugSessionPage,
9
- } from "./debug-session-validation.js";
7
+ AgentSessionProviderContractError,
8
+ validateAgentSessionPage,
9
+ } from "./agent-session-validation.js";
10
10
 
11
11
  const PAGE_SIZE = 100;
12
+ const MAX_PAGES = 100;
12
13
 
13
14
  /**
14
- * Drain one Provider with bounded keyset pages. The native ADK session API has
15
- * no pagination surface, so returning a partial page would make older sessions
16
- * permanently undiscoverable.
15
+ * Drain one Provider with bounded keyset pages so older sessions remain
16
+ * discoverable even when a Provider page is smaller than the Host projection.
17
17
  */
18
- export async function readAllDebugSessionSummaries(input: {
19
- readonly provider: ModuleDebugSessionProviderV1;
18
+ export async function readAllAgentSessionSummaries(input: {
19
+ readonly provider: ModuleAgentSessionProviderV1;
20
20
  readonly actor: ModuleActor;
21
21
  readonly operationKey: string;
22
22
  readonly signal: AbortSignal;
23
- }): Promise<readonly ModuleDebugSessionSummaryV1[]> {
24
- const sessions: ModuleDebugSessionSummaryV1[] = [];
23
+ }): Promise<readonly ModuleAgentSessionSummaryV1[]> {
24
+ const sessions: ModuleAgentSessionSummaryV1[] = [];
25
25
  const sourceIds = new Set<string>();
26
26
  const cursors = new Set<string>();
27
27
  let cursor: string | undefined;
28
- for (;;) {
28
+ for (let pageNumber = 0; pageNumber < MAX_PAGES; pageNumber += 1) {
29
29
  input.signal.throwIfAborted();
30
- const page = validateDebugSessionPage(
30
+ const page = validateAgentSessionPage(
31
31
  await input.provider.list({
32
32
  actor: input.actor,
33
33
  operationKey: input.operationKey,
@@ -47,8 +47,11 @@ export async function readAllDebugSessionSummaries(input: {
47
47
  cursors.add(next);
48
48
  cursor = next;
49
49
  }
50
+ invalidProvider();
50
51
  }
51
52
 
52
53
  function invalidProvider(): never {
53
- throw new DebugSessionProviderContractError("调试会话 Provider 分页游标无效");
54
+ throw new AgentSessionProviderContractError(
55
+ "Agent 会话 Provider 分页游标无效",
56
+ );
54
57
  }
@@ -2,35 +2,35 @@ import { describe, expect, test } from "bun:test";
2
2
  import { createRequestGuardContext } from "../guards.js";
3
3
  import { FakeRouteApp } from "../system/route-test-app.js";
4
4
  import {
5
- DebugSessionFacadeError,
6
- type DebugSessionFacadeV1,
7
- } from "./debug-session-facade.js";
8
- import { registerDebugSessionRoutesV1 } from "./debug-session-routes.js";
5
+ AgentSessionFacadeError,
6
+ type AgentSessionFacadeV1,
7
+ } from "./agent-session-facade.js";
8
+ import { registerAgentSessionRoutesV1 } from "./agent-session-routes.js";
9
9
 
10
- describe("ADK 调试会话 V1 routes", () => {
10
+ describe("Agent 会话 V1 routes", () => {
11
11
  test("只注册 GET 并在错误响应复用 guard requestId", async () => {
12
12
  const app = new FakeRouteApp();
13
- registerDebugSessionRoutesV1(app, {
13
+ registerAgentSessionRoutesV1(app, {
14
14
  list: async () => {
15
- throw new DebugSessionFacadeError(
15
+ throw new AgentSessionFacadeError(
16
16
  "PROVIDER_UNAVAILABLE",
17
17
  "暂不可用",
18
18
  503,
19
19
  );
20
20
  },
21
- } as unknown as DebugSessionFacadeV1);
22
- const request = new Request("http://localhost/api/agent/debug/sessions/v1");
21
+ } as unknown as AgentSessionFacadeV1);
22
+ const request = new Request("http://localhost/api/agent/sessions/v1");
23
23
  const guardContext = createRequestGuardContext(request);
24
24
 
25
- const response = (await app.invoke("GET", "/agent/debug/sessions/v1", {
25
+ const response = (await app.invoke("GET", "/agent/sessions/v1", {
26
26
  request,
27
27
  guardContext,
28
28
  params: {},
29
29
  })) as Response;
30
30
 
31
31
  expect([...app.handlers.keys()]).toEqual([
32
- "GET /agent/debug/sessions/v1",
33
- "GET /agent/debug/sessions/v1/:sessionId",
32
+ "GET /agent/sessions/v1",
33
+ "GET /agent/sessions/v1/:sessionId",
34
34
  ]);
35
35
  expect(response.status).toBe(503);
36
36
  expect(response.headers.get("cache-control")).toBe("no-store");
@@ -43,16 +43,16 @@ describe("ADK 调试会话 V1 routes", () => {
43
43
 
44
44
  test("成功响应同样禁止缓存", async () => {
45
45
  const app = new FakeRouteApp();
46
- registerDebugSessionRoutesV1(app, {
46
+ registerAgentSessionRoutesV1(app, {
47
47
  list: async () => ({
48
48
  schemaVersion: 1,
49
49
  sessions: [],
50
50
  truncated: false,
51
51
  }),
52
- } as unknown as DebugSessionFacadeV1);
53
- const request = new Request("http://localhost/api/agent/debug/sessions/v1");
52
+ } as unknown as AgentSessionFacadeV1);
53
+ const request = new Request("http://localhost/api/agent/sessions/v1");
54
54
 
55
- const response = (await app.invoke("GET", "/agent/debug/sessions/v1", {
55
+ const response = (await app.invoke("GET", "/agent/sessions/v1", {
56
56
  request,
57
57
  guardContext: createRequestGuardContext(request),
58
58
  params: {},
@@ -1,22 +1,22 @@
1
1
  import type { RequestGuardContext } from "../guards.js";
2
2
  import type { RouteApp } from "../system/routes.js";
3
3
  import {
4
- DebugSessionFacadeError,
5
- type DebugSessionFacadeV1,
6
- } from "./debug-session-facade.js";
4
+ AgentSessionFacadeError,
5
+ type AgentSessionFacadeV1,
6
+ } from "./agent-session-facade.js";
7
7
 
8
- interface DebugSessionRouteContext {
8
+ interface AgentSessionRouteContext {
9
9
  params: Record<string, string | undefined>;
10
10
  request: Request;
11
11
  guardContext: RequestGuardContext;
12
12
  }
13
13
 
14
- export function registerDebugSessionRoutesV1(
14
+ export function registerAgentSessionRoutesV1(
15
15
  app: RouteApp,
16
- facade: DebugSessionFacadeV1,
16
+ facade: AgentSessionFacadeV1,
17
17
  ) {
18
- app.get("/agent/debug/sessions/v1", async (raw) => {
19
- const context = raw as DebugSessionRouteContext;
18
+ app.get("/agent/sessions/v1", async (raw) => {
19
+ const context = raw as AgentSessionRouteContext;
20
20
  try {
21
21
  return json(
22
22
  await facade.list(context.guardContext, context.request.signal),
@@ -25,8 +25,8 @@ export function registerDebugSessionRoutesV1(
25
25
  return facadeError(error, context.guardContext.requestId);
26
26
  }
27
27
  });
28
- app.get("/agent/debug/sessions/v1/:sessionId", async (raw) => {
29
- const context = raw as DebugSessionRouteContext;
28
+ app.get("/agent/sessions/v1/:sessionId", async (raw) => {
29
+ const context = raw as AgentSessionRouteContext;
30
30
  try {
31
31
  return json(
32
32
  await facade.get(
@@ -50,7 +50,7 @@ function json(body: unknown, status = 200): Response {
50
50
  }
51
51
 
52
52
  function facadeError(error: unknown, requestId: string): Response {
53
- if (error instanceof DebugSessionFacadeError) {
53
+ if (error instanceof AgentSessionFacadeError) {
54
54
  return json(
55
55
  {
56
56
  code: error.code,
@@ -64,7 +64,7 @@ function facadeError(error: unknown, requestId: string): Response {
64
64
  return json(
65
65
  {
66
66
  code: "PROVIDER_UNAVAILABLE",
67
- message: "调试会话 Provider 暂不可用",
67
+ message: "Agent 会话 Provider 暂不可用",
68
68
  requestId,
69
69
  retryable: true,
70
70
  },
@@ -1,6 +1,6 @@
1
1
  import type {
2
- ModuleDebugSessionSummaryV1,
3
- ModuleDebugSessionV1,
2
+ ModuleAgentSessionSummaryV1,
3
+ ModuleAgentSessionV1,
4
4
  } from "@southwind-ai/server-sdk";
5
5
 
6
6
  const MAX_SESSIONS = 100;
@@ -8,14 +8,14 @@ const MAX_MESSAGES = 64;
8
8
  const MAX_MESSAGE_CHARS = 16_000;
9
9
  const MAX_TOTAL_MESSAGE_CHARS = 128_000;
10
10
 
11
- export class DebugSessionProviderContractError extends Error {}
11
+ export class AgentSessionProviderContractError extends Error {}
12
12
 
13
- export function validateDebugSessionPage(value: {
14
- sessions: readonly ModuleDebugSessionSummaryV1[];
13
+ export function validateAgentSessionPage(value: {
14
+ sessions: readonly ModuleAgentSessionSummaryV1[];
15
15
  truncated: boolean;
16
16
  next?: string;
17
17
  }): {
18
- sessions: readonly ModuleDebugSessionSummaryV1[];
18
+ sessions: readonly ModuleAgentSessionSummaryV1[];
19
19
  truncated: boolean;
20
20
  next?: string;
21
21
  } {
@@ -37,10 +37,10 @@ export function validateDebugSessionPage(value: {
37
37
  return value;
38
38
  }
39
39
 
40
- export function validateDebugSessionDetail(
41
- value: ModuleDebugSessionV1,
40
+ export function validateAgentSessionDetail(
41
+ value: ModuleAgentSessionV1,
42
42
  expectedSourceId: string,
43
- ): ModuleDebugSessionV1 {
43
+ ): ModuleAgentSessionV1 {
44
44
  validateSummary(value);
45
45
  if (
46
46
  value.sourceId !== expectedSourceId ||
@@ -69,7 +69,7 @@ export function validateDebugSessionDetail(
69
69
  return value;
70
70
  }
71
71
 
72
- function validateSummary(value: ModuleDebugSessionSummaryV1): void {
72
+ function validateSummary(value: ModuleAgentSessionSummaryV1): void {
73
73
  if (
74
74
  !value ||
75
75
  !validText(value.sourceId, 200) ||
@@ -102,5 +102,7 @@ function validDate(value: unknown): value is string {
102
102
  }
103
103
 
104
104
  function invalidProvider(): never {
105
- throw new DebugSessionProviderContractError("调试会话 Provider 返回无效数据");
105
+ throw new AgentSessionProviderContractError(
106
+ "Agent 会话 Provider 返回无效数据",
107
+ );
106
108
  }