create-windy 0.6.11 → 0.6.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/dist/cli.js +580 -269
  2. package/package.json +1 -1
  3. package/template/.agents/skills/windy-business-module/SKILL.md +98 -70
  4. package/template/.windy-template.json +3 -3
  5. package/template/AGENTS.md +3 -6
  6. package/template/apps/agent-server/Dockerfile +2 -3
  7. package/template/apps/agent-server/README.md +38 -54
  8. package/template/apps/agent-server/pyproject.toml +0 -1
  9. package/template/apps/agent-server/src/southwind_agent_server/app.py +4 -2
  10. package/template/apps/agent-server/src/southwind_agent_server/attempt_context.py +191 -0
  11. package/template/apps/agent-server/src/southwind_agent_server/attempt_context_projection.py +203 -0
  12. package/template/apps/agent-server/src/southwind_agent_server/client_completion_contracts.py +61 -0
  13. package/template/apps/agent-server/src/southwind_agent_server/client_completion_governance.py +82 -0
  14. package/template/apps/agent-server/src/southwind_agent_server/client_completion_routes.py +121 -0
  15. package/template/apps/agent-server/src/southwind_agent_server/client_completion_runtime.py +158 -0
  16. package/template/apps/agent-server/src/southwind_agent_server/context_message_digest.py +24 -0
  17. package/template/apps/agent-server/src/southwind_agent_server/context_version_contracts.py +71 -0
  18. package/template/apps/agent-server/src/southwind_agent_server/context_version_port.py +307 -0
  19. package/template/apps/agent-server/src/southwind_agent_server/contracts.py +39 -0
  20. package/template/apps/agent-server/src/southwind_agent_server/deterministic.py +2 -0
  21. package/template/apps/agent-server/src/southwind_agent_server/engine.py +9 -1
  22. package/template/apps/agent-server/src/southwind_agent_server/engine_identity.py +2 -0
  23. package/template/apps/agent-server/src/southwind_agent_server/fingerprint.py +15 -0
  24. package/template/apps/agent-server/src/southwind_agent_server/health_routes.py +37 -3
  25. package/template/apps/agent-server/src/southwind_agent_server/openai_engine.py +46 -26
  26. package/template/apps/agent-server/src/southwind_agent_server/openai_engine_validation.py +32 -0
  27. package/template/apps/agent-server/src/southwind_agent_server/openai_provider.py +7 -0
  28. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_insert.py +5 -2
  29. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_queries.py +1 -0
  30. package/template/apps/agent-server/src/southwind_agent_server/postgres_report_store.py +6 -1
  31. package/template/apps/agent-server/src/southwind_agent_server/postgres_store.py +3 -2
  32. package/template/apps/agent-server/src/southwind_agent_server/postgres_store_backend.py +1 -0
  33. package/template/apps/agent-server/src/southwind_agent_server/provider_governance.py +21 -0
  34. package/template/apps/agent-server/src/southwind_agent_server/report_lifecycle.py +2 -1
  35. package/template/apps/agent-server/src/southwind_agent_server/report_presenter.py +1 -0
  36. package/template/apps/agent-server/src/southwind_agent_server/report_routes.py +7 -1
  37. package/template/apps/agent-server/src/southwind_agent_server/report_store.py +10 -56
  38. package/template/apps/agent-server/src/southwind_agent_server/report_store_protocol.py +75 -0
  39. package/template/apps/agent-server/src/southwind_agent_server/report_types.py +9 -2
  40. package/template/apps/agent-server/src/southwind_agent_server/runtime_budget.py +74 -0
  41. package/template/apps/agent-server/src/southwind_agent_server/runtime_factory.py +11 -3
  42. package/template/apps/agent-server/src/southwind_agent_server/service.py +41 -65
  43. package/template/apps/agent-server/src/southwind_agent_server/service_control.py +64 -0
  44. package/template/apps/agent-server/src/southwind_agent_server/service_execution.py +3 -0
  45. package/template/apps/agent-server/src/southwind_agent_server/sqlite_errors.py +2 -0
  46. package/template/apps/agent-server/src/southwind_agent_server/sqlite_schema.py +9 -1
  47. package/template/apps/agent-server/src/southwind_agent_server/sqlite_store.py +6 -5
  48. package/template/apps/agent-server/src/southwind_agent_server/store.py +2 -0
  49. package/template/apps/agent-server/src/southwind_agent_server/trajectory.py +137 -0
  50. package/template/apps/agent-server/src/southwind_agent_server/unavailable_engine.py +58 -0
  51. package/template/apps/agent-server/tests/test_api.py +30 -11
  52. package/template/apps/agent-server/tests/test_client_completion.py +230 -0
  53. package/template/apps/agent-server/tests/test_provider_attempt_reporting.py +12 -24
  54. package/template/apps/agent-server/tests/test_report_resilience.py +2 -0
  55. package/template/apps/agent-server/tests/test_report_routes.py +58 -1
  56. package/template/apps/agent-server/tests/test_report_summary_parity.py +1 -0
  57. package/template/apps/agent-server/tests/test_run_capacity.py +2 -0
  58. package/template/apps/agent-server/tests/test_runtime_factory_readiness.py +18 -3
  59. package/template/apps/agent-server/tests/test_trajectory.py +91 -0
  60. package/template/apps/agent-server/uv.lock +0 -259
  61. package/template/apps/server/Dockerfile +9 -4
  62. package/template/apps/server/src/agent/actor-projection-audit.ts +6 -0
  63. package/template/apps/server/src/agent/agent-run-delegation-policy.ts +115 -0
  64. package/template/apps/server/src/agent/agent-session-bootstrap.ts +23 -0
  65. package/template/apps/server/src/agent/{debug-session-facade-provider-failure.test.ts → agent-session-facade-provider-failure.test.ts} +24 -33
  66. package/template/apps/server/src/agent/{debug-session-facade.test.ts → agent-session-facade.test.ts} +34 -45
  67. package/template/apps/server/src/agent/{debug-session-facade.ts → agent-session-facade.ts} +50 -57
  68. package/template/apps/server/src/agent/{debug-session-id.test.ts → agent-session-id.test.ts} +5 -5
  69. package/template/apps/server/src/agent/{debug-session-id.ts → agent-session-id.ts} +7 -7
  70. package/template/apps/server/src/agent/{debug-session-provider-reader.ts → agent-session-provider-reader.ts} +18 -15
  71. package/template/apps/server/src/agent/{debug-session-routes.test.ts → agent-session-routes.test.ts} +16 -16
  72. package/template/apps/server/src/agent/{debug-session-routes.ts → agent-session-routes.ts} +12 -12
  73. package/template/apps/server/src/agent/{debug-session-validation.ts → agent-session-validation.ts} +13 -11
  74. package/template/apps/server/src/agent/client-session/authorization.ts +47 -0
  75. package/template/apps/server/src/agent/client-session/bootstrap.ts +96 -0
  76. package/template/apps/server/src/agent/client-session/capabilities.ts +19 -0
  77. package/template/apps/server/src/agent/client-session/completion.ts +299 -0
  78. package/template/apps/server/src/agent/client-session/contracts.ts +136 -0
  79. package/template/apps/server/src/agent/client-session/digest.ts +39 -0
  80. package/template/apps/server/src/agent/client-session/drizzle-repository.integration.test.ts +170 -0
  81. package/template/apps/server/src/agent/client-session/drizzle-repository.ts +345 -0
  82. package/template/apps/server/src/agent/client-session/errors.ts +28 -0
  83. package/template/apps/server/src/agent/client-session/fixtures/page-agent-1.12.2-request.json +52 -0
  84. package/template/apps/server/src/agent/client-session/host-auth.test.ts +144 -0
  85. package/template/apps/server/src/agent/client-session/host-auth.ts +110 -0
  86. package/template/apps/server/src/agent/client-session/manifest-admission.ts +240 -0
  87. package/template/apps/server/src/agent/client-session/openai-stream.ts +123 -0
  88. package/template/apps/server/src/agent/client-session/presentation.ts +46 -0
  89. package/template/apps/server/src/agent/client-session/remote-provider.test.ts +144 -0
  90. package/template/apps/server/src/agent/client-session/remote-provider.ts +216 -0
  91. package/template/apps/server/src/agent/client-session/repository.ts +225 -0
  92. package/template/apps/server/src/agent/client-session/request.test.ts +69 -0
  93. package/template/apps/server/src/agent/client-session/request.ts +289 -0
  94. package/template/apps/server/src/agent/client-session/revocation.ts +23 -0
  95. package/template/apps/server/src/agent/client-session/routes.ts +315 -0
  96. package/template/apps/server/src/agent/client-session/runtime-audit.ts +42 -0
  97. package/template/apps/server/src/agent/client-session/service.test-support.ts +226 -0
  98. package/template/apps/server/src/agent/client-session/service.test.ts +268 -0
  99. package/template/apps/server/src/agent/client-session/service.ts +346 -0
  100. package/template/apps/server/src/agent/context-memory/attempt-context-contracts.ts +60 -0
  101. package/template/apps/server/src/agent/context-memory/authoritative-source-registry.ts +127 -0
  102. package/template/apps/server/src/agent/context-memory/context-builder.test.ts +160 -0
  103. package/template/apps/server/src/agent/context-memory/context-builder.ts +184 -0
  104. package/template/apps/server/src/agent/context-memory/contracts.ts +284 -0
  105. package/template/apps/server/src/agent/context-memory/digest.ts +22 -0
  106. package/template/apps/server/src/agent/context-memory/memory-authorization.ts +82 -0
  107. package/template/apps/server/src/agent/context-memory/memory-content.ts +69 -0
  108. package/template/apps/server/src/agent/context-memory/memory-object-registry.ts +87 -0
  109. package/template/apps/server/src/agent/context-memory/memory-projector-contracts.ts +121 -0
  110. package/template/apps/server/src/agent/context-memory/memory-projector-validation.ts +155 -0
  111. package/template/apps/server/src/agent/context-memory/memory-projector.test.ts +19 -0
  112. package/template/apps/server/src/agent/context-memory/memory-projector.ts +259 -0
  113. package/template/apps/server/src/agent/context-memory/memory-retrieval-policy.ts +195 -0
  114. package/template/apps/server/src/agent/context-memory/memory-retriever.test.ts +339 -0
  115. package/template/apps/server/src/agent/context-memory/memory-retriever.ts +184 -0
  116. package/template/apps/server/src/agent/context-memory/search-provider-port.test.ts +62 -0
  117. package/template/apps/server/src/agent/context-memory/search-provider-port.ts +75 -0
  118. package/template/apps/server/src/agent/context-memory/working-context-expiry.ts +95 -0
  119. package/template/apps/server/src/agent/context-message-recovery.ts +23 -0
  120. package/template/apps/server/src/agent/context-version-routes.ts +241 -0
  121. package/template/apps/server/src/agent/context-version-runtime.ts +332 -0
  122. package/template/apps/server/src/agent/context-version-support.ts +93 -0
  123. package/template/apps/server/src/agent/context-version-validation.ts +118 -0
  124. package/template/apps/server/src/agent/drizzle-run-binding-repository.ts +11 -0
  125. package/template/apps/server/src/agent/idempotency-key.ts +9 -1
  126. package/template/apps/server/src/agent/memory-runtime-adapters.ts +266 -0
  127. package/template/apps/server/src/agent/memory-scope-binding.ts +14 -0
  128. package/template/apps/server/src/agent/module-ai-port-factory.ts +41 -0
  129. package/template/apps/server/src/agent/provider-input-governance.ts +19 -0
  130. package/template/apps/server/src/agent/remote-runtime-response.ts +162 -0
  131. package/template/apps/server/src/agent/remote-runtime.ts +53 -153
  132. package/template/apps/server/src/agent/run-audit.ts +2 -2
  133. package/template/apps/server/src/agent/run-authorization.test.ts +27 -0
  134. package/template/apps/server/src/agent/run-authorization.ts +60 -1
  135. package/template/apps/server/src/agent/run-binding-repository.ts +9 -0
  136. package/template/apps/server/src/agent/run-browser-authorization.ts +79 -0
  137. package/template/apps/server/src/agent/run-contracts.ts +23 -0
  138. package/template/apps/server/src/agent/run-facade.ts +139 -139
  139. package/template/apps/server/src/agent/run-failure-cleanup.ts +58 -0
  140. package/template/apps/server/src/agent/run-operation-policy.ts +20 -0
  141. package/template/apps/server/src/agent/run-route-input.ts +19 -1
  142. package/template/apps/server/src/agent/run-routes.ts +133 -5
  143. package/template/apps/server/src/agent/run-runtime-request.ts +89 -0
  144. package/template/apps/server/src/agent/run-session-authorization.ts +95 -0
  145. package/template/apps/server/src/agent/run-start-preparation.ts +71 -0
  146. package/template/apps/server/src/agent/runtime-bootstrap-input.ts +42 -0
  147. package/template/apps/server/src/agent/runtime-bootstrap-report.test.ts +53 -1
  148. package/template/apps/server/src/agent/runtime-bootstrap.ts +114 -111
  149. package/template/apps/server/src/agent/runtime-tool-composition.ts +38 -0
  150. package/template/apps/server/src/agent/session-context-source-support.ts +38 -0
  151. package/template/apps/server/src/agent/session-context-source.ts +346 -0
  152. package/template/apps/server/src/agent/session-invalidation/contracts.ts +217 -0
  153. package/template/apps/server/src/agent/session-invalidation/dispatcher.contract.test.ts +333 -0
  154. package/template/apps/server/src/agent/session-invalidation/dispatcher.ts +205 -0
  155. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.test.ts +127 -0
  156. package/template/apps/server/src/agent/session-invalidation/module-authoritative-producer.ts +202 -0
  157. package/template/apps/server/src/agent/session-invalidation/read-guard.ts +39 -0
  158. package/template/apps/server/src/agent/session-invalidation/runtime.ts +69 -0
  159. package/template/apps/server/src/agent/session-invalidation/test-envelopes.ts +24 -0
  160. package/template/apps/server/src/agent/session-invalidation/worker.contract.test.ts +135 -0
  161. package/template/apps/server/src/agent/session-invalidation/worker.ts +76 -0
  162. package/template/apps/server/src/agent/session-log/checkpoint-digest.ts +36 -0
  163. package/template/apps/server/src/agent/session-log/domain.ts +123 -0
  164. package/template/apps/server/src/agent/session-log/events.ts +229 -0
  165. package/template/apps/server/src/agent/session-log/history.ts +143 -0
  166. package/template/apps/server/src/agent/session-log/in-memory-repository.ts +340 -0
  167. package/template/apps/server/src/agent/session-log/lifecycle.ts +67 -0
  168. package/template/apps/server/src/agent/session-log/replay-policy.ts +76 -0
  169. package/template/apps/server/src/agent/session-log/repository.ts +103 -0
  170. package/template/apps/server/src/agent/session-log/service.ts +349 -0
  171. package/template/apps/server/src/agent/session-log/session-log.test.ts +282 -0
  172. package/template/apps/server/src/agent/session-persistence/drizzle-context-memory.ts +348 -0
  173. package/template/apps/server/src/agent/session-persistence/drizzle-governed-context.ts +328 -0
  174. package/template/apps/server/src/agent/session-persistence/drizzle-invalidation-outbox.ts +260 -0
  175. package/template/apps/server/src/agent/session-persistence/drizzle-memory-projection-deletion.ts +56 -0
  176. package/template/apps/server/src/agent/session-persistence/drizzle-run-projection-receipt.ts +80 -0
  177. package/template/apps/server/src/agent/session-persistence/drizzle-session-fork.ts +147 -0
  178. package/template/apps/server/src/agent/session-persistence/drizzle-session-list.ts +24 -0
  179. package/template/apps/server/src/agent/session-persistence/drizzle-session-mapping.ts +154 -0
  180. package/template/apps/server/src/agent/session-persistence/drizzle-session-mutations.ts +64 -0
  181. package/template/apps/server/src/agent/session-persistence/drizzle-session-repository.ts +335 -0
  182. package/template/apps/server/src/agent/session-persistence/invalidation-projections.ts +229 -0
  183. package/template/apps/server/src/agent/session-persistence/payload-codec.ts +90 -0
  184. package/template/apps/server/src/agent/session-projection-access.ts +155 -0
  185. package/template/apps/server/src/agent/session-projection-bootstrap.ts +87 -0
  186. package/template/apps/server/src/agent/session-projection-errors.ts +22 -0
  187. package/template/apps/server/src/agent/session-projection-facade.ts +349 -0
  188. package/template/apps/server/src/agent/session-projection-routes.ts +215 -0
  189. package/template/apps/server/src/agent/session-projection-view.ts +137 -0
  190. package/template/apps/server/src/agent/session-result-memory.ts +228 -0
  191. package/template/apps/server/src/agent/session-run-lifecycle.ts +85 -0
  192. package/template/apps/server/src/agent/session-run-link-contracts.ts +56 -0
  193. package/template/apps/server/src/agent/session-run-link.ts +343 -0
  194. package/template/apps/server/src/agent/session-run-recovery.ts +16 -0
  195. package/template/apps/server/src/agent/session-runtime-composition.ts +265 -0
  196. package/template/apps/server/src/agent/session-source-chain-authorizer.ts +141 -0
  197. package/template/apps/server/src/agent/session-terminal-reconciler.ts +100 -0
  198. package/template/apps/server/src/agent/session-turn-state.ts +49 -0
  199. package/template/apps/server/src/agent/tool-audit.ts +3 -3
  200. package/template/apps/server/src/agent/tool-execution-receipt.ts +13 -0
  201. package/template/apps/server/src/agent/tool-host.ts +41 -4
  202. package/template/apps/server/src/agent/tool-registry-composition.ts +52 -0
  203. package/template/apps/server/src/agent/tool-registry.test.ts +5 -5
  204. package/template/apps/server/src/agent/tool-registry.ts +53 -59
  205. package/template/apps/server/src/agent/unavailable-routes.ts +49 -5
  206. package/template/apps/server/src/agent/workflow-durable-runtime-input.ts +32 -0
  207. package/template/apps/server/src/agent/workflow-runtime-bootstrap.ts +59 -0
  208. package/template/apps/server/src/agent-workflow/adapter-dispatch.ts +148 -0
  209. package/template/apps/server/src/agent-workflow/approval-node-adapter.ts +77 -0
  210. package/template/apps/server/src/agent-workflow/artifact-access-error.ts +9 -0
  211. package/template/apps/server/src/agent-workflow/artifact-node-adapter.ts +67 -0
  212. package/template/apps/server/src/agent-workflow/artifact-policy.ts +71 -0
  213. package/template/apps/server/src/agent-workflow/artifact-source-authorization.ts +85 -0
  214. package/template/apps/server/src/agent-workflow/authorization.ts +238 -0
  215. package/template/apps/server/src/agent-workflow/budget-ledger.ts +118 -0
  216. package/template/apps/server/src/agent-workflow/budget-validation.ts +305 -0
  217. package/template/apps/server/src/agent-workflow/canonical-agent-run-binding.ts +17 -0
  218. package/template/apps/server/src/agent-workflow/canonical-agent-run-evidence.ts +142 -0
  219. package/template/apps/server/src/agent-workflow/canonical-agent-run-port.ts +304 -0
  220. package/template/apps/server/src/agent-workflow/canonical-agent-run-remote.ts +64 -0
  221. package/template/apps/server/src/agent-workflow/canonical-json.ts +16 -0
  222. package/template/apps/server/src/agent-workflow/command-drive.ts +195 -0
  223. package/template/apps/server/src/agent-workflow/command-error.ts +9 -0
  224. package/template/apps/server/src/agent-workflow/command-facade.ts +290 -0
  225. package/template/apps/server/src/agent-workflow/command-input.ts +133 -0
  226. package/template/apps/server/src/agent-workflow/condition-node-adapter.ts +69 -0
  227. package/template/apps/server/src/agent-workflow/definition-budget-validation.ts +41 -0
  228. package/template/apps/server/src/agent-workflow/definition-node-validation.ts +197 -0
  229. package/template/apps/server/src/agent-workflow/definition-validation.ts +198 -0
  230. package/template/apps/server/src/agent-workflow/delegated-tool-authorization.ts +15 -0
  231. package/template/apps/server/src/agent-workflow/delegation-child-delivery.ts +129 -0
  232. package/template/apps/server/src/agent-workflow/delegation-execution-authorization.ts +218 -0
  233. package/template/apps/server/src/agent-workflow/delegation-policy-validation.ts +253 -0
  234. package/template/apps/server/src/agent-workflow/delegation-policy.ts +179 -0
  235. package/template/apps/server/src/agent-workflow/drizzle-artifact-port.ts +211 -0
  236. package/template/apps/server/src/agent-workflow/drizzle-artifact-support.ts +152 -0
  237. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-settlement.ts +271 -0
  238. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger-support.ts +226 -0
  239. package/template/apps/server/src/agent-workflow/drizzle-budget-ledger.ts +189 -0
  240. package/template/apps/server/src/agent-workflow/drizzle-cancellation-reconcile.ts +177 -0
  241. package/template/apps/server/src/agent-workflow/drizzle-delegated-tool-authorization.ts +155 -0
  242. package/template/apps/server/src/agent-workflow/drizzle-delegation-completion.ts +84 -0
  243. package/template/apps/server/src/agent-workflow/drizzle-delegation-lifecycle.ts +139 -0
  244. package/template/apps/server/src/agent-workflow/drizzle-delegation-port.ts +288 -0
  245. package/template/apps/server/src/agent-workflow/drizzle-effect-command-fence.ts +333 -0
  246. package/template/apps/server/src/agent-workflow/drizzle-evaluation-repository.ts +214 -0
  247. package/template/apps/server/src/agent-workflow/drizzle-event-validation.ts +43 -0
  248. package/template/apps/server/src/agent-workflow/drizzle-recovery-admission.ts +115 -0
  249. package/template/apps/server/src/agent-workflow/drizzle-repository-lineage.ts +103 -0
  250. package/template/apps/server/src/agent-workflow/drizzle-repository-mappers.ts +317 -0
  251. package/template/apps/server/src/agent-workflow/drizzle-repository-write.ts +311 -0
  252. package/template/apps/server/src/agent-workflow/drizzle-repository.ts +285 -0
  253. package/template/apps/server/src/agent-workflow/drizzle-side-effect-repository.ts +83 -0
  254. package/template/apps/server/src/agent-workflow/drizzle-write-support.ts +101 -0
  255. package/template/apps/server/src/agent-workflow/durable-continuation-authorization.ts +109 -0
  256. package/template/apps/server/src/agent-workflow/durable-continuation-driver.ts +97 -0
  257. package/template/apps/server/src/agent-workflow/durable-continuation-runtime.ts +173 -0
  258. package/template/apps/server/src/agent-workflow/durable-job-node-adapter.ts +106 -0
  259. package/template/apps/server/src/agent-workflow/effect-command-fence.ts +250 -0
  260. package/template/apps/server/src/agent-workflow/evaluation-evidence-coordinates.ts +225 -0
  261. package/template/apps/server/src/agent-workflow/evaluation-evidence-metrics.ts +280 -0
  262. package/template/apps/server/src/agent-workflow/evaluation-evidence-reader.ts +326 -0
  263. package/template/apps/server/src/agent-workflow/evaluation-metrics-validation.ts +85 -0
  264. package/template/apps/server/src/agent-workflow/evaluation-projection.ts +70 -0
  265. package/template/apps/server/src/agent-workflow/evaluation-repository.ts +134 -0
  266. package/template/apps/server/src/agent-workflow/evaluation-service.ts +292 -0
  267. package/template/apps/server/src/agent-workflow/evaluation-tool-registration.ts +95 -0
  268. package/template/apps/server/src/agent-workflow/evaluation-validation.ts +331 -0
  269. package/template/apps/server/src/agent-workflow/event-validation.ts +277 -0
  270. package/template/apps/server/src/agent-workflow/governed-tool-schema.ts +55 -0
  271. package/template/apps/server/src/agent-workflow/in-memory-evaluation-repository.ts +123 -0
  272. package/template/apps/server/src/agent-workflow/in-memory-mutation-validation.ts +154 -0
  273. package/template/apps/server/src/agent-workflow/in-memory-repository-support.ts +277 -0
  274. package/template/apps/server/src/agent-workflow/in-memory-repository.ts +339 -0
  275. package/template/apps/server/src/agent-workflow/in-memory-side-effect-store.ts +78 -0
  276. package/template/apps/server/src/agent-workflow/input-receipt.ts +55 -0
  277. package/template/apps/server/src/agent-workflow/model-node-adapter.ts +86 -0
  278. package/template/apps/server/src/agent-workflow/model-pricing-catalog.ts +215 -0
  279. package/template/apps/server/src/agent-workflow/node-adapter-factory.ts +83 -0
  280. package/template/apps/server/src/agent-workflow/node-adapters.ts +50 -0
  281. package/template/apps/server/src/agent-workflow/node-execution-ports.ts +185 -0
  282. package/template/apps/server/src/agent-workflow/node-input-receipt-port.ts +42 -0
  283. package/template/apps/server/src/agent-workflow/node-result-receipt.ts +50 -0
  284. package/template/apps/server/src/agent-workflow/platform-node-adapter-support.ts +185 -0
  285. package/template/apps/server/src/agent-workflow/platform-node-adapters.ts +256 -0
  286. package/template/apps/server/src/agent-workflow/platform-node-approval.ts +146 -0
  287. package/template/apps/server/src/agent-workflow/platform-node-direct-adapters.ts +65 -0
  288. package/template/apps/server/src/agent-workflow/production-delegation-scope.ts +58 -0
  289. package/template/apps/server/src/agent-workflow/production-node-policies.ts +62 -0
  290. package/template/apps/server/src/agent-workflow/query-service.ts +198 -0
  291. package/template/apps/server/src/agent-workflow/release.ts +96 -0
  292. package/template/apps/server/src/agent-workflow/repository.ts +157 -0
  293. package/template/apps/server/src/agent-workflow/routes.ts +307 -0
  294. package/template/apps/server/src/agent-workflow/runtime-composition.ts +308 -0
  295. package/template/apps/server/src/agent-workflow/scheduler-cancellation-reconcile.ts +253 -0
  296. package/template/apps/server/src/agent-workflow/scheduler-cancellation-support.ts +145 -0
  297. package/template/apps/server/src/agent-workflow/scheduler-cancellation.ts +2 -0
  298. package/template/apps/server/src/agent-workflow/scheduler-context.ts +85 -0
  299. package/template/apps/server/src/agent-workflow/scheduler-deadline.ts +65 -0
  300. package/template/apps/server/src/agent-workflow/scheduler-effect-result.ts +205 -0
  301. package/template/apps/server/src/agent-workflow/scheduler-execution-convergence.ts +174 -0
  302. package/template/apps/server/src/agent-workflow/scheduler-execution.ts +211 -0
  303. package/template/apps/server/src/agent-workflow/scheduler-failure.ts +102 -0
  304. package/template/apps/server/src/agent-workflow/scheduler-join-cancellation.ts +282 -0
  305. package/template/apps/server/src/agent-workflow/scheduler-mutation-queue.ts +13 -0
  306. package/template/apps/server/src/agent-workflow/scheduler-node-timeout.ts +139 -0
  307. package/template/apps/server/src/agent-workflow/scheduler-parallel-dispatch.ts +99 -0
  308. package/template/apps/server/src/agent-workflow/scheduler-recovery-activation.ts +63 -0
  309. package/template/apps/server/src/agent-workflow/scheduler-recovery-budget.ts +41 -0
  310. package/template/apps/server/src/agent-workflow/scheduler-recovery-effect.ts +331 -0
  311. package/template/apps/server/src/agent-workflow/scheduler-recovery-event-time.ts +26 -0
  312. package/template/apps/server/src/agent-workflow/scheduler-recovery-failed-policy.ts +129 -0
  313. package/template/apps/server/src/agent-workflow/scheduler-recovery-node.ts +208 -0
  314. package/template/apps/server/src/agent-workflow/scheduler-recovery-policy-convergence.ts +140 -0
  315. package/template/apps/server/src/agent-workflow/scheduler-reservation-convergence.ts +40 -0
  316. package/template/apps/server/src/agent-workflow/scheduler-side-effect-execution.ts +249 -0
  317. package/template/apps/server/src/agent-workflow/scheduler-support.ts +235 -0
  318. package/template/apps/server/src/agent-workflow/scheduler-workflow-cancellation.ts +296 -0
  319. package/template/apps/server/src/agent-workflow/scheduler.ts +289 -0
  320. package/template/apps/server/src/agent-workflow/service-completion.ts +102 -0
  321. package/template/apps/server/src/agent-workflow/service-mutation-identity.ts +94 -0
  322. package/template/apps/server/src/agent-workflow/service-node-admission.ts +36 -0
  323. package/template/apps/server/src/agent-workflow/service-node-run-update.ts +55 -0
  324. package/template/apps/server/src/agent-workflow/service-recovery-events.ts +38 -0
  325. package/template/apps/server/src/agent-workflow/service-recovery.ts +264 -0
  326. package/template/apps/server/src/agent-workflow/service-retry.ts +86 -0
  327. package/template/apps/server/src/agent-workflow/service-run-command.ts +131 -0
  328. package/template/apps/server/src/agent-workflow/service-state-error.ts +21 -0
  329. package/template/apps/server/src/agent-workflow/service-state-invariants.ts +44 -0
  330. package/template/apps/server/src/agent-workflow/service-support.ts +152 -0
  331. package/template/apps/server/src/agent-workflow/service.ts +307 -0
  332. package/template/apps/server/src/agent-workflow/side-effect-state.ts +226 -0
  333. package/template/apps/server/src/agent-workflow/state-machine.ts +321 -0
  334. package/template/apps/server/src/agent-workflow/subagent-node-adapter.ts +229 -0
  335. package/template/apps/server/src/agent-workflow/tool-node-adapter.ts +259 -0
  336. package/template/apps/server/src/agent-workflow/usage.ts +149 -0
  337. package/template/apps/server/src/agent-workflow/wait-signal-service.ts +147 -0
  338. package/template/apps/server/src/agent-workflow/workflow-artifact-token.ts +109 -0
  339. package/template/apps/server/src/agent-workflow/workflow-value-validation.ts +101 -0
  340. package/template/apps/server/src/agent-workflow/workspace-policy.ts +109 -0
  341. package/template/apps/server/src/ai-runtime-report/remote-parser.ts +41 -0
  342. package/template/apps/server/src/ai-runtime-report/service.test.ts +2 -0
  343. package/template/apps/server/src/app/agent-runtime-composition.ts +38 -0
  344. package/template/apps/server/src/app/client-agent-host-auth-binding.ts +10 -0
  345. package/template/apps/server/src/auth/actor-resolver.test.ts +33 -0
  346. package/template/apps/server/src/auth/actor-resolver.ts +6 -1
  347. package/template/apps/server/src/auth/composition.ts +36 -0
  348. package/template/apps/server/src/auth/routes.test-support.ts +2 -0
  349. package/template/apps/server/src/auth/routes.test.ts +18 -0
  350. package/template/apps/server/src/auth/runtime.ts +2 -0
  351. package/template/apps/server/src/auth/service-options.ts +16 -0
  352. package/template/apps/server/src/auth/service.ts +7 -12
  353. package/template/apps/server/src/index.ts +35 -37
  354. package/template/apps/server/src/license/pairing-service.test.ts +1 -1
  355. package/template/apps/server/src/module-host/agent-session-memory-port.ts +91 -0
  356. package/template/apps/server/src/module-host/{debug-session-provider-registration.test.ts → agent-session-provider-registration.test.ts} +42 -17
  357. package/template/apps/server/src/module-host/{debug-session-provider-registration.ts → agent-session-provider-registration.ts} +18 -18
  358. package/template/apps/server/src/module-host/agent-source-invalidation-port.ts +53 -0
  359. package/template/apps/server/src/module-host/http-runtime.ts +14 -0
  360. package/template/apps/server/src/module-host/initialize-contracts.ts +4 -5
  361. package/template/apps/server/src/module-host/initialize.ts +4 -4
  362. package/template/apps/server/src/module-host/request-context.test.ts +5 -5
  363. package/template/apps/server/src/module-host/request-context.ts +8 -0
  364. package/template/apps/server/src/module-host/route-install-context.ts +65 -0
  365. package/template/apps/server/src/module-host/route-installer.ts +11 -56
  366. package/template/apps/server/src/module-host/scoped-host.ts +17 -12
  367. package/template/apps/server/src/module-host/storage-authorization-binding.test.ts +3 -3
  368. package/template/apps/server/src/module-host.ts +3 -5
  369. package/template/apps/server/src/runtime.ts +3 -36
  370. package/template/apps/server/src/storage/routes-stream-cancellation.test.ts +19 -0
  371. package/template/apps/server/src/storage/routes.ts +3 -1
  372. package/template/apps/server/src/system/actor.ts +15 -2
  373. package/template/apps/server/src/system/authorization-invalidation-bridge.ts +30 -0
  374. package/template/apps/server/src/system/authorization-invalidation-composition.ts +36 -0
  375. package/template/apps/server/src/system/drizzle-system.ts +8 -1
  376. package/template/apps/server/src/system/identity-route-config.ts +9 -1
  377. package/template/apps/server/src/system/routes.ts +3 -0
  378. package/template/apps/server/src/system/seed.ts +3 -0
  379. package/template/apps/server/src/system/user-account-policy.ts +91 -0
  380. package/template/apps/web/package.json +1 -0
  381. package/template/apps/web/src/layout/AppSidebar.vue +2 -0
  382. package/template/apps/web/src/pages/system/AgentSessionPage.vue +73 -0
  383. package/template/apps/web/src/pages/system/AgentSessionPage.webtest.ts +66 -0
  384. package/template/apps/web/src/pages/system/AgentWorkflowPage.vue +69 -0
  385. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionDetail.vue +114 -0
  386. package/template/apps/web/src/pages/system/components/agent-session/AgentSessionList.vue +84 -0
  387. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.vue +119 -0
  388. package/template/apps/web/src/pages/system/components/agent-session/ContextVersionPanel.webtest.ts +46 -0
  389. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.vue +163 -0
  390. package/template/apps/web/src/pages/system/components/agent-session/MemoryProjectionPanel.webtest.ts +62 -0
  391. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.vue +71 -0
  392. package/template/apps/web/src/pages/system/components/agent-session/SessionTimeline.webtest.ts +34 -0
  393. package/template/apps/web/src/pages/system/components/agent-session/agent-session-presenter.ts +56 -0
  394. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeCard.vue +39 -0
  395. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowNodeDetail.vue +172 -0
  396. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunDetail.vue +151 -0
  397. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunGraph.vue +96 -0
  398. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunList.vue +100 -0
  399. package/template/apps/web/src/pages/system/components/agent-workflow/WorkflowRunSummary.vue +148 -0
  400. package/template/apps/web/src/pages/system/components/agent-workflow/agent-workflow-presenter.ts +74 -0
  401. package/template/apps/web/src/pages/system/components/agent-workflow/workflow-graph-layout.ts +108 -0
  402. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.vue +9 -0
  403. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunDetailDialog.webtest.ts +22 -0
  404. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeRunTable.webtest.ts +2 -0
  405. package/template/apps/web/src/pages/system/components/ai-runtime/AiRuntimeTrajectory.vue +118 -0
  406. package/template/apps/web/src/pages/system/composables/useAgentSessions.ts +209 -0
  407. package/template/apps/web/src/pages/system/composables/useAgentSessions.webtest.ts +138 -0
  408. package/template/apps/web/src/pages/system/composables/useAgentWorkflowRuns.ts +173 -0
  409. package/template/apps/web/src/router/index.ts +4 -0
  410. package/template/apps/web/src/router/platform-admin-route-bindings.ts +6 -0
  411. package/template/apps/web/src/services/agent-session-api.ts +159 -0
  412. package/template/apps/web/src/services/agent-session-api.webtest.ts +65 -0
  413. package/template/apps/web/src/services/agent-workflow-api.ts +181 -0
  414. package/template/apps/web/src/services/ai-runtime-api.ts +4 -0
  415. package/template/docker-compose.yml +11 -8
  416. package/template/docs/adr/0003-agent-session-event-source.md +3 -0
  417. package/template/docs/architecture/agent-harness.md +464 -0
  418. package/template/docs/architecture/agent-workflow.md +99 -0
  419. package/template/docs/architecture/ai-runtime.md +55 -47
  420. package/template/docs/architecture/module-host.md +4 -3
  421. package/template/docs/operations/adk-retirement.md +98 -0
  422. package/template/docs/operations/agent-session-memory.md +162 -0
  423. package/template/docs/operations/agent-session-troubleshooting.md +196 -0
  424. package/template/docs/operations/agent-workflow-recovery.md +74 -0
  425. package/template/docs/operations/incremental-delivery.md +1 -1
  426. package/template/docs/platform/agent-production-store.md +82 -0
  427. package/template/docs/platform/agent-run-reattachment.md +52 -0
  428. package/template/docs/platform/agent-runtime-observability.md +4 -3
  429. package/template/docs/platform/agent-runtime.md +116 -281
  430. package/template/docs/platform/agent-tool-approval.md +61 -0
  431. package/template/docs/platform/background-ai-operations.md +50 -0
  432. package/template/docs/platform/client-agent-session.md +173 -0
  433. package/template/docs/platform/embedding-ai-runtime.md +94 -0
  434. package/template/docs/platform/platform-authentication.md +5 -8
  435. package/template/package.json +0 -1
  436. package/template/packages/ai-client/index.ts +1 -0
  437. package/template/packages/ai-client/package.json +2 -1
  438. package/template/packages/ai-client/src/agent/client/client.ts +15 -2
  439. package/template/packages/ai-client/src/agent/client/run-protocol.test.ts +39 -25
  440. package/template/packages/ai-client/src/agent/client/types.ts +4 -0
  441. package/template/packages/ai-client/src/agent/contracts/contracts.test.ts +49 -7
  442. package/template/packages/ai-client/src/agent/contracts/events.ts +61 -0
  443. package/template/packages/ai-client/src/agent/contracts/runs.ts +1 -0
  444. package/template/packages/ai-client/src/client-agent/contracts.ts +131 -0
  445. package/template/packages/ai-client/src/client-agent/http.test.ts +60 -0
  446. package/template/packages/ai-client/src/client-agent/http.ts +66 -0
  447. package/template/packages/ai-client/src/client-agent/index.ts +3 -0
  448. package/template/packages/ai-client/src/client-agent/validation.test.ts +57 -0
  449. package/template/packages/ai-client/src/client-agent/validation.ts +152 -0
  450. package/template/packages/config/index.test.ts +18 -0
  451. package/template/packages/config/package.json +1 -1
  452. package/template/packages/config/src/platform-validation.ts +8 -0
  453. package/template/packages/config/src/platform.ts +22 -9
  454. package/template/packages/database/drizzle/0055_square_yellowjacket.sql +47 -0
  455. package/template/packages/database/drizzle/0056_tricky_living_mummy.sql +2 -0
  456. package/template/packages/database/drizzle/0057_mature_doomsday.sql +4 -0
  457. package/template/packages/database/drizzle/0058_agent_session_memory.sql +159 -0
  458. package/template/packages/database/drizzle/0059_agent_source_module_key.sql +16 -0
  459. package/template/packages/database/drizzle/0060_slimy_rocket_raccoon.sql +43 -0
  460. package/template/packages/database/drizzle/0061_agent_workflow.sql +303 -0
  461. package/template/packages/database/drizzle/meta/0055_snapshot.json +11071 -0
  462. package/template/packages/database/drizzle/meta/0056_snapshot.json +11098 -0
  463. package/template/packages/database/drizzle/meta/0057_snapshot.json +10878 -0
  464. package/template/packages/database/drizzle/meta/0058_snapshot.json +12294 -0
  465. package/template/packages/database/drizzle/meta/0059_snapshot.json +12344 -0
  466. package/template/packages/database/drizzle/meta/0060_snapshot.json +12326 -0
  467. package/template/packages/database/drizzle/meta/0061_snapshot.json +14395 -0
  468. package/template/packages/database/drizzle/meta/_journal.json +49 -0
  469. package/template/packages/database/package.json +1 -1
  470. package/template/packages/database/src/agent-runtime-schema.test.ts +26 -0
  471. package/template/packages/database/src/schema/agent-context-message.ts +38 -0
  472. package/template/packages/database/src/schema/agent-runtime.ts +7 -0
  473. package/template/packages/database/src/schema/agent-session-receipt.ts +36 -0
  474. package/template/packages/database/src/schema/agent-session.ts +344 -0
  475. package/template/packages/database/src/schema/agent-workflow-delegation.ts +126 -0
  476. package/template/packages/database/src/schema/agent-workflow-effects.ts +213 -0
  477. package/template/packages/database/src/schema/agent-workflow-evaluation.ts +67 -0
  478. package/template/packages/database/src/schema/agent-workflow.ts +270 -0
  479. package/template/packages/database/src/schema/client-agent.ts +95 -0
  480. package/template/packages/database/src/schema/index.ts +8 -0
  481. package/template/packages/jobs/package.json +1 -1
  482. package/template/packages/modules/index.ts +2 -0
  483. package/template/packages/modules/package.json +1 -1
  484. package/template/packages/modules/src/ai-client-execution-composition.test.ts +98 -0
  485. package/template/packages/modules/src/ai-client-execution-policy.ts +54 -0
  486. package/template/packages/modules/src/ai-operation-composition.ts +2 -0
  487. package/template/packages/modules/src/manifest.ts +15 -0
  488. package/template/packages/modules/src/system-admin-routes.ts +16 -0
  489. package/template/packages/modules/src/system-admin-ui-catalog.ts +4 -1
  490. package/template/packages/modules/src/system-agent-audit-actions.ts +26 -0
  491. package/template/packages/modules/src/system-ai-api-bindings.ts +262 -0
  492. package/template/packages/modules/src/system-api-control-plane.ts +4 -78
  493. package/template/packages/modules/src/system-audit-actions.ts +113 -0
  494. package/template/packages/modules/src/system-features.ts +17 -0
  495. package/template/packages/modules/src/system-module-catalog.ts +21 -11
  496. package/template/packages/modules/src/system-modules.ts +22 -0
  497. package/template/packages/modules/src/system-permissions.ts +8 -0
  498. package/template/packages/server-sdk/index.ts +43 -0
  499. package/template/packages/server-sdk/package.json +5 -1
  500. package/template/packages/server-sdk/src/agent-session-memory-port.ts +64 -0
  501. package/template/packages/server-sdk/src/agent-session-provider.ts +63 -0
  502. package/template/packages/server-sdk/src/agent-source-invalidation-port.ts +54 -0
  503. package/template/packages/server-sdk/src/ai-operation-registration.ts +2 -0
  504. package/template/packages/server-sdk/src/client-agent-session.ts +95 -0
  505. package/template/packages/server-sdk/src/debug-session-provider.ts +14 -63
  506. package/template/packages/server-sdk/src/module-host.ts +7 -3
  507. package/template/packages/server-sdk/src/request-context.ts +6 -0
  508. package/template/packages/shared/index.ts +3 -0
  509. package/template/packages/shared/package.json +1 -1
  510. package/template/packages/shared/src/agent-workflow-definition.ts +113 -0
  511. package/template/packages/shared/src/agent-workflow-delegation.ts +123 -0
  512. package/template/packages/shared/src/agent-workflow-evaluation.ts +159 -0
  513. package/template/packages/shared/src/agent-workflow-events.ts +99 -0
  514. package/template/packages/shared/src/agent-workflow-run.ts +259 -0
  515. package/template/packages/shared/src/agent-workflow.ts +3 -0
  516. package/template/packages/shared/src/ai-runtime-report.ts +25 -0
  517. package/template/packages/shared/src/rbac.ts +24 -0
  518. package/template/packages/storage/package.json +1 -1
  519. package/template/packages/storage/src/upload-streams.test.ts +31 -0
  520. package/template/packages/storage/src/upload-streams.ts +20 -6
  521. package/template/apps/agent-server/adk_web_agents/__init__.py +0 -1
  522. package/template/apps/agent-server/adk_web_agents/canonical_debug/__init__.py +0 -1
  523. package/template/apps/agent-server/adk_web_agents/canonical_debug/agent.py +0 -145
  524. package/template/apps/agent-server/adk_web_agents/safe_debug/__init__.py +0 -3
  525. package/template/apps/agent-server/adk_web_agents/safe_debug/agent.py +0 -40
  526. package/template/apps/agent-server/adk_web_agents/services.py +0 -25
  527. package/template/apps/agent-server/project/adk-web-debug.json +0 -4
  528. package/template/apps/agent-server/src/southwind_agent_server/adk_adapter.py +0 -333
  529. package/template/apps/agent-server/src/southwind_agent_server/adk_debug.py +0 -348
  530. package/template/apps/agent-server/src/southwind_agent_server/adk_debug_sessions.py +0 -325
  531. package/template/apps/agent-server/src/southwind_agent_server/adk_failure.py +0 -13
  532. package/template/apps/agent-server/src/southwind_agent_server/adk_model.py +0 -304
  533. package/template/apps/agent-server/src/southwind_agent_server/adk_tools.py +0 -143
  534. package/template/apps/agent-server/tests/test_adk_adapter.py +0 -307
  535. package/template/apps/agent-server/tests/test_adk_debug_result_polling.py +0 -139
  536. package/template/apps/agent-server/tests/test_adk_debug_sessions.py +0 -215
  537. package/template/apps/agent-server/tests/test_adk_web_agent.py +0 -12
  538. package/template/apps/agent-server/tests/test_adk_web_canonical_debug.py +0 -282
  539. package/template/apps/server/src/agent/run-debug-authorization.ts +0 -27
  540. package/template/apps/server/src/agent/run-facade-adk-debug.test.ts +0 -95
  541. package/template/apps/server/src/runtime-adk-debug.test.ts +0 -270
  542. package/template/apps/server/src/runtime-adk-debug.ts +0 -164
  543. package/template/apps/server/src/runtime-request-actor.test.ts +0 -55
  544. package/template/apps/server/src/runtime-request-actor.ts +0 -22
  545. package/template/docker-compose.agent-debug.yml +0 -58
  546. package/template/scripts/dev-adk-web.ts +0 -107
@@ -0,0 +1,259 @@
1
+ import type { JsonValue } from "./json.js";
2
+ import type { ISODateTime } from "./primitives.js";
3
+ import type { AgentWorkflowNodeType } from "./agent-workflow-definition.js";
4
+
5
+ export interface AgentWorkflowBudget {
6
+ readonly maxDurationSeconds: number;
7
+ readonly maxModelAttempts: number;
8
+ readonly maxToolCalls: number;
9
+ readonly maxSubagents: number;
10
+ readonly maxParallelism: number;
11
+ readonly maxInputTokens: number;
12
+ readonly maxOutputTokens: number;
13
+ readonly maxCostMicros: number;
14
+ }
15
+
16
+ export interface AgentWorkflowArtifactRef {
17
+ readonly artifactId: string;
18
+ readonly kind: string;
19
+ readonly mediaType: string;
20
+ readonly byteSize: number;
21
+ readonly sha256: string;
22
+ readonly retentionPolicyKey: string;
23
+ readonly source: {
24
+ readonly moduleKey: string;
25
+ readonly kind: string;
26
+ readonly id: string;
27
+ readonly version: string;
28
+ readonly sequence: number;
29
+ readonly digest?: string;
30
+ };
31
+ }
32
+
33
+ export type AgentWorkflowMeasuredCount =
34
+ | {
35
+ readonly status: "measured";
36
+ readonly value: number;
37
+ readonly source: "provider-reported" | "host-measured";
38
+ }
39
+ | { readonly status: "unknown"; readonly reasonCode: string };
40
+
41
+ export type AgentWorkflowMeasuredCost =
42
+ | {
43
+ readonly status: "measured";
44
+ readonly amountMicros: number;
45
+ readonly currency: string;
46
+ readonly source:
47
+ | "provider-reported"
48
+ | "catalog-estimated"
49
+ | "host-measured";
50
+ }
51
+ | { readonly status: "unknown"; readonly reasonCode: string };
52
+
53
+ export interface AgentWorkflowUsage {
54
+ readonly durationMs: number;
55
+ readonly modelAttempts: number;
56
+ readonly toolCalls: number;
57
+ readonly subagents: number;
58
+ readonly inputTokens: AgentWorkflowMeasuredCount;
59
+ readonly outputTokens: AgentWorkflowMeasuredCount;
60
+ readonly cost: AgentWorkflowMeasuredCost;
61
+ }
62
+
63
+ export interface AgentWorkflowInputReceipt {
64
+ readonly schemaKey: string;
65
+ readonly value: JsonValue;
66
+ readonly valueDigest: string;
67
+ readonly recordedAt: ISODateTime;
68
+ }
69
+
70
+ export type AgentWorkflowRunStatus =
71
+ | "accepted"
72
+ | "running"
73
+ | "waiting"
74
+ | "completed"
75
+ | "failed"
76
+ | "cancelled"
77
+ | "timed-out";
78
+ export type AgentWorkflowNodeRunStatus =
79
+ | "pending"
80
+ | "ready"
81
+ | "running"
82
+ | "waiting"
83
+ | "retry-scheduled"
84
+ | "completed"
85
+ | "failed"
86
+ | "cancelled"
87
+ | "skipped"
88
+ | "timed-out";
89
+
90
+ export interface AgentWorkflowRun {
91
+ readonly runId: string;
92
+ readonly releaseId: string;
93
+ readonly tenantId: string;
94
+ readonly actorId: string;
95
+ readonly routeKey: string;
96
+ readonly inputDigest: string;
97
+ readonly inputReceipt: AgentWorkflowInputReceipt;
98
+ readonly scopeDigest: string;
99
+ readonly authorizationSnapshotDigest: string;
100
+ readonly toolPolicyDigest: string;
101
+ readonly workspacePolicyDigest: string;
102
+ readonly executionPolicyDigest: string;
103
+ readonly status: AgentWorkflowRunStatus;
104
+ readonly budget: AgentWorkflowBudget;
105
+ readonly usage: AgentWorkflowUsage;
106
+ readonly deadlineAt: ISODateTime;
107
+ readonly sessionId?: string;
108
+ readonly parentRunId?: string;
109
+ readonly parentNodeId?: string;
110
+ readonly parentNodeRunId?: string;
111
+ readonly cancellationRequestedAt?: ISODateTime;
112
+ readonly createdAt: ISODateTime;
113
+ readonly updatedAt: ISODateTime;
114
+ readonly finishedAt?: ISODateTime;
115
+ readonly version: number;
116
+ readonly safeErrorCode?: string;
117
+ }
118
+
119
+ export interface AgentWorkflowNodeResultReceipt {
120
+ readonly receiptId: string;
121
+ readonly nodeRunId: string;
122
+ readonly resultDigest: string;
123
+ readonly outputSchemaKey?: string;
124
+ readonly selectedBranch?: string;
125
+ readonly smallResult?: JsonValue;
126
+ readonly executionEvidence?: {
127
+ readonly source: "agent-runtime-report";
128
+ readonly agentRunId: string;
129
+ readonly modelRouteKey: string;
130
+ readonly model: string;
131
+ readonly modelDeploymentDigest: string;
132
+ readonly modelConfigurationDigest: string;
133
+ };
134
+ readonly artifactIds: readonly string[];
135
+ readonly recordedAt: ISODateTime;
136
+ }
137
+
138
+ export interface AgentWorkflowNodeRun {
139
+ readonly nodeRunId: string;
140
+ readonly runId: string;
141
+ readonly nodeId: string;
142
+ readonly previousNodeRunId?: string;
143
+ readonly nodeType: AgentWorkflowNodeType;
144
+ readonly status: AgentWorkflowNodeRunStatus;
145
+ readonly attempt: number;
146
+ readonly maxAttempts: number;
147
+ readonly idempotencyKey: string;
148
+ readonly adapter?: {
149
+ readonly kind:
150
+ | "model-operation"
151
+ | "agent-tool"
152
+ | "child-agent"
153
+ | "approval-work-item"
154
+ | "durable-job"
155
+ | "wait-signal"
156
+ | "artifact-store"
157
+ | "finalizer";
158
+ readonly coordinate: string;
159
+ };
160
+ readonly inputArtifacts: readonly AgentWorkflowArtifactRef[];
161
+ readonly outputArtifacts: readonly AgentWorkflowArtifactRef[];
162
+ readonly resultReceipt?: AgentWorkflowNodeResultReceipt;
163
+ readonly safeErrorCode?: string;
164
+ readonly createdAt: ISODateTime;
165
+ readonly updatedAt: ISODateTime;
166
+ readonly startedAt?: ISODateTime;
167
+ readonly finishedAt?: ISODateTime;
168
+ readonly version: number;
169
+ }
170
+
171
+ export function isAgentWorkflowTerminal(
172
+ status: AgentWorkflowRunStatus,
173
+ ): boolean {
174
+ return ["completed", "failed", "cancelled", "timed-out"].includes(status);
175
+ }
176
+
177
+ export function isAgentWorkflowNodeTerminal(
178
+ status: AgentWorkflowNodeRunStatus,
179
+ ): boolean {
180
+ return ["completed", "failed", "cancelled", "skipped", "timed-out"].includes(
181
+ status,
182
+ );
183
+ }
184
+
185
+ export function isAgentWorkflowRunTransitionAllowed(
186
+ from: AgentWorkflowRunStatus,
187
+ to: AgentWorkflowRunStatus,
188
+ ): boolean {
189
+ const allowed: Record<
190
+ AgentWorkflowRunStatus,
191
+ readonly AgentWorkflowRunStatus[]
192
+ > = {
193
+ accepted: ["running", "cancelled", "timed-out", "failed"],
194
+ running: ["waiting", "completed", "failed", "cancelled", "timed-out"],
195
+ waiting: ["running", "failed", "cancelled", "timed-out"],
196
+ completed: [],
197
+ failed: [],
198
+ cancelled: [],
199
+ "timed-out": [],
200
+ };
201
+ return allowed[from].includes(to);
202
+ }
203
+
204
+ export function isAgentWorkflowNodeTransitionAllowed(
205
+ from: AgentWorkflowNodeRunStatus,
206
+ to: AgentWorkflowNodeRunStatus,
207
+ ): boolean {
208
+ const allowed: Record<
209
+ AgentWorkflowNodeRunStatus,
210
+ readonly AgentWorkflowNodeRunStatus[]
211
+ > = {
212
+ pending: ["ready", "skipped", "cancelled", "timed-out"],
213
+ ready: ["running", "cancelled", "timed-out"],
214
+ running: [
215
+ "waiting",
216
+ "completed",
217
+ "failed",
218
+ "cancelled",
219
+ "skipped",
220
+ "timed-out",
221
+ ],
222
+ waiting: [
223
+ "running",
224
+ "completed",
225
+ "failed",
226
+ "cancelled",
227
+ "skipped",
228
+ "timed-out",
229
+ ],
230
+ failed: ["retry-scheduled"],
231
+ "retry-scheduled": ["cancelled", "timed-out"],
232
+ completed: [],
233
+ cancelled: [],
234
+ skipped: [],
235
+ "timed-out": [],
236
+ };
237
+ return allowed[from].includes(to);
238
+ }
239
+
240
+ export function usageFitsWithinBudget(
241
+ usage: AgentWorkflowUsage,
242
+ budget: AgentWorkflowBudget,
243
+ ): boolean {
244
+ if (
245
+ usage.inputTokens.status !== "measured" ||
246
+ usage.outputTokens.status !== "measured" ||
247
+ usage.cost.status !== "measured"
248
+ )
249
+ return false;
250
+ return (
251
+ usage.durationMs <= budget.maxDurationSeconds * 1_000 &&
252
+ usage.modelAttempts <= budget.maxModelAttempts &&
253
+ usage.toolCalls <= budget.maxToolCalls &&
254
+ usage.subagents <= budget.maxSubagents &&
255
+ usage.inputTokens.value <= budget.maxInputTokens &&
256
+ usage.outputTokens.value <= budget.maxOutputTokens &&
257
+ usage.cost.amountMicros <= budget.maxCostMicros
258
+ );
259
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./agent-workflow-definition.js";
2
+ export * from "./agent-workflow-run.js";
3
+ export * from "./agent-workflow-delegation.js";
@@ -107,6 +107,8 @@ export interface AiRuntimeRunModelDeployment {
107
107
 
108
108
  export interface AiRuntimeRunListItem {
109
109
  runId: string;
110
+ /** 创建该 Run 的稳定 Engine 实现标识;历史 ADK Run 保持原值。 */
111
+ engineId: string;
110
112
  operationKey: string;
111
113
  actor: AiRuntimeActorSummary | null;
112
114
  status: AiRuntimeRunStatus;
@@ -142,11 +144,34 @@ export interface AiRuntimeAttemptDetail extends AiRuntimeRunUsage {
142
144
  finishedAt: ISODateTime | null;
143
145
  }
144
146
 
147
+ export interface AiRuntimeTrajectoryEvent {
148
+ sequence: number;
149
+ sequenceEnd: number;
150
+ type: string;
151
+ title: string;
152
+ toolKey?: string;
153
+ approvalOutcome?: string;
154
+ attemptSequence?: number;
155
+ totalTokens?: number;
156
+ artifactCount?: number;
157
+ inputModalities?: string[];
158
+ deltaCount?: number;
159
+ outputCharacters?: number;
160
+ errorCode?: string;
161
+ }
162
+
163
+ export interface AiRuntimeTrajectory {
164
+ /** canonical Run 超过既有留存期后,报表仍可读但轨迹不再可用。 */
165
+ available: boolean;
166
+ events: AiRuntimeTrajectoryEvent[];
167
+ }
168
+
145
169
  export interface AiRuntimeRunDetail extends AiRuntimeRunListItem {
146
170
  releaseId: string;
147
171
  traceId: string;
148
172
  safeErrorCode: string | null;
149
173
  attempts: AiRuntimeAttemptDetail[];
174
+ trajectory: AiRuntimeTrajectory;
150
175
  }
151
176
 
152
177
  export type AiRuntimeRunPage = PageResult<AiRuntimeRunListItem>;
@@ -69,6 +69,30 @@ export interface AgentRunAuthorizationSnapshot {
69
69
  featureKey: string;
70
70
  allowedToolKeys: string[];
71
71
  toolNetworkMode: "forbidden";
72
+ /** Host-normalized current Case coordinate; absent forbids Case Memory. */
73
+ memoryScopeCaseId?: string;
74
+ // @windy-module system.agent begin
75
+ /** Workflow-only: binds the narrowed runtime budget to the Run grant. */
76
+ runtimeBudgetDigest?: string;
77
+ /** Workflow-only: frozen provider deployment and model used for this Run. */
78
+ modelPin?: {
79
+ deploymentKey: string;
80
+ model: string;
81
+ };
82
+ /** Child Agent only: immutable effective delegation ceiling. */
83
+ delegation?: {
84
+ delegationId: string;
85
+ policyDigest: string;
86
+ budgetDigest: string;
87
+ workspaceId: string;
88
+ workspacePolicyKey: string;
89
+ scopeDigest: string;
90
+ scopePolicyDigest: string;
91
+ capabilityKey: string;
92
+ requiredFeatureKeys: string[];
93
+ requiredPermissionKeys: string[];
94
+ };
95
+ // @windy-module system.agent end
72
96
  }
73
97
 
74
98
  export type CredentialState = "active" | "must-change-password";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@southwind-ai/storage",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "engines": {
@@ -0,0 +1,31 @@
1
+ import { expect, test } from "bun:test";
2
+ import { abortAwareStream } from "./upload-streams.js";
3
+
4
+ test("兼容 Bun 缺少 releaseLock 和 cancel 的请求流实现", async () => {
5
+ const bodyWithoutReleaseLock = {
6
+ getReader: () => ({
7
+ read: async () => ({ done: true, value: undefined }),
8
+ cancel: async () => undefined,
9
+ }),
10
+ } as unknown as ReadableStream<Uint8Array>;
11
+ const completed = abortAwareStream(
12
+ bodyWithoutReleaseLock,
13
+ new AbortController().signal,
14
+ ).getReader();
15
+
16
+ await expect(completed.read()).resolves.toEqual({
17
+ done: true,
18
+ value: undefined,
19
+ });
20
+
21
+ const bodyWithoutCancel = {
22
+ getReader: () => ({
23
+ read: async () => ({ done: true, value: undefined }),
24
+ releaseLock: () => undefined,
25
+ }),
26
+ } as unknown as ReadableStream<Uint8Array>;
27
+
28
+ await expect(
29
+ abortAwareStream(bodyWithoutCancel, new AbortController().signal).cancel(),
30
+ ).resolves.toBeUndefined();
31
+ });
@@ -22,7 +22,7 @@ export function abortAwareStream(
22
22
  const result = await raceAbort(source.read(), signal);
23
23
  if (result.done) {
24
24
  finished = true;
25
- source.releaseLock();
25
+ releaseReader(source);
26
26
  controller.close();
27
27
  return;
28
28
  }
@@ -40,7 +40,7 @@ export function abortAwareStream(
40
40
  await cancelReader(reader, reason);
41
41
  return;
42
42
  }
43
- await body.cancel(reason).catch(() => undefined);
43
+ await cancelStream(body, reason);
44
44
  },
45
45
  },
46
46
  { highWaterMark: 0 },
@@ -69,7 +69,7 @@ export function concatBlobStreams(
69
69
  }
70
70
  const result = await current.read();
71
71
  if (result.done) {
72
- current.releaseLock();
72
+ releaseReader(current);
73
73
  current = undefined;
74
74
  continue;
75
75
  }
@@ -101,7 +101,7 @@ export function guardFileSignature(
101
101
  while (prefixSize < requiredBytes) {
102
102
  const result = await source.read();
103
103
  if (result.done) {
104
- source.releaseLock();
104
+ releaseReader(source);
105
105
  controller.error(signatureError());
106
106
  return;
107
107
  }
@@ -126,7 +126,7 @@ export function guardFileSignature(
126
126
  }
127
127
  const result = await source.read();
128
128
  if (result.done) {
129
- source.releaseLock();
129
+ releaseReader(source);
130
130
  controller.close();
131
131
  } else {
132
132
  controller.enqueue(result.value);
@@ -137,7 +137,7 @@ export function guardFileSignature(
137
137
  await cancelReader(reader, reason);
138
138
  return;
139
139
  }
140
- await body.cancel(reason).catch(() => undefined);
140
+ await cancelStream(body, reason);
141
141
  },
142
142
  },
143
143
  { highWaterMark: 0 },
@@ -217,3 +217,17 @@ async function cancelReader(
217
217
  }
218
218
  }
219
219
  }
220
+
221
+ async function cancelStream(
222
+ stream: ReadableStream<Uint8Array>,
223
+ reason?: unknown,
224
+ ): Promise<void> {
225
+ const cancel = stream.cancel;
226
+ if (typeof cancel !== "function") return;
227
+ await cancel.call(stream, reason).catch(() => undefined);
228
+ }
229
+
230
+ function releaseReader(reader: ReadableStreamDefaultReader<Uint8Array>): void {
231
+ const releaseLock = reader.releaseLock;
232
+ if (typeof releaseLock === "function") releaseLock.call(reader);
233
+ }
@@ -1 +0,0 @@
1
- """Developer-only ADK Web agents."""
@@ -1 +0,0 @@
1
- """Developer-only canonical Run bridge for ADK Web."""
@@ -1,145 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import json
4
- from collections.abc import AsyncGenerator
5
- from typing import cast
6
-
7
- from google.adk.agents import LlmAgent
8
- from google.adk.models.base_llm import BaseLlm
9
- from google.adk.models.llm_request import LlmRequest
10
- from google.adk.models.llm_response import LlmResponse
11
- from google.adk.tools.tool_context import ToolContext
12
- from google.genai import types
13
-
14
- from southwind_agent_server.adk_debug import (
15
- CanonicalRunDebugClient,
16
- TextOperationDebugConfig,
17
- load_text_operation_debug_config,
18
- )
19
- from southwind_agent_server.adk_debug_sessions import (
20
- IMPORTED_SESSION_STATE_KEY,
21
- ImportedDebugSessionReadOnlyError,
22
- )
23
-
24
- TOOL_NAME = "run_canonical_operation"
25
- PROJECT_OPERATION = load_text_operation_debug_config()
26
-
27
-
28
- async def run_canonical_operation(
29
- question: str, tool_context: ToolContext
30
- ) -> dict[str, object]:
31
- """Run the project-selected text Operation through canonical platform APIs."""
32
- ensure_debug_session_writable(tool_context.state.get(IMPORTED_SESSION_STATE_KEY))
33
- if PROJECT_OPERATION is None:
34
- raise RuntimeError("项目尚未选择可调试的文本 Operation")
35
- return await CanonicalRunDebugClient.from_environment(
36
- PROJECT_OPERATION.operation_key
37
- ).run(question)
38
-
39
-
40
- def ensure_debug_session_writable(imported_marker: object) -> None:
41
- if imported_marker is True:
42
- raise ImportedDebugSessionReadOnlyError(
43
- "导入的业务会话是实时只读投影;请新建本地会话继续提问"
44
- )
45
-
46
-
47
- class CanonicalDebugLlm(BaseLlm):
48
- """ADK dispatcher; real model and Tool execution stay in canonical Run."""
49
-
50
- def __init__(self, operation: TextOperationDebugConfig | None) -> None:
51
- super().__init__(model="windy-canonical-run-bridge")
52
- self._operation = operation
53
-
54
- async def generate_content_async(
55
- self,
56
- llm_request: LlmRequest,
57
- stream: bool = False,
58
- ) -> AsyncGenerator[LlmResponse, None]:
59
- del stream
60
- question, user_turn_index = latest_user_turn(llm_request)
61
- tool_response = latest_tool_response(llm_request, user_turn_index)
62
- if tool_response is not None:
63
- yield text_response(render_result(tool_response))
64
- return
65
- if self._operation is None:
66
- yield text_response(
67
- "项目尚未在 apps/agent-server/project/adk-web-debug.json "
68
- "选择真实文本 Operation。"
69
- )
70
- return
71
- if not question:
72
- yield text_response("请输入要交给真实 Agent Runtime 调试的业务问题。")
73
- return
74
- yield LlmResponse(
75
- content=types.Content(
76
- role="model",
77
- parts=[
78
- types.Part(
79
- function_call=types.FunctionCall(
80
- name=TOOL_NAME,
81
- args={"question": question},
82
- )
83
- )
84
- ],
85
- ),
86
- partial=False,
87
- )
88
-
89
-
90
- def latest_user_turn(request: LlmRequest) -> tuple[str, int]:
91
- for index in range(len(request.contents) - 1, -1, -1):
92
- content = request.contents[index]
93
- if content.role != "user":
94
- continue
95
- text = "".join(part.text or "" for part in content.parts or [])
96
- if text.strip():
97
- return text.strip(), index
98
- return "", -1
99
-
100
-
101
- def latest_tool_response(
102
- request: LlmRequest, user_turn_index: int
103
- ) -> dict[str, object] | None:
104
- if user_turn_index < 0:
105
- return None
106
- for content in reversed(request.contents[user_turn_index + 1 :]):
107
- for part in content.parts or []:
108
- response = part.function_response
109
- if response and response.name == TOOL_NAME:
110
- return cast(dict[str, object], response.response or {})
111
- return None
112
-
113
-
114
- def render_result(value: dict[str, object]) -> str:
115
- answer = value.get("answer")
116
- run_id = value.get("runId")
117
- events = value.get("events")
118
- if not isinstance(answer, str) or not isinstance(run_id, str):
119
- return "真实 Agent 调试 Run 返回了无效结果。"
120
- trace = json.dumps(events if isinstance(events, list) else [], ensure_ascii=False)
121
- return f"{answer}\n\n---\n调试 Run:{run_id}\n事件摘要:{trace}"
122
-
123
-
124
- def text_response(text: str) -> LlmResponse:
125
- return LlmResponse(
126
- content=types.Content(role="model", parts=[types.Part(text=text)]),
127
- partial=False,
128
- )
129
-
130
-
131
- def build_root_agent(
132
- operation: TextOperationDebugConfig | None,
133
- ) -> LlmAgent:
134
- return LlmAgent(
135
- name="canonical_debug",
136
- model=CanonicalDebugLlm(operation),
137
- instruction=(
138
- "每个业务问题都必须经 run_canonical_operation 交给 canonical Run;"
139
- "不得自行回答、不得访问数据库或绕过平台授权。"
140
- ),
141
- tools=[run_canonical_operation] if operation else [],
142
- )
143
-
144
-
145
- root_agent = build_root_agent(PROJECT_OPERATION)
@@ -1,3 +0,0 @@
1
- from .agent import root_agent
2
-
3
- __all__ = ["root_agent"]
@@ -1,40 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from collections.abc import AsyncGenerator
4
-
5
- from google.adk.agents import LlmAgent
6
- from google.adk.models.base_llm import BaseLlm
7
- from google.adk.models.llm_request import LlmRequest
8
- from google.adk.models.llm_response import LlmResponse
9
- from google.genai import types
10
-
11
-
12
- class SafeDebugLlm(BaseLlm):
13
- async def generate_content_async(
14
- self,
15
- llm_request: LlmRequest,
16
- stream: bool = False,
17
- ) -> AsyncGenerator[LlmResponse, None]:
18
- del llm_request, stream
19
- text = (
20
- "这是 Windy 的 ADK 开发调试 Agent。"
21
- "它不连接业务 Repository、Tool Host 或模型 Provider,"
22
- "不能代表生产业务 Operation。"
23
- )
24
- yield LlmResponse(
25
- content=types.Content(
26
- role="model",
27
- parts=[types.Part(text=text)],
28
- ),
29
- partial=False,
30
- )
31
-
32
-
33
- root_agent = LlmAgent(
34
- name="safe_debug",
35
- model=SafeDebugLlm(model="windy-safe-debug"),
36
- instruction=(
37
- "仅说明开发调试边界;不访问业务数据,不调用 Tool,不连接模型 Provider。"
38
- ),
39
- tools=[],
40
- )
@@ -1,25 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import Any
4
-
5
- from google.adk.cli.service_registry import get_service_registry
6
-
7
- from southwind_agent_server.adk_debug_sessions import (
8
- WindyDebugSessionClientV1,
9
- WindyDebugSessionServiceV1,
10
- )
11
-
12
- SESSION_SERVICE_URI = "windy-debug://v1"
13
-
14
-
15
- def create_windy_debug_session_service(
16
- uri: str, **_kwargs: Any
17
- ) -> WindyDebugSessionServiceV1:
18
- if uri != SESSION_SERVICE_URI:
19
- raise ValueError("Windy ADK debug session URI 版本不受支持")
20
- return WindyDebugSessionServiceV1(WindyDebugSessionClientV1.from_environment())
21
-
22
-
23
- get_service_registry().register_session_service(
24
- "windy-debug", create_windy_debug_session_service
25
- )
@@ -1,4 +0,0 @@
1
- {
2
- "schemaVersion": 1,
3
- "textOperation": null
4
- }