create-windy 0.6.12 → 0.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/dist/cli.js +785 -291
  2. package/package.json +1 -1
  3. package/template/.agents/skills/windy-business-module/SKILL.md +148 -70
  4. package/template/.windy-template.json +3 -3
  5. package/template/AGENTS.md +3 -6
  6. package/template/apps/agent-server/Dockerfile +2 -3
  7. package/template/apps/agent-server/README.md +38 -54
  8. package/template/apps/agent-server/pyproject.toml +0 -1
  9. package/template/apps/agent-server/src/southwind_agent_server/app.py +4 -2
  10. package/template/apps/agent-server/src/southwind_agent_server/attempt_context.py +191 -0
  11. package/template/apps/agent-server/src/southwind_agent_server/attempt_context_projection.py +203 -0
  12. package/template/apps/agent-server/src/southwind_agent_server/client_completion_contracts.py +61 -0
  13. package/template/apps/agent-server/src/southwind_agent_server/client_completion_governance.py +82 -0
  14. package/template/apps/agent-server/src/southwind_agent_server/client_completion_routes.py +121 -0
  15. package/template/apps/agent-server/src/southwind_agent_server/client_completion_runtime.py +158 -0
  16. package/template/apps/agent-server/src/southwind_agent_server/context_message_digest.py +24 -0
  17. package/template/apps/agent-server/src/southwind_agent_server/context_version_contracts.py +71 -0
  18. package/template/apps/agent-server/src/southwind_agent_server/context_version_port.py +307 -0
  19. package/template/apps/agent-server/src/southwind_agent_server/contracts.py +39 -0
  20. package/template/apps/agent-server/src/southwind_agent_server/deterministic.py +2 -0
  21. package/template/apps/agent-server/src/southwind_agent_server/engine.py +9 -1
  22. package/template/apps/agent-server/src/southwind_agent_server/engine_identity.py +2 -0
  23. package/template/apps/agent-server/src/southwind_agent_server/fingerprint.py +15 -0
  24. package/template/apps/agent-server/src/southwind_agent_server/health_routes.py +37 -3
  25. package/template/apps/agent-server/src/southwind_agent_server/openai_engine.py +46 -26
  26. package/template/apps/agent-server/src/southwind_agent_server/openai_engine_validation.py +32 -0
  27. package/template/apps/agent-server/src/southwind_agent_server/openai_provider.py +7 -0
  28. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_insert.py +5 -2
  29. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_queries.py +1 -0
  30. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_store.py +6 -1
  31. package/template/apps/agent-server/src/southwind_agent_server/postgres_store.py +3 -2
  32. package/template/apps/agent-server/src/southwind_agent_server/postgres_store_backend.py +1 -0
  33. package/template/apps/agent-server/src/southwind_agent_server/provider_governance.py +21 -0
  34. package/template/apps/agent-server/src/southwind_agent_server/report_lifecycle.py +2 -1
  35. package/template/apps/agent-server/src/southwind_agent_server/report_presenter.py +1 -0
  36. package/template/apps/agent-server/src/southwind_agent_server/report_routes.py +7 -1
  37. package/template/apps/agent-server/src/southwind_agent_server/report_store.py +10 -56
  38. package/template/apps/agent-server/src/southwind_agent_server/report_store_protocol.py +75 -0
  39. package/template/apps/agent-server/src/southwind_agent_server/report_types.py +9 -2
  40. package/template/apps/agent-server/src/southwind_agent_server/runtime_budget.py +74 -0
  41. package/template/apps/agent-server/src/southwind_agent_server/runtime_factory.py +11 -3
  42. package/template/apps/agent-server/src/southwind_agent_server/service.py +41 -65
  43. package/template/apps/agent-server/src/southwind_agent_server/service_control.py +64 -0
  44. package/template/apps/agent-server/src/southwind_agent_server/service_execution.py +3 -0
  45. package/template/apps/agent-server/src/southwind_agent_server/sqlite_errors.py +2 -0
  46. package/template/apps/agent-server/src/southwind_agent_server/sqlite_schema.py +9 -1
  47. package/template/apps/agent-server/src/southwind_agent_server/sqlite_store.py +6 -5
  48. package/template/apps/agent-server/src/southwind_agent_server/store.py +2 -0
  49. package/template/apps/agent-server/src/southwind_agent_server/trajectory.py +137 -0
  50. package/template/apps/agent-server/src/southwind_agent_server/unavailable_engine.py +58 -0
  51. package/template/apps/agent-server/tests/test_api.py +30 -11
  52. package/template/apps/agent-server/tests/test_client_completion.py +230 -0
  53. package/template/apps/agent-server/tests/test_provider_attempt_reporting.py +12 -24
  54. package/template/apps/agent-server/tests/test_report_resilience.py +2 -0
  55. package/template/apps/agent-server/tests/test_report_routes.py +58 -1
  56. package/template/apps/agent-server/tests/test_report_summary_parity.py +1 -0
  57. package/template/apps/agent-server/tests/test_run_capacity.py +2 -0
  58. package/template/apps/agent-server/tests/test_runtime_factory_readiness.py +18 -3
  59. package/template/apps/agent-server/tests/test_trajectory.py +91 -0
  60. package/template/apps/agent-server/uv.lock +0 -259
  61. package/template/apps/server/Dockerfile +9 -4
  62. package/template/apps/server/src/agent/actor-projection-audit.ts +6 -0
  63. package/template/apps/server/src/agent/agent-run-delegation-policy.ts +115 -0
  64. package/template/apps/server/src/agent/agent-session-bootstrap.ts +23 -0
  65. package/template/apps/server/src/agent/{debug-session-facade-provider-failure.test.ts → agent-session-facade-provider-failure.test.ts} +24 -33
  66. package/template/apps/server/src/agent/{debug-session-facade.test.ts → agent-session-facade.test.ts} +34 -45
  67. package/template/apps/server/src/agent/{debug-session-facade.ts → agent-session-facade.ts} +50 -57
  68. package/template/apps/server/src/agent/{debug-session-id.test.ts → agent-session-id.test.ts} +5 -5
  69. package/template/apps/server/src/agent/{debug-session-id.ts → agent-session-id.ts} +7 -7
  70. package/template/apps/server/src/agent/{debug-session-provider-reader.ts → agent-session-provider-reader.ts} +18 -15
  71. package/template/apps/server/src/agent/{debug-session-routes.test.ts → agent-session-routes.test.ts} +16 -16
  72. package/template/apps/server/src/agent/{debug-session-routes.ts → agent-session-routes.ts} +12 -12
  73. package/template/apps/server/src/agent/{debug-session-validation.ts → agent-session-validation.ts} +13 -11
  74. package/template/apps/server/src/agent/client-session/attempt-authority.test.ts +162 -0
  75. package/template/apps/server/src/agent/client-session/attempt-authority.ts +191 -0
  76. package/template/apps/server/src/agent/client-session/authorization.ts +47 -0
  77. package/template/apps/server/src/agent/client-session/bootstrap.ts +112 -0
  78. package/template/apps/server/src/agent/client-session/capabilities.ts +19 -0
  79. package/template/apps/server/src/agent/client-session/completion.ts +350 -0
  80. package/template/apps/server/src/agent/client-session/contracts.ts +159 -0
  81. package/template/apps/server/src/agent/client-session/creation.ts +103 -0
  82. package/template/apps/server/src/agent/client-session/digest.ts +49 -0
  83. package/template/apps/server/src/agent/client-session/drizzle-records.ts +150 -0
  84. package/template/apps/server/src/agent/client-session/drizzle-repository.integration.test.ts +197 -0
  85. package/template/apps/server/src/agent/client-session/drizzle-repository.ts +236 -0
  86. package/template/apps/server/src/agent/client-session/errors.ts +28 -0
  87. package/template/apps/server/src/agent/client-session/finalization.ts +99 -0
  88. package/template/apps/server/src/agent/client-session/fixtures/page-agent-1.12.2-request.json +52 -0
  89. package/template/apps/server/src/agent/client-session/host-auth.test.ts +144 -0
  90. package/template/apps/server/src/agent/client-session/host-auth.ts +122 -0
  91. package/template/apps/server/src/agent/client-session/host-revocation-composition.test.ts +77 -0
  92. package/template/apps/server/src/agent/client-session/host-revocation-composition.ts +28 -0
  93. package/template/apps/server/src/agent/client-session/launch-authority.contract.test.ts +21 -0
  94. package/template/apps/server/src/agent/client-session/manifest-admission.ts +251 -0
  95. package/template/apps/server/src/agent/client-session/openai-stream.ts +123 -0
  96. package/template/apps/server/src/agent/client-session/presentation.ts +46 -0
  97. package/template/apps/server/src/agent/client-session/remote-provider.test.ts +144 -0
  98. package/template/apps/server/src/agent/client-session/remote-provider.ts +216 -0
  99. package/template/apps/server/src/agent/client-session/repository.ts +225 -0
  100. package/template/apps/server/src/agent/client-session/request.test.ts +69 -0
  101. package/template/apps/server/src/agent/client-session/request.ts +289 -0
  102. package/template/apps/server/src/agent/client-session/revocation.ts +23 -0
  103. package/template/apps/server/src/agent/client-session/routes.ts +315 -0
  104. package/template/apps/server/src/agent/client-session/runtime-audit.ts +42 -0
  105. package/template/apps/server/src/agent/client-session/service.test-support.ts +248 -0
  106. package/template/apps/server/src/agent/client-session/service.test.ts +268 -0
  107. package/template/apps/server/src/agent/client-session/service.ts +316 -0
  108. package/template/apps/server/src/agent/client-session/terminal-digest.test.ts +23 -0
  109. package/template/apps/server/src/agent/client-workflow-artifact/active-blob-references.ts +8 -0
  110. package/template/apps/server/src/agent/client-workflow-artifact/artifact-builder.ts +60 -0
  111. package/template/apps/server/src/agent/client-workflow-artifact/authority-current.ts +59 -0
  112. package/template/apps/server/src/agent/client-workflow-artifact/binding-registry.test.ts +189 -0
  113. package/template/apps/server/src/agent/client-workflow-artifact/binding-registry.ts +153 -0
  114. package/template/apps/server/src/agent/client-workflow-artifact/bootstrap.ts +77 -0
  115. package/template/apps/server/src/agent/client-workflow-artifact/cancellation.ts +47 -0
  116. package/template/apps/server/src/agent/client-workflow-artifact/completed-recovery.ts +31 -0
  117. package/template/apps/server/src/agent/client-workflow-artifact/contracts.ts +104 -0
  118. package/template/apps/server/src/agent/client-workflow-artifact/drizzle-locks.ts +30 -0
  119. package/template/apps/server/src/agent/client-workflow-artifact/drizzle-mapper.ts +138 -0
  120. package/template/apps/server/src/agent/client-workflow-artifact/drizzle-repository.ts +346 -0
  121. package/template/apps/server/src/agent/client-workflow-artifact/error.ts +21 -0
  122. package/template/apps/server/src/agent/client-workflow-artifact/handler.ts +167 -0
  123. package/template/apps/server/src/agent/client-workflow-artifact/host-revocation.ts +29 -0
  124. package/template/apps/server/src/agent/client-workflow-artifact/in-memory-repository.ts +232 -0
  125. package/template/apps/server/src/agent/client-workflow-artifact/job-port.ts +101 -0
  126. package/template/apps/server/src/agent/client-workflow-artifact/presentation.ts +41 -0
  127. package/template/apps/server/src/agent/client-workflow-artifact/recovery.contract.test.ts +253 -0
  128. package/template/apps/server/src/agent/client-workflow-artifact/release-binding.ts +85 -0
  129. package/template/apps/server/src/agent/client-workflow-artifact/repository.test.ts +204 -0
  130. package/template/apps/server/src/agent/client-workflow-artifact/repository.ts +97 -0
  131. package/template/apps/server/src/agent/client-workflow-artifact/routes-handler.contract.test.ts +201 -0
  132. package/template/apps/server/src/agent/client-workflow-artifact/routes.ts +161 -0
  133. package/template/apps/server/src/agent/client-workflow-artifact/runtime-composition.ts +101 -0
  134. package/template/apps/server/src/agent/client-workflow-artifact/scope-authority.ts +39 -0
  135. package/template/apps/server/src/agent/client-workflow-artifact/service-authorization.ts +117 -0
  136. package/template/apps/server/src/agent/client-workflow-artifact/service-support.ts +28 -0
  137. package/template/apps/server/src/agent/client-workflow-artifact/service.contract.test.ts +345 -0
  138. package/template/apps/server/src/agent/client-workflow-artifact/service.ts +350 -0
  139. package/template/apps/server/src/agent/client-workflow-artifact/session-boundary.ts +39 -0
  140. package/template/apps/server/src/agent/client-workflow-artifact/source-access.contract.test.ts +98 -0
  141. package/template/apps/server/src/agent/client-workflow-artifact/source-access.ts +80 -0
  142. package/template/apps/server/src/agent/client-workflow-artifact/takeover.ts +122 -0
  143. package/template/apps/server/src/agent/client-workflow-artifact/task-authority.contract.test.ts +97 -0
  144. package/template/apps/server/src/agent/client-workflow-artifact/task-authority.ts +147 -0
  145. package/template/apps/server/src/agent/client-workflow-artifact/terminal-authority.contract.test.ts +100 -0
  146. package/template/apps/server/src/agent/client-workflow-artifact/terminal-replay.ts +31 -0
  147. package/template/apps/server/src/agent/client-workflow-artifact/terminal-seal.ts +211 -0
  148. package/template/apps/server/src/agent/client-workflow-artifact/workflow-artifact.test-support.ts +173 -0
  149. package/template/apps/server/src/agent/client-workflow-artifact/workflow-loader.contract.test.ts +254 -0
  150. package/template/apps/server/src/agent/client-workflow-artifact/workflow-loader.ts +285 -0
  151. package/template/apps/server/src/agent/context-memory/attempt-context-contracts.ts +60 -0
  152. package/template/apps/server/src/agent/context-memory/authoritative-source-registry.ts +127 -0
  153. package/template/apps/server/src/agent/context-memory/context-builder.test.ts +160 -0
  154. package/template/apps/server/src/agent/context-memory/context-builder.ts +184 -0
  155. package/template/apps/server/src/agent/context-memory/contracts.ts +284 -0
  156. package/template/apps/server/src/agent/context-memory/digest.ts +22 -0
  157. package/template/apps/server/src/agent/context-memory/memory-authorization.ts +82 -0
  158. package/template/apps/server/src/agent/context-memory/memory-content.ts +69 -0
  159. package/template/apps/server/src/agent/context-memory/memory-object-registry.ts +87 -0
  160. package/template/apps/server/src/agent/context-memory/memory-projector-contracts.ts +121 -0
  161. package/template/apps/server/src/agent/context-memory/memory-projector-validation.ts +155 -0
  162. package/template/apps/server/src/agent/context-memory/memory-projector.test.ts +19 -0
  163. package/template/apps/server/src/agent/context-memory/memory-projector.ts +259 -0
  164. package/template/apps/server/src/agent/context-memory/memory-retrieval-policy.ts +195 -0
  165. package/template/apps/server/src/agent/context-memory/memory-retriever.test.ts +339 -0
  166. package/template/apps/server/src/agent/context-memory/memory-retriever.ts +184 -0
  167. package/template/apps/server/src/agent/context-memory/search-provider-port.test.ts +62 -0
  168. package/template/apps/server/src/agent/context-memory/search-provider-port.ts +75 -0
  169. package/template/apps/server/src/agent/context-memory/working-context-expiry.ts +95 -0
  170. package/template/apps/server/src/agent/context-message-recovery.ts +23 -0
  171. package/template/apps/server/src/agent/context-version-routes.ts +241 -0
  172. package/template/apps/server/src/agent/context-version-runtime.ts +332 -0
  173. package/template/apps/server/src/agent/context-version-support.ts +93 -0
  174. package/template/apps/server/src/agent/context-version-validation.ts +118 -0
  175. package/template/apps/server/src/agent/drizzle-run-binding-repository.ts +11 -0
  176. package/template/apps/server/src/agent/idempotency-key.ts +9 -1
  177. package/template/apps/server/src/agent/memory-runtime-adapters.ts +266 -0
  178. package/template/apps/server/src/agent/memory-scope-binding.ts +14 -0
  179. package/template/apps/server/src/agent/module-ai-port-factory.ts +41 -0
  180. package/template/apps/server/src/agent/provider-input-governance.ts +19 -0
  181. package/template/apps/server/src/agent/remote-runtime-response.ts +162 -0
  182. package/template/apps/server/src/agent/remote-runtime.ts +53 -153
  183. package/template/apps/server/src/agent/run-audit.ts +2 -2
  184. package/template/apps/server/src/agent/run-authorization.test.ts +27 -0
  185. package/template/apps/server/src/agent/run-authorization.ts +60 -1
  186. package/template/apps/server/src/agent/run-binding-repository.ts +9 -0
  187. package/template/apps/server/src/agent/run-browser-authorization.ts +79 -0
  188. package/template/apps/server/src/agent/run-contracts.ts +23 -0
  189. package/template/apps/server/src/agent/run-facade.test-support.ts +17 -4
  190. package/template/apps/server/src/agent/run-facade.test.ts +16 -0
  191. package/template/apps/server/src/agent/run-facade.ts +139 -139
  192. package/template/apps/server/src/agent/run-failure-cleanup.ts +58 -0
  193. package/template/apps/server/src/agent/run-operation-policy.ts +20 -0
  194. package/template/apps/server/src/agent/run-route-input.ts +19 -1
  195. package/template/apps/server/src/agent/run-routes.ts +133 -5
  196. package/template/apps/server/src/agent/run-runtime-request.ts +89 -0
  197. package/template/apps/server/src/agent/run-session-authorization.ts +97 -0
  198. package/template/apps/server/src/agent/run-start-preparation.ts +71 -0
  199. package/template/apps/server/src/agent/runtime-bootstrap-input.ts +46 -0
  200. package/template/apps/server/src/agent/runtime-bootstrap-report.test.ts +53 -1
  201. package/template/apps/server/src/agent/runtime-bootstrap.ts +115 -112
  202. package/template/apps/server/src/agent/runtime-public-ports.ts +40 -0
  203. package/template/apps/server/src/agent/runtime-tool-composition.ts +38 -0
  204. package/template/apps/server/src/agent/session-context-source-support.ts +38 -0
  205. package/template/apps/server/src/agent/session-context-source.ts +346 -0
  206. package/template/apps/server/src/agent/session-invalidation/contracts.ts +216 -0
  207. package/template/apps/server/src/agent/session-invalidation/dispatcher.contract.test.ts +333 -0
  208. package/template/apps/server/src/agent/session-invalidation/dispatcher.ts +205 -0
  209. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.test.ts +127 -0
  210. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.ts +202 -0
  211. package/template/apps/server/src/agent/session-invalidation/read-guard.ts +39 -0
  212. package/template/apps/server/src/agent/session-invalidation/runtime.ts +69 -0
  213. package/template/apps/server/src/agent/session-invalidation/test-envelopes.ts +24 -0
  214. package/template/apps/server/src/agent/session-invalidation/worker.contract.test.ts +135 -0
  215. package/template/apps/server/src/agent/session-invalidation/worker.ts +76 -0
  216. package/template/apps/server/src/agent/session-log/checkpoint-digest.ts +36 -0
  217. package/template/apps/server/src/agent/session-log/domain.ts +123 -0
  218. package/template/apps/server/src/agent/session-log/events.ts +229 -0
  219. package/template/apps/server/src/agent/session-log/history.ts +143 -0
  220. package/template/apps/server/src/agent/session-log/in-memory-repository.ts +340 -0
  221. package/template/apps/server/src/agent/session-log/lifecycle.ts +67 -0
  222. package/template/apps/server/src/agent/session-log/replay-policy.ts +76 -0
  223. package/template/apps/server/src/agent/session-log/repository.ts +103 -0
  224. package/template/apps/server/src/agent/session-log/service.ts +349 -0
  225. package/template/apps/server/src/agent/session-log/session-log.test.ts +282 -0
  226. package/template/apps/server/src/agent/session-persistence/drizzle-context-memory.ts +348 -0
  227. package/template/apps/server/src/agent/session-persistence/drizzle-governed-context.ts +328 -0
  228. package/template/apps/server/src/agent/session-persistence/drizzle-invalidation-outbox.ts +260 -0
  229. package/template/apps/server/src/agent/session-persistence/drizzle-memory-projection-deletion.ts +56 -0
  230. package/template/apps/server/src/agent/session-persistence/drizzle-run-projection-receipt.ts +80 -0
  231. package/template/apps/server/src/agent/session-persistence/drizzle-session-fork.ts +147 -0
  232. package/template/apps/server/src/agent/session-persistence/drizzle-session-list.ts +24 -0
  233. package/template/apps/server/src/agent/session-persistence/drizzle-session-mapping.ts +154 -0
  234. package/template/apps/server/src/agent/session-persistence/drizzle-session-mutations.ts +64 -0
  235. package/template/apps/server/src/agent/session-persistence/drizzle-session-repository.ts +335 -0
  236. package/template/apps/server/src/agent/session-persistence/invalidation-projections.ts +229 -0
  237. package/template/apps/server/src/agent/session-persistence/payload-codec.ts +90 -0
  238. package/template/apps/server/src/agent/session-projection-access.ts +167 -0
  239. package/template/apps/server/src/agent/session-projection-bootstrap.ts +87 -0
  240. package/template/apps/server/src/agent/session-projection-errors.ts +22 -0
  241. package/template/apps/server/src/agent/session-projection-facade.ts +349 -0
  242. package/template/apps/server/src/agent/session-projection-routes.ts +215 -0
  243. package/template/apps/server/src/agent/session-projection-view.ts +137 -0
  244. package/template/apps/server/src/agent/session-result-memory.ts +228 -0
  245. package/template/apps/server/src/agent/session-run-lifecycle.ts +85 -0
  246. package/template/apps/server/src/agent/session-run-link-contracts.ts +56 -0
  247. package/template/apps/server/src/agent/session-run-link.ts +343 -0
  248. package/template/apps/server/src/agent/session-run-recovery.ts +16 -0
  249. package/template/apps/server/src/agent/session-runtime-composition.ts +265 -0
  250. package/template/apps/server/src/agent/session-source-chain-authorizer.ts +141 -0
  251. package/template/apps/server/src/agent/session-terminal-reconciler.ts +100 -0
  252. package/template/apps/server/src/agent/session-turn-state.ts +49 -0
  253. package/template/apps/server/src/agent/tool-audit.ts +3 -3
  254. package/template/apps/server/src/agent/tool-execution-receipt.ts +13 -0
  255. package/template/apps/server/src/agent/tool-host.ts +41 -4
  256. package/template/apps/server/src/agent/tool-registry-composition.ts +52 -0
  257. package/template/apps/server/src/agent/tool-registry.test.ts +5 -5
  258. package/template/apps/server/src/agent/tool-registry.ts +53 -59
  259. package/template/apps/server/src/agent/unavailable-routes.ts +70 -5
  260. package/template/apps/server/src/agent/workflow-durable-runtime-input.ts +32 -0
  261. package/template/apps/server/src/agent/workflow-runtime-bootstrap.ts +61 -0
  262. package/template/apps/server/src/agent-workflow/adapter-dispatch.ts +148 -0
  263. package/template/apps/server/src/agent-workflow/approval-node-adapter.ts +77 -0
  264. package/template/apps/server/src/agent-workflow/artifact-access-error.ts +9 -0
  265. package/template/apps/server/src/agent-workflow/artifact-node-adapter.ts +67 -0
  266. package/template/apps/server/src/agent-workflow/artifact-policy.ts +71 -0
  267. package/template/apps/server/src/agent-workflow/artifact-source-authorization.ts +91 -0
  268. package/template/apps/server/src/agent-workflow/authorization.ts +238 -0
  269. package/template/apps/server/src/agent-workflow/budget-ledger.ts +118 -0
  270. package/template/apps/server/src/agent-workflow/budget-validation.ts +305 -0
  271. package/template/apps/server/src/agent-workflow/canonical-agent-run-binding.ts +17 -0
  272. package/template/apps/server/src/agent-workflow/canonical-agent-run-evidence.ts +142 -0
  273. package/template/apps/server/src/agent-workflow/canonical-agent-run-port.ts +304 -0
  274. package/template/apps/server/src/agent-workflow/canonical-agent-run-remote.ts +64 -0
  275. package/template/apps/server/src/agent-workflow/canonical-json.ts +16 -0
  276. package/template/apps/server/src/agent-workflow/command-drive.ts +195 -0
  277. package/template/apps/server/src/agent-workflow/command-error.ts +9 -0
  278. package/template/apps/server/src/agent-workflow/command-facade.ts +349 -0
  279. package/template/apps/server/src/agent-workflow/command-input.ts +133 -0
  280. package/template/apps/server/src/agent-workflow/condition-node-adapter.ts +69 -0
  281. package/template/apps/server/src/agent-workflow/definition-budget-validation.ts +41 -0
  282. package/template/apps/server/src/agent-workflow/definition-node-validation.ts +197 -0
  283. package/template/apps/server/src/agent-workflow/definition-validation.ts +198 -0
  284. package/template/apps/server/src/agent-workflow/delegated-tool-authorization.ts +15 -0
  285. package/template/apps/server/src/agent-workflow/delegation-child-delivery.ts +129 -0
  286. package/template/apps/server/src/agent-workflow/delegation-execution-authorization.ts +218 -0
  287. package/template/apps/server/src/agent-workflow/delegation-policy-validation.ts +253 -0
  288. package/template/apps/server/src/agent-workflow/delegation-policy.ts +179 -0
  289. package/template/apps/server/src/agent-workflow/drizzle-artifact-port.ts +211 -0
  290. package/template/apps/server/src/agent-workflow/drizzle-artifact-support.ts +152 -0
  291. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-settlement.ts +271 -0
  292. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-support.ts +226 -0
  293. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger.ts +189 -0
  294. package/template/apps/server/src/agent-workflow/drizzle-cancellation-reconcile.ts +177 -0
  295. package/template/apps/server/src/agent-workflow/drizzle-delegated-tool-authorization.ts +155 -0
  296. package/template/apps/server/src/agent-workflow/drizzle-delegation-completion.ts +84 -0
  297. package/template/apps/server/src/agent-workflow/drizzle-delegation-lifecycle.ts +139 -0
  298. package/template/apps/server/src/agent-workflow/drizzle-delegation-port.ts +288 -0
  299. package/template/apps/server/src/agent-workflow/drizzle-effect-command-fence.ts +333 -0
  300. package/template/apps/server/src/agent-workflow/drizzle-evaluation-repository.ts +214 -0
  301. package/template/apps/server/src/agent-workflow/drizzle-event-validation.ts +43 -0
  302. package/template/apps/server/src/agent-workflow/drizzle-recovery-admission.ts +115 -0
  303. package/template/apps/server/src/agent-workflow/drizzle-repository-lineage.ts +103 -0
  304. package/template/apps/server/src/agent-workflow/drizzle-repository-mappers.ts +317 -0
  305. package/template/apps/server/src/agent-workflow/drizzle-repository-write.ts +311 -0
  306. package/template/apps/server/src/agent-workflow/drizzle-repository.ts +285 -0
  307. package/template/apps/server/src/agent-workflow/drizzle-side-effect-repository.ts +83 -0
  308. package/template/apps/server/src/agent-workflow/drizzle-write-support.ts +101 -0
  309. package/template/apps/server/src/agent-workflow/durable-continuation-authorization.ts +109 -0
  310. package/template/apps/server/src/agent-workflow/durable-continuation-driver.ts +97 -0
  311. package/template/apps/server/src/agent-workflow/durable-continuation-runtime.ts +173 -0
  312. package/template/apps/server/src/agent-workflow/durable-job-node-adapter.ts +106 -0
  313. package/template/apps/server/src/agent-workflow/effect-command-fence.ts +250 -0
  314. package/template/apps/server/src/agent-workflow/evaluation-evidence-coordinates.ts +225 -0
  315. package/template/apps/server/src/agent-workflow/evaluation-evidence-metrics.ts +280 -0
  316. package/template/apps/server/src/agent-workflow/evaluation-evidence-reader.ts +326 -0
  317. package/template/apps/server/src/agent-workflow/evaluation-metrics-validation.ts +85 -0
  318. package/template/apps/server/src/agent-workflow/evaluation-projection.ts +70 -0
  319. package/template/apps/server/src/agent-workflow/evaluation-repository.ts +134 -0
  320. package/template/apps/server/src/agent-workflow/evaluation-service.ts +292 -0
  321. package/template/apps/server/src/agent-workflow/evaluation-tool-registration.ts +95 -0
  322. package/template/apps/server/src/agent-workflow/evaluation-validation.ts +331 -0
  323. package/template/apps/server/src/agent-workflow/event-validation.ts +277 -0
  324. package/template/apps/server/src/agent-workflow/governed-tool-schema.ts +55 -0
  325. package/template/apps/server/src/agent-workflow/in-memory-evaluation-repository.ts +123 -0
  326. package/template/apps/server/src/agent-workflow/in-memory-mutation-validation.ts +154 -0
  327. package/template/apps/server/src/agent-workflow/in-memory-repository-support.ts +277 -0
  328. package/template/apps/server/src/agent-workflow/in-memory-repository.ts +339 -0
  329. package/template/apps/server/src/agent-workflow/in-memory-side-effect-store.ts +78 -0
  330. package/template/apps/server/src/agent-workflow/input-receipt.ts +55 -0
  331. package/template/apps/server/src/agent-workflow/model-node-adapter.ts +86 -0
  332. package/template/apps/server/src/agent-workflow/model-pricing-catalog.ts +215 -0
  333. package/template/apps/server/src/agent-workflow/node-adapter-factory.ts +83 -0
  334. package/template/apps/server/src/agent-workflow/node-adapters.ts +50 -0
  335. package/template/apps/server/src/agent-workflow/node-execution-ports.ts +185 -0
  336. package/template/apps/server/src/agent-workflow/node-input-receipt-port.ts +42 -0
  337. package/template/apps/server/src/agent-workflow/node-result-receipt.ts +50 -0
  338. package/template/apps/server/src/agent-workflow/platform-node-adapter-support.ts +185 -0
  339. package/template/apps/server/src/agent-workflow/platform-node-adapters.ts +264 -0
  340. package/template/apps/server/src/agent-workflow/platform-node-approval.ts +146 -0
  341. package/template/apps/server/src/agent-workflow/platform-node-direct-adapters.ts +65 -0
  342. package/template/apps/server/src/agent-workflow/production-delegation-scope.ts +58 -0
  343. package/template/apps/server/src/agent-workflow/production-node-policies.ts +62 -0
  344. package/template/apps/server/src/agent-workflow/project-launch-authority.contract.test.ts +53 -0
  345. package/template/apps/server/src/agent-workflow/project-launch-authority.ts +92 -0
  346. package/template/apps/server/src/agent-workflow/query-service.ts +198 -0
  347. package/template/apps/server/src/agent-workflow/release.ts +96 -0
  348. package/template/apps/server/src/agent-workflow/repository.ts +157 -0
  349. package/template/apps/server/src/agent-workflow/routes.ts +307 -0
  350. package/template/apps/server/src/agent-workflow/runtime-composition.ts +324 -0
  351. package/template/apps/server/src/agent-workflow/scheduler-cancellation-reconcile.ts +253 -0
  352. package/template/apps/server/src/agent-workflow/scheduler-cancellation-support.ts +145 -0
  353. package/template/apps/server/src/agent-workflow/scheduler-cancellation.ts +2 -0
  354. package/template/apps/server/src/agent-workflow/scheduler-context.ts +85 -0
  355. package/template/apps/server/src/agent-workflow/scheduler-deadline.ts +65 -0
  356. package/template/apps/server/src/agent-workflow/scheduler-effect-result.ts +205 -0
  357. package/template/apps/server/src/agent-workflow/scheduler-execution-convergence.ts +174 -0
  358. package/template/apps/server/src/agent-workflow/scheduler-execution.ts +211 -0
  359. package/template/apps/server/src/agent-workflow/scheduler-failure.ts +102 -0
  360. package/template/apps/server/src/agent-workflow/scheduler-join-cancellation.ts +282 -0
  361. package/template/apps/server/src/agent-workflow/scheduler-mutation-queue.ts +13 -0
  362. package/template/apps/server/src/agent-workflow/scheduler-node-timeout.ts +139 -0
  363. package/template/apps/server/src/agent-workflow/scheduler-parallel-dispatch.ts +99 -0
  364. package/template/apps/server/src/agent-workflow/scheduler-recovery-activation.ts +63 -0
  365. package/template/apps/server/src/agent-workflow/scheduler-recovery-budget.ts +41 -0
  366. package/template/apps/server/src/agent-workflow/scheduler-recovery-effect.ts +331 -0
  367. package/template/apps/server/src/agent-workflow/scheduler-recovery-event-time.ts +26 -0
  368. package/template/apps/server/src/agent-workflow/scheduler-recovery-failed-policy.ts +129 -0
  369. package/template/apps/server/src/agent-workflow/scheduler-recovery-node.ts +208 -0
  370. package/template/apps/server/src/agent-workflow/scheduler-recovery-policy-convergence.ts +140 -0
  371. package/template/apps/server/src/agent-workflow/scheduler-reservation-convergence.ts +40 -0
  372. package/template/apps/server/src/agent-workflow/scheduler-side-effect-execution.ts +249 -0
  373. package/template/apps/server/src/agent-workflow/scheduler-support.ts +235 -0
  374. package/template/apps/server/src/agent-workflow/scheduler-workflow-cancellation.ts +296 -0
  375. package/template/apps/server/src/agent-workflow/scheduler.ts +289 -0
  376. package/template/apps/server/src/agent-workflow/service-completion.ts +102 -0
  377. package/template/apps/server/src/agent-workflow/service-mutation-identity.ts +94 -0
  378. package/template/apps/server/src/agent-workflow/service-node-admission.ts +36 -0
  379. package/template/apps/server/src/agent-workflow/service-node-run-update.ts +55 -0
  380. package/template/apps/server/src/agent-workflow/service-recovery-events.ts +38 -0
  381. package/template/apps/server/src/agent-workflow/service-recovery.ts +264 -0
  382. package/template/apps/server/src/agent-workflow/service-retry.ts +86 -0
  383. package/template/apps/server/src/agent-workflow/service-run-command.ts +131 -0
  384. package/template/apps/server/src/agent-workflow/service-state-error.ts +21 -0
  385. package/template/apps/server/src/agent-workflow/service-state-invariants.ts +44 -0
  386. package/template/apps/server/src/agent-workflow/service-support.ts +152 -0
  387. package/template/apps/server/src/agent-workflow/service.ts +307 -0
  388. package/template/apps/server/src/agent-workflow/side-effect-state.ts +226 -0
  389. package/template/apps/server/src/agent-workflow/state-machine.ts +321 -0
  390. package/template/apps/server/src/agent-workflow/subagent-node-adapter.ts +229 -0
  391. package/template/apps/server/src/agent-workflow/tool-node-adapter.ts +259 -0
  392. package/template/apps/server/src/agent-workflow/usage.ts +149 -0
  393. package/template/apps/server/src/agent-workflow/wait-signal-service.ts +147 -0
  394. package/template/apps/server/src/agent-workflow/workflow-artifact-token.ts +109 -0
  395. package/template/apps/server/src/agent-workflow/workflow-value-validation.ts +101 -0
  396. package/template/apps/server/src/agent-workflow/workspace-policy.ts +109 -0
  397. package/template/apps/server/src/ai-runtime-report/remote-parser.ts +41 -0
  398. package/template/apps/server/src/ai-runtime-report/service.test.ts +2 -0
  399. package/template/apps/server/src/app/agent-runtime-composition.ts +43 -0
  400. package/template/apps/server/src/app/client-agent-host-auth-binding.ts +10 -0
  401. package/template/apps/server/src/app/client-agent-workflow-artifact-binding.ts +14 -0
  402. package/template/apps/server/src/application-services.ts +6 -0
  403. package/template/apps/server/src/auth/actor-resolver.test.ts +33 -0
  404. package/template/apps/server/src/auth/actor-resolver.ts +6 -1
  405. package/template/apps/server/src/auth/composition.ts +36 -0
  406. package/template/apps/server/src/auth/routes.test-support.ts +2 -0
  407. package/template/apps/server/src/auth/routes.test.ts +18 -0
  408. package/template/apps/server/src/auth/runtime.ts +2 -0
  409. package/template/apps/server/src/auth/service-options.ts +16 -0
  410. package/template/apps/server/src/auth/service.ts +7 -12
  411. package/template/apps/server/src/data-access/scope-containment.test.ts +31 -0
  412. package/template/apps/server/src/data-access/scope-containment.ts +48 -0
  413. package/template/apps/server/src/index.ts +35 -37
  414. package/template/apps/server/src/jobs/artifact-publication.test.ts +192 -0
  415. package/template/apps/server/src/jobs/artifact-publication.ts +56 -0
  416. package/template/apps/server/src/jobs/artifact-publisher.ts +101 -0
  417. package/template/apps/server/src/jobs/drizzle-artifact.ts +73 -1
  418. package/template/apps/server/src/jobs/drizzle-execution-repository.ts +14 -1
  419. package/template/apps/server/src/jobs/drizzle-execution.integration.test.ts +65 -0
  420. package/template/apps/server/src/jobs/drizzle-repository.integration.test.ts +1 -0
  421. package/template/apps/server/src/jobs/execution-repository.ts +28 -0
  422. package/template/apps/server/src/jobs/execution.test.ts +3 -1
  423. package/template/apps/server/src/jobs/in-memory-execution.ts +16 -0
  424. package/template/apps/server/src/jobs/in-memory-lease.ts +45 -1
  425. package/template/apps/server/src/jobs/legacy-adapter.integration.test.ts +2 -0
  426. package/template/apps/server/src/jobs/postgres-cleanup-contract.test.ts +58 -0
  427. package/template/apps/server/src/jobs/worker.ts +8 -14
  428. package/template/apps/server/src/license/pairing-service.test.ts +1 -1
  429. package/template/apps/server/src/module-host/agent-session-memory-port.ts +91 -0
  430. package/template/apps/server/src/module-host/{debug-session-provider-registration.test.ts → agent-session-provider-registration.test.ts} +42 -17
  431. package/template/apps/server/src/module-host/{debug-session-provider-registration.ts → agent-session-provider-registration.ts} +18 -18
  432. package/template/apps/server/src/module-host/agent-source-invalidation-port.ts +53 -0
  433. package/template/apps/server/src/module-host/background-ai-unavailable.ts +18 -0
  434. package/template/apps/server/src/module-host/durable-context.ts +19 -22
  435. package/template/apps/server/src/module-host/http-runtime.ts +14 -0
  436. package/template/apps/server/src/module-host/implementation-completeness.test.ts +80 -1
  437. package/template/apps/server/src/module-host/implementation-completeness.ts +28 -1
  438. package/template/apps/server/src/module-host/initialize-contracts.ts +4 -5
  439. package/template/apps/server/src/module-host/initialize.ts +4 -4
  440. package/template/apps/server/src/module-host/request-context.test.ts +5 -5
  441. package/template/apps/server/src/module-host/request-context.ts +40 -8
  442. package/template/apps/server/src/module-host/route-install-context.ts +65 -0
  443. package/template/apps/server/src/module-host/route-installer.ts +11 -56
  444. package/template/apps/server/src/module-host/scoped-host.ts +17 -12
  445. package/template/apps/server/src/module-host/storage-authorization-binding.test.ts +3 -3
  446. package/template/apps/server/src/module-host/storage-port.ts +3 -0
  447. package/template/apps/server/src/module-host/workflow-input-artifact-port.test.ts +104 -0
  448. package/template/apps/server/src/module-host/workflow-input-artifact-port.ts +229 -0
  449. package/template/apps/server/src/module-host/workflow-input-materialization.test.ts +163 -0
  450. package/template/apps/server/src/module-host/workflow-input-materialization.ts +161 -0
  451. package/template/apps/server/src/module-host.ts +3 -5
  452. package/template/apps/server/src/runtime.ts +3 -36
  453. package/template/apps/server/src/storage/routes-stream-cancellation.test.ts +19 -0
  454. package/template/apps/server/src/storage/routes.ts +3 -1
  455. package/template/apps/server/src/system/actor.ts +15 -2
  456. package/template/apps/server/src/system/authorization-invalidation-bridge.ts +30 -0
  457. package/template/apps/server/src/system/authorization-invalidation-composition.ts +36 -0
  458. package/template/apps/server/src/system/drizzle-system.ts +8 -1
  459. package/template/apps/server/src/system/identity-route-config.ts +9 -1
  460. package/template/apps/server/src/system/routes.ts +3 -0
  461. package/template/apps/server/src/system/seed.ts +3 -0
  462. package/template/apps/server/src/system/user-account-policy.ts +91 -0
  463. package/template/apps/server/src/workflow/drizzle-repository.integration.test.ts +1 -0
  464. package/template/apps/web/package.json +1 -0
  465. package/template/apps/web/src/layout/AppSidebar.vue +2 -0
  466. package/template/apps/web/src/pages/system/AgentSessionPage.vue +73 -0
  467. package/template/apps/web/src/pages/system/AgentSessionPage.webtest.ts +66 -0
  468. package/template/apps/web/src/pages/system/AgentWorkflowPage.vue +69 -0
  469. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionDetail.vue +114 -0
  470. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionList.vue +84 -0
  471. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.vue +119 -0
  472. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.webtest.ts +46 -0
  473. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.vue +163 -0
  474. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.webtest.ts +62 -0
  475. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.vue +71 -0
  476. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.webtest.ts +34 -0
  477. package/template/apps/web/src/pages/system/components/agent-session/agent-session-presenter.ts +56 -0
  478. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeCard.vue +39 -0
  479. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeDetail.vue +172 -0
  480. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunDetail.vue +151 -0
  481. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunGraph.vue +96 -0
  482. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunList.vue +100 -0
  483. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunSummary.vue +148 -0
  484. package/template/apps/web/src/pages/system/components/agent-workflow/agent-workflow-presenter.ts +74 -0
  485. package/template/apps/web/src/pages/system/components/agent-workflow/workflow-graph-layout.ts +108 -0
  486. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.vue +9 -0
  487. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.webtest.ts +22 -0
  488. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunTable.webtest.ts +2 -0
  489. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeTrajectory.vue +118 -0
  490. package/template/apps/web/src/pages/system/composables/useAgentSessions.ts +209 -0
  491. package/template/apps/web/src/pages/system/composables/useAgentSessions.webtest.ts +138 -0
  492. package/template/apps/web/src/pages/system/composables/useAgentWorkflowRuns.ts +173 -0
  493. package/template/apps/web/src/router/index.ts +4 -0
  494. package/template/apps/web/src/router/platform-admin-route-bindings.ts +6 -0
  495. package/template/apps/web/src/services/agent-session-api.ts +159 -0
  496. package/template/apps/web/src/services/agent-session-api.webtest.ts +65 -0
  497. package/template/apps/web/src/services/agent-workflow-api.ts +181 -0
  498. package/template/apps/web/src/services/ai-runtime-api.ts +4 -0
  499. package/template/docker-compose.yml +11 -8
  500. package/template/docs/adr/0003-agent-session-event-source.md +3 -0
  501. package/template/docs/architecture/agent-harness.md +464 -0
  502. package/template/docs/architecture/agent-workflow.md +110 -0
  503. package/template/docs/architecture/ai-runtime.md +55 -47
  504. package/template/docs/architecture/durable-jobs.md +7 -0
  505. package/template/docs/architecture/module-host.md +4 -3
  506. package/template/docs/operations/adk-retirement.md +98 -0
  507. package/template/docs/operations/agent-session-memory.md +163 -0
  508. package/template/docs/operations/agent-session-troubleshooting.md +281 -0
  509. package/template/docs/operations/agent-workflow-recovery.md +85 -0
  510. package/template/docs/operations/incremental-delivery.md +1 -1
  511. package/template/docs/platform/agent-production-store.md +82 -0
  512. package/template/docs/platform/agent-run-reattachment.md +52 -0
  513. package/template/docs/platform/agent-runtime-observability.md +4 -3
  514. package/template/docs/platform/agent-runtime.md +116 -281
  515. package/template/docs/platform/agent-tool-approval.md +61 -0
  516. package/template/docs/platform/background-ai-operations.md +50 -0
  517. package/template/docs/platform/client-agent-session.md +319 -0
  518. package/template/docs/platform/embedding-ai-runtime.md +94 -0
  519. package/template/docs/platform/platform-authentication.md +5 -8
  520. package/template/package.json +0 -1
  521. package/template/packages/ai-client/index.ts +1 -0
  522. package/template/packages/ai-client/package.json +3 -1
  523. package/template/packages/ai-client/src/agent/client/client.ts +15 -2
  524. package/template/packages/ai-client/src/agent/client/run-protocol.test.ts +39 -25
  525. package/template/packages/ai-client/src/agent/client/types.ts +4 -0
  526. package/template/packages/ai-client/src/agent/contracts/contracts.test.ts +49 -7
  527. package/template/packages/ai-client/src/agent/contracts/events.ts +61 -0
  528. package/template/packages/ai-client/src/agent/contracts/runs.ts +1 -0
  529. package/template/packages/ai-client/src/client-agent/contracts.ts +131 -0
  530. package/template/packages/ai-client/src/client-agent/http.test.ts +60 -0
  531. package/template/packages/ai-client/src/client-agent/http.ts +66 -0
  532. package/template/packages/ai-client/src/client-agent/index.ts +4 -0
  533. package/template/packages/ai-client/src/client-agent/validation.test.ts +57 -0
  534. package/template/packages/ai-client/src/client-agent/validation.ts +152 -0
  535. package/template/packages/ai-client/src/client-agent/workflow-artifact/contracts.ts +85 -0
  536. package/template/packages/ai-client/src/client-agent/workflow-artifact/http.test.ts +49 -0
  537. package/template/packages/ai-client/src/client-agent/workflow-artifact/http.ts +82 -0
  538. package/template/packages/ai-client/src/client-agent/workflow-artifact/index.ts +3 -0
  539. package/template/packages/ai-client/src/client-agent/workflow-artifact/validation.test.ts +154 -0
  540. package/template/packages/ai-client/src/client-agent/workflow-artifact/validation.ts +332 -0
  541. package/template/packages/config/index.test.ts +18 -0
  542. package/template/packages/config/package.json +1 -1
  543. package/template/packages/config/src/platform-validation.ts +8 -0
  544. package/template/packages/config/src/platform.ts +22 -9
  545. package/template/packages/database/drizzle/0055_square_yellowjacket.sql +47 -0
  546. package/template/packages/database/drizzle/0056_tricky_living_mummy.sql +2 -0
  547. package/template/packages/database/drizzle/0057_mature_doomsday.sql +4 -0
  548. package/template/packages/database/drizzle/0058_agent_session_memory.sql +159 -0
  549. package/template/packages/database/drizzle/0059_agent_source_module_key.sql +16 -0
  550. package/template/packages/database/drizzle/0060_slimy_rocket_raccoon.sql +43 -0
  551. package/template/packages/database/drizzle/0061_agent_workflow.sql +303 -0
  552. package/template/packages/database/drizzle/0062_client_agent_workflow_artifact.sql +63 -0
  553. package/template/packages/database/drizzle/meta/0055_snapshot.json +11071 -0
  554. package/template/packages/database/drizzle/meta/0056_snapshot.json +11098 -0
  555. package/template/packages/database/drizzle/meta/0057_snapshot.json +10878 -0
  556. package/template/packages/database/drizzle/meta/0058_snapshot.json +12294 -0
  557. package/template/packages/database/drizzle/meta/0059_snapshot.json +12344 -0
  558. package/template/packages/database/drizzle/meta/0060_snapshot.json +12326 -0
  559. package/template/packages/database/drizzle/meta/0061_snapshot.json +14395 -0
  560. package/template/packages/database/drizzle/meta/0062_snapshot.json +14839 -0
  561. package/template/packages/database/drizzle/meta/_journal.json +56 -0
  562. package/template/packages/database/package.json +1 -1
  563. package/template/packages/database/src/agent-runtime-schema.test.ts +203 -0
  564. package/template/packages/database/src/schema/agent-context-message.ts +38 -0
  565. package/template/packages/database/src/schema/agent-runtime.ts +7 -0
  566. package/template/packages/database/src/schema/agent-session-receipt.ts +36 -0
  567. package/template/packages/database/src/schema/agent-session.ts +344 -0
  568. package/template/packages/database/src/schema/agent-workflow-delegation.ts +126 -0
  569. package/template/packages/database/src/schema/agent-workflow-effects.ts +213 -0
  570. package/template/packages/database/src/schema/agent-workflow-evaluation.ts +67 -0
  571. package/template/packages/database/src/schema/agent-workflow.ts +270 -0
  572. package/template/packages/database/src/schema/client-agent-workflow-artifact.ts +158 -0
  573. package/template/packages/database/src/schema/client-agent.ts +95 -0
  574. package/template/packages/database/src/schema/index.ts +9 -0
  575. package/template/packages/jobs/package.json +1 -1
  576. package/template/packages/jobs/src/handlers.test.ts +10 -0
  577. package/template/packages/jobs/src/handlers.ts +28 -11
  578. package/template/packages/modules/index.ts +2 -0
  579. package/template/packages/modules/package.json +1 -1
  580. package/template/packages/modules/src/ai-client-execution-composition.test.ts +98 -0
  581. package/template/packages/modules/src/ai-client-execution-policy.ts +60 -0
  582. package/template/packages/modules/src/ai-operation-composition.ts +2 -0
  583. package/template/packages/modules/src/manifest.ts +17 -0
  584. package/template/packages/modules/src/system-admin-routes.ts +16 -0
  585. package/template/packages/modules/src/system-admin-ui-catalog.ts +4 -1
  586. package/template/packages/modules/src/system-agent-audit-actions.ts +29 -0
  587. package/template/packages/modules/src/system-ai-api-bindings.ts +277 -0
  588. package/template/packages/modules/src/system-api-control-plane.ts +4 -78
  589. package/template/packages/modules/src/system-audit-actions.ts +128 -0
  590. package/template/packages/modules/src/system-features.ts +17 -0
  591. package/template/packages/modules/src/system-module-catalog.ts +21 -11
  592. package/template/packages/modules/src/system-modules.ts +22 -0
  593. package/template/packages/modules/src/system-permissions.ts +8 -0
  594. package/template/packages/server-sdk/index.ts +95 -0
  595. package/template/packages/server-sdk/package.json +9 -1
  596. package/template/packages/server-sdk/src/agent-session-memory-port.ts +64 -0
  597. package/template/packages/server-sdk/src/agent-session-provider.ts +63 -0
  598. package/template/packages/server-sdk/src/agent-source-invalidation-port.ts +54 -0
  599. package/template/packages/server-sdk/src/ai-operation-registration.ts +2 -0
  600. package/template/packages/server-sdk/src/client-agent-session.ts +107 -0
  601. package/template/packages/server-sdk/src/client-agent-workflow-artifact.contract.test.ts +113 -0
  602. package/template/packages/server-sdk/src/client-agent-workflow-artifact.ts +183 -0
  603. package/template/packages/server-sdk/src/debug-session-provider.ts +14 -63
  604. package/template/packages/server-sdk/src/durable-handler.ts +7 -0
  605. package/template/packages/server-sdk/src/module-host.ts +7 -3
  606. package/template/packages/server-sdk/src/request-context.ts +13 -0
  607. package/template/packages/server-sdk/src/workflow-input-artifact-port.ts +104 -0
  608. package/template/packages/server-sdk/src/workflow-input-artifact-validation.contract.test.ts +124 -0
  609. package/template/packages/server-sdk/src/workflow-input-artifact-validation.ts +347 -0
  610. package/template/packages/server-sdk/src/workflow-input-materialization-handler.ts +43 -0
  611. package/template/packages/shared/index.ts +3 -0
  612. package/template/packages/shared/package.json +1 -1
  613. package/template/packages/shared/src/agent-workflow-definition.ts +113 -0
  614. package/template/packages/shared/src/agent-workflow-delegation.ts +123 -0
  615. package/template/packages/shared/src/agent-workflow-evaluation.ts +159 -0
  616. package/template/packages/shared/src/agent-workflow-events.ts +99 -0
  617. package/template/packages/shared/src/agent-workflow-run.ts +259 -0
  618. package/template/packages/shared/src/agent-workflow.ts +3 -0
  619. package/template/packages/shared/src/ai-runtime-report.ts +25 -0
  620. package/template/packages/shared/src/rbac.ts +24 -0
  621. package/template/packages/storage/package.json +1 -1
  622. package/template/packages/storage/src/blob-store-put-once.test.ts +70 -0
  623. package/template/packages/storage/src/blob-store.ts +9 -0
  624. package/template/packages/storage/src/local-file-blob-put-once.ts +120 -0
  625. package/template/packages/storage/src/local-file-blob-store.ts +53 -1
  626. package/template/packages/storage/src/memory-blob-store.ts +73 -33
  627. package/template/packages/storage/src/upload-streams.test.ts +31 -0
  628. package/template/packages/storage/src/upload-streams.ts +20 -6
  629. package/template/apps/agent-server/adk_web_agents/__init__.py +0 -1
  630. package/template/apps/agent-server/adk_web_agents/canonical_debug/__init__.py +0 -1
  631. package/template/apps/agent-server/adk_web_agents/canonical_debug/agent.py +0 -145
  632. package/template/apps/agent-server/adk_web_agents/safe_debug/__init__.py +0 -3
  633. package/template/apps/agent-server/adk_web_agents/safe_debug/agent.py +0 -40
  634. package/template/apps/agent-server/adk_web_agents/services.py +0 -25
  635. package/template/apps/agent-server/project/adk-web-debug.json +0 -4
  636. package/template/apps/agent-server/src/southwind_agent_server/adk_adapter.py +0 -333
  637. package/template/apps/agent-server/src/southwind_agent_server/adk_debug.py +0 -348
  638. package/template/apps/agent-server/src/southwind_agent_server/adk_debug_sessions.py +0 -325
  639. package/template/apps/agent-server/src/southwind_agent_server/adk_failure.py +0 -13
  640. package/template/apps/agent-server/src/southwind_agent_server/adk_model.py +0 -304
  641. package/template/apps/agent-server/src/southwind_agent_server/adk_tools.py +0 -143
  642. package/template/apps/agent-server/tests/test_adk_adapter.py +0 -307
  643. package/template/apps/agent-server/tests/test_adk_debug_result_polling.py +0 -139
  644. package/template/apps/agent-server/tests/test_adk_debug_sessions.py +0 -215
  645. package/template/apps/agent-server/tests/test_adk_web_agent.py +0 -12
  646. package/template/apps/agent-server/tests/test_adk_web_canonical_debug.py +0 -282
  647. package/template/apps/server/src/agent/run-debug-authorization.ts +0 -27
  648. package/template/apps/server/src/agent/run-facade-adk-debug.test.ts +0 -95
  649. package/template/apps/server/src/runtime-adk-debug.test.ts +0 -270
  650. package/template/apps/server/src/runtime-adk-debug.ts +0 -164
  651. package/template/apps/server/src/runtime-request-actor.test.ts +0 -55
  652. package/template/apps/server/src/runtime-request-actor.ts +0 -22
  653. package/template/docker-compose.agent-debug.yml +0 -58
  654. package/template/scripts/dev-adk-web.ts +0 -107
@@ -1,325 +1,160 @@
1
- # Agent Runtime 接入与运行
2
-
3
- 更新时间:2026-07-26。
4
-
5
- Windy 的 Agent Runtime 是可选平台能力。业务模块声明稳定的 AI Operation 和允许调用的
6
- Tool;Windy Server 负责身份、Feature、Permission、License、Scope、Execution
7
- Grant 与审计;独立 Agent Server 只负责模型循环、canonical event 和受限 Tool Host
8
- 回调。业务模块不选择 Provider、模型、Endpoint 或凭据。
9
-
10
- ## 当前可用边界
11
-
12
- - 真实业务 Run 使用 Google ADK 2.5 `Runner`、`InMemorySessionService`、`LlmAgent`
13
- 与 `Event`;ADK 类型只存在于 Python Adapter 内,外部 HTTP/SSE 契约不变。
14
- - OpenAI-compatible `/chat/completions` Provider,支持流式文本和 function calling。
15
- - `QWEN_API_KEY` 使用服务端 `SecretRef`,只在 Provider Adapter 发请求前解析。
16
- - 公网 Endpoint 必须为 HTTPS,并精确命中
17
- `AI_PROVIDER_HTTPS_HOST_ALLOWLIST`;`localhost`、容器服务名、RFC 1918 地址和
18
- `.internal`/`.local` 主机可使用 HTTP。URL 禁止内嵌凭据、query、fragment 和云
19
- metadata 地址。
20
- - Provider 有连接/请求超时、响应大小上限、安全错误映射和 `/models` readiness 检查。
21
- - Run 支持幂等创建、canonical SSE、cursor/`Last-Event-ID` 重放、取消和唯一终态。
22
- - SQLite Store 为单副本有界持久化:默认最多 10,000 个 Run、每个 Run 2,000 个事件、
23
- 16 MiB 输出、终态保留 7 天。它不保存原始输入,只保存请求指纹;进程重启会把未完成
24
- Run 收敛为一个可重试失败终态。
25
-
26
- SQLite 模式不能作为多副本共享 Store。需要水平扩容时,必须先提供实现同一 `RunStore`
27
- 契约的外部持久化 Adapter。
28
-
29
- ## Module 接入
30
-
31
- Manifest 的 `aiOperations` 是声明事实。每个 Operation 必须声明自己的 Feature、
32
- Permission、可选 Entitlement、输入/输出 schema 和 `allowedToolKeys`。模型只会收到该
33
- 集合内的 Tool 定义。
34
-
35
- Provider 与 Tool 网络策略必须分开声明。旧 `publicNetworkAccess` 不会开启 Provider:
36
-
37
- ```ts
38
- providerEgress: {
39
- mode: "configured-endpoint",
40
- deploymentKey: "ai.openai-compatible",
41
- },
42
- providerDataPolicy: {
43
- inputFields: [
44
- {
45
- jsonPointer: "/content",
46
- classification: "internal",
47
- dlpAction: "redact",
48
- },
49
- ],
50
- envelopeFields: [
51
- {
52
- field: "instructions",
53
- classification: "internal",
54
- dlpAction: "reject",
55
- },
56
- {
57
- field: "user-prompt",
58
- classification: "internal",
59
- dlpAction: "redact",
60
- },
61
- ],
62
- },
63
- toolNetworkPolicy: {
64
- mode: "forbidden",
65
- },
66
- ```
1
+ # Agent Runtime 接入
2
+
3
+ ## 当前基线
4
+
5
+ Windy 的服务端 Agent Runtime 由独立 Python Agent Server 承载,生产默认 Engine 是
6
+ `OpenAiCompatibleEngineAdapter`。它直接把 Windy 类型化 Operation、模型轮次和 Tool Host
7
+ 组合成受治理 Loop,不依赖第三方 Agent 框架。
8
+
9
+ 外部只依赖 canonical 契约:
67
10
 
68
- Provider URL 与 Secret 不在 Manifest 或浏览器 DTO 中;Server 只把 `inputFields`
69
- 选出的治理后输入交给 Handler,Agent Server 只允许当前启动
70
- 配置的 Deployment。Tool policy 缺省为 forbidden,且不继承 Provider egress。完整
71
- 威胁模型、兼容行为与尚未覆盖项见
72
- [Agent Provider 与 Tool 网络边界](../architecture/ai-egress.md)。
73
-
74
- 模块在 `setup(host)` 中注册模型无关的输入准备器:
75
-
76
- ```ts
77
- host.registerAiOperationHandlers([
78
- {
79
- operationKey: "example.summary.generate",
80
- prepare(input, context) {
81
- return {
82
- instructions: "只根据用户提供的数据生成简洁摘要。",
83
- userPrompt: JSON.stringify({
84
- input,
85
- actorId: context.actor.id,
86
- }),
87
- };
88
- },
89
- },
90
- ]);
11
+ ```text
12
+ POST /api/agent/runs
13
+ GET /api/agent/runs/:runId/events
14
+ GET /api/agent/runs/:runId/result
15
+ POST /api/agent/runs/:runId/cancel
91
16
  ```
92
17
 
93
- 不要把 Permission、Feature、License、Scope、Execution Grant、Provider 或 API Key
94
- 放进返回值。`prepare` 只负责把已经过宿主 Guard 的类型化输入转成指令和用户消息。
18
+ 创建 Run 必须携带幂等键;SSE 支持 cursor 重放和 heartbeat。Engine 切换不改变 Run DTO、
19
+ canonical Event、唯一终态、取消或 Tool 授权语义。
20
+
21
+ ## 能力与治理边界
95
22
 
96
- Tool handler 仍通过 `registerToolHandlers` 注册。模型提出 Tool Call 后,Agent Server
97
- 携带短时 opaque grant 回调 Windy Server;受限 Tool Host 会验证:
23
+ Direct Engine 已覆盖:
98
24
 
99
- 1. grant 是否绑定当前 Run、Operation、Actor 且未过期;
100
- 2. Tool 是否属于 Operation 的 `allowedToolKeys`;
101
- 3. Operation 与 Tool 当前的 Feature、Permission 和 License;
102
- 4. 宿主创建的 Actor 与请求 Scope。
25
+ - 文本 delta 与最终文本;
26
+ - JSON Schema 结构化输出;
27
+ - Citation/Source 归一化;
28
+ - Image Artifact 输入与 Vision readiness;
29
+ - 单 Tool、多 Tool和有界多轮 Tool;
30
+ - Tool allowlist、参数校验、Execution Grant 与二次授权;
31
+ - 审批 pending、approved、rejected 与恢复;
32
+ - 用户取消、deadline、Provider/Tool 失败和任务取消;
33
+ - Provider Attempt、Usage、容量与 deployment attestation。
103
34
 
104
- Tool 请求不能携带权限列表、License、Scope 或“已授权”标志。客户端或模型提供的这些
105
- 字段会被拒绝,未知 Tool 也不会形成注册表探测通道。
35
+ 业务模块只能声明稳定 Operation Key、输入/输出 Schema、Feature、Permission、可用 Tool 和
36
+ Provider Data Policy。业务代码不持有 Provider Key,不导入 Runtime 私有类型,也不能直接
37
+ 访问 Agent Server。
106
38
 
107
- ## 跨进程 Limits 契约
39
+ Provider 调用前会执行:
108
40
 
109
- Manifest 的 Operation limits 同时包含输入、执行时间和输出上限。Windy Server
110
- 在调用远端 Agent Server 前先执行文本输入与 Artifact 声明的 `maxInputBytes` 校验;
111
- 跨进程请求逐字段发送 Agent Server 需要再次执行的时长、输入、输出、图片数量与像素
112
- 上限。禁止通过展开 Manifest 对象透传 limits:TypeScript 的结构类型不会在运行时
113
- 移除额外字段,而 Agent Server 契约会以 `extra=forbid` 拒绝未知字段。
41
+ 1. 当前 Actor、Feature、License、RBAC 与数据范围 Guard;
42
+ 2. Operation Release、Schema、输入 commitment 与 Artifact 授权;
43
+ 3. Provider readiness、capacity 和部署事实校验;
44
+ 4. outbound envelope DLP 与 Host allowlist;
45
+ 5. append-only 出网审计,审计失败则禁止出网。
114
46
 
115
- 这个边界保证输入上限仍由持有原始业务输入的 Server 强制执行,同时避免 Python Runtime
116
- 被平台内部但不属于远端契约的字段阻断。新增 limits 字段时,必须分别决定执行归属,并在
117
- 真实 HTTP 序列化测试中确认请求体。
47
+ Tool 调用继续由 Windy Server 执行。Agent Server 只收到 opaque Execution Grant;每次 Tool
48
+ 都重新校验当前权限、Scope、审批和 receipt,不把 Run 创建时的权限快照当长期授权。
118
49
 
119
- ## 本地 Compose profile
50
+ ## 配置
120
51
 
121
- 选择 `system.agent` 的 create-windy 项目会生成 `agent` profile 和随机内部 Token。
122
- 在 `.env` 中填写:
52
+ 选择 `system.agent` 的项目在本机 `.env` 配置:
123
53
 
124
54
  ```dotenv
125
55
  PLATFORM_ENABLE_AI=true
126
- AGENT_SERVER_INTERNAL_TOKEN=<至少 32 字符的随机值>
127
- ADK_DEBUG_PLATFORM_TOKEN=<create-windy 自动生成的独立随机值>
128
- AGENT_RUN_ENCRYPTION_SECRET=<至少 32 字符的独立随机值>
129
- AI_ARTIFACT_ENCRYPTION_SECRET=<至少 32 字符的随机值>
56
+ AGENT_SERVER_INTERNAL_TOKEN=<至少 32 字符随机值>
57
+ AGENT_RUN_ENCRYPTION_SECRET=<至少 32 字符随机值>
130
58
  QWEN_API_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1
131
- QWEN_API_KEY=<服务端密钥>
59
+ QWEN_API_KEY=<server-only secret>
132
60
  QWEN_MODEL=qwen-plus
133
61
  AI_PROVIDER_HTTPS_HOST_ALLOWLIST=dashscope-intl.aliyuncs.com
134
62
  AI_PROVIDER_CAPABILITIES=text-generation
135
63
  AI_PROVIDER_INPUT_MODALITIES=text
136
- AI_PROVIDER_AUDIT_RETENTION_DAYS=90
137
-
138
- # 可选安全上限
139
- # AI_PROVIDER_CONNECT_TIMEOUT_MS=5000
140
- # AI_PROVIDER_REQUEST_TIMEOUT_MS=60000
141
- # AI_PROVIDER_MAX_RESPONSE_BYTES=2097152
142
64
  ```
143
65
 
144
- 然后启动:
66
+ 运行:
145
67
 
146
68
  ```bash
147
69
  bun run dev:agent
148
70
  ```
149
71
 
150
- `create-windy` 会为新的本地项目分别生成内部 Token、ADK 调试 Token、Run Store 加密
151
- Secret 与 Artifact 加密 Secret,四者不得互相复用。已有项目升级时 updater 只会为
152
- 普通 `.env` 原子补齐缺失或空的受管 Secret,不覆盖任何非空值;符号链接、重复定义或
153
- 缺失的 `.env` 会停止自动修复并由 `windy doctor` 报告,避免覆盖外部 Secret Store 或
154
- 已有部署配置。
155
- `AI_ARTIFACT_ENCRYPTION_SECRET` 只用于平台签发短时 opaque ArtifactRef,不得复用
156
- Provider Key。Vision Deployment 需把能力与输入模态显式扩展为
157
- `text-generation,vision` 和 `text,image`,详见
158
- [Vision AI Runtime](./vision-ai-runtime.md)。Document profile 的配置与调用链见
159
- [Document AI Runtime](./document-ai-runtime.md)。
72
+ `QWEN_*`、allowlist 和 Provider deployment facts 只进入 Agent Server,不进入 Web、浏览器
73
+ Bundle、业务 Tool 或更新报告。缺少 URL、Key 或 Model 时,Runtime 使用
74
+ `UnavailableEngineAdapter` 返回稳定 unavailable,不尝试猜测 Provider 或降级到其它 Engine。
160
75
 
161
- `QWEN_*` 只注入 `agent-server` 容器;Web service 没有这些环境变量。不要增加 `VITE_`
162
- 前缀,也不要把 `.env`、日志、错误响应或截图中的真实 Key 提交到仓库。
76
+ 公网 Provider 必须是 HTTPS 且 Host 精确命中 allowlist。本机、Compose 服务名和私有网络
77
+ Endpoint 可以使用 HTTP;重定向、DNS 解析和最终连接仍受网络策略约束。
163
78
 
164
- 健康检查:
79
+ ## Vision
165
80
 
166
- ```text
167
- GET http://agent-server:8080/health/live
168
- GET http://agent-server:8080/health/ready
169
- GET http://agent-server:8080/health/provider-governance
170
- ```
81
+ Vision 不能只根据模型名称或 Endpoint 可达性开启。部署必须声明:
171
82
 
172
- `ready` 会访问 Provider 的 `/models`。失败只返回稳定错误,不回显 Provider body、
173
- Authorization、Secret、Endpoint query 或底层异常文本。
174
- `provider-governance` 需要内部 Bearer Token,只返回留存、允许/拒绝/脱敏和 TTL 清理
175
- 聚合,不返回 Run ID、prompt 或正文。
176
-
177
- ## 字段治理迁移
178
-
179
- 启用 `providerEgress.mode=configured-endpoint` 的既有业务 Operation 必须同时新增
180
- `providerDataPolicy`。升级后缺少策略会在 Manifest Composition 阶段以
181
- `Provider 字段发送 allowlist 缺失` fail fast,不会静默发送或降级放行。
182
-
183
- 迁移时先枚举业务 input schema 中确实需要出境的最小 JSON Pointer;为每个字段声明
184
- 分类与 `reject/redact`。再枚举 outbound envelope:无 Tool 的单轮问答通常只需要
185
- `instructions` 和 `user-prompt`;Tool schema、模型上一轮 Tool Call 和 Tool result
186
- 分别需要 `tool-definitions`、`provider-output`、`tool-results`。不要为消除启动错误
187
- 一次性允许全部字段。原始 input 会在进入 `prepare` 前裁剪,因此 Handler 必须只依赖
188
- allowlist 中的字段。
189
-
190
- Agent profile 还必须挂载 `AI_PROVIDER_AUDIT_STORE_PATH`。create-windy Starter 使用
191
- `/app/data/agent/provider-audit.sqlite3` 并复用单副本持久卷;自行维护 Compose 的项目
192
- 需要显式补齐该变量。未配置时 Provider 启动 fail closed,并给出缺失变量名。
193
-
194
- ## Developer-only ADK Web
195
-
196
- ADK Web 使用独立 profile 调试真实 canonical Run。项目先在 project-owned 的
197
- `apps/agent-server/project/adk-web-debug.json` 选择一个文本 Operation:
198
-
199
- ```json
200
- {
201
- "schemaVersion": 1,
202
- "textOperation": {
203
- "key": "your-module.copilot.global",
204
- "dataActorId": "user_dev_admin"
205
- }
206
- }
83
+ ```dotenv
84
+ AI_PROVIDER_CAPABILITIES=text-generation,vision
85
+ AI_PROVIDER_INPUT_MODALITIES=text,image
86
+ AI_PROVIDER_DEPLOYMENT_IDENTITY=windy-deployment-v1_<uuid-v4>
87
+ AI_PROVIDER_RELEASE_DIGEST=sha256:<64-lowercase-hex>
88
+ AI_PROVIDER_READINESS_TTL_SECONDS=60
89
+ AI_PROVIDER_MAX_CONCURRENT_RUNS=1
90
+ AI_PROVIDER_MAX_QUEUE_DEPTH=0
207
91
  ```
208
92
 
209
- 该 v1 接缝只承诺 `{ "question": string } -> { "text": string }`。Operation、Permission、
210
- Feature、Tool、Scope、Provider Policy 和输入输出 Schema 仍由业务 Module Manifest
211
- 声明;`dataActorId` 必须是项目当前存在且启用的开发用户,用于复用真实案件成员关系与
212
- 当前 Scope。Windy 不接受第二份权限、Scope 或 Tool 列表。用户不存在、权限闭包不足、
213
- Operation 未知或不符合文本契约时明确拒绝,不回退成伪造回答。
93
+ Agent Server 以固定合成图片执行 bounded readiness,不读取客户 Artifact。实际 Run 只接受平台
94
+ 签发、当前 Actor 仍可访问的 ArtifactRef;浏览器不能提交任意 URL、宿主路径或 Base64 来绕过
95
+ 存储授权。Vision 输入模态和 Artifact 数量会进入脱敏 Trajectory,图片内容不会进入报表。
214
96
 
215
- 一条命令会同时启动 Server、Tool Sandbox、Agent Server 与 ADK Web:
97
+ ## 持久化与 Engine 兼容
216
98
 
217
- ```bash
218
- bun run dev:adk-web
219
- ```
99
+ 生产 Run 必须使用持久 Store。SQLite 仅支持单副本;多副本必须配置共享 PostgreSQL Store。
100
+ 每个 Run 和 Runtime Report 保存稳定 Engine ID:
220
101
 
221
- 访问地址为 `http://127.0.0.1:8000`。Compose 服务在容器内监听 `0.0.0.0:8000`,
222
- 但端口只发布到宿主机 `127.0.0.1`。启动脚本读取 project-owned JSON,将唯一
223
- Operation Key 与真实开发数据用户注入 Windy-owned `docker-compose.agent-debug.yml`;
224
- 普通 `dev`、`agent` profile 和生产 Compose 均不包含该服务或调试身份。
225
-
226
- 选择 `canonical_debug` 应用后,每条问题由确定性 dispatcher 交给正式
227
- `POST /api/agent/runs`,再读取 SSE 与最终结果:
228
-
229
- - `create-windy` 自动生成独立随机 `ADK_DEBUG_PLATFORM_TOKEN`,无需复制登录 Token;
230
- - Server 只在 `NODE_ENV=development` 且加载调试 Compose Wrapper 时创建专用
231
- `service_adk_debug` 身份;该 Token 只在 canonical Run 路径和只读 debug-session
232
- GET 路径生效,不能访问 Foundation、Admin 或其它 Server API;即使与普通会话 Token
233
- 误碰撞也被视为保留调试凭据,不会回退普通认证;
234
- - Server 每次从用户目录解析 `dataActorId`,复用该用户当前 Scope 和业务成员 ID;只在
235
- 用户本身拥有完整权限闭包时,向 Module 投影该真实用户。核心 Run、Token 和审计主体仍
236
- 是 `service_adk_debug`,不会冒充普通用户会话;
237
- - 专用身份的权限精确收窄到所选 Operation Permission 与其 `allowedToolKeys` 的
238
- Permission 闭包,并在 Tool Host 重新解析用户和复核 Scope;不能切换到其它 Operation;
239
- - ADK Web 容器不读取 `QWEN_*`、Provider Secret、`AGENT_SERVER_INTERNAL_TOKEN`,
240
- 不连接业务 Repository 或 Tool Host;
241
- - 正式 Server 仍签发 Actor、Scope 和短时 Execution Grant,Agent Server 仍按
242
- `allowedToolKeys` 执行并审计;
243
- - SSE 先于结果持久化结束时,Adapter 最多再等待 60 秒并每 500ms 读取同一个 Run
244
- 的结果;只重试明确标记为可重试的 `RUN_CONFLICT`,不会重新创建 Run;
245
- - 事件摘要最多 64 条,单个 SSE frame 最大 64 KiB;流式 `output.delta` 只显示计数,
246
- 客户端边读边压缩,不先把完整事件流保存在内存。
247
-
248
- `safe_debug` 仍保留为不接业务的纯 ADK UI smoke。`canonical_debug` 能验证真实数据、
249
- 模型与 Tool 链,但 ADK Web 显示的是“dispatcher → canonical Run”,不是另一进程内部
250
- 完整的 Prompt/Agent/Workflow 节点图。完整 workflow replay 需要另行定义版本化调试
251
- 协议,不能从当前事件摘要推断。
252
-
253
- ### 业务调试会话 V1
254
-
255
- 业务模块可通过 `ModuleHost.registerDebugSessionProviders()` 把已有会话投影到
256
- `canonical_debug` 的原生 ADK Web 会话列表。该能力是 developer-only 的通用只读
257
- 接缝,不是业务会话 Repository,也不定义 Copilot、案件或其它领域 DTO:
258
-
259
- - Provider 必须以本模块命名空间注册,并绑定至少一个本模块 Agent Operation;
260
- `featureKey` 与 `permissionKey` 必须与绑定 Operation 完全一致,`auditAction` 必须
261
- 已在同一 Manifest 声明。
262
- - `list()` 和 `get()` 只接收 Host 投影的当前业务用户、当前配置的唯一 Operation、
263
- 分页上限、不透明 cursor 与 `AbortSignal`。Provider 应使用稳定 keyset 分页,并在
264
- 自身 Service/Repository 边界内再次执行对象级授权,只返回完成态的 `user` /
265
- `assistant` 文本。
266
- - Server 只向 ADK Web 暴露
267
- `GET /api/agent/debug/sessions/v1` 与
268
- `GET /api/agent/debug/sessions/v1/:sessionId`。两条路径复用专用 Debug Bearer,
269
- 每次请求都重做 License、Feature 与 RBAC Guard;其它 Method 不在 Token 白名单。
270
- - 业务 `sourceId` 只用于 Provider 回查。Host 签发绑定“投影业务用户 + Operation +
271
- Provider + sourceId”的 HMAC 不透明 ID;详情读取先重新 list 并重新授权,再调用
272
- `get()`,不会把可逆 ID、Actor ID、Operation Key、Provider Key 或业务范围 ID
273
- 返回 ADK。
274
- - Provider 每页最多返回 100 个会话,Host 会沿不透明 cursor 读取完成后再交给原生
275
- ADK 列表,不静默丢弃第 101 条及更旧会话;任一分页或 Provider 失败都会拒绝整份
276
- 业务列表,避免把 partial 结果伪装成完整结果。详情最多 64 条消息,单条最多
277
- 16,000 字符,总计最多 128,000 字符。重复条目、循环游标、超界、乱序、未知角色、
278
- 非法时间或 Provider 异常均安全拒绝。
279
-
280
- ADK 2.5 通过官方 `services.py` Service Registry 加载 `windy-debug://v1` composite
281
- Session Service。普通 ADK session 继续保存在进程内 `InMemorySessionService`;业务
282
- 会话在每次详情读取时重新授权并转换为 ADK `Session/Event` 的实时只读投影,不在
283
- ADK 本地固化,也不复制 Tool、Citation、Run ID、内部
284
- Operation 或业务对象标识。平台列表暂时不可用时仍返回普通本地 session;已选择的导入
285
- session 详情不可用时明确失败。
286
-
287
- 导入 session 在 V1 中严格只读:PATCH/rename 与新消息都会在 `append_event()` 拒绝,
288
- 在 canonical Tool 再做一次防御性拒绝;DELETE 只在当前 ADK Web 进程创建本地 tombstone,
289
- 不会删除业务历史。刷新进程后 tombstone 消失。要继续提问必须新建普通本地 ADK
290
- session;由于当前 canonical bridge 输入仍只有 `{ question }`,平台不会把历史文本冒充
291
- 成业务 continuation。真正的历史续问需要后续版本定义通用、受权限治理的高层
292
- Operation 契约。
293
-
294
- ## 客户端协议
295
-
296
- 浏览器继续使用 `@southwind-ai/ai-client` 访问同源 Windy Server:
102
+ - 新 Run:`windy.direct.openai-compatible.v1`;
103
+ - 历史 Run:保留原始 `google.adk.v2` 值,只读兼容。
104
+
105
+ 历史 Run/Event/Result/Report、业务会话和 Client Agent Session 不会因 Engine 迁移而重写。
106
+ 已终止历史 Run 可继续读取。旧 Engine 的中断 Run 不允许由 Direct Engine 从内部状态续跑,
107
+ 会稳定失败并要求创建新 Run,避免跨实现重复执行 Tool 副作用。
108
+
109
+ ## 主站 Run 与 Trajectory
110
+
111
+ 统一入口为 `/admin/system/ai-runtime`。列表、详情和脱敏 Trajectory 同时要求 Feature
112
+ `system.ai-runtime` 与 Permission `system.ai-runtime.read`,并按当前 Actor 数据范围过滤。
113
+
114
+ Trajectory 从 canonical Event 投影,只展示:
115
+
116
+ - Run 开始、Engine ID 和输入模态;
117
+ - Model Attempt/Usage 的安全汇总;
118
+ - Tool Key、审批状态和受控 Artifact 数量;
119
+ - 失败码、取消和唯一终态。
120
+
121
+ 它不展示输入输出正文、Prompt、chain-of-thought、完整 Tool 参数、Secret、内部 Actor ID 或
122
+ Provider 原始 body。越权与不存在统一返回 404,读取会写入关键审计。
123
+
124
+ ## 历史业务会话
125
+
126
+ 业务模块通过 `ModuleHost.registerAgentSessionProviders()` 注册 V1 只读投影。Provider 必须
127
+ 绑定本模块 Manifest 已声明的 Agent Operation;Host 复用该 Operation 的 Feature、Permission
128
+ 和数据范围。主站接口:
297
129
 
298
130
  ```text
299
- POST /api/agent/runs
300
- GET /api/agent/runs/:runId/events
301
- GET /api/agent/runs/:runId/result
302
- POST /api/agent/runs/:runId/cancel
131
+ GET /api/agent/sessions/v1
132
+ GET /api/agent/sessions/v1/:sessionId
303
133
  ```
304
134
 
305
- SSE 事件包括 `output.delta`、`tool.requested`、`tool.completed`、usage,以及唯一一个
306
- `run.completed`、`run.failed` 或 `run.cancelled` 终态。断线后使用已确认 sequence 作为
307
- cursor 恢复;不要重新创建 Run 或重复执行 Tool。
135
+ 接口使用当前登录身份,不接受专用服务 Token。Session ID 是 Host 生成的 opaque HMAC ID,
136
+ 不会暴露 Provider Key 或业务 `sourceId`。列表有界分页,详情每次重新授权;Provider 失败时
137
+ 整份结果 fail closed,不返回可能不完整或跨范围的混合列表。
308
138
 
309
- 运行用量、缓存覆盖、滚动时间范围、数据范围与低基数 Prometheus 指标见
310
- [AI Runtime 用量与运行报表](./agent-runtime-observability.md)。
139
+ 旧 `registerDebugSessionProviders()` 仅作为一个兼容发布周期的 deprecated alias,内部调用
140
+ 同一注册表,不再有独立调试语义。
311
141
 
312
- ## 升级既有 Starter
142
+ ## Client Agent Session 与 PageAgent
313
143
 
314
- 目标 CLI 会一次解析 source 到 target 的连续 recipe,不需要逐个安装中间 CLI。确认
315
- npm registry 已能解析目标 artifact 后,先检查计划,再应用:
144
+ 服务端 Engine 迁移不改变 Client Agent Session。PageAgent 仍通过
145
+ `/api/agent/client-sessions/**` 的短时能力与 Host Auth Adapter 工作,Provider 凭据留在服务端,
146
+ 客户端只获得受当前 Actor、Operation、Tool 和 origin 约束的会话。Client receipt、取消、
147
+ Usage、审计和历史读取继续使用既有 canonical DTO。
316
148
 
317
- ```bash
318
- bunx --bun create-windy@latest update --check
319
- bunx --bun create-windy@latest update
320
- bun install
321
- ```
149
+ PageAgent 是浏览器宿主本地 Loop,不会被服务端 Direct Engine 接管,也不能借此扩展
150
+ Server Operation 的 Tool、Scope 或 Secret。完整契约见
151
+ [Client Agent Session](./client-agent-session.md)。
152
+
153
+ ## 迁移与故障恢复
154
+
155
+ 从 `create-windy@0.6.13` 更新到 `0.6.14` 时,updater 删除未漂移的 Windy-managed ADK
156
+ Compose/脚本;客户修改过的 managed 文件形成冲突。project-owned debug JSON 和普通 `.env`
157
+ 只进入不含值的人工清理报告,不自动删除或改写。
322
158
 
323
- 升级器会更新受管模板文件;本地修改产生冲突时会 fail closed 并保留事务备份,不会静默
324
- 覆盖。升级后按上面的环境变量启用 `agent` profile;`agent-debug` 仍只用于无业务 Tool
325
- 的本机调试。自动化部署应把已审阅的 `latest` 替换为精确版本。
159
+ 详细操作、重复故障和快速恢复见
160
+ [ADK 退役与 Direct Engine 恢复](../operations/adk-retirement.md)。
@@ -0,0 +1,61 @@
1
+ # Agent 写 Tool 审批与恢复
2
+
3
+ `approval: "required"` 是执行协议,不是 Prompt 提示。模型请求写 Tool 后,平台先重新校验当前 Actor、Operation、Feature、Permission、License、Scope 和输入 Schema,再创建 Workflow Work Item;Handler 在审批通过前不会收到调用。
4
+
5
+ ## Manifest
6
+
7
+ ```ts
8
+ {
9
+ key: "case.finding.merge",
10
+ operation: "command",
11
+ approval: "required",
12
+ approvalRoles: [{ code: "case-reviewer", name: "案件审核员" }],
13
+ approvalTimeoutSeconds: 86_400,
14
+ idempotency: "required",
15
+ // permissionKey / featureKey / auditAction / schema / limits ...
16
+ }
17
+ ```
18
+
19
+ 审批 Tool 必须显式声明非空候选角色、正整数等待上限和
20
+ `idempotency: "required"`;查询 Tool 不能要求审批。
21
+
22
+ ## 运行语义
23
+
24
+ 1. Provider 发起 Tool Call。Agent Runtime 以 Run、Tool Key 和规范化参数生成稳定
25
+ `toolCallId`,Provider 重试或 Runtime 恢复不会改变该标识。
26
+ 2. Tool Host 只接受内部认证与平台签发的 Execution Grant,并使用当前服务端 Actor
27
+ 重新执行 Operation 与 Tool Guard。
28
+ 3. `approval=required` 创建持久化 Work Item。Run 发出
29
+ `approval.required(workItemId, toolCallId)` 并进入 `awaiting-approval`。
30
+ 4. Runtime 轮询同一 Tool Call。批准后再次执行全部 Guard 与 Schema 校验;拒绝、取消
31
+ 和超时发出 `approval.resolved`,随后 Run 安全失败,不执行副作用。
32
+ 5. 批准后 Handler 收到 `context.idempotencyKey === toolCallId`。业务写入必须同时使用该
33
+ 键与领域 `expectedVersion`,不能信任模型或浏览器传入的 `approved=true`。
34
+
35
+ Tool Host 对同一进程内的相同 Run/Tool Call 做 single-flight 和结果复用。Agent Run Store
36
+ 加密保存未完成调用上下文;服务重启时以 `run.resumed` 恢复,稳定 Tool Call 标识保证
37
+ 同一审批与业务幂等键被复用。终态后立即清除加密调用上下文。
38
+
39
+ ## 事件与错误
40
+
41
+ - `approval.required`
42
+ - `approval.resolved`,`outcome` 为 `approved`、`rejected`、`cancelled` 或
43
+ `timed-out`
44
+ - `tool.completed`
45
+ - 唯一 `run.completed`、`run.failed` 或 `run.cancelled`
46
+
47
+ 内部审批响应使用稳定代码 `APPROVAL_REQUIRED`、`APPROVAL_REJECTED`、
48
+ `APPROVAL_CANCELLED`、`APPROVAL_TIMED_OUT` 和 `APPROVAL_UNAVAILABLE`,不透传
49
+ Workflow 或业务异常正文。
50
+
51
+ ## 部署
52
+
53
+ 生产 Agent Store 必须配置独立的至少 32 字节密钥:
54
+
55
+ ```dotenv
56
+ AGENT_RUN_STORE_PATH=/app/data/agent/runs.sqlite3
57
+ AGENT_RUN_ENCRYPTION_SECRET=
58
+ ```
59
+
60
+ 密钥丢失时未完成 Run fail closed,不能以明文回退。当前 SQLite Store 是单副本恢复面;
61
+ 多副本共享 Store、不可变 Release、评估和完整观测关联见 Agent 生产运行文档。
@@ -0,0 +1,50 @@
1
+ # Actor-aware 后台 AI Operation
2
+
3
+ ## 适用范围
4
+
5
+ 业务模块可以在 Durable Handler 中调用本模块 Manifest 已声明的、无 Tool 的 Agent
6
+ Operation。首个用例是浏览器关闭后继续生成 Copilot 滚动摘要。该 Port 不替代业务会话、
7
+ 消息、摘要版本或结果写入 Repository。
8
+
9
+ `system.agent` 因此依赖 `system.scheduler`。没有启用 AI Runtime 时,普通业务和任务
10
+ Worker 仍可启动;调用后台 AI Port 会得到稳定的
11
+ `AI_OPERATION_UNAVAILABLE`。
12
+
13
+ ## SDK
14
+
15
+ `ModuleDurableHandlerContext.ai.enqueueOperation()` 只接受:
16
+
17
+ - `operationKey`:必须属于当前模块;
18
+ - `input`:最小 JSON 输入,仍执行 Manifest allowlist 与 DLP;
19
+ - `idempotencyKey`:由业务来源和版本组成的稳定幂等键;
20
+ - 可选 `timeoutSeconds`:1 至 900 秒。
21
+
22
+ 返回 `{ runId, output }`。业务应在同一事务中用会话或摘要的 expected-version 写入结果,
23
+ 防止较旧任务覆盖用户已经更新的摘要。
24
+
25
+ ## 授权和恢复
26
+
27
+ Job 提交时,宿主保存当前 Actor 与授权范围快照。每次执行、重试和租约恢复都会重新解析
28
+ 当前 Actor,并检查范围未变化。实际创建或重新连接 Run 时还会重新执行 Operation 的
29
+ Feature、Permission、License、Provider 数据策略、出网策略、输入/输出上限和审计。
30
+
31
+ 业务模块不能传入 Actor,不能跨模块调用 Operation,也不能接触 Provider Secret、
32
+ Execution Grant、Remote Runtime 或平台 Repository。
33
+
34
+ 后台 Operation 必须声明 `allowedToolKeys: []`。这样租约丢失或任务重试只会通过相同
35
+ 幂等键恢复同一个 Run,不会扩大写 Tool 的重复副作用窗口。
36
+
37
+ ## 状态与错误
38
+
39
+ Durable Handler 等待同一 Run 的终态:
40
+
41
+ - `completed`:读取受控 JSON 结果;
42
+ - `failed`:返回 `AI_OPERATION_FAILED`,保留安全的 retryable 语义;
43
+ - `cancelled`:返回不可重试的 `AI_OPERATION_CANCELLED`;
44
+ - 超时:请求取消远端 Run,返回可重试的 `AI_OPERATION_TIMEOUT`;
45
+ - 权限、模块或 Tool 约束不满足:返回不可重试的
46
+ `AI_OPERATION_DENIED`。
47
+
48
+ 平台服务重启后,Run 授权绑定和 Agent Store 都从 PostgreSQL 恢复。Worker 重试使用相同
49
+ 幂等键,因此不会新建 Run。租约丢失时不主动取消远端 Run,后继 Worker 可以继续恢复;
50
+ 用户取消或显式超时才请求远端取消。