agentdeck-sdk 4.0.2__tar.gz → 4.0.4__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 (495) hide show
  1. agentdeck_sdk-4.0.4/.github/ISSUE_TEMPLATE/docs_contribution.yml +119 -0
  2. agentdeck_sdk-4.0.4/.import_linter_cache/agentdeck.meta.json +1 -0
  3. agentdeck_sdk-4.0.4/.import_linter_cache/cc0de4ae2e5697bf7cf3a0b9c3aff14b2ece24cd.data.json +1 -0
  4. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/CHANGELOG.md +50 -0
  5. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/PKG-INFO +31 -15
  6. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/README.md +30 -14
  7. agentdeck_sdk-4.0.4/docs/delivery/plan-docs-ia.md +613 -0
  8. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/brand.css +86 -0
  9. agentdeck_sdk-4.0.4/docs-site/app/contribute.tsx +39 -0
  10. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/landing-components.tsx +1 -1
  11. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/jack/notes.mdx +8 -0
  12. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/jack.mdx +8 -0
  13. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/meet-agentdeck/quickstart.mdx +24 -6
  14. agentdeck_sdk-4.0.4/docs-site/content/reference/events.mdx +100 -0
  15. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/resources/changelog.mdx +23 -22
  16. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/resources/known-issues.mdx +8 -0
  17. agentdeck_sdk-4.0.4/docs-site/content/runs-and-control/lifecycle-and-control.mdx +73 -0
  18. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/mdx-components.tsx +2 -0
  19. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/llms-full.txt +198 -44
  20. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/llms.txt +2 -2
  21. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/README.md +18 -0
  22. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/jack/server.py +27 -1
  23. agentdeck_sdk-4.0.4/examples/jack/jack/session.py +105 -0
  24. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/pyproject.toml +1 -1
  25. agentdeck_sdk-4.0.2/.import_linter_cache/agentdeck.meta.json +0 -1
  26. agentdeck_sdk-4.0.2/.import_linter_cache/cc0de4ae2e5697bf7cf3a0b9c3aff14b2ece24cd.data.json +0 -1
  27. agentdeck_sdk-4.0.2/docs-site/content/reference/events.mdx +0 -13
  28. agentdeck_sdk-4.0.2/docs-site/content/runs-and-control/lifecycle-and-control.mdx +0 -7
  29. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.agentdeck/agents/greeter/agent.py +0 -0
  30. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.agents/skills/open-issue/SKILL.md +0 -0
  31. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.agents/skills/release/SKILL.md +0 -0
  32. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.agents/skills/ship-issue/SKILL.md +0 -0
  33. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.claude/agents/deck-dev.md +0 -0
  34. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.claude/agents/deck-reviewer.md +0 -0
  35. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.claude/agents/docs-reviewer.md +0 -0
  36. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.claude/agents/docs-writer.md +0 -0
  37. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.claude/skills/open-issue/SKILL.md +0 -0
  38. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.claude/skills/release/SKILL.md +0 -0
  39. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.claude/skills/ship-issue/SKILL.md +0 -0
  40. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.coderabbit.yaml +0 -0
  41. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.codex/agents/deck-dev.toml +0 -0
  42. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.codex/agents/deck-reviewer.toml +0 -0
  43. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.codex/agents/docs-reviewer.toml +0 -0
  44. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.codex/agents/docs-writer.toml +0 -0
  45. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.dockerignore +0 -0
  46. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.env.example +0 -0
  47. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.gitattributes +0 -0
  48. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/CODEOWNERS +0 -0
  49. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  50. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  51. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/ISSUE_TEMPLATE/finding.yml +0 -0
  52. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  53. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/assets/contributors/merged.png +0 -0
  54. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/assets/contributors/welcome.png +0 -0
  55. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/dependabot.yml +0 -0
  56. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/workflows/ci.yml +0 -0
  57. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/workflows/docs-check.yml +0 -0
  58. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/workflows/docs-pages.yml +0 -0
  59. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/workflows/first-contribution.yml +0 -0
  60. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.github/workflows/release.yml +0 -0
  61. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.gitignore +0 -0
  62. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.import_linter_cache/.gitignore +0 -0
  63. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.import_linter_cache/CACHEDIR.TAG +0 -0
  64. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.importlinter +0 -0
  65. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/.pre-commit-config.yaml +0 -0
  66. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/AGENTS.md +0 -0
  67. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/CLAUDE.md +0 -0
  68. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/CODE_OF_CONDUCT.md +0 -0
  69. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/CONTRIBUTING.md +0 -0
  70. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/Dockerfile +0 -0
  71. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/LICENSE +0 -0
  72. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/Makefile +0 -0
  73. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/SECURITY.md +0 -0
  74. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/README.md +0 -0
  75. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/__init__.py +0 -0
  76. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/__init__.py +0 -0
  77. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/control/__init__.py +0 -0
  78. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/control/memory/__init__.py +0 -0
  79. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/control/memory/port.py +0 -0
  80. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/control/sqlite/__init__.py +0 -0
  81. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/control/sqlite/port.py +0 -0
  82. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/__init__.py +0 -0
  83. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/langgraph/__init__.py +0 -0
  84. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/langgraph/checkpointer.py +0 -0
  85. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/langgraph/engine.py +0 -0
  86. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/openai_agents/__init__.py +0 -0
  87. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/openai_agents/engine.py +0 -0
  88. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/openai_agents/reconcile.py +0 -0
  89. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/openai_agents/runconfig.py +0 -0
  90. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/openai_agents/sessions.py +0 -0
  91. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/openai_agents/translate.py +0 -0
  92. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/stub/__init__.py +0 -0
  93. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/engines/stub/engine.py +0 -0
  94. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/leases/__init__.py +0 -0
  95. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/leases/memory/__init__.py +0 -0
  96. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/leases/memory/port.py +0 -0
  97. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/leases/sqlite/__init__.py +0 -0
  98. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/leases/sqlite/port.py +0 -0
  99. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/__init__.py +0 -0
  100. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/memory/__init__.py +0 -0
  101. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/memory/store.py +0 -0
  102. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/postgres/__init__.py +0 -0
  103. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/postgres/store.py +0 -0
  104. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/redis/__init__.py +0 -0
  105. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/redis/store.py +0 -0
  106. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/sqlite/__init__.py +0 -0
  107. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/stores/sqlite/store.py +0 -0
  108. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/telemetry/__init__.py +0 -0
  109. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/telemetry/langfuse/__init__.py +0 -0
  110. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/telemetry/langfuse/client.py +0 -0
  111. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/telemetry/langfuse/sink.py +0 -0
  112. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/telemetry/langfuse/trace.py +0 -0
  113. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/tools/__init__.py +0 -0
  114. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/tools/mcp/__init__.py +0 -0
  115. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/tools/mcp/lifecycle.py +0 -0
  116. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/tools/mcp/source.py +0 -0
  117. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/tools/mcp/transport.py +0 -0
  118. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/adapters/tools/mcp/wiring.py +0 -0
  119. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/__init__.py +0 -0
  120. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/agent.py +0 -0
  121. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/compile.py +0 -0
  122. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/graphs.py +0 -0
  123. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/hooks.py +0 -0
  124. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/injection.py +0 -0
  125. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/instructions.py +0 -0
  126. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/interrupts.py +0 -0
  127. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/nodes.py +0 -0
  128. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/runners/__init__.py +0 -0
  129. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/runners/agent.py +0 -0
  130. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/runners/workflow.py +0 -0
  131. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/skills.py +0 -0
  132. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/state.py +0 -0
  133. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/timers.py +0 -0
  134. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/tools.py +0 -0
  135. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/web_search.py +0 -0
  136. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/authoring/workflow.py +0 -0
  137. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/cli.py +0 -0
  138. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/composition.py +0 -0
  139. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/__init__.py +0 -0
  140. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/base.py +0 -0
  141. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/content.py +0 -0
  142. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/context.py +0 -0
  143. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/control.py +0 -0
  144. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/events.py +0 -0
  145. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/invocable.py +0 -0
  146. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/ports/__init__.py +0 -0
  147. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/ports/control.py +0 -0
  148. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/ports/engine.py +0 -0
  149. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/ports/lease.py +0 -0
  150. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/ports/sink.py +0 -0
  151. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/ports/store.py +0 -0
  152. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/ports/tools.py +0 -0
  153. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/reporting.py +0 -0
  154. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/core/status.py +0 -0
  155. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/deck.py +0 -0
  156. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/errors.py +0 -0
  157. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/mcp.py +0 -0
  158. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/observers.py +0 -0
  159. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/py.typed +0 -0
  160. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/__init__.py +0 -0
  161. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/capture.py +0 -0
  162. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/config.default.yaml +0 -0
  163. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/discovery.py +0 -0
  164. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/dispatch.py +0 -0
  165. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/registry.py +0 -0
  166. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/service.py +0 -0
  167. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/runtime/settings.py +0 -0
  168. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/serve.py +0 -0
  169. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/skills/__init__.py +0 -0
  170. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/skills/bundle.py +0 -0
  171. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/surfaces/__init__.py +0 -0
  172. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/surfaces/cli/__init__.py +0 -0
  173. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/surfaces/cli/chat.py +0 -0
  174. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/surfaces/serve/__init__.py +0 -0
  175. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/surfaces/serve/app.py +0 -0
  176. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/surfaces/serve/compat.py +0 -0
  177. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/surfaces/serve/workflows.py +0 -0
  178. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/agentdeck/testing.py +0 -0
  179. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/context7.json +0 -0
  180. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docker-compose.yml +0 -0
  181. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/00-project-index.md +0 -0
  182. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/agentdeck-prd.md +0 -0
  183. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/README.md +0 -0
  184. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/components/card.svg +0 -0
  185. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/components/spark.svg +0 -0
  186. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/components/wordmark.svg +0 -0
  187. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/contributor-merged.svg +0 -0
  188. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/contributor-welcome.svg +0 -0
  189. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/favicon.svg +0 -0
  190. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/logo-black.svg +0 -0
  191. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/logo-blue.svg +0 -0
  192. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/logo-full.svg +0 -0
  193. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/logo-mark.svg +0 -0
  194. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/logo-traced-original.svg +0 -0
  195. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/logo-white.svg +0 -0
  196. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/logo.svg +0 -0
  197. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/brand/social-card.svg +0 -0
  198. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/beta-user-report-v3.md +0 -0
  199. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/decision-v3-entry-point.md +0 -0
  200. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/deck-capability-wrapper-pattern.md +0 -0
  201. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/discoverability-baseline.md +0 -0
  202. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/docs-site-plan.md +0 -0
  203. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/epic-agentdeck-v2-core.md +0 -0
  204. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/findings-register.md +0 -0
  205. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/milestone-0-findings.md +0 -0
  206. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/milestone-0-walking-skeleton.md +0 -0
  207. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-166-delivery.md +0 -0
  208. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-219-delivery.md +0 -0
  209. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-adoption.md +0 -0
  210. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-context-injection.md +0 -0
  211. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-multimodal.md +0 -0
  212. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-phase4-deck.md +0 -0
  213. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-skills.md +0 -0
  214. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/plan-v2-cutover.md +0 -0
  215. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/review-context-injection.md +0 -0
  216. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/review-phase4-deck.md +0 -0
  217. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/review-v3-outsider.md +0 -0
  218. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/roadmap-v3.1.md +0 -0
  219. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/roadmap-v3.md +0 -0
  220. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/delivery/workflow.md +0 -0
  221. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/adr-d11-store-assigns-seq-and-time.md +0 -0
  222. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/adr-d5-two-stores.md +0 -0
  223. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/agentdeck-v2-architecture.md +0 -0
  224. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/event-store-claims.md +0 -0
  225. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/run-identity.md +0 -0
  226. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/run-lifecycle.md +0 -0
  227. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/run-operations.md +0 -0
  228. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design/sink-dispatch.md +0 -0
  229. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/design-system.md +0 -0
  230. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/README.md +0 -0
  231. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/architecture.md +0 -0
  232. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/coding-agents.md +0 -0
  233. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/coding-standards.md +0 -0
  234. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/dependencies.md +0 -0
  235. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/import-boundaries.md +0 -0
  236. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/principles.md +0 -0
  237. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/repository-policy.md +0 -0
  238. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/runtime-contracts.md +0 -0
  239. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/engineering/testing.md +0 -0
  240. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/project-brief.md +0 -0
  241. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/prompts/pr0-baseline-prompt.md +0 -0
  242. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/prompts/pr0-review-prompt.md +0 -0
  243. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/prompts/pr1-event-schema-prompt.md +0 -0
  244. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs/spec.md +0 -0
  245. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/.env.development +0 -0
  246. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/.env.production +0 -0
  247. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/.gitignore +0 -0
  248. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/README.md +0 -0
  249. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/[[...mdxPath]]/page.tsx +0 -0
  250. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/brand-icons.tsx +0 -0
  251. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/callout.tsx +0 -0
  252. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/deck-figure.tsx +0 -0
  253. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/design-system.tsx +0 -0
  254. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/diagram.tsx +0 -0
  255. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/hero.css +0 -0
  256. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/hero.tsx +0 -0
  257. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/icon.svg +0 -0
  258. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/install-line.tsx +0 -0
  259. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/jack-live.tsx +0 -0
  260. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/jack-stream.ts +0 -0
  261. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/jack.css +0 -0
  262. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/jack.tsx +0 -0
  263. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/kind-icons.tsx +0 -0
  264. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/landing.css +0 -0
  265. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/layout.tsx +0 -0
  266. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/mark.tsx +0 -0
  267. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/not-found.tsx +0 -0
  268. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/robots.ts +0 -0
  269. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/site.ts +0 -0
  270. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/app/sitemap.ts +0 -0
  271. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/_meta.ts +0 -0
  272. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/build-your-deck/_meta.ts +0 -0
  273. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/build-your-deck/agents.mdx +0 -0
  274. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/build-your-deck/context.mdx +0 -0
  275. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/build-your-deck/deck.mdx +0 -0
  276. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/build-your-deck/skills.mdx +0 -0
  277. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/build-your-deck/tools.mdx +0 -0
  278. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/build-your-deck/workflows.mdx +0 -0
  279. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/examples/_meta.ts +0 -0
  280. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/examples/index.mdx +0 -0
  281. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/index.mdx +0 -0
  282. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/integrations/_meta.ts +0 -0
  283. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/integrations/existing-agents.mdx +0 -0
  284. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/integrations/langgraph.mdx +0 -0
  285. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/integrations/mcp.mdx +0 -0
  286. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/integrations/openai-agents-sdk.mdx +0 -0
  287. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/jack/_meta.ts +0 -0
  288. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/meet-agentdeck/_meta.ts +0 -0
  289. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/meet-agentdeck/mental-model.mdx +0 -0
  290. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/meet-agentdeck/overview.mdx +0 -0
  291. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/reference/_meta.ts +0 -0
  292. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/reference/cli.mdx +0 -0
  293. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/reference/deck.mdx +0 -0
  294. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/reference/python-api.mdx +0 -0
  295. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/reference/run.mdx +0 -0
  296. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/reference/settings.mdx +0 -0
  297. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/resources/_meta.ts +0 -0
  298. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/resources/migration-guides.mdx +0 -0
  299. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/resources/troubleshooting.mdx +0 -0
  300. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/runs-and-control/_meta.ts +0 -0
  301. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/runs-and-control/events.mdx +0 -0
  302. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/runs-and-control/human-input.mdx +0 -0
  303. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/runs-and-control/pause-resume.mdx +0 -0
  304. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/runs-and-control/runs.mdx +0 -0
  305. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/content/runs-and-control/sessions.mdx +0 -0
  306. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/next-env.d.ts +0 -0
  307. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/next.config.mjs +0 -0
  308. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/package-lock.json +0 -0
  309. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/package.json +0 -0
  310. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/card.svg +0 -0
  311. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/contributor-merged.svg +0 -0
  312. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/contributor-welcome.svg +0 -0
  313. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/favicon.svg +0 -0
  314. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/logo-black.svg +0 -0
  315. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/logo-blue.svg +0 -0
  316. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/logo-full.svg +0 -0
  317. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/logo-mark.svg +0 -0
  318. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/logo-traced-original.svg +0 -0
  319. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/logo-white.svg +0 -0
  320. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/logo.svg +0 -0
  321. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/social-card.svg +0 -0
  322. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/spark.svg +0 -0
  323. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/public/brand/wordmark.svg +0 -0
  324. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/docs-site/tsconfig.json +0 -0
  325. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/agent-with-a-skill/.agentdeck/agents/handover_desk/agent.py +0 -0
  326. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/agent-with-a-skill/.agentdeck/skills/shift-notes/SKILL.md +0 -0
  327. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/agent-with-a-skill/README.md +0 -0
  328. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/agent-with-a-skill/run.py +0 -0
  329. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/chat-agent-with-a-tool/.agentdeck/agents/order_desk/agent.py +0 -0
  330. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/chat-agent-with-a-tool/README.md +0 -0
  331. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/chat-agent-with-a-tool/run.py +0 -0
  332. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/existing-langgraph-agent/.agentdeck/workflows/triage/pipeline.py +0 -0
  333. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/existing-langgraph-agent/.agentdeck/workflows/triage/workflow.py +0 -0
  334. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/existing-langgraph-agent/README.md +0 -0
  335. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/existing-langgraph-agent/run.py +0 -0
  336. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/cloudflared.yml +0 -0
  337. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/eval.py +0 -0
  338. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/jack/__init__.py +0 -0
  339. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/jack/agent.py +0 -0
  340. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/jack/corpus.py +0 -0
  341. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/jack/run.py +0 -0
  342. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/workflow-with-an-approval/.agentdeck/workflows/refund_approval/workflow.py +0 -0
  343. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/workflow-with-an-approval/README.md +0 -0
  344. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/examples/workflow-with-an-approval/run.py +0 -0
  345. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/scripts/generate_docs_reference.py +0 -0
  346. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/scripts/m0_demo.py +0 -0
  347. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/scripts/sync_claude_to_codex.py +0 -0
  348. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/scripts/sync_roadmap.py +0 -0
  349. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/concurrency_worker.py +0 -0
  350. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/conftest.py +0 -0
  351. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/context_injection_subjects.py +0 -0
  352. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/case_types.py +0 -0
  353. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/conftest.py +0 -0
  354. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/context_subjects.py +0 -0
  355. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/contract_cases.py +0 -0
  356. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/langgraph_cases.py +0 -0
  357. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/live_stores.py +0 -0
  358. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/never_yields.py +0 -0
  359. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/openai_agents_cases.py +0 -0
  360. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/test_context_parity.py +0 -0
  361. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/test_control.py +0 -0
  362. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/test_control_port.py +0 -0
  363. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/test_event_stream.py +0 -0
  364. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/test_lease.py +0 -0
  365. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/test_resume.py +0 -0
  366. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/contract/test_store.py +0 -0
  367. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/conftest.py +0 -0
  368. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/artifact.created.json +0 -0
  369. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/control.observed.json +0 -0
  370. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/control.requested.json +0 -0
  371. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/custom.json +0 -0
  372. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/input.appended.json +0 -0
  373. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/message.completed.json +0 -0
  374. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/node.updated.json +0 -0
  375. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/progress.reported.json +0 -0
  376. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/run.cancelled.json +0 -0
  377. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/run.completed.json +0 -0
  378. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/run.failed.json +0 -0
  379. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/run.interrupted.json +0 -0
  380. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/run.paused.json +0 -0
  381. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/run.resumed.json +0 -0
  382. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/run.started.json +0 -0
  383. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/status.reported.json +0 -0
  384. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/text.delta.json +0 -0
  385. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/thought.delta.json +0 -0
  386. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/tool.call.completed.json +0 -0
  387. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/tool.call.started.json +0 -0
  388. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/snapshots/usage.reported.json +0 -0
  389. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_content.py +0 -0
  390. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_context.py +0 -0
  391. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_events.py +0 -0
  392. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_golden_json.py +0 -0
  393. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_import_law.py +0 -0
  394. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_model_config.py +0 -0
  395. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_old_reader_block_compat.py +0 -0
  396. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_old_reader_compat.py +0 -0
  397. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_reporting.py +0 -0
  398. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_run_lifecycle_tables.py +0 -0
  399. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/core/test_vocabularies_agree.py +0 -0
  400. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/crash_worker.py +0 -0
  401. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/event_log_checks.py +0 -0
  402. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/README.md +0 -0
  403. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/conftest.py +0 -0
  404. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/fixture_project/.agentdeck/agents/greeter/agent.py +0 -0
  405. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/fixture_project/.agentdeck/workflows/approval_flow/workflow.py +0 -0
  406. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/fixture_project/.agentdeck/workflows/boom_flow/workflow.py +0 -0
  407. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/fixture_project/.agentdeck/workflows/crash_flow/workflow.py +0 -0
  408. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/fixture_project/.agentdeck/workflows/echo_flow/workflow.py +0 -0
  409. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/fixture_project/.agentdeck/workflows/fanout_interrupt_flow/workflow.py +0 -0
  410. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/fixture_project/.agentdeck/workflows/side_effect_flow/workflow.py +0 -0
  411. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/01_health.http +0 -0
  412. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/02_chat.http +0 -0
  413. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/03_chat_stream.http +0 -0
  414. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/04_chat_missing_field.http +0 -0
  415. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/05_agent_unknown.http +0 -0
  416. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/06_workflow.http +0 -0
  417. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/07_workflow_stream.http +0 -0
  418. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/08_interrupt_stream.http +0 -0
  419. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/09_pending.http +0 -0
  420. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/10_resume.http +0 -0
  421. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/11_pending_after_resume.http +0 -0
  422. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/12_workflow_error.http +0 -0
  423. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/13_workflow_error_stream.http +0 -0
  424. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/14_side_effect.http +0 -0
  425. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/15_side_effect_stream.http +0 -0
  426. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/16_fanout_interrupt.http +0 -0
  427. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/17_fanout_interrupt_stream.http +0 -0
  428. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/snapshots/18_workflow_crash.http +0 -0
  429. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/golden/test_golden_wire.py +0 -0
  430. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/project_engines.py +0 -0
  431. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_agent_model_resolution.py +0 -0
  432. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_authoring.py +0 -0
  433. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_brand_assets.py +0 -0
  434. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_cli.py +0 -0
  435. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_cli_render.py +0 -0
  436. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_composition.py +0 -0
  437. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_context_injection.py +0 -0
  438. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_context_validation.py +0 -0
  439. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_crash_reconciliation.py +0 -0
  440. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_deck.py +0 -0
  441. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_docs_examples.py +0 -0
  442. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_docs_site.py +0 -0
  443. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_errors.py +0 -0
  444. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_examples.py +0 -0
  445. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_generated_reference.py +0 -0
  446. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_handoff_ends_on_user_turn.py +0 -0
  447. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_handoff_round_trip.py +0 -0
  448. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_handoffs.py +0 -0
  449. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_instructions_and_hooks.py +0 -0
  450. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_invocable_registry.py +0 -0
  451. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_jack.py +0 -0
  452. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_jack_server.py +0 -0
  453. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_langfuse_sink.py +0 -0
  454. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_langfuse_tracer.py +0 -0
  455. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_langgraph_checkpointer.py +0 -0
  456. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_langgraph_fanout_interrupt.py +0 -0
  457. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_langgraph_node_boundary_pause.py +0 -0
  458. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_langgraph_structured_state.py +0 -0
  459. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_load_file_node.py +0 -0
  460. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_mcp.py +0 -0
  461. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_mcp_tool_source.py +0 -0
  462. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_memory_store.py +0 -0
  463. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_multiprocess_concurrency.py +0 -0
  464. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_node_compilation.py +0 -0
  465. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_observability.py +0 -0
  466. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_openai_agents_engine.py +0 -0
  467. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_openai_agents_reconcile.py +0 -0
  468. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_openai_agents_sessions.py +0 -0
  469. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_openai_agents_tool_failure.py +0 -0
  470. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_package.py +0 -0
  471. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_postgres_store.py +0 -0
  472. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_redis_store.py +0 -0
  473. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_run_config_parity.py +0 -0
  474. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_run_control.py +0 -0
  475. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_run_reporting.py +0 -0
  476. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_runtime_service.py +0 -0
  477. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_serve.py +0 -0
  478. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_serve_compat.py +0 -0
  479. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_serve_session_claim.py +0 -0
  480. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_settings.py +0 -0
  481. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_sink_dispatch.py +0 -0
  482. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_skills.py +0 -0
  483. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_sqlite_control_port.py +0 -0
  484. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_sqlite_store.py +0 -0
  485. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_streaming.py +0 -0
  486. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_tool_compilation.py +0 -0
  487. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_uc1_handoff.py +0 -0
  488. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_uc2_claim_pipeline.py +0 -0
  489. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_uc3_slowpoke.py +0 -0
  490. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_web_search.py +0 -0
  491. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_workflow_durability.py +0 -0
  492. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_workflow_interrupts.py +0 -0
  493. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_workflow_streaming.py +0 -0
  494. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/tests/test_workflow_timers.py +0 -0
  495. {agentdeck_sdk-4.0.2 → agentdeck_sdk-4.0.4}/uv.lock +0 -0
@@ -0,0 +1,119 @@
1
+ name: Documentation contribution
2
+ description: A scoped documentation task, specified well enough to be someone's first contribution.
3
+ title: "docs: "
4
+ labels: ["documentation", "area:docs"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Questions are welcome on this issue. Ask before you write if anything about
10
+ AgentDeck's intent is unclear: a maintainer will answer, and asking is not a
11
+ sign the task was too hard for you.
12
+
13
+ - type: textarea
14
+ id: context
15
+ attributes:
16
+ label: Context
17
+ description: >
18
+ The AgentDeck concept this documents, and why the page exists. A contributor
19
+ should not have to reverse-engineer the architecture before starting.
20
+ validations:
21
+ required: true
22
+
23
+ - type: textarea
24
+ id: current-state
25
+ attributes:
26
+ label: Current state
27
+ description: What is implemented, and what the page already says. Link both the page and the source.
28
+ validations:
29
+ required: true
30
+
31
+ - type: textarea
32
+ id: missing
33
+ attributes:
34
+ label: What is missing
35
+ description: >
36
+ Precise. Not "improve this page". Name the artifact: a runnable example of X,
37
+ a diagram of Y, a troubleshooting entry for Z.
38
+ validations:
39
+ required: true
40
+
41
+ - type: textarea
42
+ id: expected
43
+ attributes:
44
+ label: Expected contribution
45
+ description: What to add, with a suggested structure or heading list.
46
+ validations:
47
+ required: true
48
+
49
+ - type: textarea
50
+ id: apis
51
+ attributes:
52
+ label: Relevant APIs and source files
53
+ description: The classes, functions and protocols to read, with links.
54
+ validations:
55
+ required: true
56
+
57
+ - type: input
58
+ id: files
59
+ attributes:
60
+ label: Files to change
61
+ description: The exact MDX or example paths.
62
+ validations:
63
+ required: true
64
+
65
+ - type: textarea
66
+ id: acceptance
67
+ attributes:
68
+ label: Acceptance criteria
69
+ value: |
70
+ - [ ] Uses only public APIs from `agentdeck`
71
+ - [ ] Any code shown runs against the current release
72
+ - [ ] Does not duplicate the Quickstart
73
+ - [ ] Includes the expected output
74
+ - [ ] Links the related reference page
75
+ - [ ] `make check` passes
76
+ - [ ] `docs-site` builds
77
+ validations:
78
+ required: true
79
+
80
+ - type: textarea
81
+ id: out-of-scope
82
+ attributes:
83
+ label: Out of scope
84
+ value: |
85
+ - No API redesign
86
+ - No new runtime behavior
87
+ - No change to Run semantics
88
+ - No navigation restructuring
89
+ - No new abstraction unless agreed on this issue first
90
+ validations:
91
+ required: true
92
+
93
+ - type: textarea
94
+ id: verify
95
+ attributes:
96
+ label: How to verify locally
97
+ value: |
98
+ ```bash
99
+ make install # editable install with every extra
100
+ make check # ruff, ty, import-linter, pytest
101
+
102
+ cd docs-site
103
+ npm install
104
+ npm run dev # http://localhost:3040
105
+ ```
106
+ validations:
107
+ required: true
108
+
109
+ - type: dropdown
110
+ id: difficulty
111
+ attributes:
112
+ label: Difficulty
113
+ description: Small and medium are eligible for `good first issue`. Advanced is not.
114
+ options:
115
+ - small
116
+ - medium
117
+ - advanced
118
+ validations:
119
+ required: true
@@ -0,0 +1 @@
1
+ {"agentdeck.adapters.control.memory": 1787124808.4922376, "agentdeck.authoring.timers": 1787124808.4958086, "agentdeck.skills": 1787124808.4979315, "agentdeck.adapters.tools.mcp.wiring": 1787124808.4949489, "agentdeck.surfaces.serve.workflows": 1787124808.4991884, "agentdeck.serve": 1787124808.4979315, "agentdeck.core.content": 1787124808.4964523, "agentdeck.authoring.tools": 1787124808.4958086, "agentdeck.core.ports.store": 1787124808.496899, "agentdeck.authoring.runners": 1787124808.4952602, "agentdeck.testing": 1787124808.4991884, "agentdeck.adapters.leases.memory": 1787124808.493463, "agentdeck.core.invocable": 1787124808.4964523, "agentdeck.authoring.graphs": 1787124808.4952602, "agentdeck.adapters.control.sqlite": 1787124808.4922931, "agentdeck.authoring.state": 1787124808.4958086, "agentdeck.core.status": 1787124808.496899, "agentdeck.adapters.stores.sqlite": 1787124808.494179, "agentdeck.adapters.stores.sqlite.store": 1787124808.494368, "agentdeck.adapters.engines.langgraph": 1787124808.4925327, "agentdeck.core.ports.tools": 1787124808.496899, "agentdeck.adapters.tools.mcp.source": 1787124808.4949489, "agentdeck.adapters.control": 1787124808.4921763, "agentdeck.errors": 1787124808.496899, "agentdeck.authoring.web_search": 1787124808.4958086, "agentdeck.adapters.engines.openai_agents": 1787124808.492586, "agentdeck.authoring.compile": 1787124808.4952602, "agentdeck.authoring.skills": 1787124808.4958086, "agentdeck.adapters.stores.postgres.store": 1787124808.4939494, "agentdeck.authoring.nodes": 1787124808.4952602, "agentdeck.runtime.capture": 1787124808.4979315, "agentdeck.core.ports.lease": 1787124808.496899, "agentdeck.adapters": 1787124808.4920352, "agentdeck.core.control": 1787124808.4964523, "agentdeck.adapters.telemetry.langfuse": 1787124808.494568, "agentdeck": 1787124808.4920352, "agentdeck.runtime.dispatch": 1787124808.4979315, "agentdeck.core.context": 1787124808.4964523, "agentdeck.core.ports.engine": 1787124808.496899, "agentdeck.adapters.engines.openai_agents.sessions": 1787124808.49288, "agentdeck.surfaces.cli": 1787124808.4989896, "agentdeck.authoring.injection": 1787124808.4952602, "agentdeck.adapters.engines.stub": 1787124808.49288, "agentdeck.authoring": 1787124808.4949489, "agentdeck.deck": 1787124808.496899, "agentdeck.runtime.settings": 1787124808.4979315, "agentdeck.authoring.workflow": 1787124808.4958086, "agentdeck.core.reporting": 1787124808.496899, "agentdeck.core.base": 1787124808.4964523, "agentdeck.adapters.stores.memory": 1787124808.4937537, "agentdeck.authoring.instructions": 1787124808.4952602, "agentdeck.adapters.tools.mcp.transport": 1787124808.4949489, "agentdeck.authoring.hooks": 1787124808.4952602, "agentdeck.adapters.engines.langgraph.engine": 1787124808.492586, "agentdeck.adapters.telemetry.langfuse.sink": 1787124808.4946196, "agentdeck.surfaces.serve.app": 1787124808.4991884, "agentdeck.core.events": 1787124808.4964523, "agentdeck.adapters.tools.mcp.lifecycle": 1787124808.4949489, "agentdeck.core.ports": 1787124808.4964523, "agentdeck.adapters.stores.postgres": 1787124808.4938037, "agentdeck.adapters.engines.openai_agents.reconcile": 1787124808.49288, "agentdeck.adapters.tools.mcp": 1787124808.4948971, "agentdeck.observers": 1787124808.496899, "agentdeck.adapters.engines.openai_agents.translate": 1787124808.49288, "agentdeck.adapters.engines.stub.engine": 1787124808.4933414, "agentdeck.authoring.runners.agent": 1787124808.4958086, "agentdeck.surfaces": 1787124808.498866, "agentdeck.core": 1787124808.4958086, "agentdeck.adapters.control.memory.port": 1787124808.4922931, "agentdeck.adapters.engines.openai_agents.engine": 1787124808.49288, "agentdeck.adapters.stores.redis.store": 1787124808.494179, "agentdeck.runtime": 1787124808.496899, "agentdeck.composition": 1787124808.4958086, "agentdeck.adapters.engines.langgraph.checkpointer": 1787124808.492586, "agentdeck.authoring.interrupts": 1787124808.4952602, "agentdeck.runtime.registry": 1787124808.4979315, "agentdeck.runtime.discovery": 1787124808.4979315, "agentdeck.adapters.stores": 1787124808.4936168, "agentdeck.adapters.leases.sqlite.port": 1787124808.4936168, "agentdeck.adapters.stores.memory.store": 1787124808.4938037, "agentdeck.adapters.telemetry.langfuse.client": 1787124808.4946196, "agentdeck.surfaces.serve": 1787124808.49904, "agentdeck.authoring.agent": 1787124808.4952602, "agentdeck.surfaces.cli.chat": 1787124808.49904, "agentdeck.adapters.leases": 1787124808.4933414, "agentdeck.cli": 1787124808.4958086, "agentdeck.authoring.runners.workflow": 1787124808.4958086, "agentdeck.surfaces.serve.compat": 1787124808.4991884, "agentdeck.adapters.leases.sqlite": 1787124808.4935102, "agentdeck.adapters.control.sqlite.port": 1787124808.4923918, "agentdeck.adapters.engines.openai_agents.runconfig": 1787124808.49288, "agentdeck.adapters.telemetry.langfuse.trace": 1787124808.4946196, "agentdeck.mcp": 1787124808.496899, "agentdeck.adapters.tools": 1787124808.4946196, "agentdeck.adapters.engines": 1787124808.4923918, "agentdeck.core.ports.control": 1787124808.496899, "agentdeck.adapters.telemetry": 1787124808.494368, "agentdeck.adapters.leases.memory.port": 1787124808.4935102, "agentdeck.adapters.stores.redis": 1787124808.4939494, "agentdeck.core.ports.sink": 1787124808.496899, "agentdeck.skills.bundle": 1787124808.498866, "agentdeck.runtime.service": 1787124808.4979315}
@@ -0,0 +1 @@
1
+ {"agentdeck.adapters.engines":[],"agentdeck.authoring.interrupts":[["typing",12,"from typing import Any, Literal, NotRequired, TypedDict"],["__future__",10,"from __future__ import annotations"]],"agentdeck.core.events":[["pydantic",26,"from pydantic import ("],["agentdeck.core.base",38,"from agentdeck.core.base import CoreModel, JsonData"],["typing",24,"from typing import Annotated, Any, Literal, get_args"],["agentdeck.core.content",39,"from agentdeck.core.content import Input # noqa: TC001 - pydantic resolves field annotations at runtime"],["__future__",22,"from __future__ import annotations"]],"agentdeck.serve":[["argparse",54,"import argparse"],["fastapi",108,"from fastapi.responses import JSONResponse, StreamingResponse"],["fastapi",74,"from fastapi import FastAPI"],["agentdeck.deck",77,"from agentdeck.deck import Deck"],["typing",58,"from typing import TYPE_CHECKING, Any"],["collections",72,"from collections.abc import AsyncGenerator, AsyncIterator, Awaitable, Callable"],["os",56,"import os"],["agentdeck.errors",62,"from agentdeck.errors import AgentdeckError, NotFoundError, RunStateError, SessionBusyError"],["agentdeck.deck",83,"from agentdeck.deck import Deck"],["uvicorn",354,"import uvicorn"],["agentdeck.core.content",60,"from agentdeck.core.content import coerce_input"],["agentdeck.core.status",61,"from agentdeck.core.status import status_of"],["fastapi",107,"from fastapi import FastAPI, HTTPException, Request"],["contextlib",57,"from contextlib import aclosing, asynccontextmanager"],["logging",55,"import logging"],["agentdeck.core.events",76,"from agentdeck.core.events import Event"],["__future__",52,"from __future__ import annotations"],["agentdeck.surfaces.serve.compat",63,"from agentdeck.surfaces.serve.compat import ("]],"agentdeck.adapters.leases.memory.port":[["typing",13,"from typing import TYPE_CHECKING"],["__future__",10,"from __future__ import annotations"],["agentdeck.core.ports.lease",15,"from agentdeck.core.ports.lease import LeasePort"],["datetime",12,"from datetime import UTC, datetime"],["datetime",19,"from datetime import timedelta"],["collections",18,"from collections.abc import Callable, Collection"]],"agentdeck.adapters.telemetry.langfuse.client":[["collections",22,"from collections.abc import Mapping"],["agentdeck.runtime.settings",26,"from agentdeck.runtime.settings import LangfuseSettings"],["agentdeck.core.events",25,"from agentdeck.core.events import Usage"],["__future__",13,"from __future__ import annotations"],["os",16,"import os"],["agentdeck.adapters.telemetry.langfuse.trace",24,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind"],["logging",15,"import logging"],["typing",17,"from typing import TYPE_CHECKING, Any"],["langfuse",60,"from langfuse import Langfuse # ty: ignore[unresolved-import] - [observability] extra"],["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.ports.tools":[["abc",14,"from abc import ABC, abstractmethod"],["typing",15,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.base",19,"from agentdeck.core.base import CoreModel"],["agentdeck.core.invocable",22,"from agentdeck.core.invocable import InvocableSpec"],["pydantic",17,"from pydantic import ConfigDict"],["__future__",12,"from __future__ import annotations"]],"agentdeck.adapters.telemetry.langfuse.trace":[["__future__",13,"from __future__ import annotations"],["collections",18,"from collections.abc import Mapping"],["typing",15,"from typing import TYPE_CHECKING, Any, Literal, Protocol"],["agentdeck.core.events",20,"from agentdeck.core.events import Usage"]],"agentdeck.errors":[["__future__",12,"from __future__ import annotations"],["typing",14,"from typing import Any"],["agentdeck.core.status",16,"from agentdeck.core.status import RunStatus"]],"agentdeck.adapters.stores":[],"agentdeck.core.status":[["typing",21,"from typing import TYPE_CHECKING"],["dataclasses",19,"from dataclasses import dataclass"],["collections",26,"from collections.abc import Mapping, Sequence"],["__future__",17,"from __future__ import annotations"],["enum",20,"from enum import StrEnum"],["agentdeck.core.events",23,"from agentdeck.core.events import TERMINAL_KINDS"],["agentdeck.core.events",28,"from agentdeck.core.events import Event"]],"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.surfaces.serve":[["__future__",3,"from __future__ import annotations"],["agentdeck.surfaces.serve.app",5,"from agentdeck.surfaces.serve.app import build_app"]],"agentdeck.core.content":[["__future__",11,"from __future__ import annotations"],["agentdeck.core.base",26,"from agentdeck.core.base import CoreModel, JsonData"],["pydantic",16,"from pydantic import ("],["base64",13,"import base64"],["typing",14,"from typing import Annotated, Any, Literal, get_args"]],"agentdeck.runtime.discovery":[["agents",25,"from agents import Agent as SDKAgent"],["agentdeck.authoring.workflow",17,"from agentdeck.authoring.workflow import Workflow"],["typing",12,"from typing import TYPE_CHECKING, Any, Final"],["collections",23,"from collections.abc import Callable, Mapping, Sequence"],["agentdeck.authoring.agent",14,"from agentdeck.authoring.agent import Agent"],["agentdeck.core.invocable",18,"from agentdeck.core.invocable import InvocableKind, InvocableSpec"],["agentdeck.errors",19,"from agentdeck.errors import ConfigError"],["agentdeck.core.ports",28,"from agentdeck.core.ports import EnginePort"],["agents",26,"from agents.tool import FunctionTool"],["__future__",10,"from __future__ import annotations"],["agentdeck.authoring.graphs",16,"from agentdeck.authoring.graphs import bridge_context_nodes"],["agentdeck.authoring.compile",15,"from agentdeck.authoring.compile import compile_agent, link_handoffs"],["agentdeck.runtime.registry",20,"from agentdeck.runtime.registry import PluginRegistry, mount_project_dir"]],"agentdeck.authoring.runners":[["agentdeck.authoring.runners.workflow",4,"from agentdeck.authoring.runners.workflow import BaseWorkflowRunner, DevWorkflowRunner"],["agentdeck.authoring.runners.agent",3,"from agentdeck.authoring.runners.agent import BaseRunner, HeadlessRunner, StreamDone"]],"agentdeck.adapters.engines.openai_agents":[["agentdeck.adapters.engines.openai_agents.engine",5,"from agentdeck.adapters.engines.openai_agents.engine import OpenAIAgentsEngine"],["agentdeck.adapters.engines.openai_agents.runconfig",6,"from agentdeck.adapters.engines.openai_agents.runconfig import RunSettings"],["agentdeck.adapters.engines.openai_agents.sessions",7,"from agentdeck.adapters.engines.openai_agents.sessions import ExecutionStore, SessionFactory"],["__future__",3,"from __future__ import annotations"]],"agentdeck.core.ports.sink":[["abc",9,"from abc import ABC, abstractmethod"],["agentdeck.core.events",13,"from agentdeck.core.events import Event"],["typing",10,"from typing import TYPE_CHECKING"],["__future__",7,"from __future__ import annotations"]],"agentdeck.core.base":[["typing",10,"from typing import Annotated"],["pydantic",12,"from pydantic import AfterValidator, BaseModel, ConfigDict, JsonValue"],["__future__",7,"from __future__ import annotations"],["math",9,"from math import isfinite"]],"agentdeck.core.context":[["agentdeck.core.control",23,"from agentdeck.core.control import Gate"],["dataclasses",20,"from dataclasses import dataclass, field"],["typing",21,"from typing import cast"],["__future__",18,"from __future__ import annotations"],["agentdeck.core.reporting",24,"from agentdeck.core.reporting import Reporter"]],"agentdeck.adapters.tools.mcp.transport":[["logging",12,"import logging"],["collections",20,"from collections.abc import Awaitable, Callable"],["__future__",9,"from __future__ import annotations"],["httpx",16,"import httpx"],["agents",17,"from agents.mcp import MCPServerStreamableHttp"],["typing",14,"from typing import TYPE_CHECKING, Any, TypeVar"],["asyncio",11,"import asyncio"],["contextlib",13,"from contextlib import AsyncExitStack, suppress"]],"agentdeck.adapters.stores.sqlite":[["agentdeck.adapters.stores.sqlite.store",3,"from agentdeck.adapters.stores.sqlite.store import SqliteEventStore"]],"agentdeck.adapters.stores.postgres.store":[["typing",21,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.status",38,"from agentdeck.core.status import RunStatus"],["psycopg",24,"from psycopg import errors as pg_errors"],["__future__",17,"from __future__ import annotations"],["hashlib",20,"import hashlib"],["psycopg",23,"import psycopg"],["agentdeck.core.status",29,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["asyncio",19,"import asyncio"],["agentdeck.errors",30,"from agentdeck.errors import DuplicateKeyError, StoreError"],["agentdeck.core.events",27,"from agentdeck.core.events import Event"],["datetime",34,"from datetime import timedelta"],["agentdeck.core.context",36,"from agentdeck.core.context import RunContext"],["agentdeck.core.ports",28,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["collections",33,"from collections.abc import Awaitable, Callable, Sequence"],["agentdeck.core.events",37,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["psycopg",25,"from psycopg import sql"]],"agentdeck.adapters.stores.memory.store":[["__future__",3,"from __future__ import annotations"],["datetime",16,"from datetime import timedelta"],["datetime",6,"from datetime import UTC, datetime"],["agentdeck.core.status",11,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, RunStatus, can_resume, status_of"],["agentdeck.core.events",9,"from agentdeck.core.events import Event"],["agentdeck.core.ports",10,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["agentdeck.errors",12,"from agentdeck.errors import DuplicateKeyError, StoreError"],["asyncio",5,"import asyncio"],["agentdeck.core.events",19,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["collections",15,"from collections.abc import Callable, Sequence"],["typing",7,"from typing import TYPE_CHECKING"],["agentdeck.core.context",18,"from agentdeck.core.context import RunContext"]],"agentdeck.runtime.service":[["agentdeck.core.events",29,"from agentdeck.core.events import ("],["typing",56,"from typing import Any"],["agentdeck.core.control",59,"from agentdeck.core.control import ControlSignal"],["agentdeck.core.ports.store",63,"from agentdeck.core.ports.store import RunSummary"],["agentdeck.core.ports",62,"from agentdeck.core.ports import ControlPort, EnginePort, EventSinkPort, EventStorePort, LeasePort"],["agentdeck.core.control",28,"from agentdeck.core.control import CONTROL_POLL_INTERVAL, Gate, Signal"],["collections",17,"from collections import deque"],["asyncio",15,"import asyncio"],["contextlib",18,"from contextlib import aclosing, asynccontextmanager, suppress"],["agentdeck.core.status",40,"from agentdeck.core.status import ("],["agentdeck.errors",51,"from agentdeck.errors import DOCS_URL, NotFoundError, RunStateError, SessionBusyError, StoreError"],["uuid",22,"from uuid import uuid4"],["agentdeck.core.content",26,"from agentdeck.core.content import DataBlock, coerce_input"],["datetime",20,"from datetime import timedelta"],["pydantic",24,"from pydantic import ValidationError"],["agentdeck.core.invocable",61,"from agentdeck.core.invocable import InvocableSpec"],["collections",55,"from collections.abc import AsyncGenerator, AsyncIterator, Mapping, Sequence"],["__future__",13,"from __future__ import annotations"],["agentdeck.core.context",27,"from agentdeck.core.context import RunContext"],["agentdeck.core.reporting",39,"from agentdeck.core.reporting import Reporter"],["agentdeck.runtime.dispatch",52,"from agentdeck.runtime.dispatch import SinkDispatch"],["dataclasses",19,"from dataclasses import dataclass, replace"],["agentdeck.core.events",60,"from agentdeck.core.events import KnownPayload"],["logging",16,"import logging"],["agentdeck.core.content",58,"from agentdeck.core.content import Input"],["typing",21,"from typing import TYPE_CHECKING"]],"agentdeck.adapters.leases.sqlite.port":[["agentdeck.errors",23,"from agentdeck.errors import StoreError"],["agentdeck.core.ports.lease",22,"from agentdeck.core.ports.lease import LeasePort"],["sqlite3",17,"import sqlite3"],["collections",26,"from collections.abc import Callable, Collection"],["contextlib",18,"from contextlib import suppress"],["functools",19,"from functools import partial"],["pathlib",28,"from pathlib import Path"],["__future__",14,"from __future__ import annotations"],["typing",20,"from typing import TYPE_CHECKING"],["asyncio",16,"import asyncio"],["datetime",27,"from datetime import timedelta"]],"agentdeck.surfaces.serve.app":[["pydantic",13,"from pydantic import BaseModel, Field"],["__future__",6,"from __future__ import annotations"],["fastapi",12,"from fastapi.responses import JSONResponse, StreamingResponse"],["agentdeck.core.events",21,"from agentdeck.core.events import Event"],["agentdeck.core.content",15,"from agentdeck.core.content import coerce_input"],["agentdeck.runtime.service",22,"from agentdeck.runtime.service import Runtime"],["fastapi",11,"from fastapi import FastAPI"],["agentdeck.errors",16,"from agentdeck.errors import SessionBusyError"],["typing",9,"from typing import TYPE_CHECKING, Any"],["collections",19,"from collections.abc import AsyncIterator"],["http",8,"from http import HTTPStatus"]],"agentdeck.authoring":[["agentdeck.authoring.timers",10,"from agentdeck.authoring.timers import sleep_until"],["agentdeck.authoring.nodes",9,"from agentdeck.authoring.nodes import AgentNode, LoadFileNode"],["agentdeck.authoring.interrupts",8,"from agentdeck.authoring.interrupts import InterruptResult"],["agentdeck.authoring.workflow",11,"from agentdeck.authoring.workflow import Workflow, WorkflowDeclaration"],["agentdeck.authoring.agent",7,"from agentdeck.authoring.agent import Agent, AgentDeclaration"]],"agentdeck.authoring.instructions":[["inspect",20,"import inspect"],["typing",21,"from typing import TYPE_CHECKING, Any"],["__future__",18,"from __future__ import annotations"],["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 Context, RunContext"],["agentdeck.errors",25,"from agentdeck.errors import ConfigError"]],"agentdeck.adapters.stores.sqlite.store":[["agentdeck.core.context",29,"from agentdeck.core.context import RunContext"],["__future__",9,"from __future__ import annotations"],["datetime",15,"from datetime import datetime"],["agentdeck.core.status",21,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["agentdeck.core.status",31,"from agentdeck.core.status import RunStatus"],["pathlib",27,"from pathlib import Path"],["sqlite3",13,"import sqlite3"],["typing",17,"from typing import TYPE_CHECKING"],["contextlib",14,"from contextlib import suppress"],["datetime",26,"from datetime import timedelta"],["agentdeck.core.events",30,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["functools",16,"from functools import partial"],["agentdeck.errors",22,"from agentdeck.errors import DuplicateKeyError, StoreError"],["agentdeck.core.events",19,"from agentdeck.core.events import Event"],["agentdeck.core.ports",20,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["collections",25,"from collections.abc import Callable, Sequence"],["asyncio",11,"import asyncio"],["json",12,"import json"]],"agentdeck.authoring.runners.agent":[["agents",22,"from agents import Agent, ModelSettings, OpenAIProvider, RunConfig, Runner, RunResult"],["__future__",15,"from __future__ import annotations"],["dataclasses",18,"from dataclasses import dataclass, field"],["typing",19,"from typing import TYPE_CHECKING, Any, Self, cast"],["collections",29,"from collections.abc import AsyncGenerator, AsyncIterator"],["openai",23,"from openai import AsyncOpenAI"],["httpx",21,"import httpx"],["agentdeck.runtime.settings",26,"from agentdeck.runtime.settings import Settings, default_use_responses, get_settings"],["agentdeck.adapters.engines.openai_agents.runconfig",25,"from agentdeck.adapters.engines.openai_agents.runconfig import build_handoff_ends_on_user_turn_mapper, tracing_enabled"],["contextlib",17,"from contextlib import aclosing"]],"agentdeck.adapters.leases":[],"agentdeck.adapters.leases.sqlite":[["agentdeck.adapters.leases.sqlite.port",3,"from agentdeck.adapters.leases.sqlite.port import SqliteLeasePort"]],"agentdeck.authoring.state":[["typing",8,"from typing import Any"],["pydantic",11,"from pydantic import BaseModel"],["__future__",3,"from __future__ import annotations"],["collections",7,"from collections.abc import Mapping"],["dataclasses",5,"import dataclasses"],["json",6,"import json"],["langgraph",10,"from langgraph.types import Command"]],"agentdeck.authoring.injection":[["agentdeck.errors",35,"from agentdeck.errors import ConfigError, ContextTypeError"],["agentdeck.core.context",34,"from agentdeck.core.context import Context"],["typing",32,"from typing import TYPE_CHECKING, Any, Union, get_args, get_origin, get_type_hints"],["types",30,"import types"],["collections",38,"from collections.abc import Callable, Iterable, Iterator, Mapping"],["inspect",29,"import inspect"],["dataclasses",31,"from dataclasses import dataclass"],["__future__",27,"from __future__ import annotations"]],"agentdeck.adapters.engines.stub.engine":[["typing",16,"from typing import TYPE_CHECKING, Any, ClassVar"],["__future__",13,"from __future__ import annotations"],["agentdeck.errors",22,"from agentdeck.errors import ConfigError"],["agentdeck.core.ports",21,"from agentdeck.core.ports import EnginePort"],["collections",15,"from collections.abc import Sequence"],["agentdeck.core.events",29,"from agentdeck.core.events import Event, KnownPayload"],["agentdeck.core.invocable",20,"from agentdeck.core.invocable import InvocableKind, InvocableSpec"],["agentdeck.core.events",19,"from agentdeck.core.events import RunInterrupted"],["agentdeck.core.content",27,"from agentdeck.core.content import Input"],["collections",25,"from collections.abc import AsyncGenerator"],["agentdeck.core.context",28,"from agentdeck.core.context import RunContext"],["agentdeck.core.control",18,"from agentdeck.core.control import ControlSignalled"]],"agentdeck.adapters.tools.mcp.wiring":[["agentdeck.adapters.tools.mcp.lifecycle",12,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["typing",10,"from typing import TYPE_CHECKING"],["agents",17,"from agents.mcp import MCPServer"],["__future__",8,"from __future__ import annotations"],["collections",15,"from collections.abc import Iterable, Sequence"]],"agentdeck.observers":[["agentdeck.core.ports",17,"from agentdeck.core.ports import EventSinkPort"],["openinference",37,"from openinference.instrumentation.openai_agents import ( # ty: ignore[unresolved-import] - [observability] extra"],["agents",36,"from agents import set_trace_processors"],["__future__",13,"from __future__ import annotations"],["agentdeck.runtime.settings",19,"from agentdeck.runtime.settings import get_settings"],["agentdeck.core.events",22,"from agentdeck.core.events import Event"],["agentdeck.adapters.telemetry.langfuse.client",85,"from agentdeck.adapters.telemetry.langfuse.client import langfuse_sink"],["typing",15,"from typing import TYPE_CHECKING"],["agentdeck.errors",18,"from agentdeck.errors import ConfigError"]],"agentdeck.adapters.stores.memory":[["agentdeck.adapters.stores.memory.store",3,"from agentdeck.adapters.stores.memory.store import MemoryEventStore"]],"agentdeck.authoring.timers":[["typing",10,"from typing import Any"],["langgraph",12,"from langgraph.types import interrupt"],["__future__",7,"from __future__ import annotations"],["datetime",9,"from datetime import UTC, datetime"]],"agentdeck.core.reporting":[["typing",15,"from typing import TYPE_CHECKING"],["agentdeck.core.events",22,"from agentdeck.core.events import KnownPayload"],["collections",20,"from collections import deque"],["agentdeck.core.events",17,"from agentdeck.core.events import ProgressReported, StatusReported"],["__future__",12,"from __future__ import annotations"],["logging",14,"import logging"]],"agentdeck.adapters.engines.langgraph.engine":[["__future__",35,"from __future__ import annotations"],["json",38,"import json"],["agentdeck.core.events",67,"from agentdeck.core.events import Event, KnownPayload"],["agentdeck.core.control",50,"from agentdeck.core.control import ControlSignalled"],["dataclasses",37,"import dataclasses"],["agentdeck.core.invocable",68,"from agentdeck.core.invocable import InvocableSpec"],["typing",41,"from typing import TYPE_CHECKING, Any, ClassVar, cast"],["langchain_core",60,"from langchain_core.runnables import RunnableConfig"],["collections",39,"from collections.abc import Mapping"],["collections",57,"from collections.abc import AsyncGenerator, AsyncIterator, Callable, Sequence"],["langgraph",62,"from langgraph.graph.state import CompiledStateGraph"],["langgraph",43,"from langgraph.checkpoint.memory import MemorySaver"],["agentdeck.core.status",53,"from agentdeck.core.status import LIFECYCLE_KINDS"],["agentdeck.core.events",51,"from agentdeck.core.events import Custom, NodeUpdated, RunCompleted, RunInterrupted, Usage"],["agentdeck.core.ports",52,"from agentdeck.core.ports import EnginePort"],["langgraph",61,"from langgraph.checkpoint.base import BaseCheckpointSaver"],["contextlib",58,"from contextlib import AbstractAsyncContextManager"],["agentdeck.core.content",49,"from agentdeck.core.content import DataBlock, TextBlock"],["langgraph",45,"from langgraph.types import Command"],["agentdeck.errors",54,"from agentdeck.errors import DOCS_URL, ConfigError"],["agentdeck.core.context",66,"from agentdeck.core.context import RunContext"],["langgraph",63,"from langgraph.types import StreamMode"],["agentdeck.core.content",65,"from agentdeck.core.content import Input"],["langgraph",44,"from langgraph.graph.state import StateGraph"],["pydantic",46,"from pydantic import BaseModel"],["contextlib",40,"from contextlib import aclosing, nullcontext"],["agentdeck.adapters.engines.langgraph.checkpointer",48,"from agentdeck.adapters.engines.langgraph.checkpointer import resolve_checkpointer"]],"agentdeck.core.ports":[["agentdeck.core.ports.store",15,"from agentdeck.core.ports.store import EventStorePort, RunSummary, SessionClaim"],["agentdeck.core.ports.control",11,"from agentdeck.core.ports.control import ControlPort"],["agentdeck.core.ports.sink",14,"from agentdeck.core.ports.sink import EventSinkPort"],["agentdeck.core.ports.engine",12,"from agentdeck.core.ports.engine import EnginePort"],["agentdeck.core.ports.tools",16,"from agentdeck.core.ports.tools import ToolSet, ToolSourcePort"],["agentdeck.core.ports.lease",13,"from agentdeck.core.ports.lease import LeasePort"]],"agentdeck.composition":[["agentdeck.adapters.stores.sqlite",27,"from agentdeck.adapters.stores.sqlite import SqliteEventStore"],["agentdeck.observers",112,"from agentdeck.observers import Langfuse"],["__future__",16,"from __future__ import annotations"],["agentdeck.core.invocable",44,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.adapters.stores.postgres",249,"from agentdeck.adapters.stores.postgres import PostgresEventStore"],["logging",18,"import logging"],["agentdeck.runtime.settings",31,"from agentdeck.runtime.settings import ("],["agentdeck.errors",28,"from agentdeck.errors import DOCS_URL"],["agentdeck.runtime.discovery",29,"from agentdeck.runtime.discovery import InvocableRegistry"],["agentdeck.adapters.leases.memory",24,"from agentdeck.adapters.leases.memory import MemoryLeasePort"],["typing",19,"from typing import TYPE_CHECKING"],["agentdeck.core.ports",45,"from agentdeck.core.ports import ControlPort, EnginePort, EventSinkPort, EventStorePort, LeasePort"],["datetime",42,"from datetime import timedelta"],["agentdeck.adapters.engines.openai_agents.runconfig",23,"from agentdeck.adapters.engines.openai_agents.runconfig import RunSettings"],["agentdeck.adapters.leases.sqlite",25,"from agentdeck.adapters.leases.sqlite import SqliteLeasePort"],["agentdeck.runtime.service",30,"from agentdeck.runtime.service import Runtime"],["agentdeck.adapters.control.memory",21,"from agentdeck.adapters.control.memory import MemoryControlPort"],["agentdeck.adapters.control.sqlite",22,"from agentdeck.adapters.control.sqlite import SqliteControlPort"],["agentdeck.adapters.stores.redis",240,"from agentdeck.adapters.stores.redis import RedisEventStore"],["agentdeck.adapters.stores.memory",26,"from agentdeck.adapters.stores.memory import MemoryEventStore"],["collections",41,"from collections.abc import Mapping, Sequence"]],"agentdeck.deck":[["logging",40,"import logging"],["agentdeck.skills",85,"from agentdeck.skills import Skills"],["agentdeck.adapters.engines.langgraph",48,"from agentdeck.adapters.engines.langgraph import LangGraphEngine"],["agentdeck.authoring.interrupts",94,"from agentdeck.authoring.interrupts import InterruptResult"],["agentdeck.adapters.tools.mcp.lifecycle",50,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["functools",39,"import functools"],["agentdeck.core.control",68,"from agentdeck.core.control import Signal"],["uuid",41,"import uuid"],["agentdeck.runtime.settings",84,"from agentdeck.runtime.settings import Settings, get_settings"],["typing",46,"from typing import TYPE_CHECKING, Any, Literal"],["agentdeck.errors",80,"from agentdeck.errors import AgentdeckError, ConfigError, NotFoundError, RunStateError, RunSuspendedError"],["builtins",88,"import builtins"],["agentdeck.serve",1107,"from agentdeck.serve import build_asgi_app"],["agents",92,"from agents.tool import FunctionTool"],["agentdeck.core.events",96,"from agentdeck.core.events import Event, Usage"],["agentdeck.core.content",95,"from agentdeck.core.content import Input"],["agents",91,"from agents.memory.session import Session"],["agentdeck.adapters.engines.openai_agents",49,"from agentdeck.adapters.engines.openai_agents import ExecutionStore, OpenAIAgentsEngine, SessionFactory"],["agentdeck.runtime.service",99,"from agentdeck.runtime.service import PendingRun, Runtime"],["agentdeck.authoring.interrupts",54,"from agentdeck.authoring.interrupts import interrupt_result"],["agentdeck.core.status",79,"from agentdeck.core.status import PRECONDITIONS, SUSPENDED_KINDS, Operation, RunStatus, Verdict"],["asyncio",38,"import asyncio"],["agentdeck.mcp",81,"from agentdeck.mcp import MCP"],["__future__",36,"from __future__ import annotations"],["contextlib",42,"from contextlib import aclosing, suppress"],["agentdeck.core.content",66,"from agentdeck.core.content import DataBlock, TextBlock, coerce_input"],["agentdeck.authoring.compile",52,"from agentdeck.authoring.compile import refresh_mcp_status"],["collections",89,"from collections.abc import AsyncGenerator, AsyncIterator, Generator, Mapping, Sequence"],["agentdeck.core.invocable",97,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.runtime.discovery",82,"from agentdeck.runtime.discovery import InvocableRegistry"],["pathlib",44,"from pathlib import Path"],["agentdeck.authoring.agent",51,"from agentdeck.authoring.agent import Agent"],["agentdeck.core.ports",78,"from agentdeck.core.ports import EventSinkPort"],["agentdeck.authoring.timers",56,"from agentdeck.authoring.timers import WAKE_AT_KEY, wake_at_of"],["agentdeck.core.ports",98,"from agentdeck.core.ports import EnginePort, EventStorePort"],["agentdeck.authoring.injection",53,"from agentdeck.authoring.injection import declared_context_type"],["agentdeck.runtime.registry",83,"from agentdeck.runtime.registry import PROJECT_DIR, PluginRegistry, mount_project_dir"],["agentdeck.composition",58,"from agentdeck.composition import ("],["agentdeck.authoring.skills",55,"from agentdeck.authoring.skills import skills_resolver"],["agentdeck.core.events",69,"from agentdeck.core.events import ("],["datetime",43,"from datetime import UTC, datetime"],["types",45,"from types import MappingProxyType"],["agentdeck.authoring.workflow",57,"from agentdeck.authoring.workflow import Workflow"],["agentdeck.core.context",67,"from agentdeck.core.context import RunContext"]],"agentdeck.adapters.stores.postgres":[["agentdeck.adapters.stores.postgres.store",3,"from agentdeck.adapters.stores.postgres.store import PostgresEventStore"]],"agentdeck.adapters.engines.openai_agents.translate":[["logging",15,"import logging"],["json",14,"import json"],["hashlib",13,"import hashlib"],["__future__",11,"from __future__ import annotations"],["typing",16,"from typing import Any"],["agentdeck.core.events",18,"from agentdeck.core.events import ("]],"agentdeck.surfaces.cli":[["__future__",3,"from __future__ import annotations"],["agentdeck.surfaces.cli.chat",5,"from agentdeck.surfaces.cli.chat import render, stream_chat"]],"agentdeck.adapters.engines.openai_agents.reconcile":[["agents",39,"from agents.memory.session import Session"],["agentdeck.core.events",42,"from agentdeck.core.events import Event"],["__future__",24,"from __future__ import annotations"],["logging",28,"import logging"],["agentdeck.core.content",41,"from agentdeck.core.content import Input"],["agentdeck.core.events",33,"from agentdeck.core.events import Custom, InputAppended, MessageCompleted, RunCancelled, RunStarted"],["json",27,"import json"],["weakref",30,"from weakref import WeakKeyDictionary"],["agentdeck.core.content",32,"from agentdeck.core.content import DataBlock, TextBlock"],["collections",36,"from collections.abc import Iterable, Sequence"],["agents",38,"from agents.items import TResponseInputItem"],["typing",29,"from typing import TYPE_CHECKING, Any, Literal"],["asyncio",26,"import asyncio"]],"agentdeck.adapters.tools.mcp.lifecycle":[["typing",21,"from typing import TYPE_CHECKING, Any"],["agents",29,"from agents.mcp import MCPServer"],["asyncio",19,"import asyncio"],["__future__",17,"from __future__ import annotations"],["agentdeck.errors",24,"from agentdeck.errors import ConfigError"],["agentdeck.adapters.tools.mcp.transport",23,"from agentdeck.adapters.tools.mcp.transport import MCPServerStreamableHttpResilient"],["collections",27,"from collections.abc import Sequence"],["logging",20,"import logging"]],"agentdeck.adapters.tools":[],"agentdeck.adapters":[],"agentdeck.adapters.leases.memory":[["agentdeck.adapters.leases.memory.port",3,"from agentdeck.adapters.leases.memory.port import MemoryLeasePort"]],"agentdeck.runtime.dispatch":[["asyncio",23,"import asyncio"],["logging",24,"import logging"],["__future__",21,"from __future__ import annotations"],["typing",26,"from typing import TYPE_CHECKING"],["time",25,"import time"],["agentdeck.core.events",31,"from agentdeck.core.events import Event"],["agentdeck.core.ports",32,"from agentdeck.core.ports import EventSinkPort"],["collections",29,"from collections.abc import Callable"]],"agentdeck.adapters.engines.langgraph":[["agentdeck.adapters.engines.langgraph.checkpointer",5,"from agentdeck.adapters.engines.langgraph.checkpointer import resolve_checkpointer"],["agentdeck.adapters.engines.langgraph.engine",6,"from agentdeck.adapters.engines.langgraph.engine import DURABLE_KEY, REPORTER_KEY, LangGraphEngine"],["__future__",3,"from __future__ import annotations"]],"agentdeck.adapters.control.sqlite":[["agentdeck.adapters.control.sqlite.port",3,"from agentdeck.adapters.control.sqlite.port import SqliteControlPort"]],"agentdeck.surfaces.serve.compat":[["collections",26,"from collections.abc import AsyncGenerator, AsyncIterator, Sequence"],["agentdeck.runtime.service",29,"from agentdeck.runtime.service import PendingRun"],["agentdeck.core.events",23,"from agentdeck.core.events import Custom, NodeUpdated, RunCompleted, RunInterrupted, TextDelta, UsageReported"],["agentdeck.core.content",22,"from agentdeck.core.content import DataBlock, TextBlock"],["__future__",16,"from __future__ import annotations"],["json",18,"import json"],["contextlib",19,"from contextlib import aclosing"],["typing",20,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.events",28,"from agentdeck.core.events import Event"]],"agentdeck.core.ports.engine":[["typing",10,"from typing import TYPE_CHECKING, Any, ClassVar"],["agentdeck.core.invocable",18,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.events",17,"from agentdeck.core.events import Event, KnownPayload"],["collections",13,"from collections.abc import AsyncGenerator, Sequence"],["agentdeck.core.content",15,"from agentdeck.core.content import Input"],["agentdeck.core.context",16,"from agentdeck.core.context import RunContext"],["abc",9,"from abc import ABC, abstractmethod"],["__future__",7,"from __future__ import annotations"]],"agentdeck.adapters.telemetry.langfuse.sink":[["agentdeck.core.ports",46,"from agentdeck.core.ports import EventSinkPort"],["agentdeck.core.events",31,"from agentdeck.core.events import ("],["re",26,"import re"],["dataclasses",27,"from dataclasses import dataclass, field"],["agentdeck.core.events",53,"from agentdeck.core.events import Event, Usage"],["logging",25,"import logging"],["agentdeck.core.content",52,"from agentdeck.core.content import Input"],["agentdeck.core.content",30,"from agentdeck.core.content import DataBlock, ImageBlock, ResourceBlock, TextBlock"],["__future__",21,"from __future__ import annotations"],["agentdeck.adapters.telemetry.langfuse.trace",51,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind, Tracer"],["typing",28,"from typing import TYPE_CHECKING, Any"],["collections",49,"from collections.abc import Mapping"],["asyncio",23,"import asyncio"],["json",24,"import json"]],"agentdeck.authoring.graphs":[["agentdeck.errors",33,"from agentdeck.errors import ConfigError"],["agentdeck.core.context",32,"from agentdeck.core.context import Context, RunContext"],["inspect",26,"import inspect"],["langgraph",29,"from langgraph.utils.runnable import RunnableCallable"],["langgraph",38,"from langgraph.graph.state import StateGraph"],["typing",27,"from typing import TYPE_CHECKING, Any"],["__future__",22,"from __future__ import annotations"],["agentdeck.authoring.injection",40,"from agentdeck.authoring.injection import CallableAnalysis"],["collections",36,"from collections.abc import Callable"],["asyncio",24,"import asyncio"],["agentdeck.authoring.injection",31,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"],["dataclasses",25,"import dataclasses"]],"agentdeck.core.ports.store":[["typing",11,"from typing import TYPE_CHECKING"],["agentdeck.core.context",19,"from agentdeck.core.context import RunContext"],["collections",16,"from collections.abc import Sequence"],["agentdeck.core.events",20,"from agentdeck.core.events import Event, KnownPayload, RunResumed, RunStarted"],["__future__",7,"from __future__ import annotations"],["abc",9,"from abc import ABC, abstractmethod"],["datetime",17,"from datetime import timedelta"],["dataclasses",10,"from dataclasses import dataclass"],["agentdeck.core.status",13,"from agentdeck.core.status import RunStatus, status_of"]],"agentdeck.adapters.telemetry":[],"agentdeck.authoring.compile":[["agentdeck.authoring.workflow",118,"from agentdeck.authoring.workflow import Workflow"],["agentdeck.adapters.tools.mcp.wiring",48,"from agentdeck.adapters.tools.mcp.wiring import mcp_status_banner, resolve_agent_mcp_status"],["agentdeck.authoring.workflow",62,"from agentdeck.authoring.workflow import Workflow"],["collections",56,"from collections.abc import Callable, Mapping, Sequence"],["agents",44,"from agents import ModelSettings"],["langgraph",59,"from langgraph.graph.state import CompiledStateGraph"],["agentdeck.runtime.settings",53,"from agentdeck.runtime.settings import get_settings, parse_backend_url"],["agentdeck.authoring.instructions",50,"from agentdeck.authoring.instructions import compile_instructions"],["__future__",39,"from __future__ import annotations"],["agentdeck.authoring.agent",172,"from agentdeck.authoring.agent import Agent as AuthoringAgent"],["agentdeck.authoring.agent",61,"from agentdeck.authoring.agent import Agent"],["agents",43,"from agents import Agent as SDKAgent"],["agentdeck.errors",52,"from agentdeck.errors import ConfigError, NotFoundError"],["agentdeck.adapters.engines.langgraph.checkpointer",47,"from agentdeck.adapters.engines.langgraph.checkpointer import resolve_checkpointer"],["agentdeck.authoring.hooks",49,"from agentdeck.authoring.hooks import compile_hooks"],["agents",45,"from agents import Tool as SDKTool"],["typing",41,"from typing import TYPE_CHECKING, Any, get_args, get_origin"],["agentdeck.authoring.tools",51,"from agentdeck.authoring.tools import compile_tool"],["agents",58,"from agents.tool import FunctionTool"]],"agentdeck.testing":[["json",17,"import json"],["typing",21,"from typing import TYPE_CHECKING, Any"],["openai",36,"from openai.types.responses.response_usage import InputTokensDetails, OutputTokensDetails"],["threading",18,"import threading"],["agents",26,"from agents.usage import Usage"],["__future__",14,"from __future__ import annotations"],["collections",39,"from collections.abc import AsyncIterator, Callable, Iterator, Sequence"],["http",20,"from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer"],["agents",24,"from agents.items import ModelResponse"],["unittest",22,"from unittest.mock import patch"],["agents",25,"from agents.models.interface import Model"],["asyncio",16,"import asyncio"],["contextlib",19,"from contextlib import contextmanager"],["openai",27,"from openai.types.responses import ("]],"agentdeck.authoring.skills":[["agentdeck.skills",20,"from agentdeck.skills import Skills"],["agents",13,"from agents import function_tool"],["collections",16,"from collections.abc import Callable, Sequence"],["typing",11,"from typing import TYPE_CHECKING"],["__future__",9,"from __future__ import annotations"],["agents",18,"from agents.tool import FunctionTool"]],"agentdeck.adapters.tools.mcp":[["__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.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"]],"agentdeck.runtime.settings":[["pydantic_settings",30,"from pydantic_settings.sources import YamlConfigSettingsSource"],["dotenv",27,"from dotenv import load_dotenv"],["logging",19,"import logging"],["datetime",22,"from datetime import timedelta"],["pathlib",24,"from pathlib import Path"],["importlib",34,"from importlib.resources.abc import Traversable"],["collections",21,"from collections.abc import Mapping"],["functools",23,"from functools import lru_cache"],["os",20,"import os"],["__future__",17,"from __future__ import annotations"],["typing",25,"from typing import TYPE_CHECKING, Any, ClassVar, Self"],["collections",33,"from collections.abc import Callable"],["pydantic",28,"from pydantic import BaseModel, ConfigDict, Field, field_validator"],["pydantic_settings",29,"from pydantic_settings import BaseSettings, SettingsConfigDict"]],"agentdeck.runtime.registry":[["importlib",6,"import importlib.util"],["__future__",3,"from __future__ import annotations"],["importlib",5,"import importlib"],["sys",7,"import sys"],["dataclasses",9,"from dataclasses import dataclass, field"],["importlib",10,"from importlib.machinery import ModuleSpec"],["pathlib",11,"from pathlib import Path"],["types",8,"import types"],["agentdeck.errors",14,"from agentdeck.errors import ConfigError, NotFoundError"],["typing",12,"from typing import Generic, TypeVar"]],"agentdeck.core.control":[["typing",18,"from typing import TYPE_CHECKING, ClassVar"],["agentdeck.core.events",26,"from agentdeck.core.events import ControlVerb, KnownPayload, SafePoint"],["agentdeck.core.events",20,"from agentdeck.core.events import ControlObserved, ControlRequested, RunCancelled, RunPaused"],["agentdeck.core.ports.control",27,"from agentdeck.core.ports.control import ControlPort"],["dataclasses",16,"from dataclasses import dataclass"],["agentdeck.core.status",21,"from agentdeck.core.status import Action, RunStatus, decide"],["enum",17,"from enum import StrEnum"],["collections",24,"from collections.abc import Callable, Mapping"],["__future__",13,"from __future__ import annotations"],["time",15,"import time"]],"agentdeck.runtime":[],"agentdeck.surfaces.serve.workflows":[["__future__",10,"from __future__ import annotations"],["agentdeck.runtime.service",21,"from agentdeck.runtime.service import Runtime"],["typing",12,"from typing import TYPE_CHECKING, Any"],["pydantic",16,"from pydantic import BaseModel"],["collections",19,"from collections.abc import AsyncIterator"],["fastapi",15,"from fastapi.responses import StreamingResponse"],["fastapi",14,"from fastapi import FastAPI"]],"agentdeck.surfaces":[],"agentdeck.cli":[["agentdeck.adapters.control.sqlite",22,"from agentdeck.adapters.control.sqlite import SqliteControlPort"],["agentdeck.core.control",23,"from agentdeck.core.control import Signal"],["__future__",17,"from __future__ import annotations"],["asyncio",20,"import asyncio"],["argparse",19,"import argparse"]],"agentdeck.adapters.control":[],"agentdeck.authoring.nodes":[["collections",13,"from collections.abc import Callable, Mapping"],["pathlib",14,"from pathlib import Path"],["agentdeck.authoring.compile",21,"from agentdeck.authoring.compile import compile_agent"],["agentdeck.authoring.agent",20,"from agentdeck.authoring.agent import Agent"],["agentdeck.adapters.engines.langgraph.engine",19,"from agentdeck.adapters.engines.langgraph.engine import STREAM_CONFIGURABLE_KEY"],["langgraph",17,"from langgraph.config import get_config, get_stream_writer"],["typing",15,"from typing import Any"],["__future__",10,"from __future__ import annotations"],["logging",12,"import logging"],["agentdeck.authoring.runners.agent",22,"from agentdeck.authoring.runners.agent import HeadlessRunner, StreamDone"]],"agentdeck.core.invocable":[["typing",10,"from typing import Any"],["agentdeck.core.base",14,"from agentdeck.core.base import CoreModel"],["enum",9,"from enum import StrEnum"],["pydantic",12,"from pydantic import ConfigDict, Field"],["__future__",7,"from __future__ import annotations"]],"agentdeck":[["agentdeck.errors",16,"from agentdeck.errors import ("],["agentdeck.authoring",13,"from agentdeck.authoring import Agent, Workflow"],["importlib",10,"from importlib.metadata import PackageNotFoundError"],["agentdeck.deck",15,"from agentdeck.deck import Deck, Run, TurnResult"],["agentdeck.core.context",14,"from agentdeck.core.context import Context"],["importlib",11,"from importlib.metadata import version as _version"]],"agentdeck.authoring.agent":[["agents",18,"from agents.lifecycle import AgentHooks"],["typing",12,"from typing import TYPE_CHECKING, Any, ClassVar"],["__future__",10,"from __future__ import annotations"],["agentdeck.authoring.runners.agent",158,"from agentdeck.authoring.runners.agent import HeadlessRunner"],["collections",15,"from collections.abc import Callable, Mapping, Sequence"],["agents",17,"from agents.agent_output import AgentOutputSchemaBase"],["agentdeck.authoring.compile",152,"from agentdeck.authoring.compile import compile_agent"]],"agentdeck.adapters.engines.openai_agents.engine":[["agents",43,"from agents import Agent, Runner"],["dataclasses",36,"import dataclasses"],["agentdeck.core.context",65,"from agentdeck.core.context import RunContext"],["agentdeck.core.events",66,"from agentdeck.core.events import Event, KnownPayload"],["dataclasses",40,"from dataclasses import dataclass"],["collections",57,"from collections.abc import AsyncGenerator, AsyncIterator, Sequence"],["json",37,"import json"],["agentdeck.adapters.engines.openai_agents.sessions",48,"from agentdeck.adapters.engines.openai_agents.sessions import ExecutionStore"],["contextlib",39,"from contextlib import AbstractAsyncContextManager, aclosing, asynccontextmanager, nullcontext"],["pydantic",44,"from pydantic import BaseModel"],["__future__",34,"from __future__ import annotations"],["collections",38,"from collections.abc import Callable"],["agents",62,"from agents.usage import Usage as SDKUsage"],["agentdeck.adapters.engines.openai_agents.runconfig",47,"from agentdeck.adapters.engines.openai_agents.runconfig import RunSettings, build_run_config"],["agentdeck.core.invocable",67,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.control",51,"from agentdeck.core.control import ControlSignalled"],["agentdeck.core.ports",53,"from agentdeck.core.ports import EnginePort"],["typing",41,"from typing import TYPE_CHECKING, Any, ClassVar, cast"],["agents",59,"from agents.items import TResponseInputItem"],["agentdeck.core.content",50,"from agentdeck.core.content import AudioBlock, DataBlock, ImageBlock, ResourceBlock, TextBlock, coerce_input"],["agentdeck.core.events",52,"from agentdeck.core.events import RunCompleted, Usage, UsageReported"],["agentdeck.adapters.engines.openai_agents.reconcile",46,"from agentdeck.adapters.engines.openai_agents.reconcile import reconcile, render_data_block"],["agentdeck.errors",54,"from agentdeck.errors import ConfigError"],["agents",60,"from agents.memory.session import Session"],["agentdeck.adapters.engines.openai_agents.translate",49,"from agentdeck.adapters.engines.openai_agents.translate import translate"],["agentdeck.core.content",64,"from agentdeck.core.content import ContentBlock, Input"],["agents",61,"from agents.result import RunResultStreaming"]],"agentdeck.adapters.stores.redis":[["agentdeck.adapters.stores.redis.store",3,"from agentdeck.adapters.stores.redis.store import RedisEventStore"]],"agentdeck.adapters.tools.mcp.source":[["agentdeck.core.ports.tools",14,"from agentdeck.core.ports.tools import ToolSet, ToolSourcePort"],["agentdeck.adapters.tools.mcp.wiring",13,"from agentdeck.adapters.tools.mcp.wiring import mcp_status_banner, resolve_agent_mcp_status"],["typing",11,"from typing import TYPE_CHECKING"],["agentdeck.core.invocable",17,"from agentdeck.core.invocable import InvocableSpec"],["__future__",9,"from __future__ import annotations"]],"agentdeck.adapters.engines.stub":[["agentdeck.adapters.engines.stub.engine",3,"from agentdeck.adapters.engines.stub.engine import Step, StubEngine, stub_spec"]],"agentdeck.authoring.hooks":[["inspect",21,"import inspect"],["agents",24,"from agents.lifecycle import AgentHooks"],["agentdeck.errors",28,"from agentdeck.errors import ConfigError"],["__future__",19,"from __future__ import annotations"],["collections",31,"from collections.abc import Callable"],["typing",22,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.context",27,"from agentdeck.core.context import Context, RunContext"],["agentdeck.authoring.injection",26,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"]],"agentdeck.authoring.workflow":[["re",14,"import re"],["__future__",11,"from __future__ import annotations"],["agentdeck.authoring.interrupts",140,"from agentdeck.authoring.interrupts import as_interrupt"],["agentdeck.errors",19,"from agentdeck.errors import DOCS_URL, ConfigError"],["agentdeck.authoring.interrupts",130,"from agentdeck.authoring.interrupts import INTERRUPT_KEY"],["agents",216,"from agents.tool import FunctionTool"],["langgraph",195,"from langgraph.graph import END, START"],["json",13,"import json"],["typing",15,"from typing import TYPE_CHECKING, Any, ClassVar"],["agentdeck.authoring.compile",172,"from agentdeck.authoring.compile import compile_workflow"],["collections",22,"from collections.abc import AsyncIterator, Callable, Iterable, Sequence"],["pydantic",17,"from pydantic import BaseModel"],["agentdeck.authoring.interrupts",173,"from agentdeck.authoring.interrupts import interrupt_result"],["agents",24,"from agents.tool import FunctionTool"],["langgraph",25,"from langgraph.graph import StateGraph"],["agentdeck.authoring.runners.workflow",108,"from agentdeck.authoring.runners.workflow import DevWorkflowRunner"],["langgraph",164,"from langgraph.types import Command"],["agentdeck.authoring.state",218,"from agentdeck.authoring.state import dump_state"],["agentdeck.authoring.compile",103,"from agentdeck.authoring.compile import compile_workflow"],["agentdeck.authoring.interrupts",27,"from agentdeck.authoring.interrupts import InterruptResult"]],"agentdeck.mcp":[["pydantic",16,"from pydantic import BaseModel, ConfigDict, Field"],["pathlib",13,"from pathlib import Path"],["json",12,"import json"],["typing",14,"from typing import Any"],["agentdeck.errors",18,"from agentdeck.errors import ConfigError"],["__future__",10,"from __future__ import annotations"]],"agentdeck.core.ports.lease":[["typing",17,"from typing import TYPE_CHECKING"],["abc",16,"from abc import ABC, abstractmethod"],["collections",20,"from collections.abc import Collection"],["__future__",14,"from __future__ import annotations"],["datetime",21,"from datetime import timedelta"]],"agentdeck.adapters.telemetry.langfuse":[["agentdeck.adapters.telemetry.langfuse.sink",4,"from agentdeck.adapters.telemetry.langfuse.sink import MAX_OPEN_CALLS, MAX_OPEN_RUNS, LangfuseSink"],["agentdeck.adapters.telemetry.langfuse.trace",5,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind, Tracer"],["agentdeck.adapters.telemetry.langfuse.client",3,"from agentdeck.adapters.telemetry.langfuse.client import LangfuseTracer, build_client, langfuse_sink"]],"agentdeck.adapters.engines.openai_agents.sessions":[["redis",27,"from redis.asyncio import Redis"],["agents",23,"from agents import SQLiteSession"],["agentdeck.runtime.settings",30,"from agentdeck.runtime.settings import SessionSettings"],["redis",53,"from redis.asyncio import Redis"],["typing",21,"from typing import TYPE_CHECKING"],["agentdeck.core.context",29,"from agentdeck.core.context import RunContext"],["agents",68,"from agents.extensions.memory import RedisSession"],["__future__",19,"from __future__ import annotations"],["agents",26,"from agents.memory.session import Session"]],"agentdeck.runtime.capture":[["pydantic",16,"from pydantic import BaseModel"],["__future__",12,"from __future__ import annotations"],["enum",14,"from enum import StrEnum"]],"agentdeck.adapters.engines.langgraph.checkpointer":[["threading",24,"import threading"],["langgraph",35,"from langgraph.checkpoint.base import BaseCheckpointSaver"],["asyncio",22,"import asyncio"],["sqlite3",23,"import sqlite3"],["weakref",27,"from weakref import WeakKeyDictionary"],["psycopg",191,"import psycopg # ty: ignore[unresolved-import] - [durability] extra"],["functools",25,"from functools import cache, partial"],["__future__",20,"from __future__ import annotations"],["langgraph",153,"from langgraph.checkpoint.sqlite import aio as sqlite_aio"],["langgraph",139,"from langgraph.checkpoint.memory import MemorySaver"],["collections",33,"from collections.abc import Callable, Coroutine, MutableMapping"],["langgraph",184,"from langgraph.checkpoint.postgres.aio import ( # ty: ignore[unresolved-import] - [durability] extra"],["aiosqlite",152,"import aiosqlite"],["agentdeck.errors",29,"from agentdeck.errors import DOCS_URL, StoreError"],["asyncio",32,"from asyncio import AbstractEventLoop"],["typing",26,"from typing import TYPE_CHECKING, Any, TypeVar"]],"agentdeck.adapters.stores.redis.store":[["redis",36,"from redis.asyncio import Redis"],["redis",48,"from redis.asyncio.client import Pipeline"],["agentdeck.errors",42,"from agentdeck.errors import DuplicateKeyError, StoreError"],["__future__",29,"from __future__ import annotations"],["collections",45,"from collections.abc import Awaitable, Callable, Iterable, Sequence"],["urllib",34,"from urllib.parse import quote, unquote"],["datetime",46,"from datetime import timedelta"],["json",31,"import json"],["typing",33,"from typing import TYPE_CHECKING, cast"],["agentdeck.core.events",51,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["agentdeck.core.status",41,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["redis",37,"from redis.exceptions import RedisError, WatchError"],["agentdeck.core.ports",40,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["agentdeck.core.context",50,"from agentdeck.core.context import RunContext"],["agentdeck.core.events",39,"from agentdeck.core.events import Event"],["agentdeck.core.status",52,"from agentdeck.core.status import RunStatus"],["datetime",32,"from datetime import UTC, datetime"]],"agentdeck.adapters.control.memory":[["agentdeck.adapters.control.memory.port",3,"from agentdeck.adapters.control.memory.port import MemoryControlPort"]],"agentdeck.core.ports.control":[["abc",16,"from abc import ABC, abstractmethod"],["typing",17,"from typing import TYPE_CHECKING"],["agentdeck.core.control",20,"from agentdeck.core.control import ControlSignal, Signal"],["__future__",14,"from __future__ import annotations"]],"agentdeck.skills":[["collections",19,"from collections.abc import Sequence"],["agentdeck.skills.bundle",16,"from agentdeck.skills.bundle import SKILL_MD_FILENAME, SkillBundle"],["typing",13,"from typing import TYPE_CHECKING"],["pathlib",12,"from pathlib import Path"],["__future__",10,"from __future__ import annotations"],["agentdeck.errors",15,"from agentdeck.errors import DOCS_URL, ConfigError, NotFoundError"]],"agentdeck.core":[["agentdeck.core.invocable",55,"from agentdeck.core.invocable import InvocableKind, InvocableSpec"],["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.content",7,"from agentdeck.core.content import ("],["agentdeck.core.events",21,"from agentdeck.core.events import ("]],"agentdeck.authoring.runners.workflow":[["agentdeck.adapters.engines.langgraph.engine",20,"from agentdeck.adapters.engines.langgraph.engine import STREAM_CONFIGURABLE_KEY"],["agentdeck.authoring.compile",21,"from agentdeck.authoring.compile import compile_workflow"],["langchain_core",18,"from langchain_core.runnables import RunnableConfig"],["agentdeck.authoring.workflow",29,"from agentdeck.authoring.workflow import Workflow"],["dataclasses",15,"from dataclasses import dataclass, field"],["__future__",13,"from __future__ import annotations"],["typing",16,"from typing import TYPE_CHECKING, Any, Self, cast"],["langgraph",27,"from langgraph.graph.state import CompiledStateGraph"],["collections",25,"from collections.abc import AsyncIterator"],["agentdeck.authoring.state",22,"from agentdeck.authoring.state import coerce_input"]],"agentdeck.surfaces.cli.chat":[["json",12,"import json"],["agentdeck.core.content",15,"from agentdeck.core.content import TextBlock"],["httpx",34,"import httpx"],["collections",32,"from collections.abc import AsyncIterator"],["agentdeck.core.events",16,"from agentdeck.core.events import ("],["typing",13,"from typing import TYPE_CHECKING"],["__future__",10,"from __future__ import annotations"]],"agentdeck.adapters.engines.openai_agents.runconfig":[["os",21,"import os"],["agents",26,"from agents import ModelSettings, MultiProvider, OpenAIProvider, RunConfig, default_handoff_history_mapper"],["agents",31,"from agents.items import TResponseInputItem"],["agents",30,"from agents.handoffs import HandoffHistoryMapper"],["httpx",25,"import httpx"],["__future__",19,"from __future__ import annotations"],["typing",23,"from typing import TYPE_CHECKING, Any, cast"],["dataclasses",22,"from dataclasses import dataclass"],["openai",27,"from openai import AsyncOpenAI"]],"agentdeck.authoring.tools":[["agents",26,"from agents import RunContextWrapper, default_tool_error_function, function_tool"],["typing",24,"from typing import TYPE_CHECKING, Any"],["agentdeck.authoring.injection",37,"from agentdeck.authoring.injection import CallableAnalysis"],["asyncio",22,"import asyncio"],["agentdeck.authoring.injection",28,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"],["agents",35,"from agents.tool import FunctionTool"],["agentdeck.core.context",29,"from agentdeck.core.context import Context, RunContext"],["collections",33,"from collections.abc import Callable"],["inspect",23,"import inspect"],["agentdeck.errors",30,"from agentdeck.errors import ConfigError"],["__future__",20,"from __future__ import annotations"]],"agentdeck.authoring.web_search":[["httpx",12,"import httpx"],["agentdeck.runtime.settings",15,"from agentdeck.runtime.settings import get_settings"],["__future__",10,"from __future__ import annotations"],["agents",13,"from agents import function_tool"]],"agentdeck.skills.bundle":[["pathlib",7,"from pathlib import Path"],["__future__",3,"from __future__ import annotations"],["agentdeck.errors",12,"from agentdeck.errors import ConfigError"],["re",5,"import re"],["dataclasses",6,"from dataclasses import dataclass, field"],["typing",8,"from typing import Any"],["yaml",10,"import yaml"]],"agentdeck.adapters.control.sqlite.port":[["agentdeck.core.control",15,"from agentdeck.core.control import ControlSignal, Signal"],["typing",13,"from typing import TYPE_CHECKING"],["functools",12,"from functools import partial"],["pathlib",21,"from pathlib import Path"],["agentdeck.errors",17,"from agentdeck.errors import StoreError"],["contextlib",11,"from contextlib import suppress"],["collections",20,"from collections.abc import Callable"],["__future__",7,"from __future__ import annotations"],["sqlite3",10,"import sqlite3"],["agentdeck.core.ports.control",16,"from agentdeck.core.ports.control import ControlPort"],["asyncio",9,"import asyncio"]]}
@@ -8,6 +8,56 @@ Fixed / Security` order - and are written to be attached to a release as-is.
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [4.0.4] - 2026-08-19
12
+
13
+ ### Added
14
+
15
+ - **`examples/jack` bounds its conversation memory.** A session re-sends its whole history every
16
+ turn, and tool results here are documentation pages, one of which is 30 KB. Fifteen turns
17
+ reached a 320 KB request and the endpoint then rejected every later turn in that session
18
+ permanently. `jack.session.BoundedSessions` is a `Deck(session_factory=...)` that keeps only the
19
+ most recent whole exchanges, cutting at user-message boundaries so a tool call is never
20
+ separated from its result.
21
+ - **`examples/jack` can trace itself.** Setting `AGENTDECK_LANGFUSE_PUBLIC_KEY` attaches the
22
+ packaged `Langfuse` observer, and setting `AGENTDECK_EVENTS` to a `sqlite://` URL makes the run
23
+ log durable. Both are off by default, so a clone still runs with no backend. Both store what
24
+ callers typed; the example's README says what that means for a public endpoint.
25
+
26
+ ### Fixed
27
+
28
+ - **Three documentation pages stated things the code does not do.** `runs-and-control/lifecycle-and-control`
29
+ listed a `QUEUED` state and uppercase names; the six real values are `running`, `paused`,
30
+ `waiting_answer`, `completed`, `failed` and `cancelled`. `reference/events` listed
31
+ `message.delta`, `tool.call` and `tool.result`, none of which exist, and omitted 14 kinds that
32
+ do; it now covers all 21 with their payloads. The Quickstart printed an invented transcript,
33
+ read `run.status` as a property when it is a coroutine, and iterated `run.events()` without
34
+ `follow=True`, which returns only what the log already holds.
35
+
36
+ ## [4.0.3] - 2026-08-19
37
+
38
+ ### Added
39
+
40
+ - **Documentation pages that are finished can ask for their next piece.** A `Contribute`
41
+ component marks one specific, scoped improvement at the end of a page and links the issue that
42
+ specifies it. It appears only on pages whose authoritative part is already written, so it
43
+ invites an addition rather than standing in for missing documentation. Live on
44
+ [How Jack is built](https://agentdecksdk.com/jack),
45
+ [Quickstart](https://agentdecksdk.com/meet-agentdeck/quickstart),
46
+ [Known Issues](https://agentdecksdk.com/resources/known-issues) and
47
+ [Implementation notes](https://agentdecksdk.com/jack/notes).
48
+
49
+ ### Changed
50
+
51
+ - **The README follows the landing page again.** Jack is built with the three tools he actually
52
+ has, the division of labour lists the six concerns AgentDeck owns rather than four, and his
53
+ section links [How Jack is built](https://agentdecksdk.com/jack) and
54
+ [Implementation notes](https://agentdecksdk.com/jack/notes) ahead of the source directory.
55
+
56
+ ### Fixed
57
+
58
+ - **The landing page's release chip said 4.0.1 on a 4.0.2 site.** It now tracks the release it
59
+ ships in.
60
+
11
61
  ## [4.0.2] - 2026-08-19
12
62
 
13
63
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentdeck-sdk
3
- Version: 4.0.2
3
+ Version: 4.0.4
4
4
  Summary: Declarative harness over the OpenAI Agents SDK and LangGraph: settings, capabilities, skills, runners, graph compilation, plug-in discovery.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -109,10 +109,14 @@ def read_doc(slug: str, docs: Context[DocsCorpus]) -> str:
109
109
  """Read one AgentDeck documentation page in full, by its slug."""
110
110
  return docs.data.pages[slug]
111
111
 
112
+ def read_changelog(subject: str, docs: Context[DocsCorpus]) -> str:
113
+ """Read AgentDeck's release history, by version or by topic."""
114
+ return docs.data.changelog(subject)
115
+
112
116
  jack = Agent(
113
117
  name="Jack",
114
118
  instructions="Help developers build with AgentDeck.",
115
- tools=[search_docs, read_doc],
119
+ tools=[search_docs, read_doc, read_changelog],
116
120
  )
117
121
 
118
122
  deck = Deck(agents=[jack], context=DocsCorpus)
@@ -159,13 +163,16 @@ thing either reads.
159
163
  The panel on **[agentdecksdk.com](https://agentdecksdk.com/)** is that agent. Ask it something
160
164
  about AgentDeck and it searches these docs, reads the pages it finds, and cites them.
161
165
 
162
- Its whole source is [`examples/jack`](examples/jack/): three tools over one
163
- `Context[DocsCorpus]`, streaming the run's own canonical events to the browser over SSE with no
164
- translation layer on either side. Not a demo written to look good in a README. It is the thing
165
- serving the site, including the parts a public endpoint needs and a demo skips: an origin check,
166
- a per-day quota, a token ceiling, and an allowlist deciding which event kinds a browser may see.
166
+ He is three tools over one `Context[DocsCorpus]`, streaming the run's own canonical events to
167
+ the browser over SSE with no translation layer on either side, and he is the thing serving the
168
+ site: an origin check, a per-day quota, a token ceiling, and an allowlist deciding which event
169
+ kinds a browser may see are all parts a public endpoint needs and a demo skips.
170
+
171
+ **[How Jack is built](https://agentdecksdk.com/jack)** walks the whole application, and
172
+ **[Implementation notes](https://agentdecksdk.com/jack/notes)** records each decision and the
173
+ alternative it beat. The source is [`examples/jack`](examples/jack/).
167
174
 
168
- It is also the honest test of the pitch. If *"agents you have to operate"* meant anything, it
175
+ He is also the honest test of the pitch. If *"agents you have to operate"* meant anything, it
169
176
  had to survive being operated.
170
177
 
171
178
  ## Where your definitions live
@@ -189,17 +196,26 @@ async with Deck.from_project() as deck: # discovers ./.agentdeck, fails fast
189
196
  unknown MCP name or a workflow that cannot compile fails at `build()`, not in production.
190
197
 
191
198
  Runnable projects are in [`examples/`](examples/): a chat agent with a tool, a workflow that
192
- pauses for human approval, an existing LangGraph agent wrapped without rewriting it, and Jack.
193
- All are built by the test suite, so none can quietly stop working.
199
+ pauses for human approval, an existing LangGraph agent wrapped without rewriting it, and
200
+ [Jack](https://agentdecksdk.com/jack). All are built by the test suite, so none can quietly stop
201
+ working.
194
202
 
195
203
  ## You build the behavior. AgentDeck manages the machinery.
196
204
 
197
- | You | AgentDeck |
205
+ Your code stays about the behavior and the structure of your application. Everything a run
206
+ needs around it already has a place, and they were designed to work together: less machinery to
207
+ build today, and nothing to retrofit when you need the next one.
208
+
209
+ | You own | AgentDeck owns |
198
210
  | --- | --- |
199
- | application logic | execution |
200
- | agents, tools, workflows | sessions, streaming, one event log per run |
201
- | business state | pause, resume, cancel at documented safe points |
202
- | integrations | durable human approval that outlives the process |
211
+ | agents, tools, workflows | **Events.** One ordered stream of what happened. |
212
+ | what progress means | **Reporting.** Progress and status, sent from inside the work. |
213
+ | when work should stop | **Control.** Execution paused, resumed or cancelled at safe points. |
214
+ | when a person decides | **Interaction.** Branches that wait for external input. |
215
+ | business state | **State.** Sessions that outlive a single call. |
216
+ | your UI and integrations | **Surfaces.** Observers, HTTP and your UI read the same run. |
217
+
218
+ The complexity is still there. It just lives in the layer built for it.
203
219
 
204
220
  **AgentDeck owns configuration; the
205
221
  [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) and
@@ -60,10 +60,14 @@ def read_doc(slug: str, docs: Context[DocsCorpus]) -> str:
60
60
  """Read one AgentDeck documentation page in full, by its slug."""
61
61
  return docs.data.pages[slug]
62
62
 
63
+ def read_changelog(subject: str, docs: Context[DocsCorpus]) -> str:
64
+ """Read AgentDeck's release history, by version or by topic."""
65
+ return docs.data.changelog(subject)
66
+
63
67
  jack = Agent(
64
68
  name="Jack",
65
69
  instructions="Help developers build with AgentDeck.",
66
- tools=[search_docs, read_doc],
70
+ tools=[search_docs, read_doc, read_changelog],
67
71
  )
68
72
 
69
73
  deck = Deck(agents=[jack], context=DocsCorpus)
@@ -110,13 +114,16 @@ thing either reads.
110
114
  The panel on **[agentdecksdk.com](https://agentdecksdk.com/)** is that agent. Ask it something
111
115
  about AgentDeck and it searches these docs, reads the pages it finds, and cites them.
112
116
 
113
- Its whole source is [`examples/jack`](examples/jack/): three tools over one
114
- `Context[DocsCorpus]`, streaming the run's own canonical events to the browser over SSE with no
115
- translation layer on either side. Not a demo written to look good in a README. It is the thing
116
- serving the site, including the parts a public endpoint needs and a demo skips: an origin check,
117
- a per-day quota, a token ceiling, and an allowlist deciding which event kinds a browser may see.
117
+ He is three tools over one `Context[DocsCorpus]`, streaming the run's own canonical events to
118
+ the browser over SSE with no translation layer on either side, and he is the thing serving the
119
+ site: an origin check, a per-day quota, a token ceiling, and an allowlist deciding which event
120
+ kinds a browser may see are all parts a public endpoint needs and a demo skips.
121
+
122
+ **[How Jack is built](https://agentdecksdk.com/jack)** walks the whole application, and
123
+ **[Implementation notes](https://agentdecksdk.com/jack/notes)** records each decision and the
124
+ alternative it beat. The source is [`examples/jack`](examples/jack/).
118
125
 
119
- It is also the honest test of the pitch. If *"agents you have to operate"* meant anything, it
126
+ He is also the honest test of the pitch. If *"agents you have to operate"* meant anything, it
120
127
  had to survive being operated.
121
128
 
122
129
  ## Where your definitions live
@@ -140,17 +147,26 @@ async with Deck.from_project() as deck: # discovers ./.agentdeck, fails fast
140
147
  unknown MCP name or a workflow that cannot compile fails at `build()`, not in production.
141
148
 
142
149
  Runnable projects are in [`examples/`](examples/): a chat agent with a tool, a workflow that
143
- pauses for human approval, an existing LangGraph agent wrapped without rewriting it, and Jack.
144
- All are built by the test suite, so none can quietly stop working.
150
+ pauses for human approval, an existing LangGraph agent wrapped without rewriting it, and
151
+ [Jack](https://agentdecksdk.com/jack). All are built by the test suite, so none can quietly stop
152
+ working.
145
153
 
146
154
  ## You build the behavior. AgentDeck manages the machinery.
147
155
 
148
- | You | AgentDeck |
156
+ Your code stays about the behavior and the structure of your application. Everything a run
157
+ needs around it already has a place, and they were designed to work together: less machinery to
158
+ build today, and nothing to retrofit when you need the next one.
159
+
160
+ | You own | AgentDeck owns |
149
161
  | --- | --- |
150
- | application logic | execution |
151
- | agents, tools, workflows | sessions, streaming, one event log per run |
152
- | business state | pause, resume, cancel at documented safe points |
153
- | integrations | durable human approval that outlives the process |
162
+ | agents, tools, workflows | **Events.** One ordered stream of what happened. |
163
+ | what progress means | **Reporting.** Progress and status, sent from inside the work. |
164
+ | when work should stop | **Control.** Execution paused, resumed or cancelled at safe points. |
165
+ | when a person decides | **Interaction.** Branches that wait for external input. |
166
+ | business state | **State.** Sessions that outlive a single call. |
167
+ | your UI and integrations | **Surfaces.** Observers, HTTP and your UI read the same run. |
168
+
169
+ The complexity is still there. It just lives in the layer built for it.
154
170
 
155
171
  **AgentDeck owns configuration; the
156
172
  [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) and