create-windy 0.6.12 → 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 +572 -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,14 +1,14 @@
1
1
  # Windy AI Runtime 架构
2
2
 
3
- 更新时间:2026-07-31。
3
+ 更新时间:2026-08-27。
4
4
 
5
5
  状态:架构已确认,文本 Agent、Document AI、批量 Speech/ASR 与受控 Vision Artifact
6
6
  切片已实现。当前包含 Module AI Operation
7
7
  注册、Guarded Run facade、短时 Execution Grant、受限 Tool Host、OpenAI-compatible
8
8
  Provider、canonical HTTP/SSE、取消、cursor 重放和单副本有界 SQLite Store。未配置
9
- Provider 时仍安全拒绝。真实业务 Run 已在内部使用 ADK 2.5 Runner、Session、LlmAgent
10
- 和 Event,并把事件转换为既有 canonical signal。ADK Workflow、LiteLLM 多 Provider
11
- 路由和 PostgreSQL 多副本 Store 尚未实现。Document AI 已提供独立
9
+ Provider 时仍安全拒绝。真实业务 Run 由 Windy Direct OpenAI-compatible Engine 执行,
10
+ 并直接产生 canonical signal。持久 Session/Workflow、LiteLLM 多 Provider 路由和
11
+ PostgreSQL 多副本 Store 尚未实现。Document AI 已提供独立
12
12
  Server、授权 ArtifactRef、结构化页级结果、本地/内网 Adapter 契约,以及搜索型 PDF
13
13
  等派生文件的受治理 Output Artifact producer 协议;项目 composition 尚未接线,不能
14
14
  视为生产可用。Speech 已提供批量转写、归一化、VAD/时间戳契约、稳定分段和结果
@@ -22,20 +22,21 @@ Windy 为生成项目提供可选的 AI Runtime。它统一治理模型 Deployme
22
22
 
23
23
  首期目标:
24
24
 
25
- - 使用 Google ADK 承载 Agent、Workflow、Session、Eval 和开发调试;
25
+ - 使用 Windy Agent Harness 承载受治理的 Agent Loop,并逐步增加持久 Session、Workflow
26
+ 与 Eval;
26
27
  - 使用自托管 LiteLLM Proxy 管理多个 LLM/VLM Provider;
27
28
  - 支持 DeepSeek、GLM、Kimi、Qwen 及本地或内网 OpenAI-compatible 模型;
28
29
  - 支持文本 LLM/VLM 的 canonical SSE 流式传输;
29
30
  - 支持本地或云端 OCR、文档解析、ASR、TTS 和 AI Dictation;
30
31
  - 支持完全离线、内网私有化和受控公网三种部署环境;
31
- - 业务 Module 只依赖稳定 Operation,不依赖 ADK、LiteLLM、模型名或 Provider SDK。
32
+ - 业务 Module 只依赖稳定 Operation,不依赖 Engine、LiteLLM、模型名或 Provider SDK。
32
33
 
33
34
  首期不包含腾讯混元。未列出的 Provider 通过 Deployment Registry 和 Adapter 扩展,不扩充业务 Interface。
34
35
 
35
36
  ## 核心决策
36
37
 
37
38
  1. Agent Runtime 是 Windy 的官方可选底座能力,不是每个业务 Module 自行实现的功能。
38
- 2. Agent Server 独立部署,首期使用 Python ADK;ADK 只属于内部 Implementation。
39
+ 2. Agent Server 独立部署,使用 Windy Direct Engine;Engine 只属于内部 Implementation。
39
40
  3. 首个文本切片由 Agent Server 内置 OpenAI-compatible Adapter;需要多 Provider
40
41
  路由、fallback 与集中限流时,再引入独立自托管 LiteLLM Proxy。
41
42
  4. OCR 和文档解析由独立 Document AI Server 执行,不放入 Agent Server 或 LiteLLM。
@@ -57,9 +58,9 @@ Windy Server
57
58
  ├── Agent Tool Host
58
59
  └── 短时 Execution Grant
59
60
  │
60
- ├── Agent Server(Python + ADK)
61
- │ ├── Prompt / Workflow / Session / Eval
62
- │ └── canonical SSE / Live WebSocket
61
+ ├── Agent Server(Python + Windy Direct Engine)
62
+ │ ├── Model / Tool Loop / Usage / Cancel
63
+ │ └── canonical SSE
63
64
  │ │
64
65
  │ ▼
65
66
  │ LiteLLM Proxy
@@ -96,7 +97,7 @@ Windy Server
96
97
 
97
98
  不拥有:
98
99
 
99
- - ADK Session 或 Workflow 实现;
100
+ - Agent Session 或 Workflow 实现;
100
101
  - Provider API Key 明文;
101
102
  - LiteLLM 路由内部状态;
102
103
  - OCR、ASR、TTS 模型进程;
@@ -106,12 +107,11 @@ Windy Server
106
107
 
107
108
  拥有:
108
109
 
109
- - ADK Runner、Workflow、Session、Checkpoint、Eval;
110
+ - Direct Model/Tool Loop 与 Engine Signal;
110
111
  - Agent、Workflow 和 Prompt Release;
111
112
  - Run 生命周期、取消、恢复和 canonical event;
112
- - ADK Event 到 Windy Event 的转换;
113
113
  - Agent Step、Prompt Version、Tool Call 和模型 attempt 的关联;
114
- - 开发环境 ADK Web;
114
+ - 主站 Runtime Report 与 Trajectory 所需的安全投影;
115
115
  - 实时 Agent 会话编排。
116
116
 
117
117
  Agent Server 不直接访问业务 Repository。模型产生 Tool Call 只表示执行意图;每次真实 Tool 执行都必须回到 Windy Tool Host,重新检查当前 Feature、License、Permission 和数据范围。
@@ -137,7 +137,8 @@ agent.vision
137
137
  speech.dictation.polish
138
138
  ```
139
139
 
140
- ADK 和 LiteLLM 不同时维护两套路由或 fallback。ADK 决定运行哪个 Agent 或 Step,LiteLLM 决定该 Step 落到哪个模型 Deployment。
140
+ Windy Harness 和 LiteLLM 不同时维护两套路由或 fallback。Harness 决定运行哪个 Operation
141
+ 或 Step,LiteLLM 只在启用后决定该 Step 落到哪个模型 Deployment。
141
142
 
142
143
  ### Document AI Server
143
144
 
@@ -190,7 +191,7 @@ Document、Speech 与 Embedding Interface 已分别由 `./document`、`./speech`
190
191
  npm Module 数量与部署进程数量是两个不同维度。Windy Server、Agent Server、
191
192
  Document AI Server 和 Speech Server 仍独立部署:它们具有不同的协议、资源和故障域;
192
193
  业务侧则只学习一个稳定入口。`ai-client` 内部通过 Agent、Document、Speech Adapter
193
- 隔离远端 Implementation,不能把 ADK、LiteLLM、PaddleOCR 或 Provider SDK 类型暴露给业务。
194
+ 隔离远端 Implementation,不能把 Engine、LiteLLM、PaddleOCR 或 Provider SDK 类型暴露给业务。
194
195
 
195
196
  ### Agent Interface
196
197
 
@@ -214,7 +215,8 @@ interface AgentRun<Output> {
214
215
  }
215
216
  ```
216
217
 
217
- 业务只知道 Operation Key、类型化输入输出、幂等键、canonical event 和终态结果,不知道 Provider、模型名、Prompt 明文、ADK Agent 或 LiteLLM 参数。
218
+ 业务只知道 Operation Key、类型化输入输出、幂等键、canonical event 和终态结果,不知道
219
+ Provider、模型名、Prompt 明文、Engine 私有状态或 LiteLLM 参数。
218
220
 
219
221
  ### Document Interface
220
222
 
@@ -464,6 +466,15 @@ canonical event:
464
466
  ```ts
465
467
  type AgentEvent =
466
468
  | { type: "run.started"; runId: string; sequence: number }
469
+ | {
470
+ type: "input.prepared";
471
+ runId: string;
472
+ sequence: number;
473
+ artifactCount: number;
474
+ inputModalities: readonly (
475
+ "text" | "image" | "audio" | "video" | "document"
476
+ )[];
477
+ }
467
478
  | { type: "output.delta"; runId: string; sequence: number; text: string }
468
479
  | {
469
480
  type: "tool.requested";
@@ -500,7 +511,12 @@ type AgentEvent =
500
511
  | { type: "run.cancelled"; runId: string; sequence: number };
501
512
  ```
502
513
 
503
- ADK Event、LiteLLM chunk、OpenAI response event、Provider reasoning delta 和 partial JSON 不直接向业务透传。
514
+ `input.prepared` 是正常 Run 完成受治理输入准备后公开发送的 canonical event,不是 Agent
515
+ Server 内部信号。SDK 必须严格校验非负 `artifactCount` 和非空、已登记的
516
+ `inputModalities`,再按 SSE cursor 顺序交付给业务调用方。
517
+
518
+ Engine Signal、LiteLLM chunk、OpenAI response event、Provider reasoning delta 和 partial
519
+ JSON 不直接向业务透传。
504
520
 
505
521
  ### SSE 不变量
506
522
 
@@ -665,7 +681,7 @@ type DictationEvent =
665
681
 
666
682
  实时对话支持两种 Adapter:
667
683
 
668
- - 级联:ASR → ADK Agent/LLM → TTS;
684
+ - 级联:ASR → Windy Agent/LLM → TTS;
669
685
  - 原生双向模型:音频/视频 ⇄ Realtime Model。
670
686
 
671
687
  客户端先向 Windy Server 创建 Live Session 并通过 Guard,再使用短时、绑定 Session 和 audience 的凭证连接 Agent Server WebSocket。Tool Call 仍回到 Windy Tool Host 二次授权。
@@ -674,23 +690,14 @@ type DictationEvent =
674
690
 
675
691
  ## Prompt、Debug 与 Trace
676
692
 
677
- ADK Web 只在 developer profile 启动,绑定 localhost 或受控开发网络。它不是生产
678
- Prompt 管理或生产 Debug 控制面。
679
-
680
- 当前 Compose 使用独立 `agent-debug` profile,宿主机只发布
681
- `127.0.0.1:8000`。Windy 的 `canonical_debug` 是确定性 Adapter:它把用户文本交给
682
- project-owned 配置选择的真实文本 Operation,并通过 canonical HTTP/SSE 读取 Run、
683
- Tool 和终态摘要。业务 Permission、Scope、Execution Grant、Provider 与 Tool Host
684
- 继续由正式 Server/Agent Server 管理,ADK Web 不获得 Repository、Provider Key 或内部
685
- Token。项目配置只包含 Operation Key 与当前启用的真实开发数据用户 ID,不能重复或扩大
686
- Manifest 的权限、Scope 与 Tool 列表。数据用户用于复用其成员关系和当前 Scope。开发 Wrapper
687
- 创建的核心主体仍是 `service_adk_debug`,权限只取该用户已有权限与 Operation/allowed
688
- Tools 闭包的精确交集,并且只能调用 canonical Run API 与只读 debug-session GET;
689
- 审计不会把它记录成普通用户会话。
693
+ 开发与生产观察统一使用 Windy 主站。`/admin/system/ai-runtime` 通过当前登录身份、
694
+ `system.ai-runtime.read` 和数据范围展示 Runtime Report、Provider Attempt 与脱敏
695
+ Trajectory;业务历史会话由 `registerAgentSessionProviders()` 提供只读投影。不存在独立
696
+ 调试站点、专用身份或第二种 Token。
690
697
 
691
- 该 Adapter 证明真实业务执行链,不等于把另一进程内的完整 ADK Agent/Workflow 图装入
692
- 原生 ADK Web。内部节点、Prompt 版本和 replay 若要可视化,必须通过另一个版本化协议
693
- 显式暴露。不得把开发调试会话解释为生产授权或业务执行证据。
698
+ Trajectory 只投影 canonical Run 的 Tool Key、审批、Usage、输入模态、Artifact 数量、失败、
699
+ 取消和终态,不展示 Prompt、chain-of-thought、完整 Tool 参数或 Provider body。完整节点图、
700
+ Prompt 版本和 replay 必须建立在后续版本化 Session/Trace 协议上,不从当前摘要反向推断。
694
701
 
695
702
  Prompt 和 Workflow 使用:
696
703
 
@@ -708,7 +715,8 @@ published version 不可原地修改。每次 Run 固定:
708
715
 
709
716
  首期优先使用代码或 YAML、Git、Eval 和不可变 Release。只有出现非开发人员在线编辑的真实需求后,再扩展 diff、审批、回滚、fixture、route 对比和发布管理。
710
717
 
711
- 生产 Trace 优先输出到客户本地 OTel Collector 与 Jaeger/Tempo。Windy 控制面提供脱敏 Run 摘要和受权限保护的 Trace 入口,不复制 ADK Web。
718
+ 生产 Trace 优先输出到客户本地 OTel Collector 与 Jaeger/Tempo。Windy 控制面提供脱敏 Run
719
+ 摘要和受权限保护的 Trace 入口,不复制第二套调试站点。
712
720
 
713
721
  生产默认不持久化完整 Prompt、响应、音频、图片或 Tool 参数。明文诊断需要专门 Feature、Permission、加密、脱敏、TTL 和访问审计。
714
722
 
@@ -776,13 +784,13 @@ LiteLLM 版本必须固定并通过供应链审查,客户现场禁止动态安
776
784
  ## 首期交付切片
777
785
 
778
786
  当前已完成第 1、2、4、7、8 项的批量 ASR 子集和第 5 项的受限 Tool Host 基础闭环,并交付可直接连接
779
- OpenAI-compatible Provider 的文本 Agent Adapter。SQLite Store 提供单副本有界持久化,
787
+ OpenAI-compatible Provider 的 Direct Agent Engine。SQLite Store 提供单副本有界持久化,
780
788
  重启后保留终态和 cursor,但不替代后续 PostgreSQL 多副本 Store。配置 Provider 后,
781
- 文本与 Tool Run 由 ADK Runner/Session/Event 执行;未配置 Provider 时同一 Adapter
782
- fail closed。开发 ADK Web 已作为 localhost-only 的受控调试入口交付,不是业务入口。
789
+ 文本与 Tool Run 由 Windy Direct Loop 执行;未配置 Provider 时
790
+ `UnavailableEngineAdapter` fail closed。开发与运维观察统一进入主站 Trajectory。
783
791
 
784
792
  1. 定义 Agent、Document、Speech Operation 与 Module Manifest 组合校验;
785
- 2. 建立 Python Agent Server、ADK Adapter 和 deterministic test Adapter;
793
+ 2. 建立 Python Agent Server、Direct Engine 和 deterministic test Adapter;
786
794
  3. 部署 LiteLLM Proxy,接入 DeepSeek、GLM、Kimi、Qwen 和一个本地 OpenAI-compatible Endpoint;
787
795
  4. 完成 Agent Run 创建、canonical SSE、断线恢复、取消和稳定错误;
788
796
  5. 接入一个真实 Agent Tool,验证 Feature、Permission、License、数据范围和 Audit;
@@ -793,20 +801,21 @@ fail closed。开发 ADK Web 已作为 localhost-only 的受控调试入口交
793
801
  9. 增加 VLM Artifact 输入和 `agent.vision` route(已完成图片输入;视频后续);
794
802
  10. 验证受控公网、内网私有化和完全断网三种 profile。
795
803
 
796
- 首期不同时实现 LangGraph Adapter、完整在线 Visual Builder、生产 ADK Web、腾讯混元或通用 GPU 调度平台。
804
+ 首期不同时实现 LangGraph Adapter、完整在线 Visual Builder、独立 Agent 调试站点、腾讯混元
805
+ 或通用 GPU 调度平台。
797
806
 
798
807
  ## 验收标准
799
808
 
800
- - 业务代码不导入 ADK、LiteLLM 或 Provider SDK;
809
+ - 业务代码不导入 Agent Engine、LiteLLM 或 Provider SDK;
801
810
  - 业务不传 Provider、模型名、Endpoint 或 API Key;
802
811
  - 文本 LLM、VLM 和 Agent 输出统一通过 canonical SSE;
803
812
  - SSE 断线后使用 cursor 恢复,不重新执行模型调用;
804
813
  - Feature、Permission、License 任一拒绝都会 fail-closed;
805
814
  - 模型 Tool Call 不能绕过 Windy Tool Host;
806
- - 同一 Run 能关联 Audit、ADK Trace、LiteLLM attempt 和 Usage;
815
+ - 同一 Run 能关联 Audit、canonical Trajectory、Provider attempt 和 Usage;
807
816
  - 本地/内网模型可配置协议、主机、端口和 Base Path;
808
817
  - 完全断网环境仍可运行已配置的本地 LLM、OCR 和 Speech Operation;
809
- - ADK Web 不出现在生产 profile;
818
+ - 独立 Agent 调试站点不出现在任何 profile;
810
819
  - 非 AI 业务在任一可选 AI Runtime 不可用时仍可运行。
811
820
 
812
821
  ## 相关文档与资料
@@ -819,9 +828,8 @@ fail closed。开发 ADK Web 已作为 localhost-only 的受控调试入口交
819
828
  - [Agent Runtime 接入与运行](../platform/agent-runtime.md)
820
829
  - [通用文件与对象存储](./object-storage.md)
821
830
  - [运行时可观测性](../operations/observability.md)
822
- - [ADK Web](https://adk.dev/runtime/web-interface/)
823
- - [ADK Streaming](https://adk.dev/streaming/)
824
- - [ADK Audio、Image 与 Video](https://adk.dev/streaming/dev-guide/part5/)
831
+ - [Agent Harness:移除 ADK 与可插拔演进](./agent-harness.md)
832
+ - [ADK 退役与 Direct Engine 恢复](../operations/adk-retirement.md)
825
833
  - [LiteLLM](https://docs.litellm.ai/)
826
834
  - [PaddleOCR Serving](https://www.paddleocr.ai/main/en/version3.x/inference_deployment/serving/serving.html)
827
835
  - [Unlimited OCR](https://github.com/baidu/Unlimited-OCR)
@@ -15,9 +15,10 @@
15
15
  - `registerToolHandlers()`:为 Manifest `tools` 已声明的 Agent Tool 注册类型化 JSON 执行体,输入输出 Schema、`scopeMode` 与 Handler 均接入双向校验;
16
16
  - `registerRolePresets()`:注册角色预设,`permissionKeys` 必须属于本模块 Manifest 权限声明;预设并入内置角色同步(不存在则创建、漂移则非破坏性合并),不改变 4 个内置角色语义;
17
17
  - `registerSearchProviders()`:注册 Manifest `providers` 已声明的搜索 Provider;
18
- - `registerDebugSessionProviders()`:为 developer-only ADK Web 注册业务会话的只读
19
- V1 投影;Provider 必须绑定本模块 Agent Operation,并复用该 Operation 的 Feature
20
- 与 Permission,业务 `sourceId` 不会越过 Host;
18
+ - `registerAgentSessionProviders()`:为 Windy 主站注册业务会话的只读 V1 投影;Provider
19
+ 必须绑定本模块 Agent Operation,并复用该 Operation 的 Feature、Permission 与当前
20
+ Actor 数据范围,业务 `sourceId` 不会越过 Host;旧
21
+ `registerDebugSessionProviders()` 只保留一个兼容发布周期的 deprecated alias;
21
22
  - `registerUploadPolicy()`:按业务用途注册大小、分片、MIME、扩展名和签名策略;
22
23
  - `registerResourceFileAccessPolicies()`:注册本模块业务资源到平台文件的受限读取
23
24
  Resolver;purpose 必须来自当前模块或 Manifest 显式依赖模块,resourceType、
@@ -0,0 +1,98 @@
1
+ # ADK 退役与 Direct Engine 恢复
2
+
3
+ ## 适用范围
4
+
5
+ 本说明用于从 `create-windy@0.6.13` 更新到 `0.6.14`,以及排查
6
+ `windy.direct.openai-compatible.v1` 的启动、运行和历史兼容问题。该迁移不发布新能力,
7
+ 不启用 AH-1 Session/Context 或 AH-2 Workflow/Delegation。
8
+
9
+ ## 更新行为
10
+
11
+ `windy update` 按文件所有权执行:
12
+
13
+ | 遗留项 | 自动行为 | 原因 |
14
+ | ---------------------------------------------------------------------------- | ------------------------------ | ---------------------------------- |
15
+ | 未漂移的 `docker-compose.agent-debug.yml`、启动脚本和其它 Windy-managed 文件 | 删除 | 内容仍等于上一版本清单,可安全迁移 |
16
+ | 客户修改过的 Windy-managed 文件 | 产生 conflict 并停止事务 | 不能猜测客户改动是否仍有用途 |
17
+ | `apps/agent-server/project/adk-web-debug.json` | 保留并报告路径 | project-owned,Windy 不拥有删除权 |
18
+ | 普通 `.env` 中已弃用的 Debug Key | 保留并只报告 Key 名 | 不能读取到报告或猜删客户 Secret |
19
+ | 指向外部文件的 `.env` symlink | 不跟随、不读取,只报告人工检查 | 外部托管配置不属于 updater 事务 |
20
+
21
+ 更新报告不会记录 Token 值、Provider Key 或其它 dotenv 正文。原 `dev:adk-web` 被明确移除,
22
+ 不会静默改成另一条命令;替代入口是主站 `/admin/system/ai-runtime`。
23
+
24
+ 建议流程:
25
+
26
+ ```bash
27
+ bun run windy update --dry-run
28
+ bun run windy update
29
+ bun run windy doctor
30
+ ```
31
+
32
+ 先处理 conflict,再重试同一更新。不要手工删除 `.windy/update-state.json`;事务中断后使用:
33
+
34
+ ```bash
35
+ bun run windy doctor --repair
36
+ ```
37
+
38
+ `doctor --repair` 只恢复 updater 事务和当前版本仍管理的本地 Secret,不会删除 project-owned
39
+ JSON,也不会改写已弃用的普通 `.env` Key。
40
+
41
+ ## 重复故障与快速恢复
42
+
43
+ ### `RUNTIME_UNAVAILABLE`
44
+
45
+ 连续出现 unavailable 时,依次核对 Agent Server 内的 `QWEN_API_URL`、`QWEN_API_KEY`、
46
+ `QWEN_MODEL`、HTTPS Host allowlist、Provider capability 和 readiness。不要向 Web 注入这些值,
47
+ 也不要通过恢复旧 Engine 绕过治理。修复配置后重启 Agent Server,再从主站检查 readiness 和
48
+ 新的 Run。
49
+
50
+ ### 历史 Run 显示 `google.adk.v2`
51
+
52
+ 这是兼容事实,不是当前 Engine 回退。迁移追加 `engine_id`,旧行保留历史 ID;新 Run 必须是
53
+ `windy.direct.openai-compatible.v1`。不要批量回填旧记录,否则会伪造 attestation。
54
+
55
+ ### 旧 Engine 的 Run 在迁移时仍为运行中
56
+
57
+ Direct Engine 不读取旧 Engine 的进程内状态,也不跨实现恢复 Tool 循环。读取历史 Event 和
58
+ Report 仍可用;尝试继续时稳定失败。确认旧 Run 没有外部副作用正在执行后,使用相同业务输入
59
+ 创建新 Run,并依赖业务幂等键/command receipt 防止重复副作用。
60
+
61
+ ### 主站没有 Trajectory
62
+
63
+ 先确认 Run 详情可读、Feature `system.ai-runtime` 和 Permission
64
+ `system.ai-runtime.read` 已授权,再检查 Agent Server 与 Server 的 Runtime Report 版本是否
65
+ 来自同一候选。历史记录没有 canonical event projection 时会明确显示 unavailable,不伪造
66
+ 轨迹。
67
+
68
+ ### 历史业务会话为空或 404
69
+
70
+ 确认业务模块已改用 `registerAgentSessionProviders()`,Provider 绑定的 Operation、Feature、
71
+ Permission 与当前 Actor 数据范围仍有效。旧注册名称只是 deprecated alias。Opaque Session
72
+ ID 在 Provider/Host 绑定变化后可能失效;重新从列表进入,不要持久化或解析该 ID。
73
+
74
+ ### updater 反复报告遗留配置
75
+
76
+ 报告只会在遗留仍存在时重复出现。由项目所有者确认无客户用途后,人工删除 project-owned
77
+ debug JSON;普通 `.env` 只移除报告列出的旧 Key,保留其它 Token、注释和客户配置。外部托管
78
+ `.env` 应在其配置系统中完成清理,不要用 updater 跟随 symlink 修改。
79
+
80
+ ## 取消、审批和 Usage 核对
81
+
82
+ 迁移后出现行为差异时,从主站 Run 详情按以下事实核对:
83
+
84
+ - 取消后不应再出现新的模型轮次、Tool 副作用或成功终态;
85
+ - 审批等待保持非终态,批准/拒绝后只能沿原 Run 恢复一次;
86
+ - Provider Attempt 和 Usage 按实际 HTTP attempt 记录,缺失为“未上报”,不能当作零;
87
+ - Citation、Vision Artifact 与最终结构化输出从 canonical Result 读取,不从 Trajectory 反推;
88
+ - Client Agent Session/PageAgent 走独立受治理端点,不应因服务端 Engine 迁移改变。
89
+
90
+ ## 回滚边界
91
+
92
+ 迁移只追加或保留数据库事实,不做删除式 migration。若候选验证失败,回滚整个应用候选和镜像,
93
+ 保持数据库备份;不要在生产增加动态开关重新装载已删除 Engine。回滚后由旧版本读取原有数据,
94
+ 但新 Engine 已创建的中断 Run 也不能跨实现续跑。
95
+
96
+ 正式发布前必须完成 Python 静态检查与测试、受影响 TypeScript 测试、PostgreSQL 历史读取、
97
+ OpenAI-compatible 文本/Tool/Vision/审批/取消集成、Starter 生成/升级矩阵、pack consumer、联网与
98
+ 离线镜像、wheel/SBOM 比较,以及 Client Agent Session/PageAgent 下游回归。
@@ -0,0 +1,162 @@
1
+ # Agent Session、Context 与 Memory 运维
2
+
3
+ 本页描述 AH-1 的持久化、恢复和失效传播边界。它不把仓库检查结果写成生产验收。
4
+
5
+ ## 启动条件
6
+
7
+ 长期 Session 只在 Server 配置 PostgreSQL 且 `system.agent-session` Feature、License 与 Permission
8
+ Guard 通过时可用。绑定 `/agent/runs` 还要求 `system.agent-session.manage`;普通未绑定 Session 的
9
+ Run 保持原授权行为。Event 与 Memory payload
10
+ 使用 `AI_ARTIFACT_ENCRYPTION_SECRET` 派生独立 AAD 的 AES-256-GCM 密钥;Secret 不得写入日志、
11
+ 数据库或客户端。缺少数据库时相关 API 保持注册但返回
12
+ `SESSION_PERSISTENCE_UNAVAILABLE`,不得退回内存 Session。
13
+
14
+ AH-1 Session/Context/Memory 是本版本的 fresh-deploy baseline。首次部署从已清空旧开发 Docker 容器
15
+ 及其数据卷的空 PostgreSQL 开始,不支持迁移或读取开发期 Agent 聊天历史与其派生日志。不得把这项
16
+ 部署前清理扩大到正式 Agent Runtime Run 审计、Client Agent Session、Artifact、审批、上传或业务数据。
17
+
18
+ Migration `0058_agent_session_memory.sql` 创建以下事实与投影:
19
+
20
+ - `agent_sessions`、`agent_session_events`、`agent_session_checkpoints`;
21
+ - `agent_context_versions`、`agent_context_sources`;
22
+ - `agent_memory_projections`、`agent_memory_sources`;
23
+ - `agent_source_invalidations`、`agent_source_invalidation_deliveries`。
24
+
25
+ Migration `0059_agent_source_module_key.sql` 为 Context/Memory 来源补齐 `source_module_key` 与
26
+ `source_sequence`,并把失效投影唯一键扩展为 Module Key + kind + ID。0058—0060 只描述空库建表
27
+ 和约束,不包含旧 AH-1 投影的兼容回填或批量失效 DML;空、未知或未注册 Module Key 一律 fail closed。
28
+
29
+ Migration `0060_slimy_rocket_raccoon.sql` 增加最终受治理消息投影、Run 的 Session 绑定和 Memory
30
+ 派生坐标,并创建 `agent_session_run_projection_receipts`。启动后应存在
31
+ `agent_context_messages`,且新建 Memory 必须同时保存 `derived_from_session_id` 与
32
+ `derived_through_sequence`;Turn Event、Context Version 和 Memory 投影还应保存同一个规范化案件
33
+ 坐标。后续 `0061_agent_workflow.sql` 只增加 AH-2 Workflow 的结构性 DDL;0058—0061
34
+ 共同属于空库 fresh-deploy 基线,不提供旧开发期 Agent 数据迁移、回填或清理脚本。开发期数据由
35
+ 部署边界外的容器/数据卷清理处理,运行时仍对任何无法核验的新记录 fail closed。
36
+
37
+ Compose 会给 Agent Server 注入 `AGENT_CONTEXT_HOST_URL=http://server:9747`。非 Compose 部署必须
38
+ 指向可访问的 Windy Server;未配置或回调不可用时,绑定长期 Session 的 Model attempt 会稳定
39
+ fail closed,普通 Run 不受影响。
40
+
41
+ ## 恢复与一致性
42
+
43
+ Session 恢复以 `head_sequence` 和连续 Event sequence 为准。Checkpoint 保存覆盖序列的事实 digest;
44
+ replay 只读取已记录事实,默认策略固定为 `recorded-only`。Fork 必须引用同一 Session 已提交的
45
+ Checkpoint,并保存父 Session、Checkpoint 与父序列。写 Tool 只有显式 `reexecute-write` 才可
46
+ 执行,且必须重新通过当前授权、审批、幂等键和 command receipt。
47
+
48
+ `turn.started` 与 `run.linked` 间出现 CAS 冲突时,Server 使用同一幂等坐标重读并补链;启动失败会
49
+ 关闭未完成 Step 与 Turn。补偿失败与原始错误一起上抛,不能留下被静默吞掉的永久开放 Turn。
50
+
51
+ 长期 Session 的 Run 幂等坐标包含 Session 绑定,并由持久 `run.linked` 固定唯一 Turn。若相同
52
+ Actor、Operation、客户端 key 和输入
53
+ 用于另一个 Session,Server 必须创建不同 Remote Run 或返回绑定冲突,不能复用旧 Run。查询结果、
54
+ 取消和附件等终态路径在写 Session 前再次执行 `system.agent-session` Feature、License 与
55
+ `system.agent-session.manage` Guard,并核对请求 `sessionId` 与已持久的 `run.linked` 一致;普通未
56
+ 绑定 Session 的 Run 继续保持原行为。
57
+
58
+ 每个绑定长期 Session 的 Model attempt 使用 prepare/commit 两阶段写 Context:prepare 只返回当前
59
+ 可授权的候选来源,不产生 active 版本;DLP 和 Provider policy 完成后,commit 在 Provider 调用前
60
+ 原子写入最终消息、来源和请求 digest。下列任一现象都应停止流量并按契约缺陷处理:治理拒绝后仍
61
+ 存在 active Context Version、Context digest 与实际 Provider request 不一致、版本只有
62
+ `turn.started` 元数据,或 Provider 已收到输入但 commit 尚未成功。
63
+
64
+ Run 授权绑定将业务 `prepare` 的规范化 `caseId` 作为 Memory Scope 持久化,并纳入幂等一致性。
65
+ prepare、commit、abort 回调的案件坐标必须与绑定相同;Turn 与 Context Version 也保存该坐标。
66
+ 历史恢复只选择完全相同坐标的版本;缺失或不同的案件坐标不会退化成 Session 级历史。V1 未提供
67
+ 显式跨案 grant,因此不得通过重复 `caseId`、Session 血缘或客户端参数完成跨案合并。
68
+
69
+ 工作线恢复必须能从持久 Context 消息、已完成 Run 最终结果、Session Summary、可用 Memory、
70
+ ArtifactRef 和 Tool receipt 重建;不得解密或回填原始推理链。五类 Memory 的 Projector append
71
+ 入口和每次 attempt 的 Retriever 都必须在生产 Composition Root 中存在。可用表或已有 projection
72
+ 不代表闭环成立;若 Retriever 未在 attempt 中产生带来源的消息,应视为不可用而非静默忽略。
73
+
74
+ 业务模块的三类显式触发入口由 `ModuleRequestContext.sessionMemory` 提供。Host 固定来源
75
+ `moduleKey`、当前 Actor/Scope 与取消信号;User Preference、Case Candidate、Verified Fact 的
76
+ 来源和对象仍须由模块权威 Adapter 复核。SSE 断开不会成为最终结果丢失条件:下一次 prepare 会对
77
+ 未关闭的 `run.linked` 做终态补偿,先追加幂等 Memory,再收敛 Turn。
78
+
79
+ 完成 Run 必须依次写入 Working Context、Session Summary 和持久 Terminal Projection Receipt,最后
80
+ 才能追加 `turn.completed`。Reconciler 也检查 closed-but-unprojected:缺 Receipt 时按固定终态序列和
81
+ 结果 digest 幂等补投;坐标漂移则拒绝,不能覆盖。Receipt 不拥有 Memory,单项投影删除后不会因此
82
+ 自动重建。纯 `/events` 读取只要求 Run read 权限与持久 binding 校验;result、cancel、attach 等会
83
+ 写长期 Session 的路径才额外执行 Feature、License、manage Guard。
84
+
85
+ Working Context 默认最长 24 小时,调用方只能设置更短 TTL。Host 配置大于 24 小时会在装配时拒绝。
86
+ Context 来源同时记录 Memory 投影自身坐标及其底层权威来源;派生 Memory 继续保存直接 Memory
87
+ 依赖,因而 TTL 以 `memoryId` 发出的失效会收敛消费它的 Context 和后续 Memory。过期扫描以条件
88
+ 更新领取 active 投影,并在同一事务追加由 `system.agent` 绑定的 `source-expired` Outbox;失败回滚
89
+ 后由下一轮重试。Case
90
+ Memory 只在业务 Operation 显式提供当前 `caseId` 且所属模块对象授权复核通过时进入 Context,禁止
91
+ 使用 `derived_from_session_id` 推断当前案件。
92
+
93
+ 权威业务模块通过 Host 绑定的 `ModuleRequestContext.sourceInvalidation` 发布 deleted、expired、
94
+ superseded 和 authorization-revoked。调用方不能提供 Module Key、Actor 或 Scope;Producer 的
95
+ append seam 可绑定业务来源事务。平台用户、角色与数据范围变更在身份事务内追加撤权事件,并按
96
+ Actor 派生 Session 收敛 Context、Memory、Search、Embedding 和 UI;读取端不等待 Worker 即复核
97
+ 当前 Actor/Scope。
98
+
99
+ Session 归档在同一 PostgreSQL 事务中写入 `session-derived` 失效 Outbox。消费者按
100
+ Context 按 `session_id`、Memory 按 `derived_from_session_id` 匹配该 Session 的全部派生投影;即使
101
+ Memory 使用范围是 user 或 case,也必须收敛。只按 `scope_kind=session` 匹配属于缺陷。删除单个 Memory 只删除该
102
+ projection,不发布来源删除,也不清除同源其它 Memory/Search/Embedding。只有权威来源模块的
103
+ 生命周期事件可以发布 `source-deleted`。五个 Delivery 各自完成,不能因一个目标成功就将整条
104
+ 失效标为完成。Server Composition Root 启动 Worker;进程崩溃后其它实例可领取过期 Lease,协议
105
+ 错误进入 rejected,临时目标不可用进入 pending 并延迟重试。
106
+
107
+ 建议监控:
108
+
109
+ ```sql
110
+ select status, count(*)
111
+ from agent_source_invalidation_deliveries
112
+ group by status;
113
+
114
+ select sink_key, count(*), max(attempt_count)
115
+ from agent_source_invalidation_deliveries
116
+ where status in ('pending', 'processing', 'rejected')
117
+ group by sink_key;
118
+ ```
119
+
120
+ AH-1 的 Search/Embedding Adapter 与 canonical Memory 投影共享状态;若目标部署启用独立索引,
121
+ 必须替换为该索引的真实删除 Adapter。只看到 Context/Memory 数据库状态变化,不能证明独立索引
122
+ 已经收敛。即使队列积压,读取路径也必须按 moduleKey/kind/ID/version/sequence 查询权威对象,
123
+ 并在撤权、删除、归档、版本或授权 generation 漂移时立即拒绝。
124
+
125
+ ## 主站与数据披露
126
+
127
+ `/admin/system/agent-sessions` 受 `system.agent-session` Feature、
128
+ `system.agent-session.read` Permission 和现有 License Guard 控制。读取时再次比较当前 Actor 与
129
+ Scope digest。页面只显示服务端白名单摘要和来源坐标;排障时也不得直接解密 payload 回传给
130
+ 浏览器或写入工单。Session 列表与详情均按 Actor + 当前 Scope digest 隔离;Context/Memory 任一
131
+ 来源无法完成权威复核时,整个投影端点返回稳定不可用,不泄露来源坐标或摘要。
132
+
133
+ ## 备份与恢复演练
134
+
135
+ 本版本首次验收不是历史恢复演练:先停止并删除旧开发 Docker 容器与数据卷,再从空库启动并顺序
136
+ 应用 0058—0060。确认 fresh baseline 可启动后,后续备份与恢复才覆盖下列项目。
137
+
138
+ 备份必须同时覆盖上述 AH-1 表、业务权威对象、Search/Embedding 索引重建来源和当前加密 Secret。
139
+ 恢复演练至少验证:
140
+
141
+ 1. 进程和容器重启后 Session head、Checkpoint 与 Fork 血缘不变;
142
+ 2. Checkpoint digest 可复算,损坏密文或 digest 会 fail closed;
143
+ 3. replay 不产生 Tool 副作用;
144
+ 4. 撤权、删除和归档在 UI、Context、Memory、Search、Embedding 全部收敛;
145
+ 5. Secret 缺失或错误时返回不可用,不生成新事实覆盖旧数据。
146
+
147
+ ## 候选验证命令
148
+
149
+ 本次实现阶段不执行下列命令。形成合并候选后集中运行:
150
+
151
+ ```bash
152
+ bun run test:merge
153
+ ```
154
+
155
+ 只有正式发版候选才运行:
156
+
157
+ ```bash
158
+ CI=true WINDY_RELEASE_PHASE=candidate bun run release:verify
159
+ ```
160
+
161
+ 还需在真实 PostgreSQL 与真实 Provider 环境完成 attempt Context 录入、容器重启、并发 CAS、Lease
162
+ 恢复、Search/Embedding 删除和对象撤权评测;这些不是本地单元测试或 build 的替代项。