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
@@ -0,0 +1,196 @@
1
+ # Agent Session 重复故障速查
2
+
3
+ ## 页面显示 Session 不可用
4
+
5
+ 先确认 Server 使用 PostgreSQL,而不是非生产内存模式;再确认 Migration 0058、0059 已应用、
6
+ `AI_ARTIFACT_ENCRYPTION_SECRET` 与写入时一致,以及当前用户具备 Feature、Permission、License。
7
+ 不要临时改成内存 Session。首次 fresh-deploy 验收应在部署前清空旧开发 Docker 容器及数据卷,并从
8
+ 空库顺序应用 AH-1 的 0058—0060;启用 AH-2 Workflow 的同一 0.6.14 基线还要继续应用结构性
9
+ `0061_agent_workflow.sql`。运行中排障不得清表重建。
10
+
11
+ ## 旧开发期 Agent 聊天记录无法读取
12
+
13
+ 这是本版本的明确边界。AH-1 Session/Context/Memory 与 AH-2 Workflow 是 fresh-deploy baseline,
14
+ 不提供旧开发期 Agent 聊天历史、Event Log、Memory 或 Workflow 投影兼容。0061 是 Workflow
15
+ 结构性 Migration,不是历史清理 Migration;仓库也不提供旧 Agent 数据迁移、回填或清理脚本。
16
+ 验收从已清空旧开发容器和数据卷的空库开始;不得删除或迁移正式 Run 审计、Client Agent Session、
17
+ Artifact、审批、上传或业务数据来“修复”此现象。
18
+
19
+ ## 重启后 Session 消失或 head 不连续
20
+
21
+ 检查 `agent_sessions.head_sequence` 与同 Session 的最大 Event sequence。若不一致,停止该 Session
22
+ 写入并保留数据库快照;不要手工补 Event、改 sequence 或更新 Migration 历史。确认应用连接的是
23
+ 同一 PostgreSQL 实例,并检查事务失败日志。
24
+
25
+ ## Checkpoint 或 Fork 返回冲突
26
+
27
+ 刷新 Session 详情,使用最新 `headSequence` 重新发起。Checkpoint 必须锚定当前 head,Fork 必须
28
+ 引用该父 Session 已提交的 Checkpoint。冲突是 CAS 保护,不应通过覆盖 head 绕过。
29
+
30
+ ## Replay 看起来没有重新执行 Tool
31
+
32
+ 这是预期行为。replay 固定为 `recorded-only`。确需重做写 Tool 时必须走显式再执行入口,重新取得
33
+ 当前授权、必要审批、幂等键与 command receipt;不得把 replay/fork 改成隐式副作用执行。
34
+
35
+ 若 replay 统一返回 503 或日志出现读取 `segment.session`,检查路由是否仍把 replay segment 当成
36
+ 内嵌 Session。正确实现按 `segment.sessionId` 读取真实 Session 投影后返回;不存在或越权仍使用
37
+ 稳定不可访问响应,不能伪造快照。
38
+
39
+ ## 普通 Agent 权限可以写入长期 Session
40
+
41
+ 识别信号是同一请求只具备业务 Operation 的执行权,却能通过 `/agent/runs` 的 `sessionId` 追加
42
+ Turn。绑定长期 Session 是额外治理写入,必须在 Run 启动时重新检查 `system.agent-session`
43
+ Feature、License 和 `system.agent-session.manage`。不要把普通 Agent 执行权复用为 Session 写权;
44
+ 未传 `sessionId` 的 Run 才保持原行为。
45
+
46
+ ## 切换案件后列表仍出现旧 Session
47
+
48
+ 详情返回 404、但列表仍暴露旧 Session ID、状态或血缘,说明列表只按 Actor 过滤。列表和详情必须
49
+ 共同使用 Actor + 当前 Scope digest;不要依赖前端缓存过滤,也不要把 Session ID 当成无敏感性。
50
+
51
+ ## 已撤权或删除的数据仍出现在检索中
52
+
53
+ 先查 `agent_source_invalidation_deliveries` 对应 Search/Embedding Delivery 的 status、attempt count、
54
+ Lease 和 error code,再确认目标 Adapter 与 Worker 已装配。不要仅清浏览器缓存。修复目标后让原
55
+ Delivery 重试,不能新建无因果关系的“补偿删除”掩盖原队列。
56
+
57
+ 无论索引是否收敛,业务读取都应由权威对象 Guard 立即拒绝。若仍能读取,按授权绕过事故处理,
58
+ 优先检查对象授权 Port、source version/sequence 和 authorization generation,而不是先修 UI。
59
+
60
+ ## 删除一个 Memory 后同源投影全部消失
61
+
62
+ 检查删除路径是否错误发布 `source-deleted`。单个 Memory 删除只是 projection 自身删除,不得触发
63
+ 同源 Context、Memory、Search 或 Embedding 清除;`source-deleted` 只能由权威来源生命周期发布。
64
+ 若已经误发,先保留 Outbox 与审计证据,停止消费者,再按权威来源当前状态重建受影响投影。
65
+
66
+ ## 不同模块的同名来源互相失效
67
+
68
+ 信号包括相同 kind/ID 的不同模块发生唯一键冲突,或其中一个删除后另一个也被标记失效。检查
69
+ Context/Memory source、Outbox 唯一键、stale 判定和匹配是否都保留 moduleKey,并确认 0059 已
70
+ 应用。空、未知或未注册 Module Key 必须 fail closed,不能猜测归属。
71
+
72
+ ## Run 启动冲突后 Turn 永久开放
73
+
74
+ 若时间线只有 `turn.started` 而没有 `run.linked` 或 Turn 终态,检查两步 CAS 冲突是否被吞掉。正确
75
+ 路径应重读同一幂等坐标并重试补链;Run 启动失败则关闭开放 Step/Turn,补偿失败必须连同原错误
76
+ 上抛。不要手工修改 head sequence 或补写无因果 Event。
77
+
78
+ ## Context 来源显示 invalid 或 attempt 没有 Context Version
79
+
80
+ `invalid` 表示来源已撤权、删除、归档、过期、被取代或当前授权不可用。不要把它改回 valid;应从
81
+ 权威来源重新构建新的 Context Version。若 attempt 完全没有版本,检查生产 Composition Root、
82
+ `AGENT_CONTEXT_HOST_URL`、内部 Token、ContextVersion 路由和 Provider/模型循环 Adapter。每次
83
+ attempt 必须先 prepare 来源,在 DLP/Provider governance 后、Provider 调用前 commit 最终消息与
84
+ 请求 digest;该写入失败必须阻止 attempt,不能事后补记录冒充实际输入。若所有 Context/Memory
85
+ 读取都稳定 503,通常是来源定义已存在但权威 Adapter 未装配;未支持来源应继续 fail closed,
86
+ 而不是绕过 Guard。
87
+
88
+ ## 有表无 Memory
89
+
90
+ 识别信号是 `agent_memory_projections` 已存在 active 行,或五类表结构已创建,但新的长期 Session
91
+ attempt 仍只包含当前 user prompt/`turn.started`,没有带来源的 Session Summary、历史结果或可用
92
+ Memory。先检查生产 Composition Root 是否同时实例化五类 Memory Projector append 入口与
93
+ Retriever,再核对终态 Run、Session 摘要、用户确认和模块核验路径是否实际调用 append。Retriever
94
+ 必须在每次 attempt 重新执行 Actor、Scope、Feature、License、TTL、复核状态和逐来源对象授权;
95
+ 缺少 module-authoritative Adapter 的业务 Memory 应稳定拒绝,不能为了让表中数据“可见”而绕过。
96
+ 业务模块入口应来自 `ModuleRequestContext.sessionMemory`,而不是直接拿 Repository;若 SSE 客户端
97
+ 断开后缺最终结果,检查下一次 prepare 是否对未关闭 `run.linked` 执行终态复核与幂等补投。
98
+
99
+ ## Turn 已关闭但结果 Memory 或 Receipt 缺失
100
+
101
+ 这是终态崩溃窗信号。先核对 `agent_session_run_projection_receipts`、对应 `run.linked`、Remote terminal
102
+ sequence 和两个确定性 Memory ID。正确顺序是幂等投影、写 Receipt、再关闭 Turn;Reconciler 必须
103
+ 扫描 closed-but-unprojected 并补齐,不能因已见 `turn.completed` 就跳过。结果 digest 或 sequence
104
+ 冲突时保留证据并 fail closed,禁止手工伪造 Receipt。单项 Memory 是用户可删除投影,Receipt 不应
105
+ 将其复活。
106
+
107
+ ## Case Memory 混入其它案件
108
+
109
+ 检查业务 Operation 是否显式提供当前 `caseId`,以及 Retriever 是否仍把
110
+ `derived_from_session_id` 当案件坐标。Session 血缘只表示派生来源,不能证明当前案件或跨案授权。
111
+ 缺少明确案件坐标时 Case Memory Candidate 与 Verified Fact Reference 必须 fail closed;即使有
112
+ `caseId`,仍要由所属模块的权威对象 Adapter 复核,不能批量混合其它案件候选。
113
+
114
+ 再核对 Run binding、`turn.started.currentCaseId`、`agent_context_versions.current_case_id` 与
115
+ `agent_memory_projections.current_case_id`。四处必须是同一规范化值;相同幂等键若出现不同值应直接
116
+ 冲突。历史恢复 SQL 只能匹配相同坐标;无案件坐标不能读取案件版本。V1 没有跨案 grant,不得以
117
+ Session ID、前端选择或模块自报参数代替。
118
+
119
+ ## Working Context 长期不失效
120
+
121
+ 识别信号是 Working Context 没有 `expires_at`、超过 24 小时仍 active,或过期后 Context/Search/
122
+ Embedding 仍可命中。所有自动 Working Context 必须具有 Run/Turn 生命周期和最长 24 小时 TTL;
123
+ 检查过期 Scheduler、条件更新和 `source-expired` 五路 Delivery。不要延长 TTL 来掩盖 Worker 未装配,
124
+ 也不要把完整用户文本或 assistant 输出永久晋升为 Session Summary。
125
+
126
+ 若投影已过期但消费它的 Context 或派生 Memory 仍 active,检查 Context/Memory source 表是否同时
127
+ 保存该 Memory 的直接 `memoryId` 坐标与底层来源链。只保存底层业务来源会使 TTL 事件无法命中直接
128
+ 消费者。Memory-to-Memory 来源允许递归复核,但环、超过 32 层或累计坐标超限必须拒绝。
129
+
130
+ ## Oxfmt 报告找不到 node 或 bun
131
+
132
+ 不要重复执行同一失败命令。该工作区的 `node_modules/.bin/oxfmt` 使用 `#!/usr/bin/env node`,而非交互
133
+ Session 的 PATH 可能没有 Node/Bun。先用 `command -v` 定位运行时;Bun 位于默认用户目录时,可执行
134
+ `~/.bun/bin/bun node_modules/oxfmt/bin/oxfmt --write <files>`。运行时路径不存在则停止,
135
+ 记录未格式化文件并交给具备仓库运行时的集中验证,不要安装另一套依赖或反复触发同一错误。
136
+
137
+ ## 业务来源状态变化但没有失效 Outbox
138
+
139
+ 检查业务模块是否通过 Host 绑定的 `ModuleRequestContext.sourceInvalidation` 在来源事务中发布,并确认
140
+ 权威 Adapter 已注册。调用方若能自报 Module Key、Actor 或 Scope,说明绕过了 Producer seam;应
141
+ 立即停止该入口。deleted、expired、superseded 与 authorization-revoked 都必须有领域事件坐标和
142
+ 稳定幂等 ID,缺少 Producer 或事务 append 时 fail closed,不能事后造无因果补偿。
143
+
144
+ ## SSE 读取要求 manage 或终态写入只检查 read
145
+
146
+ 这是读写授权混淆。纯 `/agent/runs/:runId/events` 只需要既有 Run read 权限和持久 binding 读取校验,
147
+ 不应要求 `system.agent-session.manage`。result projection、cancel、attach 以及任何会追加长期 Session
148
+ 事实的路径,必须重新执行 Session Feature、License、manage Guard,并核对客户端 `sessionId` 与
149
+ 持久 Run binding。不要为了修终态旁路而阻断只读 SSE。
150
+
151
+ ## Context 早于 DLP
152
+
153
+ 识别信号包括:治理拒绝后仍有 active Context Version;持久消息含已被 DLP 删除的内容;记录的
154
+ digest 无法从最终 Provider request 复算;或日志显示 Provider 调用早于 Context commit。停止相关
155
+ 长期 Session attempt,保留版本、Provider receipt 和审计证据。正确顺序是 prepare 候选来源,完成
156
+ DLP 与 Provider policy,随后在 Provider 看到输入前 commit 最终消息、来源关系和 request digest;
157
+ commit 失败或治理拒绝都不产生 active 版本。不要修改旧版本 digest 追平请求,应重新创建新 attempt。
158
+
159
+ ## 终态权限旁路
160
+
161
+ 识别信号是用户不能启动绑定 Session 的 Run,却能通过 result、cancel 或 attach 路径追加
162
+ `turn.completed`、`run.cancelled`、Artifact 或其它长期事实;另一信号是请求提供任意 `sessionId`
163
+ 即可写入。每个终态路径都必须重新检查 `system.agent-session` Feature、License 和
164
+ `system.agent-session.manage`,并比较客户端 `sessionId` 与持久 `run.linked` 绑定。两者不一致时
165
+ 拒绝写 Session;未绑定长期 Session 的普通 Run 保持原有终态行为。
166
+
167
+ ## 幂等跨 Session
168
+
169
+ 识别信号是两个 Session/Turn 用相同 Actor、Operation、key 和 input 启动后得到同一 Run ID,或
170
+ 第二个 Session 的 `run.linked` 指向已属于第一个 Session 的 Run。幂等坐标必须包含长期
171
+ Session/Turn(或等价绑定 digest),持久绑定还要保证一 Run 只能属于一个 Session。修复后不得把
172
+ 旧 Run 重新挂到新 Session;保留原绑定,并为新 Session 创建独立 Run 或返回明确绑定冲突。
173
+
174
+ ## Session 归档后派生投影仍保持 active
175
+
176
+ 检查归档 Outbox 的 scope 是否为 `session-derived`。若只发布 `sourceKind=session`,而消费者按业务
177
+ 来源类型匹配,Context/Memory 不会收敛。归档应按 Session ID 失效该 Session 的派生投影;它不是
178
+ 任意业务来源的 `source-deleted`,不能扩散到其它 Session 或权威对象。
179
+
180
+ 若 session-scope 投影已失效,但同一 Session 派生的 user/case Memory 仍 active,说明消费者把
181
+ Memory 使用 scope 当成派生关系。检查每个投影的 `derived_from_session_id` 与
182
+ `derived_through_sequence`,并按前者匹配归档失效;不能只筛 `scope_kind=session`。恢复时从仍有效
183
+ 的权威来源重新投影,不能手工把遗留 user/case 行改成 session scope。
184
+
185
+ 该模式也称为“archive 仅按 scope”:归档消费者错误地按投影使用范围判断派生关系。
186
+
187
+ ## Memory 候选被当成业务事实
188
+
189
+ 立即停止下游使用。Case Memory Candidate 只能是 pending 或 rejected;模型摘要不能自动升级为
190
+ 业务事实。正确做法是由业务模块核验并生成新的 Verified Fact Reference,保留权威 resource、
191
+ version 与 digest,不能原地修改候选类型或跨案合并。
192
+
193
+ ## payload 无法解密
194
+
195
+ 核对部署 Secret、恢复时间点和数据库来源。不得尝试用新 Secret 覆盖旧密文,也不要把明文导出
196
+ 到日志排障。保留样本、digest 与备份,在隔离环境确认是 Secret 漂移、密文损坏还是错误数据库。
@@ -0,0 +1,74 @@
1
+ # Agent Workflow 运维与恢复速查
2
+
3
+ ## Model Pricing readiness
4
+
5
+ Model Node 在任何 Provider 调用前都会核对当前 `modelAttempts`、剩余 Token 与成本预算,并要求服务端冻结的价格目录覆盖实际 deployment/model。运维通过 `WINDY_AGENT_WORKFLOW_MODEL_PRICING_JSON` 提供 `version`、`currency` 与 `prices[]`;当前唯一支持的 `currency` 是精确大写 `USD`,其它币种在 Composition 阶段直接拒绝。每项包含 `deploymentKey`、`model`、`inputMicrosPerMillion`、`outputMicrosPerMillion`。允许用 `model: "*"` 表示该 deployment 的受控默认价格,但更精确的模型项优先。
6
+
7
+ 未配置时 `GET /api/agent/workflows/readiness` 返回 `MODEL_PRICING_UNAVAILABLE`,Model Node 不会调用 Provider。非法 JSON 或非法金额会在 Runtime composition 时 fail fast。价格变更会产生新的 catalog digest 并进入 Node execution evidence;发布前必须按 Provider 或采购合同核实,不能把示例 `0` 当作真实价格。
8
+
9
+ Rubric 与安全评测使用平台固定的受治理 Tool 角色 Key:`agent.workflow.evaluation.rubric` 与 `agent.workflow.evaluation.safety`,不接受评测请求指定 Tool。业务 Module 只需在 Manifest 注册对应 Tool、Schema、Feature、Permission、Audit Action 与真实 Handler;生产 Composition 会从已完成双向契约校验的 `GovernedToolRegistry` definitions 解析并注入,不需要再次修改平台接线。两项 Tool 必须声明审批和幂等;缺少注册、Handler、Schema 或审计事实时不注入角色,评测保持 `unavailable`,平台不提供降级 Handler 或伪造结果。
10
+
11
+ ## Workspace 与委派授权 readiness
12
+
13
+ 子 Agent 的 Workspace 必须由 project-owned Server Composition 通过 `agentWorkflowWorkspacePolicies` 注册权威 Policy。Policy 需要返回自身管理的稳定 `workspaceId`、Scope 关系与 digest;Runtime 提供的 `workspaceGrantId` 只是幂等请求坐标,不能被当作 Workspace 事实。没有注册、Workspace 已撤销或 Scope 子集无法证明时,Subagent Node 在创建 child Session/Run 前 fail closed。
14
+
15
+ 冻结 grant 会进入 child Run authorization snapshot。此后每次 Tool 调用都重新读取 Delegation、Workspace Policy、当前 Actor/Feature/Permission/License、Tool allowlist、Scope proof 与 active Budget reservation;任何撤权或 coordinate 漂移都会被 Tool Host 拒绝,不能只靠创建时 digest 放行。
16
+
17
+ ## 并行与 deadline
18
+
19
+ Scheduler 先用 Run/Node CAS 持久 claim 多个 ready Node,再并发调用 Adapter;只有 Node/Event 收敛写入由本进程 mutation queue 串行化。全局 admission 以最新快照中的 `running + waiting` 对比 `Run.budget.maxParallelism`,跨 worker 仍依靠 Run 行锁与 event sequence CAS 防止超配。批次退出或请求中断后由 Durable Job continuation 用原 Node/command/fence 恢复。
20
+
21
+ Node deadline 始终取 Node 与 Run deadline 的较早值。超时先协调既有外部执行和 usage,再持久化 Node `timed-out`;随后通过取消链终结 sibling、Side Effect 和 Budget reservation,并收敛 Run `timed-out`,不会借用 retry/skip/fallback failure policy。Condition 未选分支不参与 Join;`join:any` 会取消 loser 独占分支的全部活跃后代,并保留 winner/shared 路径。
22
+
23
+ ## 先确认事实
24
+
25
+ 排查顺序固定为 Workflow Run → Node Run → side-effect command → canonical Event → Adapter receipt →
26
+ ArtifactRef。不要从 Web 图、日志文本或子 Agent 最终回答反推业务事实。主站状态与数据库不一致时,
27
+ 以 PostgreSQL 的 version、event sequence、command status 和 receipt 为准。
28
+
29
+ ## 重复故障速查
30
+
31
+ | 现象 | 核对 | 安全处置 |
32
+ | --------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------- |
33
+ | Run 长期 `running` | deadline、cancellation、活跃 Node、head sequence | 只对合法非终态执行 Recovery;不要直接改状态 |
34
+ | Node 重启后重复调用外部系统 | prepared/committed command、idempotency key、Adapter receipt | 先 reconcile 同一 command;禁止创建新 key 盲重试 |
35
+ | condition 后继不明确 | Node result receipt 的 `selectedBranch`、digest、terminal Event | receipt 缺失则 fail closed;不得重新让模型选择 |
36
+ | 子 Agent 权限拒绝 | Release required guards、父级 ceiling、当前 Host、Scope/Workspace | 修复真实授权或发布新 Release;不得从请求中删除 required guards |
37
+ | Budget 显示还有余量但不能继续 | reservation、Provider usage measurement status | unknown 不是零;补真实计量或终止,不手工放宽 |
38
+ | Approval/Job 已完成但 Node 仍等待 | command external receipt、Work Item/Job 当前事实 | 用原 command coordinate reconcile 后原子提交 Node 终态 |
39
+ | Artifact 无法打开 | ArtifactRef source/hash/retention、当前对象授权 | 每次重新授权并签短期 token;不得持久化旧下载 URL |
40
+ | Evaluation unavailable | 两臂 Release、Run、Provider、metrics source、rubric evidence | 保留 unavailable 与 reason;不得创建假 Run 或填零 |
41
+ | Web 图与节点列表不同 | API Run projection、浏览器缓存、Graph adapter | 先刷新 canonical 投影;图坐标不是 Runtime 事实 |
42
+
43
+ ## 取消与恢复
44
+
45
+ 取消先持久化 Run cancellation request,再传播到未终结 Node、子 Agent 和可取消 Adapter。迟到的
46
+ Provider、Tool 或 Job 响应只能用于协调既有 command,不能把已取消 Run 改成完成。不能取消的
47
+ 外部副作用保留 receipt 和审计,由领域补偿流程处理;Workflow Runtime 不伪造回滚。
48
+
49
+ Recovery 必须在一个受控入口执行:读取最新 Run/Node/version/sequence,重新取得当前 Actor、
50
+ Feature、Permission、License、Scope 与对象授权,核对冻结 policy digest,串行化预留父级剩余
51
+ Budget,然后协调 side-effect command。授权收窄、Release 漂移、unknown usage、receipt 冲突或
52
+ 非法状态转换都应终止恢复并记录安全错误码。
53
+
54
+ ## Fresh deploy 与保留
55
+
56
+ 本次基线只支持清空旧开发 Docker 容器及数据卷后的空数据库首次部署。按 migration 顺序执行到
57
+ 0061;0061 只有 DDL,不包含旧 Agent 会话、聊天、logs 的清理、搬迁或兼容 DML。部署后检查所有
58
+ Run 下游外键不是 cascade。生产留存或删除必须另行形成受治理策略,不能直接删除 Run 抹掉历史。
59
+
60
+ ## 真实验收清单
61
+
62
+ - 空 PostgreSQL 顺序执行到 0061,并验证重复执行的 migration tracker 语义;
63
+ - 在进程退出故障点分别覆盖外部副作用提交前、提交后 receipt 前、Node 终态前和后继提交前;
64
+ - 覆盖并发 Recovery/CAS、取消与迟到响应、deadline、retry/backoff/skip/fail-run;
65
+ - 覆盖真实并发 branch、全局 `maxParallelism`、Condition 非参与分支和嵌套 `join:any` loser 取消;
66
+ - 覆盖父级剩余 Budget 并发预留、unknown token/cost fail closed、子 Agent 授权收窄;
67
+ - 用真实 Workspace Registry 验证 child Session/Run 与每次 Tool 调用撤权后的 fail-closed;
68
+ - 覆盖 Approval Work Item、Durable Job、write Tool 和 Subagent 四类 command reconciliation;
69
+ - 使用真实 Provider 和相同冻结坐标执行单/多 Agent 双臂评测,保存每 arm 原始可复核 evidence;
70
+ - 验证 Artifact 每次打开重新授权,过期 token 不进入 Event、receipt 或业务表;
71
+ - 验证主站只读图、语义节点列表和对象授权,且没有在线编辑入口。
72
+
73
+ 普通代码静态检查、单元测试、build 或空数据库 fixture 都不能替代上述真实环境证据。正式合并候选
74
+ 运行 `bun run test:merge`,只有冻结发布候选才运行 `bun run release:verify`。
@@ -176,7 +176,7 @@ resource fork 或 Finder metadata。路径组件以 `._` 开头时直接拒绝
176
176
  ## 构建与旧项目升级
177
177
 
178
178
  `packages/delivery`、本说明和 `delivery:remote` 脚本自 `create-windy@0.6.7` 起进入受管
179
- Starter;当前公开版为 `0.6.9`,最低支持基线 `0.6.6` 可通过连续 recipe 事务升级,现有
179
+ Starter;当前 registry 公开版为 `0.6.12`,最低支持基线 `0.6.6` 可通过连续 recipe 事务升级,现有
180
180
  project-owned 发布脚本不会被覆盖。正式构建先准备一个完整 release 目录,其中
181
181
  `images.tar` 必须是 OCI image layout(含 `oci-layout`、`index.json` 和
182
182
  `blobs/sha256/*`),再运行:
@@ -0,0 +1,82 @@
1
+ # Agent 生产 Store、不可变 Release 与评估追踪
2
+
3
+ ## 目标与边界
4
+
5
+ Agent Runtime 的 PostgreSQL Store 是多副本生产默认实现。它只保存 Run
6
+ 执行事实、加密后的调用/事件/结果、Release 快照和评估结果,不保存业务会话、消息、
7
+ 标题、案件范围或归档策略。业务事实仍由业务模块持久化。
8
+
9
+ SQLite Store 只用于单副本本地开发和确定性验证;未配置
10
+ `AGENT_DATABASE_URL` 且配置了 `AGENT_RUN_STORE_PATH` 时才启用。生产部署不得用
11
+ 共享文件系统模拟多副本 SQLite。
12
+
13
+ ## 状态与反馈闭环
14
+
15
+ 同一个 `Idempotency-Key` 只能对应同一请求指纹。Run 的 canonical event 使用
16
+ `run_id + sequence` 唯一键,读取接口按 cursor 重放;终态后追加、完成和取消都是
17
+ 幂等操作。事件或输出超过上限时,Store 写入唯一的 `run.failed`,避免运行态无限
18
+ 增长。
19
+
20
+ 每个工作副本领取 30 秒租约,并每 10 秒续租。租约丢失会中止当前执行,保留加密
21
+ 调用快照供其他副本接管;恢复轮询使用行锁和 `skip locked` 防止重复领取。终态数据
22
+ 按 TTL 清理,运行中数据不会被 TTL 清理。
23
+
24
+ ## 不可变 Release 与回滚
25
+
26
+ 每次 Run 固定以下坐标:
27
+
28
+ - Operation 与模块版本;
29
+ - Workflow、Prompt 和模型 Route 版本;
30
+ - Tool/输出 Schema 摘要;
31
+ - Manifest 摘要。
32
+
33
+ 这些坐标生成稳定的 `releaseId`。同一 `releaseId` 只能对应同一快照,冲突时
34
+ fail closed,不能原地修改。业务模块通过
35
+ `ModuleAiOperationHandlerRegistration.release` 显式声明 Workflow、Prompt 和
36
+ Route 版本;未声明时使用模块版本。
37
+
38
+ 回滚不是修改历史 Release,而是重新部署此前的模块/注册版本。旧 Release 仍保留,
39
+ 新 Run 会固定到回滚后的旧坐标,历史 Run、评估和审计关联不会被改写。
40
+
41
+ ## 评估、用量、Attempt、审计和 Trace
42
+
43
+ `POST /api/agent/evaluations` 仅接受内部 Token,可按 Release、评估集 Key 和评估集
44
+ 版本幂等记录指标;同一坐标提交不同结果会拒绝。`usage.reported` 作为加密 canonical
45
+ event 保存。Provider attempt 审计以 `runId + attempt` 唯一保存,并可通过 Run 关联
46
+ Release、usage 和平台 Audit。
47
+
48
+ 平台将请求关联值哈希为 128 位 Trace ID。Agent Runtime 用它建立 OTel 父 Trace,
49
+ Span 只包含 Run ID、Operation Key、Release ID 和终态,不写 Prompt、业务输入、
50
+ 模型输出、Tool 参数、Actor 或 Secret。配置
51
+ `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` 后启用 OTLP/HTTP 导出,认证头由
52
+ `OTEL_EXPORTER_OTLP_HEADERS` 注入。
53
+
54
+ ## 运维配置
55
+
56
+ 生产 Agent profile 必须配置:
57
+
58
+ ```dotenv
59
+ AGENT_DATABASE_URL=postgresql://...
60
+ AGENT_RUN_ENCRYPTION_SECRET=至少32字节随机值
61
+ AGENT_SERVER_INTERNAL_TOKEN=随机内部令牌
62
+ ```
63
+
64
+ 可选配置:
65
+
66
+ ```dotenv
67
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://collector.example/v1/traces
68
+ OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer%20...
69
+ ```
70
+
71
+ 加密密钥缺失或不足 32 字节时 Runtime 拒绝启动。数据库迁移必须先于 Agent Server
72
+ 启动。Provider attempt 的独立审计 Store 仍按
73
+ `AI_PROVIDER_AUDIT_RETENTION_DAYS` 执行留存;不可把它与业务日志混用。
74
+
75
+ ## 故障与恢复
76
+
77
+ - PostgreSQL 不可用:启动 fail closed;运行中的副本停止续租,不继续产生副作用。
78
+ - 副本退出:租约过期后由其他副本恢复加密调用,不创建新 Run。
79
+ - OTLP 不可用:BatchSpanProcessor 按 OTel 导出策略处理,不向业务响应暴露 Collector
80
+ 细节;Run Store 与平台 Audit 仍是业务审计事实。
81
+ - Release 快照冲突、评估结果漂移或幂等键漂移:稳定拒绝,要求修正发布输入。
82
+ - 超过容量、事件数或输出大小:写入或返回有界失败,不允许无界降级。
@@ -0,0 +1,52 @@
1
+ # Agent Run 安全恢复
2
+
3
+ ## 目标
4
+
5
+ 业务应用可以在刷新、断网或页面重开后,使用 Operation Key、Run ID 和最后消费的
6
+ 事件游标继续读取同一个 Agent Run。恢复不会新建 Run,也不会让浏览器持有内部
7
+ Execution Grant。
8
+
9
+ ## 所有权边界
10
+
11
+ - 业务层持久化会话、消息、Run ID 与最后确认的事件游标。
12
+ - 平台层持久化 Run 与 Actor、Operation、授权范围及不可变 Release 的绑定。
13
+ - Agent Runtime 持久化执行事实、事件、结果和工具调用事实。
14
+ - 浏览器只持有业务标识,不读取或保存平台内部 Token。
15
+
16
+ 平台数据库不可用时只启用进程内绑定仓储,供本地开发使用;生产环境必须配置
17
+ PostgreSQL,才能在服务重启和多副本切换后安全恢复。
18
+
19
+ ## 恢复协议
20
+
21
+ 客户端调用 `attach(operation, runId, { cursor, signal })`,也可使用语义相同的
22
+ `resume`。平台先验证游标,再返回当前状态、事件入口和可选终态事件。事件流从
23
+ 游标之后继续,客户端按 sequence 去重。
24
+
25
+ 每次 attach、events、result 与 cancel 都重新检查:
26
+
27
+ 1. 当前 Actor 与 Run 绑定的 Actor 完全一致;
28
+ 2. Operation 与创建 Run 时一致,且当前 Release 仍可用;
29
+ 3. 当前 Feature、Permission 与 License 仍允许访问;
30
+ 4. 当前数据范围快照与创建 Run 时一致;
31
+ 5. 绑定未超过保留期。
32
+
33
+ 未知 Run、Actor 不匹配、Operation 不匹配、范围变化、权限收回和绑定过期统一
34
+ 返回 `404 RUN_CONFLICT`,避免通过错误差异探测 Run 是否存在。
35
+
36
+ ## Tool Host 与重启
37
+
38
+ 平台使用内部密钥为 Actor、Operation 和幂等键派生确定性 Execution Grant,
39
+ 数据库只保存 Token Hash。Agent Runtime 可在平台重启后继续使用原 Grant;
40
+ Tool Host 通过 Hash 找回绑定,并再次解析当前 Actor 与所有 Guard。
41
+
42
+ 绑定保存创建时的最小授权快照和 Release ID。若 Operation、Tool Schema、网络
43
+ 策略或 Release 已变化,旧 Run 的新工具调用会 fail closed。Tool handler 仍以
44
+ `toolCallId` 作为业务写入幂等键,因此恢复不会扩大重复写入窗口。
45
+
46
+ ## 保留与运维
47
+
48
+ 绑定默认保留七天,过期记录在签发新 Run 时清理。该表不保存 Prompt、输入、
49
+ 输出、业务消息或 Artifact 内容,不扩大业务数据留存范围。
50
+
51
+ `AGENT_SERVER_INTERNAL_TOKEN` 同时是平台与 Agent Runtime 的内部认证根密钥,
52
+ 必须至少 32 字节,只能通过服务端环境变量注入,禁止下发到 Web。
@@ -81,9 +81,10 @@ opaque handle。报表与列表读取写入关键审计 `agent.runtime.report.re
81
81
  读取当前范围内的模型组合。详情中每个 Attempt 同时保留 `sequence`、`deploymentKey`、
82
82
  `requestedModel` 与可为空的 `reportedModel`,不会把实际回报伪装成请求值。
83
83
 
84
- ADK Web 的 canonical bridge 仍以专用调试服务身份调用平台,但报表归属使用
85
- `toModuleActor(context.actor)` 后的真实数据用户,使开发调试用量进入正确的业务范围,
86
- 而不是泄露或冒充普通登录会话。
84
+ 主站 Runtime Report 与业务会话投影始终使用当前登录身份。Server 以
85
+ `toModuleActor(context.actor)` 形成受限模块 Actor,并按当前范围过滤 Run;不存在专用
86
+ 调试服务身份或第二种 Token。这样开发调试用量进入正确业务范围,同时不会泄露内部 Actor
87
+ ID 或冒充其它登录会话。
87
88
 
88
89
  ## Agent Server 内部接口与指标
89
90