agentdeck-sdk 5.0.0__tar.gz → 5.0.3__tar.gz

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 (509) hide show
  1. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/ci.yml +3 -1
  2. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/docs-check.yml +5 -0
  3. agentdeck_sdk-5.0.3/.import_linter_cache/agentdeck.meta.json +1 -0
  4. agentdeck_sdk-5.0.3/.import_linter_cache/cc0de4ae2e5697bf7cf3a0b9c3aff14b2ece24cd.data.json +1 -0
  5. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/CHANGELOG.md +42 -1
  6. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/PKG-INFO +1 -1
  7. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/native/executor.py +14 -0
  8. agentdeck_sdk-5.0.3/agentdeck/adapters/stores/__init__.py +28 -0
  9. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/memory/store.py +4 -0
  10. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/postgres/store.py +3 -0
  11. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/redis/store.py +5 -0
  12. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/sqlite/store.py +3 -0
  13. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/ports/store.py +8 -0
  14. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/deck.py +15 -2
  15. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/runtime/service.py +74 -29
  16. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/adr-d11-store-assigns-seq-and-time.md +8 -1
  17. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/patterns/lifecycle.md +25 -0
  18. agentdeck_sdk-5.0.3/docs-site/content/resources/changelog.mdx +86 -0
  19. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/resources/known-issues.mdx +0 -15
  20. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/llms-full.txt +38 -150
  21. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/pyproject.toml +1 -1
  22. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/test_store.py +65 -1
  23. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_deck.py +17 -5
  24. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_native_workflow.py +33 -1
  25. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_runtime_service.py +157 -0
  26. agentdeck_sdk-5.0.0/.import_linter_cache/agentdeck.meta.json +0 -1
  27. agentdeck_sdk-5.0.0/.import_linter_cache/cc0de4ae2e5697bf7cf3a0b9c3aff14b2ece24cd.data.json +0 -1
  28. agentdeck_sdk-5.0.0/agentdeck/adapters/stores/__init__.py +0 -1
  29. agentdeck_sdk-5.0.0/docs-site/content/resources/changelog.mdx +0 -183
  30. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.agentdeck/agents/greeter/agent.py +0 -0
  31. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.agents/skills/deck-cleanup/SKILL.md +0 -0
  32. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.agents/skills/deck-cleanup/agents/openai.yaml +0 -0
  33. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.agents/skills/deck-cleanup/references/narrative-prose.md +0 -0
  34. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.agents/skills/open-issue/SKILL.md +0 -0
  35. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.agents/skills/release/SKILL.md +0 -0
  36. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.agents/skills/ship-issue/SKILL.md +0 -0
  37. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/agents/deck-cleanup.md +0 -0
  38. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/agents/deck-dev.md +0 -0
  39. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/agents/deck-reviewer.md +0 -0
  40. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/agents/docs-reviewer.md +0 -0
  41. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/agents/docs-writer.md +0 -0
  42. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/settings.json +0 -0
  43. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/milestone-retro/SKILL.md +0 -0
  44. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/milestone-retro/references/judging.md +0 -0
  45. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/milestone-retro/references/queries.md +0 -0
  46. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/open-issue/SKILL.md +0 -0
  47. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/release/SKILL.md +0 -0
  48. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/review-pr/SKILL.md +0 -0
  49. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/review-pr/references/attack.md +0 -0
  50. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/review-pr/references/classify.md +0 -0
  51. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/review-pr/references/craft.md +0 -0
  52. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/review-pr/references/templates.md +0 -0
  53. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/ship-issue/SKILL.md +0 -0
  54. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/ship-pr/SKILL.md +0 -0
  55. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/ship-pr/references/design.md +0 -0
  56. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/ship-pr/references/implement.md +0 -0
  57. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.claude/skills/ship-pr/references/self-review.md +0 -0
  58. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.coderabbit.yaml +0 -0
  59. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.codex/agents/deck-cleanup.toml +0 -0
  60. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.codex/agents/deck-dev.toml +0 -0
  61. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.codex/agents/deck-reviewer.toml +0 -0
  62. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.codex/agents/docs-reviewer.toml +0 -0
  63. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.codex/agents/docs-writer.toml +0 -0
  64. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.dockerignore +0 -0
  65. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.env.example +0 -0
  66. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.gitattributes +0 -0
  67. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/CODEOWNERS +0 -0
  68. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  69. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  70. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/ISSUE_TEMPLATE/docs_contribution.yml +0 -0
  71. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  72. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/ISSUE_TEMPLATE/finding.yml +0 -0
  73. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  74. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/assets/contributors/merged.png +0 -0
  75. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/assets/contributors/welcome.png +0 -0
  76. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/dependabot.yml +0 -0
  77. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/agent-review.yml +0 -0
  78. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/docs-impact.yml +0 -0
  79. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/docs-pages.yml +0 -0
  80. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/first-contribution.yml +0 -0
  81. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/issue-hygiene.yml +0 -0
  82. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.github/workflows/release.yml +0 -0
  83. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.gitignore +0 -0
  84. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.import_linter_cache/.gitignore +0 -0
  85. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.import_linter_cache/CACHEDIR.TAG +0 -0
  86. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.importlinter +0 -0
  87. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/.pre-commit-config.yaml +0 -0
  88. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/AGENTS.md +0 -0
  89. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/CLAUDE.md +0 -0
  90. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/CODE_OF_CONDUCT.md +0 -0
  91. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/CONTRIBUTING.md +0 -0
  92. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/Dockerfile +0 -0
  93. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/LICENSE +0 -0
  94. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/Makefile +0 -0
  95. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/README.md +0 -0
  96. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/SECURITY.md +0 -0
  97. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/README.md +0 -0
  98. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/__init__.py +0 -0
  99. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/__init__.py +0 -0
  100. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/control/__init__.py +0 -0
  101. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/control/memory/__init__.py +0 -0
  102. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/control/memory/port.py +0 -0
  103. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/control/sqlite/__init__.py +0 -0
  104. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/control/sqlite/port.py +0 -0
  105. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/__init__.py +0 -0
  106. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/native/__init__.py +0 -0
  107. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/openai_agents/__init__.py +0 -0
  108. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/openai_agents/executor.py +0 -0
  109. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/openai_agents/reconcile.py +0 -0
  110. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/openai_agents/runconfig.py +0 -0
  111. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/openai_agents/sessions.py +0 -0
  112. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/openai_agents/translate.py +0 -0
  113. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/stub/__init__.py +0 -0
  114. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/executors/stub/executor.py +0 -0
  115. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/leases/__init__.py +0 -0
  116. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/leases/memory/__init__.py +0 -0
  117. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/leases/memory/port.py +0 -0
  118. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/leases/sqlite/__init__.py +0 -0
  119. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/leases/sqlite/port.py +0 -0
  120. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/memory/__init__.py +0 -0
  121. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/postgres/__init__.py +0 -0
  122. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/redis/__init__.py +0 -0
  123. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/stores/sqlite/__init__.py +0 -0
  124. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/telemetry/__init__.py +0 -0
  125. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/telemetry/langfuse/__init__.py +0 -0
  126. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/telemetry/langfuse/client.py +0 -0
  127. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/telemetry/langfuse/sink.py +0 -0
  128. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/telemetry/langfuse/trace.py +0 -0
  129. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/tools/__init__.py +0 -0
  130. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/tools/mcp/__init__.py +0 -0
  131. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/tools/mcp/lifecycle.py +0 -0
  132. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/tools/mcp/source.py +0 -0
  133. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/tools/mcp/transport.py +0 -0
  134. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/adapters/tools/mcp/wiring.py +0 -0
  135. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/__init__.py +0 -0
  136. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/agent.py +0 -0
  137. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/compile.py +0 -0
  138. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/hooks.py +0 -0
  139. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/injection.py +0 -0
  140. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/instructions.py +0 -0
  141. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/interrupts.py +0 -0
  142. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/native.py +0 -0
  143. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/runners/__init__.py +0 -0
  144. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/runners/agent.py +0 -0
  145. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/skills.py +0 -0
  146. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/tools.py +0 -0
  147. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/authoring/web_search.py +0 -0
  148. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/cli.py +0 -0
  149. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/composition.py +0 -0
  150. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/__init__.py +0 -0
  151. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/base.py +0 -0
  152. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/content.py +0 -0
  153. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/context.py +0 -0
  154. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/control.py +0 -0
  155. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/events.py +0 -0
  156. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/invocable.py +0 -0
  157. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/ports/__init__.py +0 -0
  158. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/ports/control.py +0 -0
  159. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/ports/executor.py +0 -0
  160. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/ports/lease.py +0 -0
  161. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/ports/sink.py +0 -0
  162. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/ports/tools.py +0 -0
  163. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/reporting.py +0 -0
  164. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/core/status.py +0 -0
  165. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/errors.py +0 -0
  166. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/mcp.py +0 -0
  167. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/observers.py +0 -0
  168. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/py.typed +0 -0
  169. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/runtime/__init__.py +0 -0
  170. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/runtime/capture.py +0 -0
  171. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/runtime/discovery.py +0 -0
  172. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/runtime/dispatch.py +0 -0
  173. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/runtime/registry.py +0 -0
  174. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/runtime/settings.py +0 -0
  175. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/serve.py +0 -0
  176. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/skills/__init__.py +0 -0
  177. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/skills/bundle.py +0 -0
  178. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/surfaces/__init__.py +0 -0
  179. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/surfaces/cli/__init__.py +0 -0
  180. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/surfaces/cli/chat.py +0 -0
  181. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/surfaces/serve/__init__.py +0 -0
  182. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/surfaces/serve/app.py +0 -0
  183. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/surfaces/serve/compat.py +0 -0
  184. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/testing.py +0 -0
  185. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/agentdeck/views.py +0 -0
  186. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/context7.json +0 -0
  187. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docker-compose.yml +0 -0
  188. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/00-project-index.md +0 -0
  189. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/agentdeck-prd.md +0 -0
  190. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/ai-agents/ai_agent_repository_alignment_research.md +0 -0
  191. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/ai-agents/harness_change_log.md +0 -0
  192. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/ai-agents/solutions_for_aligning_ai_agents.md +0 -0
  193. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/ai-agents/sota_style_alignment_findings.md +0 -0
  194. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/README.md +0 -0
  195. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/components/card.svg +0 -0
  196. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/components/spark.svg +0 -0
  197. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/components/wordmark.svg +0 -0
  198. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/contributor-merged.svg +0 -0
  199. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/contributor-welcome.svg +0 -0
  200. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/favicon.svg +0 -0
  201. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/logo-black.svg +0 -0
  202. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/logo-blue.svg +0 -0
  203. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/logo-full.svg +0 -0
  204. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/logo-mark.svg +0 -0
  205. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/logo-traced-original.svg +0 -0
  206. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/logo-white.svg +0 -0
  207. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/logo.svg +0 -0
  208. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/brand/social-card.svg +0 -0
  209. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/beta-user-report-v3.md +0 -0
  210. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/decision-v3-entry-point.md +0 -0
  211. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/deck-capability-wrapper-pattern.md +0 -0
  212. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/discoverability-baseline.md +0 -0
  213. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/docs-site-plan.md +0 -0
  214. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/epic-agentdeck-v2-core.md +0 -0
  215. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/findings-register.md +0 -0
  216. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/milestone-0-findings.md +0 -0
  217. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/milestone-0-walking-skeleton.md +0 -0
  218. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-166-delivery.md +0 -0
  219. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-219-delivery.md +0 -0
  220. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-adoption.md +0 -0
  221. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-context-injection.md +0 -0
  222. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-docs-ia.md +0 -0
  223. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-jack-eval.md +0 -0
  224. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-multimodal.md +0 -0
  225. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-phase4-deck.md +0 -0
  226. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-skills.md +0 -0
  227. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/plan-v2-cutover.md +0 -0
  228. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/review-context-injection.md +0 -0
  229. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/review-phase4-deck.md +0 -0
  230. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/review-v3-outsider.md +0 -0
  231. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/roadmap-v3.1.md +0 -0
  232. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/roadmap-v3.md +0 -0
  233. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/delivery/workflow.md +0 -0
  234. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/adr-d5-two-stores.md +0 -0
  235. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/agentdeck-v2-architecture.md +0 -0
  236. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/event-store-claims.md +0 -0
  237. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/execution-api-source.md +0 -0
  238. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/execution-api.md +0 -0
  239. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/run-identity.md +0 -0
  240. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/run-lifecycle.md +0 -0
  241. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/run-operations.md +0 -0
  242. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design/sink-dispatch.md +0 -0
  243. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/design-system.md +0 -0
  244. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/README.md +0 -0
  245. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/architecture.md +0 -0
  246. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/coding-agents.md +0 -0
  247. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/coding-standards.md +0 -0
  248. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/dependencies.md +0 -0
  249. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/import-boundaries.md +0 -0
  250. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/principles.md +0 -0
  251. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/repository-policy.md +0 -0
  252. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/runtime-contracts.md +0 -0
  253. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/engineering/testing.md +0 -0
  254. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/patterns/README.md +0 -0
  255. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/patterns/comments.md +0 -0
  256. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/patterns/errors.md +0 -0
  257. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/patterns/tests.md +0 -0
  258. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/project-brief.md +0 -0
  259. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/prompts/pr0-baseline-prompt.md +0 -0
  260. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/prompts/pr0-review-prompt.md +0 -0
  261. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/prompts/pr1-event-schema-prompt.md +0 -0
  262. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs/spec.md +0 -0
  263. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/.env.development +0 -0
  264. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/.env.production +0 -0
  265. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/.gitignore +0 -0
  266. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/README.md +0 -0
  267. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/[[...mdxPath]]/page.tsx +0 -0
  268. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/brand-icons.tsx +0 -0
  269. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/brand.css +0 -0
  270. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/callout.tsx +0 -0
  271. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/contribute.tsx +0 -0
  272. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/deck-figure.tsx +0 -0
  273. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/design-system.tsx +0 -0
  274. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/diagram.tsx +0 -0
  275. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/docs-slugs.ts +0 -0
  276. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/hero.css +0 -0
  277. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/hero.tsx +0 -0
  278. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/icon.svg +0 -0
  279. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/install-line.tsx +0 -0
  280. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/jack-answer-link.tsx +0 -0
  281. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/jack-citations.ts +0 -0
  282. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/jack-live.tsx +0 -0
  283. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/jack-stream.ts +0 -0
  284. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/jack.css +0 -0
  285. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/jack.tsx +0 -0
  286. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/kind-icons.tsx +0 -0
  287. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/landing-components.tsx +0 -0
  288. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/landing.css +0 -0
  289. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/layout.tsx +0 -0
  290. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/mark.tsx +0 -0
  291. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/not-found.tsx +0 -0
  292. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/robots.ts +0 -0
  293. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/site.ts +0 -0
  294. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/app/sitemap.ts +0 -0
  295. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/_meta.ts +0 -0
  296. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/build-your-deck/_meta.ts +0 -0
  297. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/build-your-deck/agents.mdx +0 -0
  298. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/build-your-deck/context.mdx +0 -0
  299. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/build-your-deck/deck.mdx +0 -0
  300. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/build-your-deck/skills.mdx +0 -0
  301. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/build-your-deck/tools.mdx +0 -0
  302. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/build-your-deck/workflows.mdx +0 -0
  303. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/examples/_meta.ts +0 -0
  304. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/examples/index.mdx +0 -0
  305. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/index.mdx +0 -0
  306. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/integrations/_meta.ts +0 -0
  307. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/integrations/existing-agents.mdx +0 -0
  308. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/integrations/mcp.mdx +0 -0
  309. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/integrations/openai-agents-sdk.mdx +0 -0
  310. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/jack/_meta.ts +0 -0
  311. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/jack/notes.mdx +0 -0
  312. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/jack.mdx +0 -0
  313. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/meet-agentdeck/_meta.ts +0 -0
  314. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/meet-agentdeck/mental-model.mdx +0 -0
  315. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/meet-agentdeck/overview.mdx +0 -0
  316. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/meet-agentdeck/quickstart.mdx +0 -0
  317. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/reference/_meta.ts +0 -0
  318. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/reference/cli.mdx +0 -0
  319. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/reference/deck.mdx +0 -0
  320. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/reference/events.mdx +0 -0
  321. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/reference/python-api.mdx +0 -0
  322. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/reference/run.mdx +0 -0
  323. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/reference/settings.mdx +0 -0
  324. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/resources/_meta.ts +0 -0
  325. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/resources/migration-guides.mdx +0 -0
  326. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/resources/troubleshooting.mdx +0 -0
  327. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/runs-and-control/_meta.ts +0 -0
  328. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/runs-and-control/events.mdx +0 -0
  329. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/runs-and-control/human-input.mdx +0 -0
  330. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/runs-and-control/lifecycle-and-control.mdx +0 -0
  331. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/runs-and-control/pause-resume.mdx +0 -0
  332. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/runs-and-control/runs.mdx +0 -0
  333. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/content/runs-and-control/sessions.mdx +0 -0
  334. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/mdx-components.tsx +0 -0
  335. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/next-env.d.ts +0 -0
  336. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/next.config.mjs +0 -0
  337. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/package-lock.json +0 -0
  338. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/package.json +0 -0
  339. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/card.svg +0 -0
  340. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/contributor-merged.svg +0 -0
  341. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/contributor-welcome.svg +0 -0
  342. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/favicon.svg +0 -0
  343. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/logo-black.svg +0 -0
  344. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/logo-blue.svg +0 -0
  345. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/logo-full.svg +0 -0
  346. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/logo-mark.svg +0 -0
  347. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/logo-traced-original.svg +0 -0
  348. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/logo-white.svg +0 -0
  349. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/logo.svg +0 -0
  350. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/social-card.svg +0 -0
  351. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/spark.svg +0 -0
  352. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/brand/wordmark.svg +0 -0
  353. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/public/llms.txt +0 -0
  354. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/docs-site/tsconfig.json +0 -0
  355. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/agent-with-a-skill/.agentdeck/agents/handover_desk/agent.py +0 -0
  356. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/agent-with-a-skill/.agentdeck/skills/shift-notes/SKILL.md +0 -0
  357. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/agent-with-a-skill/README.md +0 -0
  358. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/agent-with-a-skill/run.py +0 -0
  359. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/chat-agent-with-a-tool/.agentdeck/agents/order_desk/agent.py +0 -0
  360. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/chat-agent-with-a-tool/README.md +0 -0
  361. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/chat-agent-with-a-tool/run.py +0 -0
  362. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/README.md +0 -0
  363. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/cloudflared.yml +0 -0
  364. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/eval.py +0 -0
  365. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/evals/__init__.py +0 -0
  366. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/evals/judge.py +0 -0
  367. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/evals/metrics.py +0 -0
  368. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/evals/run.py +0 -0
  369. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/evalset.py +0 -0
  370. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/jack/__init__.py +0 -0
  371. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/jack/agent.py +0 -0
  372. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/jack/corpus.py +0 -0
  373. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/jack/server.py +0 -0
  374. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/jack/session.py +0 -0
  375. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/examples/jack/run.py +0 -0
  376. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/check_commit_hygiene.py +0 -0
  377. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/check_docs_impact.py +0 -0
  378. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/concept_budget.py +0 -0
  379. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/generate_docs_reference.py +0 -0
  380. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/quality_delta.py +0 -0
  381. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/repomap.py +0 -0
  382. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/slopcheck.py +0 -0
  383. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/sync_claude_to_codex.py +0 -0
  384. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/scripts/sync_roadmap.py +0 -0
  385. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/concurrency_worker.py +0 -0
  386. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/conftest.py +0 -0
  387. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/context_injection_subjects.py +0 -0
  388. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/case_types.py +0 -0
  389. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/conftest.py +0 -0
  390. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/context_subjects.py +0 -0
  391. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/contract_cases.py +0 -0
  392. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/live_stores.py +0 -0
  393. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/never_yields.py +0 -0
  394. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/openai_agents_cases.py +0 -0
  395. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/test_context_parity.py +0 -0
  396. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/test_control.py +0 -0
  397. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/test_control_port.py +0 -0
  398. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/test_event_stream.py +0 -0
  399. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/test_lease.py +0 -0
  400. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/contract/test_resume.py +0 -0
  401. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/conftest.py +0 -0
  402. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/agent.changed.json +0 -0
  403. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/answer.refused.json +0 -0
  404. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/artifact.created.json +0 -0
  405. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/control.observed.json +0 -0
  406. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/control.requested.json +0 -0
  407. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/custom.json +0 -0
  408. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/input.appended.json +0 -0
  409. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/message.completed.json +0 -0
  410. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/report.json +0 -0
  411. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/run.cancelled.json +0 -0
  412. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/run.completed.json +0 -0
  413. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/run.failed.json +0 -0
  414. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/run.interrupted.json +0 -0
  415. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/run.paused.json +0 -0
  416. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/run.resumed.json +0 -0
  417. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/run.started.json +0 -0
  418. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/text.delta.json +0 -0
  419. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/thought.delta.json +0 -0
  420. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/tool.call.completed.json +0 -0
  421. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/tool.call.started.json +0 -0
  422. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/snapshots/usage.reported.json +0 -0
  423. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_content.py +0 -0
  424. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_context.py +0 -0
  425. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_continuation.py +0 -0
  426. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_events.py +0 -0
  427. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_golden_json.py +0 -0
  428. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_import_law.py +0 -0
  429. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_model_config.py +0 -0
  430. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_old_reader_block_compat.py +0 -0
  431. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_old_reader_compat.py +0 -0
  432. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_reporting.py +0 -0
  433. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_run_lifecycle_tables.py +0 -0
  434. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/core/test_vocabularies_agree.py +0 -0
  435. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/crash_worker.py +0 -0
  436. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/event_log_checks.py +0 -0
  437. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/README.md +0 -0
  438. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/conftest.py +0 -0
  439. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/fixture_project/.agentdeck/agents/greeter/agent.py +0 -0
  440. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/snapshots/01_health.http +0 -0
  441. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/snapshots/02_chat.http +0 -0
  442. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/snapshots/03_chat_stream.http +0 -0
  443. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/snapshots/04_chat_missing_field.http +0 -0
  444. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/snapshots/05_agent_unknown.http +0 -0
  445. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/golden/test_golden_wire.py +0 -0
  446. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/plays.py +0 -0
  447. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/project_executors.py +0 -0
  448. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_agent_changed.py +0 -0
  449. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_agent_model_resolution.py +0 -0
  450. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_authoring.py +0 -0
  451. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_brand_assets.py +0 -0
  452. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_changelog.py +0 -0
  453. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_child_runs.py +0 -0
  454. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_cli.py +0 -0
  455. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_cli_render.py +0 -0
  456. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_commit_hygiene.py +0 -0
  457. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_composition.py +0 -0
  458. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_context_injection.py +0 -0
  459. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_context_validation.py +0 -0
  460. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_crash_reconciliation.py +0 -0
  461. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_docs_examples.py +0 -0
  462. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_docs_impact.py +0 -0
  463. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_docs_site.py +0 -0
  464. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_errors.py +0 -0
  465. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_examples.py +0 -0
  466. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_executor_plays.py +0 -0
  467. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_generated_reference.py +0 -0
  468. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_governance_workflows.py +0 -0
  469. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_handoff_ends_on_user_turn.py +0 -0
  470. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_handoff_round_trip.py +0 -0
  471. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_handoffs.py +0 -0
  472. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_instructions_and_hooks.py +0 -0
  473. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_invocable_registry.py +0 -0
  474. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_jack.py +0 -0
  475. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_jack_server.py +0 -0
  476. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_langfuse_sink.py +0 -0
  477. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_langfuse_tracer.py +0 -0
  478. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_mcp.py +0 -0
  479. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_mcp_tool_source.py +0 -0
  480. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_memory_store.py +0 -0
  481. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_model_providers.py +0 -0
  482. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_multiprocess_concurrency.py +0 -0
  483. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_observability.py +0 -0
  484. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_openai_agents_engine.py +0 -0
  485. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_openai_agents_reconcile.py +0 -0
  486. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_openai_agents_sessions.py +0 -0
  487. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_openai_agents_tool_failure.py +0 -0
  488. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_package.py +0 -0
  489. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_postgres_store.py +0 -0
  490. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_redis_store.py +0 -0
  491. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_run_config_parity.py +0 -0
  492. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_run_control.py +0 -0
  493. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_run_reporting.py +0 -0
  494. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_serve.py +0 -0
  495. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_serve_compat.py +0 -0
  496. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_serve_session_claim.py +0 -0
  497. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_settings.py +0 -0
  498. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_sink_dispatch.py +0 -0
  499. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_skills.py +0 -0
  500. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_sqlite_control_port.py +0 -0
  501. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_sqlite_store.py +0 -0
  502. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_streaming.py +0 -0
  503. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_subagents.py +0 -0
  504. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_tool_compilation.py +0 -0
  505. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_uc1_handoff.py +0 -0
  506. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_uc3_slowpoke.py +0 -0
  507. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_views.py +0 -0
  508. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/tests/test_web_search.py +0 -0
  509. {agentdeck_sdk-5.0.0 → agentdeck_sdk-5.0.3}/uv.lock +0 -0
@@ -19,7 +19,9 @@ permissions:
19
19
 
20
20
  concurrency:
21
21
  group: ci-${{ github.event.pull_request.number || github.ref }}
22
- cancel-in-progress: ${{ github.event_name == 'pull_request' }}
22
+ # An `edited` run skips the two heavy jobs, so cancelling for it strands `Python 3.12` and
23
+ # `Python 3.13` at `cancelled` with no later event to replace them (#444).
24
+ cancel-in-progress: ${{ github.event_name == 'pull_request' && github.event.action != 'edited' }}
23
25
 
24
26
  jobs:
25
27
  test:
@@ -11,6 +11,11 @@ concurrency:
11
11
  group: docs-check-${{ github.event.pull_request.number || github.ref }}
12
12
  cancel-in-progress: true
13
13
 
14
+ # `Build documentation` is a required context, and a cancelled run leaves it absent, which branch
15
+ # protection cannot tell from a failure. The next `synchronize` normally replaces it; when it stays
16
+ # absent, close and reopen the PR, which fires a genuine `pull_request` event. `workflow_dispatch`
17
+ # does not clear it: GitHub does not associate a dispatch run with a pull request (#408).
18
+
14
19
  jobs:
15
20
  build:
16
21
  name: Build documentation
@@ -0,0 +1 @@
1
+ {"agentdeck.authoring.interrupts": 1787457347.3014472, "agentdeck.adapters.stores.memory": 1787457347.2999215, "agentdeck.adapters.executors.openai_agents.executor": 1787457347.2990232, "agentdeck.adapters.leases": 1787457347.2994828, "agentdeck.adapters.control.memory": 1787457347.298513, "agentdeck.adapters.executors.openai_agents": 1787457347.2988605, "agentdeck.skills": 1787457347.3040318, "agentdeck.core.ports.lease": 1787457347.3029366, "agentdeck.adapters.telemetry.langfuse.sink": 1787457347.3007956, "agentdeck.core.ports": 1787457347.3023982, "agentdeck.runtime.service": 1787457347.3040318, "agentdeck.core.control": 1787457347.3023982, "agentdeck.composition": 1787457347.3019564, "agentdeck.runtime.dispatch": 1787457347.3040318, "agentdeck.runtime.capture": 1787457347.3040318, "agentdeck.adapters.stores.memory.store": 1787457347.2999718, "agentdeck.adapters.leases.sqlite.port": 1787457347.2997804, "agentdeck.adapters.control": 1787457347.298452, "agentdeck.adapters.tools.mcp.source": 1787457347.301159, "agentdeck.adapters.executors.stub.executor": 1787457347.2994828, "agentdeck.core.ports.control": 1787457347.3029366, "agentdeck.core.context": 1787457347.3023982, "agentdeck.adapters.telemetry.langfuse.client": 1787457347.3007956, "agentdeck.surfaces": 1787457347.3049493, "agentdeck.adapters.stores.redis.store": 1787457347.3003414, "agentdeck.adapters.control.sqlite": 1787457347.2985654, "agentdeck.adapters.tools.mcp.lifecycle": 1787457347.301159, "agentdeck.views": 1787457347.3052833, "agentdeck.adapters.control.sqlite.port": 1787457347.2986648, "agentdeck.authoring": 1787457347.301159, "agentdeck.authoring.runners.agent": 1787457347.3019564, "agentdeck.adapters.stores.postgres": 1787457347.2999718, "agentdeck.core": 1787457347.3019564, "agentdeck.surfaces.serve.compat": 1787457347.3052833, "agentdeck.surfaces.cli.chat": 1787457347.3051565, "agentdeck.adapters.executors.openai_agents.translate": 1787457347.2990232, "agentdeck.adapters.leases.memory.port": 1787457347.2996686, "agentdeck.adapters.telemetry": 1787457347.3005333, "agentdeck.adapters.tools": 1787457347.3007956, "agentdeck.adapters.executors.native.executor": 1787457347.2988605, "agentdeck.skills.bundle": 1787457347.3049493, "agentdeck": 1787457347.2983277, "agentdeck.testing": 1787457347.3052833, "agentdeck.runtime.registry": 1787457347.3040318, "agentdeck.errors": 1787457347.3029366, "agentdeck.runtime": 1787457347.3029366, "agentdeck.adapters.stores.redis": 1787457347.3001416, "agentdeck.adapters.tools.mcp.transport": 1787457347.301159, "agentdeck.adapters.executors.openai_agents.reconcile": 1787457347.2990232, "agentdeck.authoring.hooks": 1787457347.3014472, "agentdeck.authoring.injection": 1787457347.3014472, "agentdeck.authoring.compile": 1787457347.3014472, "agentdeck.authoring.web_search": 1787457347.3019564, "agentdeck.serve": 1787457347.3040318, "agentdeck.adapters.executors.openai_agents.sessions": 1787457347.2990232, "agentdeck.core.reporting": 1787457347.3029366, "agentdeck.core.base": 1787457347.3023982, "agentdeck.authoring.instructions": 1787457347.3014472, "agentdeck.runtime.settings": 1787457347.3040318, "agentdeck.adapters.tools.mcp": 1787457347.3010738, "agentdeck.adapters.stores": 1787457347.2997804, "agentdeck.authoring.skills": 1787457347.3019564, "agentdeck.authoring.agent": 1787457347.3014472, "agentdeck.adapters.executors.stub": 1787457347.2990232, "agentdeck.core.status": 1787457347.3029366, "agentdeck.core.ports.executor": 1787457347.3029366, "agentdeck.surfaces.serve.app": 1787457347.3052833, "agentdeck.surfaces.serve": 1787457347.3051565, "agentdeck.adapters.stores.sqlite.store": 1787457347.3005333, "agentdeck.surfaces.cli": 1787457347.305068, "agentdeck.observers": 1787457347.3029366, "agentdeck.authoring.native": 1787457347.3014472, "agentdeck.adapters.executors": 1787457347.2986648, "agentdeck.adapters.telemetry.langfuse": 1787457347.3007429, "agentdeck.adapters.executors.openai_agents.runconfig": 1787457347.2990232, "agentdeck.core.invocable": 1787457347.3023982, "agentdeck.adapters": 1787457347.2983277, "agentdeck.runtime.discovery": 1787457347.3040318, "agentdeck.adapters.executors.native": 1787457347.2988102, "agentdeck.adapters.telemetry.langfuse.trace": 1787457347.3007956, "agentdeck.adapters.leases.memory": 1787457347.2996194, "agentdeck.authoring.tools": 1787457347.3019564, "agentdeck.adapters.leases.sqlite": 1787457347.2996686, "agentdeck.core.events": 1787457347.3023982, "agentdeck.adapters.tools.mcp.wiring": 1787457347.301159, "agentdeck.authoring.runners": 1787457347.3014472, "agentdeck.core.ports.sink": 1787457347.3029366, "agentdeck.adapters.control.memory.port": 1787457347.2985654, "agentdeck.core.ports.store": 1787457347.3029366, "agentdeck.adapters.stores.postgres.store": 1787457347.3001416, "agentdeck.core.ports.tools": 1787457347.3029366, "agentdeck.adapters.stores.sqlite": 1787457347.3003414, "agentdeck.core.content": 1787457347.3023982, "agentdeck.deck": 1787457347.3029366, "agentdeck.cli": 1787457347.3019564, "agentdeck.mcp": 1787457347.3029366}
@@ -0,0 +1 @@
1
+ {"agentdeck.authoring.web_search":[["httpx",12,"import httpx"],["__future__",10,"from __future__ import annotations"],["agentdeck.runtime.settings",15,"from agentdeck.runtime.settings import get_settings"],["agents",13,"from agents import function_tool"]],"agentdeck.adapters.leases.memory.port":[["agentdeck.core.ports.lease",15,"from agentdeck.core.ports.lease import LeasePort"],["datetime",19,"from datetime import timedelta"],["__future__",10,"from __future__ import annotations"],["collections",18,"from collections.abc import Callable, Collection"],["typing",13,"from typing import TYPE_CHECKING"],["datetime",12,"from datetime import UTC, datetime"]],"agentdeck.core.ports":[["agentdeck.core.ports.store",15,"from agentdeck.core.ports.store import EventStorePort, RunSummary, SessionClaim"],["agentdeck.core.ports.lease",13,"from agentdeck.core.ports.lease import LeasePort"],["agentdeck.core.ports.executor",12,"from agentdeck.core.ports.executor import Executor"],["agentdeck.core.ports.control",11,"from agentdeck.core.ports.control import ControlPort"],["agentdeck.core.ports.sink",14,"from agentdeck.core.ports.sink import Observer"],["agentdeck.core.ports.tools",16,"from agentdeck.core.ports.tools import ToolSet, ToolSourcePort"]],"agentdeck.adapters.leases.memory":[["agentdeck.adapters.leases.memory.port",3,"from agentdeck.adapters.leases.memory.port import MemoryLeasePort"]],"agentdeck.core.ports.store":[["agentdeck.core.events",20,"from agentdeck.core.events import Event, KnownPayload, RunResumed, RunStarted"],["dataclasses",10,"from dataclasses import dataclass"],["agentdeck.core.context",19,"from agentdeck.core.context import RunContext"],["typing",11,"from typing import TYPE_CHECKING"],["agentdeck.core.status",13,"from agentdeck.core.status import RunStatus, status_of"],["abc",9,"from abc import ABC, abstractmethod"],["datetime",17,"from datetime import timedelta"],["__future__",7,"from __future__ import annotations"],["collections",16,"from collections.abc import Sequence"]],"agentdeck.surfaces.cli":[["agentdeck.surfaces.cli.chat",5,"from agentdeck.surfaces.cli.chat import render, stream_chat"],["__future__",3,"from __future__ import annotations"]],"agentdeck.adapters":[],"agentdeck.skills":[["collections",19,"from collections.abc import Sequence"],["pathlib",12,"from pathlib import Path"],["typing",13,"from typing import TYPE_CHECKING"],["__future__",10,"from __future__ import annotations"],["agentdeck.errors",15,"from agentdeck.errors import DOCS_URL, ConfigError, NotFoundError"],["agentdeck.skills.bundle",16,"from agentdeck.skills.bundle import SKILL_MD_FILENAME, SkillBundle"]],"agentdeck.adapters.control.memory":[["agentdeck.adapters.control.memory.port",3,"from agentdeck.adapters.control.memory.port import MemoryControlPort"]],"agentdeck.adapters.leases.sqlite":[["agentdeck.adapters.leases.sqlite.port",3,"from agentdeck.adapters.leases.sqlite.port import SqliteLeasePort"]],"agentdeck.adapters.stores.postgres":[["agentdeck.adapters.stores.postgres.store",3,"from agentdeck.adapters.stores.postgres.store import PostgresEventStore"]],"agentdeck.adapters.executors.openai_agents.sessions":[["redis",53,"from redis.asyncio import Redis"],["agentdeck.runtime.settings",30,"from agentdeck.runtime.settings import SessionSettings"],["redis",27,"from redis.asyncio import Redis"],["agentdeck.core.context",29,"from agentdeck.core.context import RunContext"],["__future__",19,"from __future__ import annotations"],["typing",21,"from typing import TYPE_CHECKING"],["agents",26,"from agents.memory.session import Session"],["agents",23,"from agents import SQLiteSession"],["agents",68,"from agents.extensions.memory import RedisSession"]],"agentdeck.core.ports.tools":[["agentdeck.core.invocable",22,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.base",19,"from agentdeck.core.base import CoreModel"],["typing",15,"from typing import TYPE_CHECKING, Any"],["pydantic",17,"from pydantic import ConfigDict"],["abc",14,"from abc import ABC, abstractmethod"],["__future__",12,"from __future__ import annotations"]],"agentdeck.views":[["collections",21,"from collections.abc import Callable"],["__future__",14,"from __future__ import annotations"],["agentdeck.core.events",23,"from agentdeck.core.events import Event"],["agentdeck.core.status",18,"from agentdeck.core.status import LIFECYCLE_KINDS"],["typing",16,"from typing import TYPE_CHECKING"]],"agentdeck.adapters.executors.openai_agents.executor":[["agents",60,"from agents.items import TResponseInputItem"],["agentdeck.core.status",54,"from agentdeck.core.status import Play, continuation_of"],["agentdeck.adapters.executors.openai_agents.runconfig",47,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings, build_run_config"],["agentdeck.adapters.executors.openai_agents.reconcile",46,"from agentdeck.adapters.executors.openai_agents.reconcile import reconcile, render_data_block"],["agents",43,"from agents import Agent, Runner"],["agents",62,"from agents.result import RunResultStreaming"],["agentdeck.core.events",67,"from agentdeck.core.events import Event, KnownPayload"],["collections",38,"from collections.abc import Callable"],["agentdeck.adapters.executors.openai_agents.translate",49,"from agentdeck.adapters.executors.openai_agents.translate import translate"],["agentdeck.core.content",65,"from agentdeck.core.content import ContentBlock, Input"],["agentdeck.core.control",51,"from agentdeck.core.control import ControlSignalled"],["agents",63,"from agents.usage import Usage as SDKUsage"],["agents",61,"from agents.memory.session import Session"],["typing",41,"from typing import TYPE_CHECKING, Any, ClassVar, cast"],["pydantic",44,"from pydantic import BaseModel"],["agentdeck.core.events",52,"from agentdeck.core.events import RunCompleted, Usage, UsageReported"],["agentdeck.core.content",50,"from agentdeck.core.content import AudioBlock, DataBlock, ImageBlock, ResourceBlock, TextBlock, coerce_input"],["agentdeck.core.context",66,"from agentdeck.core.context import RunContext"],["agentdeck.adapters.executors.openai_agents.sessions",48,"from agentdeck.adapters.executors.openai_agents.sessions import ExecutionStore"],["contextlib",39,"from contextlib import AbstractAsyncContextManager, aclosing, asynccontextmanager, nullcontext"],["agentdeck.core.invocable",68,"from agentdeck.core.invocable import InvocableSpec"],["dataclasses",40,"from dataclasses import dataclass"],["__future__",34,"from __future__ import annotations"],["collections",58,"from collections.abc import AsyncGenerator, AsyncIterator, Sequence"],["json",37,"import json"],["dataclasses",36,"import dataclasses"],["agentdeck.errors",55,"from agentdeck.errors import ConfigError"],["agentdeck.core.ports",53,"from agentdeck.core.ports import Executor"]],"agentdeck.adapters.tools.mcp":[["agentdeck.adapters.tools.mcp.wiring",8,"from agentdeck.adapters.tools.mcp.wiring import mcp_status_banner, resolve_agent_mcp_servers, resolve_agent_mcp_status"],["agentdeck.adapters.tools.mcp.lifecycle",5,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["agentdeck.adapters.tools.mcp.transport",7,"from agentdeck.adapters.tools.mcp.transport import MCPServerStreamableHttpResilient"],["__future__",3,"from __future__ import annotations"],["agentdeck.adapters.tools.mcp.source",6,"from agentdeck.adapters.tools.mcp.source import MCP_SERVER_NAMES_KEY, MCPToolSource"]],"agentdeck.runtime.settings":[["pydantic",24,"from pydantic import BaseModel, ConfigDict, Field, field_validator"],["functools",19,"from functools import lru_cache"],["pathlib",20,"from pathlib import Path"],["typing",21,"from typing import TYPE_CHECKING, Any, ClassVar, Self"],["dotenv",23,"from dotenv import load_dotenv"],["collections",28,"from collections.abc import Callable"],["datetime",18,"from datetime import timedelta"],["__future__",13,"from __future__ import annotations"],["pydantic_settings",25,"from pydantic_settings import BaseSettings, SettingsConfigDict"],["os",16,"import os"],["collections",17,"from collections.abc import Mapping"],["logging",15,"import logging"]],"agentdeck.adapters.stores.redis.store":[["collections",46,"from collections.abc import Awaitable, Callable, Iterable, Sequence"],["agentdeck.core.context",51,"from agentdeck.core.context import RunContext"],["redis",36,"from redis.asyncio import Redis"],["urllib",34,"from urllib.parse import quote"],["json",31,"import json"],["__future__",29,"from __future__ import annotations"],["redis",49,"from redis.asyncio.client import Pipeline"],["agentdeck.core.ports",41,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["agentdeck.core.events",52,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["typing",33,"from typing import TYPE_CHECKING, cast"],["redis",37,"from redis.exceptions import RedisError, WatchError"],["agentdeck.errors",43,"from agentdeck.errors import DuplicateKeyError, StoreError"],["datetime",32,"from datetime import UTC, datetime"],["agentdeck.core.status",53,"from agentdeck.core.status import RunStatus"],["agentdeck.core.status",42,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["agentdeck.core.events",40,"from agentdeck.core.events import Event"],["agentdeck.adapters.stores",39,"from agentdeck.adapters.stores import _refuse_if_cancelled"],["datetime",47,"from datetime import timedelta"]],"agentdeck.adapters.telemetry.langfuse.client":[["typing",17,"from typing import TYPE_CHECKING, Any"],["collections",22,"from collections.abc import Mapping"],["os",16,"import os"],["logging",15,"import logging"],["langfuse",60,"from langfuse import Langfuse # ty: ignore[unresolved-import] - [observability] extra"],["__future__",13,"from __future__ import annotations"],["agentdeck.runtime.settings",26,"from agentdeck.runtime.settings import LangfuseSettings"],["agentdeck.adapters.telemetry.langfuse.trace",24,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind"],["agentdeck.adapters.telemetry.langfuse.sink",19,"from agentdeck.adapters.telemetry.langfuse.sink import LangfuseSink"],["langfuse",102,"from langfuse import propagate_attributes # ty: ignore[unresolved-import] - [observability] extra"],["agentdeck.core.events",25,"from agentdeck.core.events import Usage"]],"agentdeck.adapters.executors":[],"agentdeck.adapters.executors.stub.executor":[["agentdeck.core.context",29,"from agentdeck.core.context import RunContext"],["__future__",13,"from __future__ import annotations"],["collections",15,"from collections.abc import Sequence"],["typing",16,"from typing import TYPE_CHECKING, ClassVar"],["agentdeck.core.events",19,"from agentdeck.core.events import RunInterrupted"],["agentdeck.core.control",18,"from agentdeck.core.control import ControlSignalled"],["agentdeck.core.ports",21,"from agentdeck.core.ports import Executor"],["agentdeck.core.invocable",20,"from agentdeck.core.invocable import InvocableKind, InvocableSpec"],["agentdeck.core.status",22,"from agentdeck.core.status import Play, continuation_of"],["agentdeck.core.content",28,"from agentdeck.core.content import Input"],["agentdeck.core.events",30,"from agentdeck.core.events import Event, KnownPayload"],["agentdeck.errors",23,"from agentdeck.errors import ConfigError"],["collections",26,"from collections.abc import AsyncGenerator"]],"agentdeck.core.invocable":[["pydantic",13,"from pydantic import ConfigDict, Field"],["enum",10,"from enum import StrEnum"],["collections",18,"from collections.abc import Callable"],["typing",11,"from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable"],["agentdeck.core.base",15,"from agentdeck.core.base import CoreModel"],["__future__",7,"from __future__ import annotations"],["dataclasses",9,"from dataclasses import dataclass"]],"agentdeck.adapters.tools":[],"agentdeck.adapters.leases.sqlite.port":[["functools",19,"from functools import partial"],["contextlib",18,"from contextlib import suppress"],["__future__",14,"from __future__ import annotations"],["collections",26,"from collections.abc import Callable, Collection"],["agentdeck.errors",23,"from agentdeck.errors import StoreError"],["asyncio",16,"import asyncio"],["datetime",27,"from datetime import timedelta"],["sqlite3",17,"import sqlite3"],["typing",20,"from typing import TYPE_CHECKING"],["pathlib",28,"from pathlib import Path"],["agentdeck.core.ports.lease",22,"from agentdeck.core.ports.lease import LeasePort"]],"agentdeck.core.ports.control":[["agentdeck.core.control",20,"from agentdeck.core.control import ControlSignal, Signal"],["typing",17,"from typing import TYPE_CHECKING"],["abc",16,"from abc import ABC, abstractmethod"],["__future__",14,"from __future__ import annotations"]],"agentdeck.adapters.telemetry.langfuse.trace":[["typing",15,"from typing import TYPE_CHECKING, Any, Literal, Protocol"],["__future__",13,"from __future__ import annotations"],["agentdeck.core.events",20,"from agentdeck.core.events import Usage"],["collections",18,"from collections.abc import Mapping"]],"agentdeck.adapters.telemetry.langfuse.sink":[["agentdeck.core.ports",45,"from agentdeck.core.ports import Observer"],["json",24,"import json"],["typing",28,"from typing import TYPE_CHECKING, Any"],["agentdeck.adapters.telemetry.langfuse.trace",50,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind, Tracer"],["agentdeck.core.content",51,"from agentdeck.core.content import Input"],["logging",25,"import logging"],["re",26,"import re"],["agentdeck.core.content",30,"from agentdeck.core.content import DataBlock, ImageBlock, ResourceBlock, TextBlock"],["agentdeck.core.events",31,"from agentdeck.core.events import ("],["dataclasses",27,"from dataclasses import dataclass, field"],["asyncio",23,"import asyncio"],["__future__",21,"from __future__ import annotations"],["agentdeck.core.events",52,"from agentdeck.core.events import Event, Usage"],["collections",48,"from collections.abc import Mapping"]],"agentdeck.surfaces.serve":[["__future__",3,"from __future__ import annotations"],["agentdeck.surfaces.serve.app",5,"from agentdeck.surfaces.serve.app import build_app"]],"agentdeck.authoring.injection":[["dataclasses",31,"from dataclasses import dataclass"],["types",30,"import types"],["__future__",27,"from __future__ import annotations"],["inspect",29,"import inspect"],["agentdeck.errors",35,"from agentdeck.errors import ConfigError, ContextTypeError"],["agentdeck.core.context",34,"from agentdeck.core.context import ToolCtx, WorkflowCtx"],["typing",32,"from typing import TYPE_CHECKING, Any, Union, get_args, get_origin, get_type_hints"],["collections",38,"from collections.abc import Callable, Iterable, Iterator, Mapping"]],"agentdeck.adapters.executors.openai_agents":[["__future__",3,"from __future__ import annotations"],["agentdeck.adapters.executors.openai_agents.runconfig",6,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings"],["agentdeck.adapters.executors.openai_agents.executor",5,"from agentdeck.adapters.executors.openai_agents.executor import OpenAIAgentsExecutor"],["agentdeck.adapters.executors.openai_agents.sessions",7,"from agentdeck.adapters.executors.openai_agents.sessions import ExecutionStore, SessionFactory"]],"agentdeck.core.ports.executor":[["agentdeck.core.content",15,"from agentdeck.core.content import Input"],["abc",9,"from abc import ABC, abstractmethod"],["collections",13,"from collections.abc import AsyncGenerator, Sequence"],["typing",10,"from typing import TYPE_CHECKING, ClassVar"],["agentdeck.core.invocable",18,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.context",16,"from agentdeck.core.context import RunContext"],["__future__",7,"from __future__ import annotations"],["agentdeck.core.events",17,"from agentdeck.core.events import Event, KnownPayload"]],"agentdeck.adapters.stores":[["typing",5,"from typing import TYPE_CHECKING"],["agentdeck.core.context",11,"from agentdeck.core.context import RunContext"],["__future__",3,"from __future__ import annotations"],["agentdeck.errors",8,"from agentdeck.errors import RunStateError"],["agentdeck.core.status",7,"from agentdeck.core.status import RunStatus"]],"agentdeck.authoring.hooks":[["collections",31,"from collections.abc import Callable"],["agents",24,"from agents.lifecycle import AgentHooks"],["agentdeck.errors",28,"from agentdeck.errors import ConfigError"],["agentdeck.authoring.injection",26,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"],["inspect",21,"import inspect"],["__future__",19,"from __future__ import annotations"],["typing",22,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.context",27,"from agentdeck.core.context import RunContext, ToolCtx"]],"agentdeck.composition":[["agentdeck.adapters.stores.sqlite",27,"from agentdeck.adapters.stores.sqlite import SqliteEventStore"],["agentdeck.adapters.stores.redis",228,"from agentdeck.adapters.stores.redis import RedisEventStore"],["agentdeck.adapters.executors.openai_agents.runconfig",23,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings"],["logging",18,"import logging"],["agentdeck.runtime.service",30,"from agentdeck.runtime.service import Runtime"],["agentdeck.core.ports",45,"from agentdeck.core.ports import ControlPort, EventStorePort, Executor, LeasePort, Observer"],["typing",19,"from typing import TYPE_CHECKING"],["agentdeck.errors",28,"from agentdeck.errors import DOCS_URL"],["agentdeck.adapters.leases.sqlite",25,"from agentdeck.adapters.leases.sqlite import SqliteLeasePort"],["agentdeck.adapters.control.memory",21,"from agentdeck.adapters.control.memory import MemoryControlPort"],["agentdeck.adapters.control.sqlite",22,"from agentdeck.adapters.control.sqlite import SqliteControlPort"],["datetime",42,"from datetime import timedelta"],["agentdeck.adapters.stores.postgres",237,"from agentdeck.adapters.stores.postgres import PostgresEventStore"],["collections",41,"from collections.abc import Mapping, Sequence"],["agentdeck.observers",112,"from agentdeck.observers import LangfuseObserver"],["agentdeck.runtime.settings",31,"from agentdeck.runtime.settings import ("],["agentdeck.runtime.discovery",29,"from agentdeck.runtime.discovery import InvocableRegistry"],["agentdeck.adapters.leases.memory",24,"from agentdeck.adapters.leases.memory import MemoryLeasePort"],["agentdeck.core.invocable",44,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.adapters.stores.memory",26,"from agentdeck.adapters.stores.memory import MemoryEventStore"],["__future__",16,"from __future__ import annotations"]],"agentdeck.adapters.stores.sqlite":[["agentdeck.adapters.stores.sqlite.store",3,"from agentdeck.adapters.stores.sqlite.store import SqliteEventStore"]],"agentdeck.core.content":[["__future__",11,"from __future__ import annotations"],["agentdeck.core.base",26,"from agentdeck.core.base import CoreModel, JsonData"],["base64",13,"import base64"],["pydantic",16,"from pydantic import ("],["typing",14,"from typing import Annotated, Any, Literal, get_args"]],"agentdeck.surfaces.cli.chat":[["typing",13,"from typing import TYPE_CHECKING"],["json",12,"import json"],["httpx",33,"import httpx"],["__future__",10,"from __future__ import annotations"],["collections",31,"from collections.abc import AsyncIterator, Mapping"],["agentdeck.core.content",15,"from agentdeck.core.content import TextBlock"],["agentdeck.core.events",16,"from agentdeck.core.events import ("]],"agentdeck.runtime.capture":[["enum",14,"from enum import StrEnum"],["__future__",12,"from __future__ import annotations"],["pydantic",16,"from pydantic import BaseModel"]],"agentdeck.core.reporting":[["logging",14,"import logging"],["typing",15,"from typing import TYPE_CHECKING"],["__future__",12,"from __future__ import annotations"],["agentdeck.core.events",23,"from agentdeck.core.events import KnownPayload"],["agentdeck.core.events",17,"from agentdeck.core.events import Reported"],["collections",20,"from collections import deque"],["agentdeck.core.base",22,"from agentdeck.core.base import JsonData"]],"agentdeck.adapters.tools.mcp.wiring":[["typing",10,"from typing import TYPE_CHECKING"],["__future__",8,"from __future__ import annotations"],["agentdeck.adapters.tools.mcp.lifecycle",12,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["collections",15,"from collections.abc import Iterable, Sequence"],["agents",17,"from agents.mcp import MCPServer"]],"agentdeck.core.events":[["agentdeck.core.content",37,"from agentdeck.core.content import Input # noqa: TC001 - pydantic resolves field annotations at runtime"],["__future__",21,"from __future__ import annotations"],["typing",23,"from typing import Annotated, Any, Literal, get_args"],["agentdeck.core.base",36,"from agentdeck.core.base import CoreModel, JsonData"],["pydantic",25,"from pydantic import ("]],"agentdeck.surfaces.serve.compat":[["contextlib",16,"from contextlib import aclosing"],["__future__",13,"from __future__ import annotations"],["json",15,"import json"],["agentdeck.core.events",20,"from agentdeck.core.events import RunCompleted, TextDelta, UsageReported"],["typing",17,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.events",25,"from agentdeck.core.events import Event"],["agentdeck.core.content",19,"from agentdeck.core.content import DataBlock, TextBlock"],["collections",23,"from collections.abc import AsyncGenerator, AsyncIterator"]],"agentdeck.serve":[["collections",47,"from collections.abc import AsyncGenerator, AsyncIterator, Awaitable, Callable"],["agentdeck.core.status",42,"from agentdeck.core.status import status_of"],["fastapi",77,"from fastapi import FastAPI, HTTPException, Request"],["agentdeck.deck",52,"from agentdeck.deck import Deck"],["agentdeck.errors",43,"from agentdeck.errors import AgentdeckError, NotFoundError, RunStateError, SessionBusyError"],["os",37,"import os"],["agentdeck.core.content",41,"from agentdeck.core.content import coerce_input"],["__future__",33,"from __future__ import annotations"],["fastapi",49,"from fastapi import FastAPI"],["argparse",35,"import argparse"],["agentdeck.surfaces.serve.compat",44,"from agentdeck.surfaces.serve.compat import chat_frames, chat_result"],["fastapi",78,"from fastapi.responses import JSONResponse, StreamingResponse"],["agentdeck.deck",58,"from agentdeck.deck import Deck"],["contextlib",38,"from contextlib import aclosing, asynccontextmanager"],["typing",39,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.events",51,"from agentdeck.core.events import Event"],["uvicorn",285,"import uvicorn"],["logging",36,"import logging"]],"agentdeck.surfaces":[],"agentdeck":[["agentdeck.errors",19,"from agentdeck.errors import ("],["agentdeck.views",13,"from agentdeck import views"],["importlib",10,"from importlib.metadata import PackageNotFoundError"],["agentdeck.authoring.native",15,"from agentdeck.authoring.native import tool, workflow"],["importlib",11,"from importlib.metadata import version as _version"],["agentdeck.authoring",14,"from agentdeck.authoring import Agent"],["agentdeck.core.invocable",17,"from agentdeck.core.invocable import AgentInstance"],["agentdeck.core.context",16,"from agentdeck.core.context import ToolCtx, WorkflowCtx"],["agentdeck.deck",18,"from agentdeck.deck import Deck, Run, TurnResult"]],"agentdeck.adapters.executors.openai_agents.reconcile":[["agents",38,"from agents.items import TResponseInputItem"],["agentdeck.core.events",33,"from agentdeck.core.events import Custom, InputAppended, MessageCompleted, RunCancelled, RunStarted"],["__future__",24,"from __future__ import annotations"],["typing",29,"from typing import TYPE_CHECKING, Any, Literal"],["weakref",30,"from weakref import WeakKeyDictionary"],["agentdeck.core.events",42,"from agentdeck.core.events import Event"],["agents",39,"from agents.memory.session import Session"],["asyncio",26,"import asyncio"],["json",27,"import json"],["collections",36,"from collections.abc import Iterable, Sequence"],["logging",28,"import logging"],["agentdeck.core.content",41,"from agentdeck.core.content import Input"],["agentdeck.core.content",32,"from agentdeck.core.content import DataBlock, TextBlock"]],"agentdeck.adapters.stores.sqlite.store":[["agentdeck.core.events",31,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["functools",16,"from functools import partial"],["json",12,"import json"],["contextlib",14,"from contextlib import suppress"],["agentdeck.errors",23,"from agentdeck.errors import DuplicateKeyError, StoreError"],["agentdeck.core.ports",21,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["__future__",9,"from __future__ import annotations"],["collections",26,"from collections.abc import Callable, Sequence"],["agentdeck.adapters.stores",19,"from agentdeck.adapters.stores import _refuse_if_cancelled"],["agentdeck.core.status",32,"from agentdeck.core.status import RunStatus"],["datetime",15,"from datetime import datetime"],["asyncio",11,"import asyncio"],["agentdeck.core.status",22,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["agentdeck.core.events",20,"from agentdeck.core.events import Event"],["agentdeck.core.context",30,"from agentdeck.core.context import RunContext"],["datetime",27,"from datetime import timedelta"],["pathlib",28,"from pathlib import Path"],["sqlite3",13,"import sqlite3"],["typing",17,"from typing import TYPE_CHECKING"]],"agentdeck.errors":[["typing",14,"from typing import Any"],["agentdeck.core.status",16,"from agentdeck.core.status import RunStatus"],["__future__",12,"from __future__ import annotations"]],"agentdeck.authoring.runners.agent":[["__future__",15,"from __future__ import annotations"],["collections",27,"from collections.abc import AsyncGenerator, AsyncIterator"],["agentdeck.adapters.executors.openai_agents.runconfig",23,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings, build_run_config"],["dataclasses",18,"from dataclasses import dataclass, field"],["agents",21,"from agents import Agent, RunConfig, Runner, RunResult"],["agentdeck.runtime.settings",24,"from agentdeck.runtime.settings import Settings, default_use_responses, get_settings"],["contextlib",17,"from contextlib import aclosing"],["typing",19,"from typing import TYPE_CHECKING, Any, Self, cast"]],"agentdeck.deck":[["agentdeck.runtime.registry",89,"from agentdeck.runtime.registry import PROJECT_DIR, PluginRegistry, mount_project_dir"],["contextlib",43,"from contextlib import aclosing, suppress"],["agentdeck.core.content",65,"from agentdeck.core.content import DataBlock, TextBlock, coerce_input"],["agentdeck.authoring.agent",52,"from agentdeck.authoring.agent import Agent"],["agentdeck.authoring.compile",53,"from agentdeck.authoring.compile import compile_agent, refresh_mcp_status"],["collections",95,"from collections.abc import AsyncGenerator, AsyncIterator, Generator, Mapping, Sequence"],["agentdeck.core.events",101,"from agentdeck.core.events import Event, Usage"],["agentdeck.skills",91,"from agentdeck.skills import Skills"],["builtins",94,"import builtins"],["agentdeck.errors",79,"from agentdeck.errors import ("],["agentdeck.serve",1234,"from agentdeck.serve import build_asgi_app"],["agentdeck.runtime.settings",90,"from agentdeck.runtime.settings import Settings, get_settings"],["agentdeck.core.invocable",76,"from agentdeck.core.invocable import AgentInstance, InvocableKind, InvocableSpec"],["collections",42,"from collections import ChainMap"],["typing",46,"from typing import TYPE_CHECKING, Any, Literal, cast"],["agentdeck.composition",58,"from agentdeck.composition import ("],["agentdeck.authoring.injection",54,"from agentdeck.authoring.injection import declared_context_type"],["agentdeck.authoring.skills",57,"from agentdeck.authoring.skills import skills_resolver"],["types",45,"from types import MappingProxyType"],["__future__",36,"from __future__ import annotations"],["agentdeck.core.control",67,"from agentdeck.core.control import Signal"],["agents",97,"from agents.memory.session import Session"],["agentdeck.adapters.executors.native",48,"from agentdeck.adapters.executors.native import NativeExecutor"],["agentdeck.core.context",66,"from agentdeck.core.context import RunContext"],["agentdeck.core.ports",77,"from agentdeck.core.ports import Observer"],["agentdeck.authoring.native",56,"from agentdeck.authoring.native import NativeDefinition"],["agentdeck.runtime.discovery",88,"from agentdeck.runtime.discovery import EXECUTOR_FOR_KIND, InvocableRegistry"],["agentdeck.runtime.service",103,"from agentdeck.runtime.service import PendingRun, Runtime"],["pathlib",44,"from pathlib import Path"],["agentdeck.core.events",68,"from agentdeck.core.events import ("],["agentdeck.authoring.interrupts",99,"from agentdeck.authoring.interrupts import InterruptResult"],["agentdeck.adapters.tools.mcp.lifecycle",51,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["agentdeck.core.ports",102,"from agentdeck.core.ports import EventStorePort, Executor"],["uuid",41,"import uuid"],["agentdeck.adapters.executors.openai_agents",49,"from agentdeck.adapters.executors.openai_agents import ExecutionStore, OpenAIAgentsExecutor, SessionFactory"],["agentdeck.core.status",78,"from agentdeck.core.status import PRECONDITIONS, SUSPENDED_KINDS, Controls, Operation, RunStatus, Verdict, can_of"],["asyncio",38,"import asyncio"],["logging",40,"import logging"],["agentdeck.core.content",100,"from agentdeck.core.content import Input"],["agentdeck.authoring.interrupts",55,"from agentdeck.authoring.interrupts import interrupt_result"],["agentdeck.mcp",87,"from agentdeck.mcp import MCP"],["agentdeck.adapters.executors.openai_agents.runconfig",50,"from agentdeck.adapters.executors.openai_agents.runconfig import validate_model_requirements"],["functools",39,"import functools"]],"agentdeck.adapters.control":[],"agentdeck.adapters.leases":[],"agentdeck.adapters.executors.openai_agents.translate":[["__future__",11,"from __future__ import annotations"],["json",14,"import json"],["agentdeck.core.events",18,"from agentdeck.core.events import ("],["typing",16,"from typing import Any"],["logging",15,"import logging"],["hashlib",13,"import hashlib"]],"agentdeck.authoring.native":[["agentdeck.core.context",15,"from agentdeck.core.context import ToolCtx, WorkflowCtx"],["typing",12,"from typing import TYPE_CHECKING, Any"],["agentdeck.authoring.injection",14,"from agentdeck.authoring.injection import analyze_callable, describe_callable"],["dataclasses",11,"from dataclasses import dataclass"],["__future__",8,"from __future__ import annotations"],["agentdeck.core.invocable",16,"from agentdeck.core.invocable import InvocableKind"],["agentdeck.errors",17,"from agentdeck.errors import ConfigError"],["collections",20,"from collections.abc import Callable"],["agentdeck.authoring.injection",22,"from agentdeck.authoring.injection import CallableAnalysis"],["inspect",10,"import inspect"]],"agentdeck.adapters.executors.openai_agents.runconfig":[["agents",22,"from agents import ModelSettings, MultiProvider, OpenAIProvider, RunConfig, default_handoff_history_mapper"],["os",17,"import os"],["agentdeck.errors",26,"from agentdeck.errors import ConfigError"],["__future__",15,"from __future__ import annotations"],["agents",32,"from agents.items import TResponseInputItem"],["agents",23,"from agents.models.multi_provider import MultiProviderMap"],["httpx",21,"import httpx"],["dataclasses",18,"from dataclasses import dataclass"],["typing",19,"from typing import TYPE_CHECKING, Any, cast"],["agents",31,"from agents.handoffs import HandoffHistoryMapper"],["openai",24,"from openai import AsyncOpenAI"],["collections",29,"from collections.abc import Iterable"]],"agentdeck.adapters.telemetry":[],"agentdeck.adapters.stores.memory":[["agentdeck.adapters.stores.memory.store",3,"from agentdeck.adapters.stores.memory.store import MemoryEventStore"]],"agentdeck.authoring.interrupts":[["typing",10,"from typing import Any, Literal, NotRequired, TypedDict"],["__future__",8,"from __future__ import annotations"]],"agentdeck.adapters.executors.native.executor":[["agentdeck.errors",23,"from agentdeck.errors import ConfigError"],["contextlib",12,"from contextlib import suppress"],["__future__",9,"from __future__ import annotations"],["agentdeck.core.invocable",20,"from agentdeck.core.invocable import NativeInvocable"],["agentdeck.core.context",29,"from agentdeck.core.context import Agents, Invoker, RunContext"],["agentdeck.core.status",22,"from agentdeck.core.status import SUSPENDED_KINDS, Play, continuation_of"],["dataclasses",13,"from dataclasses import dataclass, field"],["agentdeck.core.invocable",31,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.events",19,"from agentdeck.core.events import RunCompleted, Usage"],["agentdeck.core.ports",21,"from agentdeck.core.ports import Executor"],["asyncio",11,"import asyncio"],["typing",14,"from typing import TYPE_CHECKING, Any, ClassVar"],["agentdeck.core.status",32,"from agentdeck.core.status import Continuation"],["agentdeck.core.content",16,"from agentdeck.core.content import DataBlock, TextBlock, answer_of"],["agentdeck.core.control",18,"from agentdeck.core.control import ControlSignalled"],["collections",26,"from collections.abc import AsyncGenerator, Sequence"],["agentdeck.core.content",28,"from agentdeck.core.content import Input"],["agentdeck.core.events",30,"from agentdeck.core.events import Event, KnownPayload"],["agentdeck.core.context",17,"from agentdeck.core.context import WorkflowCtx"]],"agentdeck.mcp":[["pathlib",13,"from pathlib import Path"],["agentdeck.errors",18,"from agentdeck.errors import ConfigError"],["__future__",10,"from __future__ import annotations"],["typing",14,"from typing import Any"],["pydantic",16,"from pydantic import BaseModel, ConfigDict, Field"],["json",12,"import json"]],"agentdeck.adapters.stores.redis":[["agentdeck.adapters.stores.redis.store",3,"from agentdeck.adapters.stores.redis.store import RedisEventStore"]],"agentdeck.authoring.skills":[["__future__",9,"from __future__ import annotations"],["agents",13,"from agents import function_tool"],["typing",11,"from typing import TYPE_CHECKING"],["collections",16,"from collections.abc import Callable, Sequence"],["agents",18,"from agents.tool import FunctionTool"],["agentdeck.skills",20,"from agentdeck.skills import Skills"]],"agentdeck.adapters.tools.mcp.transport":[["asyncio",11,"import asyncio"],["__future__",9,"from __future__ import annotations"],["typing",14,"from typing import TYPE_CHECKING, Any, TypeVar"],["agents",17,"from agents.mcp import MCPServerStreamableHttp"],["httpx",16,"import httpx"],["contextlib",13,"from contextlib import AsyncExitStack, suppress"],["logging",12,"import logging"],["collections",20,"from collections.abc import Awaitable, Callable"]],"agentdeck.adapters.control.sqlite":[["agentdeck.adapters.control.sqlite.port",3,"from agentdeck.adapters.control.sqlite.port import SqliteControlPort"]],"agentdeck.surfaces.serve.app":[["pydantic",13,"from pydantic import BaseModel, Field"],["fastapi",11,"from fastapi import FastAPI"],["agentdeck.core.events",21,"from agentdeck.core.events import Event"],["collections",19,"from collections.abc import AsyncIterator"],["agentdeck.runtime.service",22,"from agentdeck.runtime.service import Runtime"],["agentdeck.errors",16,"from agentdeck.errors import SessionBusyError"],["__future__",6,"from __future__ import annotations"],["typing",9,"from typing import TYPE_CHECKING, Any"],["http",8,"from http import HTTPStatus"],["agentdeck.core.content",15,"from agentdeck.core.content import coerce_input"],["fastapi",12,"from fastapi.responses import JSONResponse, StreamingResponse"]],"agentdeck.authoring.instructions":[["typing",21,"from typing import TYPE_CHECKING, Any"],["collections",28,"from collections.abc import Callable"],["agentdeck.authoring.injection",23,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"],["agentdeck.core.context",24,"from agentdeck.core.context import RunContext, ToolCtx"],["agentdeck.errors",25,"from agentdeck.errors import ConfigError"],["__future__",18,"from __future__ import annotations"],["inspect",20,"import inspect"]],"agentdeck.cli":[["asyncio",20,"import asyncio"],["agentdeck.core.control",23,"from agentdeck.core.control import Signal"],["agentdeck.adapters.control.sqlite",22,"from agentdeck.adapters.control.sqlite import SqliteControlPort"],["argparse",19,"import argparse"],["__future__",17,"from __future__ import annotations"]],"agentdeck.adapters.stores.memory.store":[["datetime",17,"from datetime import timedelta"],["agentdeck.adapters.stores",9,"from agentdeck.adapters.stores import _refuse_if_cancelled"],["agentdeck.core.ports",11,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["__future__",3,"from __future__ import annotations"],["agentdeck.errors",13,"from agentdeck.errors import DuplicateKeyError"],["agentdeck.core.events",20,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["agentdeck.core.status",12,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, RunStatus, can_resume, status_of"],["asyncio",5,"import asyncio"],["agentdeck.core.context",19,"from agentdeck.core.context import RunContext"],["collections",16,"from collections.abc import Callable, Sequence"],["typing",7,"from typing import TYPE_CHECKING"],["datetime",6,"from datetime import UTC, datetime"],["agentdeck.core.events",10,"from agentdeck.core.events import Event"]],"agentdeck.runtime.service":[["asyncio",15,"import asyncio"],["agentdeck.core.control",26,"from agentdeck.core.control import CONTROL_POLL_INTERVAL, Gate, Signal"],["collections",56,"from collections.abc import AsyncGenerator, AsyncIterator, Mapping, Sequence"],["datetime",20,"from datetime import timedelta"],["typing",21,"from typing import TYPE_CHECKING, Final"],["uuid",22,"from uuid import uuid4"],["dataclasses",19,"from dataclasses import dataclass, replace"],["agentdeck.core.events",27,"from agentdeck.core.events import ("],["agentdeck.core.control",60,"from agentdeck.core.control import ControlSignal"],["agentdeck.core.content",24,"from agentdeck.core.content import as_answer"],["agentdeck.core.reporting",40,"from agentdeck.core.reporting import Reporter"],["agentdeck.core.status",41,"from agentdeck.core.status import ("],["agentdeck.core.invocable",62,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.context",25,"from agentdeck.core.context import RunContext"],["contextlib",18,"from contextlib import aclosing, asynccontextmanager, suppress"],["agentdeck.errors",52,"from agentdeck.errors import DOCS_URL, ConfigError, NotFoundError, RunStateError, SessionBusyError, StoreError"],["collections",17,"from collections import deque"],["agentdeck.runtime.dispatch",53,"from agentdeck.runtime.dispatch import SinkDispatch"],["logging",16,"import logging"],["typing",57,"from typing import Any"],["agentdeck.core.ports.store",64,"from agentdeck.core.ports.store import RunSummary"],["agentdeck.core.ports",63,"from agentdeck.core.ports import ControlPort, EventStorePort, Executor, LeasePort, Observer"],["agentdeck.core.events",61,"from agentdeck.core.events import InterruptReason, KnownPayload"],["__future__",13,"from __future__ import annotations"],["agentdeck.core.content",59,"from agentdeck.core.content import Input"]],"agentdeck.runtime":[],"agentdeck.adapters.executors.native":[["agentdeck.adapters.executors.native.executor",3,"from agentdeck.adapters.executors.native.executor import NativeExecutor"]],"agentdeck.runtime.dispatch":[["typing",26,"from typing import TYPE_CHECKING"],["__future__",21,"from __future__ import annotations"],["asyncio",23,"import asyncio"],["logging",24,"import logging"],["time",25,"import time"],["collections",29,"from collections.abc import Callable"],["agentdeck.core.ports",32,"from agentdeck.core.ports import Observer"],["agentdeck.core.events",31,"from agentdeck.core.events import Event"]],"agentdeck.core.ports.sink":[["typing",10,"from typing import TYPE_CHECKING"],["agentdeck.core.events",13,"from agentdeck.core.events import Event"],["abc",9,"from abc import ABC, abstractmethod"],["__future__",7,"from __future__ import annotations"]],"agentdeck.adapters.tools.mcp.source":[["typing",11,"from typing import TYPE_CHECKING"],["agentdeck.core.invocable",17,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.ports.tools",14,"from agentdeck.core.ports.tools import ToolSet, ToolSourcePort"],["__future__",9,"from __future__ import annotations"],["agentdeck.adapters.tools.mcp.wiring",13,"from agentdeck.adapters.tools.mcp.wiring import mcp_status_banner, resolve_agent_mcp_status"]],"agentdeck.adapters.executors.stub":[["agentdeck.adapters.executors.stub.executor",3,"from agentdeck.adapters.executors.stub.executor import Step, StubExecutor, stub_spec"]],"agentdeck.skills.bundle":[["re",5,"import re"],["__future__",3,"from __future__ import annotations"],["yaml",10,"import yaml"],["pathlib",7,"from pathlib import Path"],["agentdeck.errors",12,"from agentdeck.errors import ConfigError"],["typing",8,"from typing import Any"],["dataclasses",6,"from dataclasses import dataclass, field"]],"agentdeck.core.base":[["typing",10,"from typing import Annotated"],["__future__",7,"from __future__ import annotations"],["pydantic",12,"from pydantic import AfterValidator, BaseModel, ConfigDict, JsonValue"],["math",9,"from math import isfinite"]],"agentdeck.adapters.stores.postgres.store":[["psycopg",25,"from psycopg import sql"],["psycopg",24,"from psycopg import errors as pg_errors"],["agentdeck.core.ports",29,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["asyncio",19,"import asyncio"],["hashlib",20,"import hashlib"],["agentdeck.core.context",37,"from agentdeck.core.context import RunContext"],["agentdeck.core.status",30,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["agentdeck.errors",31,"from agentdeck.errors import DuplicateKeyError, StoreError"],["typing",21,"from typing import TYPE_CHECKING, Any"],["psycopg",23,"import psycopg"],["agentdeck.core.events",28,"from agentdeck.core.events import Event"],["__future__",17,"from __future__ import annotations"],["agentdeck.core.events",38,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["datetime",35,"from datetime import timedelta"],["collections",34,"from collections.abc import Awaitable, Callable, Sequence"],["agentdeck.core.status",39,"from agentdeck.core.status import RunStatus"],["agentdeck.adapters.stores",27,"from agentdeck.adapters.stores import _refuse_if_cancelled"]],"agentdeck.adapters.control.sqlite.port":[["__future__",7,"from __future__ import annotations"],["collections",20,"from collections.abc import Callable"],["agentdeck.core.ports.control",16,"from agentdeck.core.ports.control import ControlPort"],["typing",13,"from typing import TYPE_CHECKING"],["agentdeck.core.control",15,"from agentdeck.core.control import ControlSignal, Signal"],["agentdeck.errors",17,"from agentdeck.errors import StoreError"],["contextlib",11,"from contextlib import suppress"],["functools",12,"from functools import partial"],["sqlite3",10,"import sqlite3"],["pathlib",21,"from pathlib import Path"],["asyncio",9,"import asyncio"]],"agentdeck.adapters.telemetry.langfuse":[["agentdeck.adapters.telemetry.langfuse.trace",5,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind, Tracer"],["agentdeck.adapters.telemetry.langfuse.sink",4,"from agentdeck.adapters.telemetry.langfuse.sink import MAX_OPEN_CALLS, MAX_OPEN_RUNS, LangfuseSink"],["agentdeck.adapters.telemetry.langfuse.client",3,"from agentdeck.adapters.telemetry.langfuse.client import LangfuseTracer, build_client, langfuse_sink"]],"agentdeck.adapters.tools.mcp.lifecycle":[["logging",20,"import logging"],["agentdeck.errors",24,"from agentdeck.errors import ConfigError"],["__future__",17,"from __future__ import annotations"],["agents",29,"from agents.mcp import MCPServer"],["typing",21,"from typing import TYPE_CHECKING, Any"],["agentdeck.adapters.tools.mcp.transport",23,"from agentdeck.adapters.tools.mcp.transport import MCPServerStreamableHttpResilient"],["asyncio",19,"import asyncio"],["collections",27,"from collections.abc import Sequence"]],"agentdeck.observers":[["typing",19,"from typing import TYPE_CHECKING"],["__future__",16,"from __future__ import annotations"],["agentdeck.adapters.telemetry.langfuse.client",116,"from agentdeck.adapters.telemetry.langfuse.client import langfuse_sink"],["agentdeck.runtime.settings",23,"from agentdeck.runtime.settings import get_settings"],["agentdeck.views",27,"from agentdeck.views import View"],["agentdeck.core.ports",21,"from agentdeck.core.ports import Observer"],["agentdeck.core.events",26,"from agentdeck.core.events import Event"],["agentdeck.errors",22,"from agentdeck.errors import ConfigError"],["pathlib",18,"from pathlib import Path"],["agents",41,"from agents import set_trace_processors"],["openinference",42,"from openinference.instrumentation.openai_agents import ( # ty: ignore[unresolved-import] - [observability] extra"]],"agentdeck.core.control":[["typing",18,"from typing import TYPE_CHECKING, ClassVar"],["enum",17,"from enum import StrEnum"],["dataclasses",16,"from dataclasses import dataclass"],["time",15,"import time"],["agentdeck.core.events",26,"from agentdeck.core.events import ControlVerb, KnownPayload, SafePoint"],["agentdeck.core.ports.control",27,"from agentdeck.core.ports.control import ControlPort"],["agentdeck.core.events",20,"from agentdeck.core.events import ControlObserved, ControlRequested, RunCancelled, RunPaused"],["agentdeck.core.status",21,"from agentdeck.core.status import Action, RunStatus, decide"],["collections",24,"from collections.abc import Callable, Mapping"],["__future__",13,"from __future__ import annotations"]],"agentdeck.authoring":[["agentdeck.authoring.interrupts",8,"from agentdeck.authoring.interrupts import InterruptResult"],["agentdeck.authoring.agent",7,"from agentdeck.authoring.agent import Agent, AgentDeclaration"]],"agentdeck.authoring.runners":[["agentdeck.authoring.runners.agent",3,"from agentdeck.authoring.runners.agent import BaseRunner, HeadlessRunner, StreamDone"]],"agentdeck.core":[["agentdeck.core.invocable",55,"from agentdeck.core.invocable import InvocableKind, InvocableSpec"],["agentdeck.core.content",7,"from agentdeck.core.content import ("],["agentdeck.core.context",20,"from agentdeck.core.context import RunContext"],["agentdeck.core.reporting",56,"from agentdeck.core.reporting import Reporter"],["agentdeck.core.status",57,"from agentdeck.core.status import RunStatus, can_resume, status_of"],["agentdeck.core.events",21,"from agentdeck.core.events import ("]],"agentdeck.adapters.control.memory.port":[["agentdeck.core.control",7,"from agentdeck.core.control import ControlSignal, Signal"],["__future__",5,"from __future__ import annotations"],["agentdeck.core.ports.control",8,"from agentdeck.core.ports.control import ControlPort"]],"agentdeck.core.context":[["agentdeck.core.control",27,"from agentdeck.core.control import Gate, RunPausedError"],["agentdeck.core.base",37,"from agentdeck.core.base import JsonData"],["agentdeck.core.invocable",38,"from agentdeck.core.invocable import AgentInstance"],["__future__",18,"from __future__ import annotations"],["logging",22,"import logging"],["collections",35,"from collections.abc import Callable"],["asyncio",20,"import asyncio"],["uuid",25,"from uuid import uuid4"],["agentdeck.core.events",28,"from agentdeck.core.events import KnownPayload, RunInterrupted"],["dataclasses",23,"from dataclasses import dataclass, field"],["inspect",21,"import inspect"],["agentdeck.core.reporting",29,"from agentdeck.core.reporting import Reporter"],["typing",24,"from typing import TYPE_CHECKING, Any, Protocol, cast, runtime_checkable"],["agentdeck.core.status",30,"from agentdeck.core.status import RunStatus"]],"agentdeck.core.ports.lease":[["datetime",21,"from datetime import timedelta"],["__future__",14,"from __future__ import annotations"],["collections",20,"from collections.abc import Collection"],["abc",16,"from abc import ABC, abstractmethod"],["typing",17,"from typing import TYPE_CHECKING"]],"agentdeck.authoring.compile":[["agentdeck.errors",54,"from agentdeck.errors import ConfigError, NotFoundError"],["agentdeck.authoring.agent",62,"from agentdeck.authoring.agent import Agent"],["agentdeck.authoring.hooks",49,"from agentdeck.authoring.hooks import compile_hooks"],["agents",60,"from agents.tool import FunctionTool"],["agentdeck.runtime.settings",55,"from agentdeck.runtime.settings import get_settings"],["agentdeck.adapters.tools.mcp.wiring",48,"from agentdeck.adapters.tools.mcp.wiring import mcp_status_banner, resolve_agent_mcp_status"],["typing",42,"from typing import TYPE_CHECKING, Any, get_args, get_origin"],["re",41,"import re"],["agentdeck.core.context",63,"from agentdeck.core.context import RunContext"],["agentdeck.authoring.tools",52,"from agentdeck.authoring.tools import compile_tool"],["agentdeck.authoring.instructions",50,"from agentdeck.authoring.instructions import compile_instructions"],["agentdeck.core.context",53,"from agentdeck.core.context import ToolCtx # noqa: TC001 - a subagent tool's own annotation, resolved at runtime"],["agentdeck.authoring.native",51,"from agentdeck.authoring.native import NativeDefinition"],["__future__",39,"from __future__ import annotations"],["agents",46,"from agents import Tool as SDKTool"],["agents",44,"from agents import Agent as SDKAgent"],["collections",58,"from collections.abc import Awaitable, Callable, Mapping, Sequence"],["agents",45,"from agents import ModelSettings"],["agentdeck.authoring.agent",212,"from agentdeck.authoring.agent import Agent as AuthoringAgent"]],"agentdeck.core.status":[["enum",20,"from enum import StrEnum"],["dataclasses",19,"from dataclasses import dataclass"],["agentdeck.core.events",29,"from agentdeck.core.events import Event"],["typing",21,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.content",23,"from agentdeck.core.content import answer_of"],["agentdeck.core.events",24,"from agentdeck.core.events import TERMINAL_KINDS, RunInterrupted, RunResumed"],["__future__",17,"from __future__ import annotations"],["collections",27,"from collections.abc import Mapping, Sequence"]],"agentdeck.testing":[["agents",25,"from agents.models.interface import Model"],["openai",27,"from openai.types.responses import ("],["asyncio",16,"import asyncio"],["contextlib",19,"from contextlib import contextmanager"],["agents",24,"from agents.items import ModelResponse"],["threading",18,"import threading"],["unittest",22,"from unittest.mock import patch"],["collections",39,"from collections.abc import AsyncIterator, Callable, Iterator, Sequence"],["typing",21,"from typing import TYPE_CHECKING, Any"],["http",20,"from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer"],["agents",26,"from agents.usage import Usage"],["json",17,"import json"],["__future__",14,"from __future__ import annotations"],["openai",36,"from openai.types.responses.response_usage import InputTokensDetails, OutputTokensDetails"]],"agentdeck.authoring.agent":[["collections",15,"from collections.abc import Callable, Mapping, Sequence"],["agentdeck.authoring.runners.agent",169,"from agentdeck.authoring.runners.agent import HeadlessRunner"],["typing",12,"from typing import TYPE_CHECKING, Any, ClassVar"],["agents",18,"from agents.lifecycle import AgentHooks"],["__future__",10,"from __future__ import annotations"],["agentdeck.authoring.compile",163,"from agentdeck.authoring.compile import compile_agent"],["agents",17,"from agents.agent_output import AgentOutputSchemaBase"]],"agentdeck.authoring.tools":[["__future__",20,"from __future__ import annotations"],["agents",26,"from agents import RunContextWrapper, default_tool_error_function, function_tool"],["agents",35,"from agents.tool import FunctionTool"],["collections",33,"from collections.abc import Callable"],["asyncio",22,"import asyncio"],["inspect",23,"import inspect"],["agentdeck.errors",30,"from agentdeck.errors import ConfigError"],["agentdeck.core.context",29,"from agentdeck.core.context import RunContext, ToolCtx"],["typing",24,"from typing import TYPE_CHECKING, Any"],["agentdeck.authoring.injection",37,"from agentdeck.authoring.injection import CallableAnalysis"],["agentdeck.authoring.injection",28,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"]],"agentdeck.runtime.discovery":[["agents",25,"from agents.tool import FunctionTool"],["agents",24,"from agents import Agent as SDKAgent"],["agentdeck.authoring.compile",27,"from agentdeck.authoring.compile import Delegate"],["agentdeck.core.ports",28,"from agentdeck.core.ports import Executor"],["typing",12,"from typing import TYPE_CHECKING, Any, Final"],["agentdeck.authoring.compile",15,"from agentdeck.authoring.compile import compile_agent, link_handoffs"],["agentdeck.authoring.agent",14,"from agentdeck.authoring.agent import Agent"],["agentdeck.runtime.registry",19,"from agentdeck.runtime.registry import PluginRegistry, mount_project_dir"],["__future__",10,"from __future__ import annotations"],["collections",22,"from collections.abc import Callable, Mapping, Sequence"],["agentdeck.errors",18,"from agentdeck.errors import ConfigError"],["agentdeck.authoring.native",16,"from agentdeck.authoring.native import NativeDefinition"],["agentdeck.core.invocable",17,"from agentdeck.core.invocable import AgentInstance, InvocableKind, InvocableSpec"]],"agentdeck.runtime.registry":[["importlib",10,"from importlib.machinery import ModuleSpec"],["typing",12,"from typing import Generic, TypeVar"],["__future__",3,"from __future__ import annotations"],["types",8,"import types"],["agentdeck.errors",14,"from agentdeck.errors import ConfigError, NotFoundError"],["pathlib",11,"from pathlib import Path"],["sys",7,"import sys"],["importlib",5,"import importlib"],["importlib",6,"import importlib.util"],["dataclasses",9,"from dataclasses import dataclass, field"]]}
@@ -8,6 +8,46 @@ Fixed / Security` order - and are written to be attached to a release as-is.
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [5.0.3] - 2026-08-23
12
+
13
+ ### Changed
14
+
15
+ - **A cancelled run's log is closed for good.** Appending to a run that already has its
16
+ `run.cancelled` raises `RunStateError` on every store instead of landing behind that event, which
17
+ is what a write already in flight when `Deck.aclose()` abandoned the run used to do. A takeover's
18
+ `run.failed` still seals nothing: it is written for a run only believed dead, and one that turns
19
+ out to be alive goes on writing and may reclaim its own session.
20
+
21
+ ### Fixed
22
+
23
+ - **A cancelled `answer()` or `resume()` no longer leaves a run claimed but unplayed.** Both claim
24
+ the run before there is anything to hand back, and a cancellation in between left the log saying
25
+ the run was live with nothing playing it and its session held until the staleness window passed.
26
+ The run is closed with `run.cancelled` instead, so the record says what happened and the session
27
+ is free at once.
28
+ - **`Deck(agents=[...])` refuses a raw Agents SDK agent at construction.** It was admitted
29
+ silently, because a catalog entry only had to have a `.name`, and `build()` then died on
30
+ `AttributeError: 'Agent' object has no attribute 'skills'`. The refusal is a `ConfigError`
31
+ naming the object and pointing at `handoffs=`, which does take a raw SDK agent.
32
+ - **Asking two questions at once is refused instead of losing the branch that was already
33
+ waiting.** One run holds one answer, so two `ctx.ask(...)` calls raced under `asyncio.gather`
34
+ overwrote the first branch's future and left it waiting for the life of the run with no error
35
+ and no event. Only the workflow body itself may suspend its run now, so the first such
36
+ `ctx.ask(...)` (or `ctx.safepoint()`) raises `ConfigError` and the run fails without ever
37
+ parking. Fan out with `ctx.parallel(ctx.invoke(...), ...)` instead, where each child run holds
38
+ its own answer. Not a permanent rule: concurrent questions on one run wait on the answer inbox
39
+ ([#413](https://github.com/agentdecksdk/agentdeck/issues/413)).
40
+ - **Correction to 5.0.0: no executor is named `"langgraph"`.** The "engine port is `Executor`"
41
+ entry below lists `LangGraphEngine` becoming `LangGraphExecutor` and keeps `"langgraph"` among
42
+ the wire values. Both went with the engine in that same release; the executors a 5.x deck names
43
+ are `"native"`, `"openai-agents"` and `"stub"`.
44
+ - **Known Issues no longer documents removed machinery.** The restart entry named
45
+ `AGENTDECK_CHECKPOINT`, a setting 5.0 removed along with the checkpointer, and one row described
46
+ a graph `interrupt()`. Both are gone from [Known Issues](/resources/known-issues).
47
+ - **`run.answer()` says what an ask without options does with the value.** An ask that named
48
+ `options` refuses anything outside them; one that named none hands the value to the body, which
49
+ is the only thing that can judge it. `PendingRun.invocable` now says why the name is general.
50
+
11
51
  ## [5.0.0] - 2026-08-22
12
52
 
13
53
  ### Added
@@ -2452,7 +2492,8 @@ documentation platform and its CI.
2452
2492
  `runtime/tools.py`, `PluginRegistry.pick`, `skill_runtime` LLM/batch
2453
2493
  helpers; deps typer, rich, prompt-toolkit.
2454
2494
 
2455
- [Unreleased]: https://github.com/agentdecksdk/agentdeck/compare/v5.0.0...HEAD
2495
+ [Unreleased]: https://github.com/agentdecksdk/agentdeck/compare/v5.0.3...HEAD
2496
+ [5.0.3]: https://github.com/agentdecksdk/agentdeck/compare/v5.0.0...v5.0.3
2456
2497
  [5.0.0]: https://github.com/agentdecksdk/agentdeck/compare/v4.0.5...v5.0.0
2457
2498
  [4.0.5]: https://github.com/agentdecksdk/agentdeck/compare/v4.0.4...v4.0.5
2458
2499
  [4.0.4]: https://github.com/agentdecksdk/agentdeck/compare/v4.0.3...v4.0.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentdeck-sdk
3
- Version: 5.0.0
3
+ Version: 5.0.3
4
4
  Summary: Declarative harness over the OpenAI Agents SDK: settings, capabilities, skills, runners, plug-in discovery.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -46,12 +46,25 @@ class _Channel:
46
46
  def __init__(self) -> None:
47
47
  self._out: asyncio.Queue[KnownPayload | None] = asyncio.Queue()
48
48
  self._answer: asyncio.Future[Any] | None = None
49
+ # The body task, set by :meth:`NativeExecutor._play` as it starts. One slot means one
50
+ # suspender, and this is who that is.
51
+ self.owner: asyncio.Task[Any] | None = None
49
52
 
50
53
  async def emit(self, payload: KnownPayload) -> None:
51
54
  await self._out.put(payload)
52
55
 
53
56
  async def suspend(self, payload: KnownPayload) -> Any:
54
57
  """Hand out the payload that suspends the run, then wait here for what answers it."""
58
+ if asyncio.current_task() is not self.owner:
59
+ raise ConfigError(
60
+ f"this run cannot be suspended from a task it did not start, so the "
61
+ f"{payload.kind} payload here cannot park it: ctx.ask() and ctx.safepoint() stop "
62
+ f"the workflow body itself, and this call is running somewhere else. Asking two "
63
+ f"questions at once is not supported yet, because one run holds one answer. Fan "
64
+ f"out with ctx.parallel(ctx.invoke(...), ctx.invoke(...)) instead: each child run "
65
+ f"is a run of its own, so each gets its own slot. An inbox that holds several open "
66
+ f"questions on one run is agentdeck #413."
67
+ )
55
68
  self._answer = asyncio.get_running_loop().create_future()
56
69
  await self._out.put(payload)
57
70
  return await self._answer
@@ -171,6 +184,7 @@ class NativeExecutor(Executor):
171
184
  :meth:`execute` re-raises it into the run so the Runtime records and reports it the way
172
185
  it does for every other executor.
173
186
  """
187
+ channel.owner = asyncio.current_task()
174
188
  try:
175
189
  result = await definition.call(**_arguments(definition, input, ctx, channel, self._invoker, self._agents))
176
190
  await channel.emit(RunCompleted(output=_as_output(result), usage=Usage(input_tokens=0, output_tokens=0)))
@@ -0,0 +1,28 @@
1
+ """Event-log stores - implementations of ``EventStorePort``."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from agentdeck.core.status import RunStatus
8
+ from agentdeck.errors import RunStateError
9
+
10
+ if TYPE_CHECKING:
11
+ from agentdeck.core.context import RunContext
12
+
13
+
14
+ def _refuse_if_cancelled(status: RunStatus | None, ctx: RunContext) -> None:
15
+ """Refuse the append a store is inside when the run is already ``CANCELLED``.
16
+
17
+ Shared by all four stores rather than written out in each: the refusal is one decision the
18
+ port states and every backend owes, and it is called from inside whatever makes that
19
+ backend's write indivisible - the only place a write already suspended in there can still
20
+ be stopped. It lives here and not on the port because ``agentdeck.core`` may not name an
21
+ error type.
22
+
23
+ Cancelled and not every terminal status: a takeover's ``run.failed`` is advisory, and a run
24
+ that turns out to be alive after being stepped over goes on writing and may reclaim its own
25
+ session. That is deliberate (ADR-D11 §5) and this refusal leaves it alone.
26
+ """
27
+ if status is RunStatus.CANCELLED:
28
+ raise RunStateError(f"run {ctx.run_id!r} was cancelled; nothing can be appended to it any more")
@@ -6,6 +6,7 @@ import asyncio
6
6
  from datetime import UTC, datetime
7
7
  from typing import TYPE_CHECKING
8
8
 
9
+ from agentdeck.adapters.stores import _refuse_if_cancelled
9
10
  from agentdeck.core.events import Event
10
11
  from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim
11
12
  from agentdeck.core.status import LIFECYCLE_KINDS, STATES, RunStatus, can_resume, status_of
@@ -48,6 +49,9 @@ class MemoryEventStore(EventStorePort):
48
49
  self._keys: dict[tuple[str | None, str], str] = {}
49
50
 
50
51
  async def append(self, payloads: Sequence[KnownPayload], ctx: RunContext, origin: str) -> list[Event]:
52
+ # The fold and ``_stamp`` are plain dict work with no suspension point between them, as in
53
+ # ``claim_resume``, so the refusal and the write are one step.
54
+ _refuse_if_cancelled(status_of(self._runs.get((ctx.namespace, ctx.run_id), [])), ctx)
51
55
  events = self._stamp(payloads, ctx, origin)
52
56
  # Fidelity, not correctness (issue #87): every real store suspends here (SQLite's own
53
57
  # `to_thread`), so a caller whose liveness secretly depends on that turn is caught by
@@ -24,6 +24,7 @@ import psycopg
24
24
  from psycopg import errors as pg_errors
25
25
  from psycopg import sql
26
26
 
27
+ from agentdeck.adapters.stores import _refuse_if_cancelled
27
28
  from agentdeck.core.events import Event
28
29
  from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim
29
30
  from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of
@@ -237,6 +238,8 @@ class PostgresEventStore(EventStorePort):
237
238
  async def _work(conn: Connection) -> list[Event]:
238
239
  async with conn.transaction():
239
240
  await self._lock_stream(conn, ctx)
241
+ last = await self._last_lifecycle_of_run(conn, ctx.namespace_key, ctx.run_id)
242
+ _refuse_if_cancelled(status_of([last] if last is not None else []), ctx)
240
243
  return await self._stamp_and_insert(conn, list(payloads), ctx, origin)
241
244
 
242
245
  return await self._run(_work, "append")
@@ -36,6 +36,7 @@ from urllib.parse import quote
36
36
  from redis.asyncio import Redis
37
37
  from redis.exceptions import RedisError, WatchError
38
38
 
39
+ from agentdeck.adapters.stores import _refuse_if_cancelled
39
40
  from agentdeck.core.events import Event
40
41
  from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim
41
42
  from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of
@@ -195,6 +196,10 @@ class RedisEventStore(EventStorePort):
195
196
  return []
196
197
 
197
198
  async def _attempt(pipe: Pipeline) -> list[Event]:
199
+ life_key = self._life_key(ctx.namespace_key, ctx.run_id)
200
+ await pipe.watch(life_key)
201
+ life = await pipe.get(life_key)
202
+ _refuse_if_cancelled(status_of([Event.model_validate(json.loads(life))] if life else []), ctx)
198
203
  events = await self._stamp(pipe, payloads, ctx, origin)
199
204
  pipe.multi()
200
205
  self._queue_writes(pipe, ctx.namespace_key, events)
@@ -16,6 +16,7 @@ from datetime import datetime
16
16
  from functools import partial
17
17
  from typing import TYPE_CHECKING
18
18
 
19
+ from agentdeck.adapters.stores import _refuse_if_cancelled
19
20
  from agentdeck.core.events import Event
20
21
  from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim
21
22
  from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of
@@ -245,6 +246,8 @@ class SqliteEventStore(EventStorePort):
245
246
  # first makes the read and the insert one step, which is the whole decision (ADR-D11).
246
247
  self._conn.execute("BEGIN IMMEDIATE")
247
248
  with self._conn:
249
+ last = self._select_last_lifecycle_of_run(ctx.namespace_key, ctx.run_id)
250
+ _refuse_if_cancelled(status_of([Event.model_validate(json.loads(last))] if last else []), ctx)
248
251
  return self._stamp_and_insert(payloads, ctx, origin)
249
252
 
250
253
  def _stamp_and_insert(
@@ -80,6 +80,14 @@ class EventStorePort(ABC):
80
80
  the backend uses to make the write indivisible. Must return only once they are durable,
81
81
  because the Runtime yields to consumers immediately after.
82
82
 
83
+ Raises ``RunStateError`` for a run that is already ``CANCELLED``, decided inside the same
84
+ indivisible step as the write. A cancel is written from outside a run whose task is still
85
+ alive, so one of that run's own appends can already be suspended in here when the terminal
86
+ event lands, and the write step is the only place left that can still stop it.
87
+
88
+ A takeover's ``run.failed`` deliberately refuses nothing: it is written for a run only
89
+ *believed* dead, and one that turns out to be alive goes on writing (ADR-D11 §5).
90
+
83
91
  Run identity comes from ``ctx`` alone. The one write that belongs to a *different* run -
84
92
  the terminal event a takeover stamps for a run it stepped over - passes a ``ctx`` built
85
93
  for that run, from the event :class:`SessionClaim` handed back. There is no override
@@ -398,12 +398,21 @@ async def _aclose_store(store: EventStorePort) -> None:
398
398
  store.close() # ty: ignore[call-non-callable] - same reason
399
399
 
400
400
 
401
- def _named_mapping(items: Sequence[Any], arg_name: str) -> Mapping[str, Any]:
401
+ def _named_mapping(items: Sequence[Any], arg_name: str, expected: type | None = None) -> Mapping[str, Any]:
402
402
  # Mirrors PluginRegistry's own collision rule: `{a.name: a for a in agents}` would collapse
403
403
  # a duplicate to whichever came last with no error, the same silent shadow this rule refuses
404
404
  # on the discovery path.
405
405
  found: dict[str, Any] = {}
406
406
  for item in items:
407
+ if expected is not None and not isinstance(item, expected):
408
+ # Anything with a `.name` used to reach the catalog and die at `.skills` in build()
409
+ # (#451). Checked before the name is read, so a bare string is refused here too.
410
+ raise ConfigError(
411
+ f"Deck({arg_name}=...) takes agentdeck {expected.__name__} declarations, not the "
412
+ f"{type(item).__module__}.{type(item).__name__} {getattr(item, 'name', item)!r}. An "
413
+ f"Agents SDK agent is legitimate as a handoff target instead: "
414
+ f"Agent(name=..., handoffs=[...])."
415
+ )
407
416
  if item.name in found:
408
417
  raise ConfigError(
409
418
  f"two entries in {arg_name}= both use the name {item.name!r}; one name is one "
@@ -538,7 +547,7 @@ class Deck:
538
547
  # the one-Deck-per-process refusal can name it.
539
548
  _project_path: Path | None = None,
540
549
  ) -> None:
541
- self._agents: Mapping[str, Agent] = _named_mapping(agents, "agents")
550
+ self._agents: Mapping[str, Agent] = _named_mapping(agents, "agents", Agent)
542
551
  self._workflows: Mapping[str, NativeDefinition] = _named_mapping(workflows, "workflows")
543
552
  self._skills_obj = _coerce_skills(skills)
544
553
  self._mcp_obj = _coerce_mcp(mcp)
@@ -1403,6 +1412,10 @@ class Run:
1403
1412
  claimed, so the run stays answerable: an answer the log cannot hold would resume the run on
1404
1413
  a value no replay and no other process could reproduce.
1405
1414
 
1415
+ An ask that named ``options`` refuses anything outside them on the same terms; an ask that
1416
+ named none takes whatever it is given and hands it to the body, which is the only thing
1417
+ that can judge a free-form answer.
1418
+
1406
1419
  ``value`` is resupplied against the context :meth:`Runs.start` was given, not
1407
1420
  recovered: the interrupted run's own copy was never written to the log, so a node that
1408
1421
  read it before the interrupt reads ``None`` on this replay if this handle has none
@@ -110,6 +110,9 @@ class PendingRun:
110
110
  run_id: str
111
111
  session_id: str | None
112
112
  invocable: str
113
+ """The catalog name of what this run is waiting inside. General because one catalog holds
114
+ agents, workflows and tools, so every run names its target the same way whatever kind it is."""
115
+
113
116
  thread_id: str
114
117
  payload: dict[str, Any]
115
118
  reason: InterruptReason = "human"
@@ -326,18 +329,23 @@ class Runtime:
326
329
  opening = await self._claim_resume(spec, ctx, value)
327
330
  if opening is None:
328
331
  return
329
- ruling, pending = await self._route(ctx.id, status)
330
- if ruling.action is Action.TERMINATE and pending is not None:
331
- yield opening
332
- yield await self._record(ControlRequested(verb="cancel", reason=pending.reason), spec, ctx)
333
- yield await self._record(RunCancelled(reason=pending.reason), spec, ctx)
334
- return
335
- # Any other ruling plays the run on, including a pause that landed inside the window the
336
- # peek left open: the answer is recorded by now, so the run resumes and meets that pause
337
- # at its first safe point instead.
338
- # Read after the claim, so the ``run.resumed`` carrying the answer is in it: that event
339
- # is how the executor learns there is an answer at all, and what it is.
340
- history = await self._history(ctx)
332
+ try:
333
+ ruling, pending = await self._route(ctx.id, status)
334
+ if ruling.action is Action.TERMINATE and pending is not None:
335
+ closing = await self._terminate(spec, ctx, pending.reason)
336
+ yield opening
337
+ for event in closing:
338
+ yield event
339
+ return
340
+ # Any other ruling plays the run on, including a pause that landed inside the window
341
+ # the peek left open: the answer is recorded by now, so the run resumes and meets that
342
+ # pause at its first safe point instead.
343
+ # Read after the claim, so the ``run.resumed`` carrying the answer is in it: that
344
+ # event is how the executor learns there is an answer at all, and what it is.
345
+ history = await self._history(ctx)
346
+ except asyncio.CancelledError:
347
+ await self._abandon_claim(spec, ctx)
348
+ raise
341
349
  stream = executor.execute(spec, opened.input, history, ctx)
342
350
  async with aclosing(self._play(opening, stream, spec, ctx, executor, reports)) as resumed:
343
351
  async for event in resumed:
@@ -394,18 +402,20 @@ class Runtime:
394
402
  opening = await self._claim_resume(spec, run_ctx, None, reason)
395
403
  if opening is None:
396
404
  return
397
- # Read control only after the claim: the claim is what makes this caller the one actor
398
- # on the run, so an answer read before it could belong to somebody else's turn.
399
- ruling, pending = await self._route(run_ctx.id, summary.status)
400
- if ruling.action is Action.TERMINATE and pending is not None:
401
- yield opening
402
- # No ``control.observed``: that event says the run reached a safe point and acted
403
- # there, and this run reached none - it was already stopped when the cancel landed.
404
- # The request and the effect are the whole honest story of a cancel served here.
405
- yield await self._record(ControlRequested(verb="cancel", reason=pending.reason), spec, run_ctx)
406
- yield await self._record(RunCancelled(reason=pending.reason), spec, run_ctx)
407
- return
408
- history = await self._history(run_ctx)
405
+ try:
406
+ # Read control only after the claim: the claim is what makes this caller the one actor
407
+ # on the run, so an answer read before it could belong to somebody else's turn.
408
+ ruling, pending = await self._route(run_ctx.id, summary.status)
409
+ if ruling.action is Action.TERMINATE and pending is not None:
410
+ closing = await self._terminate(spec, run_ctx, pending.reason)
411
+ yield opening
412
+ for event in closing:
413
+ yield event
414
+ return
415
+ history = await self._history(run_ctx)
416
+ except asyncio.CancelledError:
417
+ await self._abandon_claim(spec, run_ctx)
418
+ raise
409
419
  stream = executor.execute(spec, opened.input, history, run_ctx)
410
420
  async with aclosing(self._play(opening, stream, spec, run_ctx, executor, reports)) as resumed:
411
421
  async for event in resumed:
@@ -489,10 +499,40 @@ class Runtime:
489
499
  run_ctx, _ = self._bind(replace(ctx, run_id=run_id, session_id=session_id), spec)
490
500
  if await self._claim_resume(spec, run_ctx, None, reason) is None:
491
501
  return False
492
- await self._record(ControlRequested(verb="cancel", reason=reason), spec, run_ctx)
493
- await self._record(RunCancelled(reason=reason), spec, run_ctx)
502
+ await self._terminate(spec, run_ctx, reason)
494
503
  return True
495
504
 
505
+ async def _terminate(self, spec: InvocableSpec, ctx: RunContext, reason: str | None) -> list[Event]:
506
+ """Serve a cancel found pending against a run this caller has just claimed: the request
507
+ and the effect, in that order, both recorded before either is handed to a consumer.
508
+
509
+ No ``control.observed`` between them: that event says the run reached a safe point and
510
+ acted there, and a run served here reached none - it was already stopped when the cancel
511
+ landed. The request and the effect are the whole honest story of a cancel served this way.
512
+
513
+ Both writes land before the caller yields anything, because a consumer that stops reading
514
+ between them strands the claim exactly as a cancellation across it would (#391).
515
+ """
516
+ return [
517
+ await self._record(ControlRequested(verb="cancel", reason=reason), spec, ctx),
518
+ await self._record(RunCancelled(reason=reason), spec, ctx),
519
+ ]
520
+
521
+ async def _abandon_claim(self, spec: InvocableSpec, ctx: RunContext) -> None:
522
+ """Close a run whose resume claim committed and whose play never started.
523
+
524
+ The claim flips the run to ``RUNNING`` before there is anything to yield, and every await
525
+ from there to :meth:`_play` is one a cancellation can land on - leaving a run the log says
526
+ is live with nobody playing it and its session held for a whole staleness window. Recorded
527
+ rather than shielded, because status is folded from the log: a log saying a run is live
528
+ while nothing plays it is a log that lies.
529
+
530
+ Guarded on ``RUNNING`` because the same span also serves a pending cancel, and that path
531
+ has already written this run's terminal event (#391).
532
+ """
533
+ if await self._store.run_status(ctx) is RunStatus.RUNNING:
534
+ await self._close_cancelled(spec, ctx, "cancelled after the resume claim")
535
+
496
536
  async def _play(
497
537
  self,
498
538
  opening: Event,
@@ -807,7 +847,11 @@ class Runtime:
807
847
  run_id,
808
848
  )
809
849
  return
810
- if await self._store.run_status(ctx) is not RunStatus.RUNNING:
850
+ if (status := await self._store.run_status(ctx)) is not RunStatus.RUNNING:
851
+ # The benign half of the same branch: the run closed itself between the deck giving up
852
+ # on it and this read, so there is nothing to write - said out loud, because the
853
+ # caller has already logged that it abandoned this run (#419).
854
+ logger.debug("run %s is %s, not RUNNING; it closed itself and nothing was written", run_id, status)
811
855
  return
812
856
  session_id, opened = started
813
857
  closing = replace(ctx, session_id=session_id)
@@ -1086,8 +1130,9 @@ class Runtime:
1086
1130
  A run :meth:`close_cancelled` abandoned is cancelled here instead, at its next write. The
1087
1131
  check is synchronous and every writer for such a run shares this event loop, so no append
1088
1132
  that starts here can land past the terminal event written for it. One that started before
1089
- the mark and is still suspended inside the store can, which is #421 and needs the store's
1090
- own conditional append rather than a second guard above it.
1133
+ the mark and is still suspended inside the store is past this guard already, and the store
1134
+ refuses it there: an append to a ``CANCELLED`` run raises ``RunStateError`` inside the same
1135
+ step that would have written it (#421).
1091
1136
 
1092
1137
  Every terminal event in this class is written here, which is why the delegation roll-up
1093
1138
  hangs off this one call rather than off the engine loop: a run that failed or was