agentdeck-sdk 5.1.0__tar.gz → 5.2.1__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.
- agentdeck_sdk-5.2.1/.agents/skills/release/SKILL.md +61 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/agents/deck-dev.md +3 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/agents/deck-reviewer.md +3 -1
- agentdeck_sdk-5.2.1/.claude/skills/release/SKILL.md +61 -0
- agentdeck_sdk-5.2.1/.codex/agents/deck-dev.toml +5 -0
- agentdeck_sdk-5.2.1/.codex/agents/deck-reviewer.toml +5 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/PULL_REQUEST_TEMPLATE.md +2 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/workflows/ci.yml +4 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/workflows/docs-impact.yml +3 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/workflows/issue-hygiene.yml +6 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.gitignore +3 -0
- agentdeck_sdk-5.2.1/.import_linter_cache/agentdeck.meta.json +1 -0
- agentdeck_sdk-5.2.1/.import_linter_cache/cc0de4ae2e5697bf7cf3a0b9c3aff14b2ece24cd.data.json +1 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/CHANGELOG.md +26 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/Makefile +3 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/PKG-INFO +1 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/native/executor.py +1 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/native.py +1 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/tools.py +2 -2
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/context.py +7 -10
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/reporting.py +21 -63
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/workers.py +2 -4
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/context7.json +1 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/coding-agents.md +3 -0
- agentdeck_sdk-5.2.1/docs-site/app/generated-version.ts +2 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/landing-components.tsx +2 -3
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/layout.tsx +2 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/_meta.ts +1 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/build-your-deck/context.mdx +25 -4
- agentdeck_sdk-5.2.1/docs-site/content/operate/_meta.ts +3 -0
- agentdeck_sdk-5.2.1/docs-site/content/operate/deployment.mdx +131 -0
- agentdeck_sdk-5.2.1/docs-site/content/resources/changelog.mdx +56 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/resources/known-issues.mdx +11 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/llms-full.txt +169 -67
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/llms.txt +1 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/README.md +3 -3
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/pyproject.toml +1 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/generate_docs_reference.py +14 -0
- agentdeck_sdk-5.2.1/scripts/release_bump.py +208 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/context_subjects.py +1 -1
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_reporting.py +47 -44
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_generated_reference.py +14 -6
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_governance_workflows.py +16 -0
- agentdeck_sdk-5.2.1/tests/test_release_bump.py +183 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_run_reporting.py +8 -11
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_runtime_service.py +6 -6
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/uv.lock +1 -1
- agentdeck_sdk-5.1.0/.agents/skills/release/SKILL.md +0 -24
- agentdeck_sdk-5.1.0/.claude/skills/release/SKILL.md +0 -24
- agentdeck_sdk-5.1.0/.codex/agents/deck-dev.toml +0 -5
- agentdeck_sdk-5.1.0/.codex/agents/deck-reviewer.toml +0 -5
- agentdeck_sdk-5.1.0/.import_linter_cache/agentdeck.meta.json +0 -1
- agentdeck_sdk-5.1.0/.import_linter_cache/cc0de4ae2e5697bf7cf3a0b9c3aff14b2ece24cd.data.json +0 -1
- agentdeck_sdk-5.1.0/docs-site/content/resources/changelog.mdx +0 -112
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.agentdeck/agents/greeter/agent.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.agents/skills/deck-cleanup/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.agents/skills/deck-cleanup/agents/openai.yaml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.agents/skills/deck-cleanup/references/narrative-prose.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.agents/skills/open-issue/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.agents/skills/ship-issue/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/agents/deck-cleanup.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/agents/docs-reviewer.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/agents/docs-writer.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/settings.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/milestone-retro/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/milestone-retro/references/judging.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/milestone-retro/references/queries.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/open-issue/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/review-pr/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/review-pr/references/attack.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/review-pr/references/classify.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/review-pr/references/craft.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/review-pr/references/templates.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/ship-issue/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/ship-pr/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/ship-pr/references/design.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/ship-pr/references/implement.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.claude/skills/ship-pr/references/self-review.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.codex/agents/deck-cleanup.toml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.codex/agents/docs-reviewer.toml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.codex/agents/docs-writer.toml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.dockerignore +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.env.example +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.gitattributes +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/CODEOWNERS +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/ISSUE_TEMPLATE/docs_contribution.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/ISSUE_TEMPLATE/finding.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/assets/contributors/merged.png +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/assets/contributors/welcome.png +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/dependabot.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/workflows/docs-check.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/workflows/docs-pages.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/workflows/first-contribution.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.github/workflows/release.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.import_linter_cache/.gitignore +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.import_linter_cache/CACHEDIR.TAG +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.importlinter +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/.pre-commit-config.yaml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/AGENTS.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/CLAUDE.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/CODE_OF_CONDUCT.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/CONTRIBUTING.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/Dockerfile +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/LICENSE +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/SECURITY.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/control/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/control/memory/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/control/memory/port.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/control/sqlite/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/control/sqlite/port.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/native/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/openai_agents/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/openai_agents/executor.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/openai_agents/reconcile.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/openai_agents/runconfig.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/openai_agents/sessions.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/openai_agents/translate.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/stub/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/executors/stub/executor.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/leases/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/leases/memory/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/leases/memory/port.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/leases/sqlite/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/leases/sqlite/port.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/memory/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/memory/store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/postgres/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/postgres/store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/redis/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/redis/store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/sqlite/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/stores/sqlite/store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/telemetry/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/telemetry/langfuse/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/telemetry/langfuse/client.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/telemetry/langfuse/sink.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/telemetry/langfuse/trace.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/tools/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/tools/mcp/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/tools/mcp/lifecycle.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/tools/mcp/source.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/tools/mcp/transport.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/adapters/tools/mcp/wiring.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/agent.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/compile.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/hooks.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/injection.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/instructions.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/interrupts.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/runners/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/runners/agent.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/skills.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/authoring/web_search.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/cli.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/composition.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/base.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/content.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/control.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/errors.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/events.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/invocable.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/ports/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/ports/control.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/ports/executor.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/ports/lease.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/ports/sink.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/ports/store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/ports/tools.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/core/status.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/deck.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/errors.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/mcp.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/observers.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/py.typed +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/runtime/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/runtime/capture.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/runtime/discovery.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/runtime/dispatch.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/runtime/registry.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/runtime/service.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/runtime/settings.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/serve.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/skills/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/skills/bundle.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/surfaces/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/surfaces/cli/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/surfaces/cli/chat.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/surfaces/serve/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/surfaces/serve/app.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/surfaces/serve/compat.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/testing.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/agentdeck/views.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docker-compose.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/00-project-index.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/agentdeck-prd.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/ai-agents/ai_agent_repository_alignment_research.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/ai-agents/harness_change_log.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/ai-agents/solutions_for_aligning_ai_agents.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/ai-agents/sota_style_alignment_findings.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/components/card.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/components/spark.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/components/wordmark.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/contributor-merged.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/contributor-welcome.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/favicon.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/logo-black.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/logo-blue.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/logo-full.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/logo-mark.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/logo-traced-original.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/logo-white.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/logo.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/brand/social-card.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/beta-user-report-v3.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/decision-v3-entry-point.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/deck-capability-wrapper-pattern.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/discoverability-baseline.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/docs-site-plan.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/epic-agentdeck-v2-core.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/findings-register.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/milestone-0-findings.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/milestone-0-walking-skeleton.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-166-delivery.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-219-delivery.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-adoption.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-context-injection.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-docs-ia.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-jack-eval.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-multimodal.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-phase4-deck.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-provider-credential-validation.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-skills.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-slop-comment-ratio.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/plan-v2-cutover.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/review-context-injection.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/review-phase4-deck.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/review-v3-outsider.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/roadmap-v3.1.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/roadmap-v3.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/delivery/workflow.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/adr-d11-store-assigns-seq-and-time.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/adr-d5-two-stores.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/agentdeck-v2-architecture.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/event-store-claims.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/execution-api-source.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/execution-api.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/run-identity.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/run-lifecycle.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/run-operations.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design/sink-dispatch.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/design-system.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/architecture.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/coding-standards.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/dependencies.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/import-boundaries.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/principles.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/repository-policy.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/runtime-contracts.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/engineering/testing.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/patterns/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/patterns/comments.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/patterns/errors.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/patterns/lifecycle.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/patterns/tests.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/project-brief.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/prompts/pr0-baseline-prompt.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/prompts/pr0-review-prompt.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/prompts/pr1-event-schema-prompt.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs/spec.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/.env.development +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/.env.production +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/.gitignore +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/[[...mdxPath]]/page.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/brand-icons.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/brand.css +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/callout.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/contribute.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/deck-figure.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/design-system.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/diagram.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/docs-slugs.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/hero.css +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/hero.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/icon.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/install-line.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/jack-answer-link.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/jack-citations.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/jack-live.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/jack-stream.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/jack.css +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/jack.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/kind-icons.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/landing.css +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/mark.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/not-found.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/robots.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/site.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/app/sitemap.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/build-your-deck/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/build-your-deck/agents.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/build-your-deck/deck.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/build-your-deck/skills.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/build-your-deck/tools.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/build-your-deck/workflows.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/examples/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/examples/index.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/index.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/integrations/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/integrations/existing-agents.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/integrations/mcp.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/integrations/openai-agents-sdk.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/jack/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/jack/notes.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/jack.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/meet-agentdeck/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/meet-agentdeck/mental-model.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/meet-agentdeck/overview.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/meet-agentdeck/quickstart.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/reference/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/reference/cli.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/reference/deck.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/reference/events.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/reference/python-api.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/reference/run.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/reference/settings.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/resources/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/resources/migration-guides.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/resources/troubleshooting.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/runs-and-control/_meta.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/runs-and-control/events.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/runs-and-control/human-input.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/runs-and-control/lifecycle-and-control.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/runs-and-control/pause-resume.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/runs-and-control/runs.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/content/runs-and-control/sessions.mdx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/mdx-components.tsx +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/next-env.d.ts +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/next.config.mjs +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/package-lock.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/package.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/card.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/contributor-merged.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/contributor-welcome.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/favicon.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/logo-black.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/logo-blue.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/logo-full.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/logo-mark.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/logo-traced-original.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/logo-white.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/logo.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/social-card.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/spark.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/public/brand/wordmark.svg +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/docs-site/tsconfig.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/agent-with-a-skill/.agentdeck/agents/handover_desk/agent.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/agent-with-a-skill/.agentdeck/skills/shift-notes/SKILL.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/agent-with-a-skill/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/agent-with-a-skill/run.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/chat-agent-with-a-tool/.agentdeck/agents/order_desk/agent.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/chat-agent-with-a-tool/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/chat-agent-with-a-tool/run.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/cloudflared.yml +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/eval.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/evals/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/evals/judge.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/evals/metrics.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/evals/run.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/evalset.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/jack/__init__.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/jack/agent.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/jack/corpus.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/jack/server.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/jack/session.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/examples/jack/run.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/check_commit_hygiene.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/check_docs_impact.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/concept_budget.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/quality_delta.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/repomap.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/slopcheck.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/sync_claude_to_codex.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/scripts/sync_roadmap.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/concurrency_worker.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/conftest.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/context_injection_subjects.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/case_types.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/conftest.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/contract_cases.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/live_stores.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/never_yields.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/openai_agents_cases.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/test_context_parity.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/test_control.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/test_control_port.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/test_event_stream.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/test_lease.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/test_resume.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/contract/test_store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/conftest.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/agent.changed.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/answer.refused.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/artifact.created.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/control.observed.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/control.requested.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/custom.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/input.appended.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/message.completed.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/report.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/run.cancelled.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/run.completed.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/run.failed.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/run.interrupted.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/run.paused.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/run.resumed.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/run.started.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/text.delta.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/thought.delta.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/tool.call.completed.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/tool.call.started.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/snapshots/usage.reported.json +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_content.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_context.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_continuation.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_events.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_golden_json.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_import_law.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_model_config.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_old_reader_block_compat.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_old_reader_compat.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_run_lifecycle_tables.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/core/test_vocabularies_agree.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/crash_worker.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/event_log_checks.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/README.md +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/conftest.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/fixture_project/.agentdeck/agents/greeter/agent.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/snapshots/01_health.http +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/snapshots/02_chat.http +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/snapshots/03_chat_stream.http +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/snapshots/04_chat_missing_field.http +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/snapshots/05_agent_unknown.http +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/golden/test_golden_wire.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/plays.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/project_executors.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_agent_changed.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_agent_model_resolution.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_authoring.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_brand_assets.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_changelog.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_child_runs.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_cli.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_cli_render.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_commit_hygiene.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_composition.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_context_injection.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_context_validation.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_crash_reconciliation.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_deck.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_docs_examples.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_docs_impact.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_docs_site.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_errors.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_examples.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_executor_plays.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_handoff_ends_on_user_turn.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_handoff_round_trip.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_handoffs.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_instructions_and_hooks.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_invocable_registry.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_jack.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_jack_server.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_langfuse_sink.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_langfuse_tracer.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_mcp.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_mcp_tool_source.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_memory_store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_model_providers.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_multiprocess_concurrency.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_native_workflow.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_observability.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_openai_agents_engine.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_openai_agents_reconcile.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_openai_agents_sessions.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_openai_agents_tool_failure.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_package.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_postgres_store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_redis_store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_run_config_parity.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_run_control.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_serve.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_serve_compat.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_serve_session_claim.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_settings.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_sink_dispatch.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_skills.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_sqlite_control_port.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_sqlite_store.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_streaming.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_subagents.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_sync_tool_workers.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_tool_compilation.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_uc1_handoff.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_uc3_slowpoke.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_views.py +0 -0
- {agentdeck_sdk-5.1.0 → agentdeck_sdk-5.2.1}/tests/test_web_search.py +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release
|
|
3
|
+
description: Cut an agentdeck release - bump version, update CHANGELOG, merge dev to main, and tag vX.Y.Z.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Release agentdeck
|
|
7
|
+
|
|
8
|
+
Follow the release process strictly. All work starts on `dev`; `main` is release-only,
|
|
9
|
+
and `dev` is the repository's default branch.
|
|
10
|
+
|
|
11
|
+
## Two PRs, two issues
|
|
12
|
+
|
|
13
|
+
A release needs two labeled `chore` issues and two PRs, not one of each.
|
|
14
|
+
|
|
15
|
+
| PR | base | issue | closing keyword |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| bump | `dev` | its own labeled `chore` issue | `Closes #N`, works: `dev` is default |
|
|
18
|
+
| promotion | `main` | its own labeled `chore` issue | `Refs #N` only, close by hand: `main` is not default, so GitHub never creates the closing reference |
|
|
19
|
+
|
|
20
|
+
`git push origin dev` is rejected directly ("push declined due to repository rule violations").
|
|
21
|
+
The bump goes through its own PR into `dev`.
|
|
22
|
+
|
|
23
|
+
A PR body closing more than one issue needs one `Fixes #N` (or `Closes #N`) per line: GitHub's
|
|
24
|
+
closing-keyword parser only recognizes the first reference in a comma-separated list, silently
|
|
25
|
+
leaving the rest open (#541).
|
|
26
|
+
|
|
27
|
+
## Release Steps
|
|
28
|
+
|
|
29
|
+
1. **Version:** Confirm SemVer bump (`pyproject.toml` and `CHANGELOG.md`).
|
|
30
|
+
2. **Preflight:** Verify clean working tree, non-empty `[Unreleased]` section, and `make check`
|
|
31
|
+
is 100% green. Run it unpiped (`make check`, not `make check | tail`) so its own exit code is
|
|
32
|
+
what you read; a pipe reports the last command's status, not the gate's.
|
|
33
|
+
3. **Bump issue:** `python scripts/release_bump.py issues X.Y.Z` creates (or reuses) the `vX.Y.Z`
|
|
34
|
+
milestone, assigns it to every issue `Fixes`/`Closes`-referenced since the last tag, opens the
|
|
35
|
+
labeled `chore: cut and ship vX.Y.Z` issue, and prints its number.
|
|
36
|
+
4. **Bump PR into `dev`:**
|
|
37
|
+
- `python scripts/release_bump.py bump X.Y.Z` updates `pyproject.toml`'s version and moves
|
|
38
|
+
`CHANGELOG.md`'s `[Unreleased]` entries to a dated `## [X.Y.Z]` heading with compare links.
|
|
39
|
+
- Run `python scripts/generate_docs_reference.py` once, then verify
|
|
40
|
+
`python scripts/generate_docs_reference.py --check`.
|
|
41
|
+
- Commit: `chore(release): vX.Y.Z`. Open the PR against the bump issue from step 3
|
|
42
|
+
(`Closes #N`), wait for every required check, merge.
|
|
43
|
+
5. **Promotion issue:** `python scripts/release_bump.py promote X.Y.Z` opens the labeled
|
|
44
|
+
`chore: release vX.Y.Z to main` issue in the same milestone and prints its number.
|
|
45
|
+
6. **Promotion PR, `dev` to `main`:** Open it against the promotion issue from step 5 (`Refs #N`).
|
|
46
|
+
`Issue hygiene`, `slop`, and `Check affected documentation` skip themselves on a `main`-based
|
|
47
|
+
PR: each already ran the real per-PR version of itself against `dev` at merge time, and this
|
|
48
|
+
diff is the whole release cycle re-evaluated, not a new change. Wait for `check` and
|
|
49
|
+
`Build documentation`, then merge and close the promotion issue by hand.
|
|
50
|
+
7. **Tag:** `git tag vX.Y.Z && git push origin vX.Y.Z`. `release.yml` publishes to PyPI on this
|
|
51
|
+
push; there is no undo once the tag lands.
|
|
52
|
+
8. **Close the milestone:** `python scripts/release_bump.py close-milestone X.Y.Z`, right after
|
|
53
|
+
the tag push. Every past release skipped this: `v5.0.0` through `v5.1.0` all shipped with 0
|
|
54
|
+
open issues but stayed open on GitHub.
|
|
55
|
+
9. **Deploy:** In the `prod/` worktree (detached on a tag on purpose, so the public only sees
|
|
56
|
+
something released), run `./deploy-prod.sh vX.Y.Z`. It rebuilds `docs-site`, restarts
|
|
57
|
+
`agentdeck-docs-static.service`, and health-checks `127.0.0.1:4321`.
|
|
58
|
+
10. **Report:** Return the GitHub release URL.
|
|
59
|
+
|
|
60
|
+
## Ground Rules
|
|
61
|
+
- Keep text between tool calls to ≤25 words. Keep final responses to ≤100 words unless more detail is required.
|
|
@@ -9,10 +9,12 @@ You implement one agentdeck GitHub issue end-to-end in an isolated worktree and
|
|
|
9
9
|
|
|
10
10
|
**Objective: implement the issue with the smallest coherent change.** Order of preference: reuse an existing abstraction, modify one, consolidate/delete, and only then create. Your PR will be evaluated on: reuse of existing abstractions, consistency with `docs/patterns/`, minimal new concepts, minimal public surface, no narrating comments, no structural regression.
|
|
11
11
|
|
|
12
|
-
**First action:**
|
|
12
|
+
**First action:** read `.claude/skills/ship-pr/SKILL.md` and its `references/`, and follow it. Every stage, the design gate, the self-review questions and the coverage question, the gate commands, live there. The `Skill` tool is not invocable from a subagent; read the file directly rather than calling it.
|
|
13
13
|
|
|
14
14
|
**Progress:** name each stage (Understand / Design / Implement / Self-review / Gate) as you enter it. A silent multi-stage run reads as a stall.
|
|
15
15
|
|
|
16
|
+
**Denied tool calls:** a denial is a stop to report, never an obstacle to route around through a different tool or command.
|
|
17
|
+
|
|
16
18
|
**Subagents:** any agent you spawn passes an explicit `model: "sonnet"`. Never omit it, never fable, never opus.
|
|
17
19
|
|
|
18
20
|
**Output style:** ≤25 words between tool calls; final response ≤100 words unless more detail is required.
|
|
@@ -7,10 +7,12 @@ isolation: worktree
|
|
|
7
7
|
|
|
8
8
|
You review one agentdeck PR as the merge gate. REVIEW ONLY on the code: never push a commit anywhere. You DO write review artifacts: the PR review itself, inline comments, and any DEFER, harness-note or Harvest issue.
|
|
9
9
|
|
|
10
|
-
**First action:**
|
|
10
|
+
**First action:** read `.claude/skills/review-pr/SKILL.md` and its `references/`, and follow it. Everything procedural, the phases, the finding classes, the verdict format, the delivery mechanics, lives there. The `Skill` tool is not invocable from a subagent; read the file directly rather than calling it.
|
|
11
11
|
|
|
12
12
|
**Progress:** say which phase you are entering as you enter it. A silent review reads as a stall.
|
|
13
13
|
|
|
14
|
+
**Denied tool calls:** a denial is a stop to report, never an obstacle to route around through a different tool or command.
|
|
15
|
+
|
|
14
16
|
**Subagents:** any agent you spawn passes an explicit `model: "sonnet"`. Never omit it, never fable, never opus.
|
|
15
17
|
|
|
16
18
|
**Output style:** keep text between tool calls to ≤25 words. Keep final responses to ≤100 words unless more detail is required.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release
|
|
3
|
+
description: Cut an agentdeck release - bump version, update CHANGELOG, merge dev to main, and tag vX.Y.Z.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Release agentdeck
|
|
7
|
+
|
|
8
|
+
Follow the release process strictly. All work starts on `dev`; `main` is release-only,
|
|
9
|
+
and `dev` is the repository's default branch.
|
|
10
|
+
|
|
11
|
+
## Two PRs, two issues
|
|
12
|
+
|
|
13
|
+
A release needs two labeled `chore` issues and two PRs, not one of each.
|
|
14
|
+
|
|
15
|
+
| PR | base | issue | closing keyword |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| bump | `dev` | its own labeled `chore` issue | `Closes #N`, works: `dev` is default |
|
|
18
|
+
| promotion | `main` | its own labeled `chore` issue | `Refs #N` only, close by hand: `main` is not default, so GitHub never creates the closing reference |
|
|
19
|
+
|
|
20
|
+
`git push origin dev` is rejected directly ("push declined due to repository rule violations").
|
|
21
|
+
The bump goes through its own PR into `dev`.
|
|
22
|
+
|
|
23
|
+
A PR body closing more than one issue needs one `Fixes #N` (or `Closes #N`) per line: GitHub's
|
|
24
|
+
closing-keyword parser only recognizes the first reference in a comma-separated list, silently
|
|
25
|
+
leaving the rest open (#541).
|
|
26
|
+
|
|
27
|
+
## Release Steps
|
|
28
|
+
|
|
29
|
+
1. **Version:** Confirm SemVer bump (`pyproject.toml` and `CHANGELOG.md`).
|
|
30
|
+
2. **Preflight:** Verify clean working tree, non-empty `[Unreleased]` section, and `make check`
|
|
31
|
+
is 100% green. Run it unpiped (`make check`, not `make check | tail`) so its own exit code is
|
|
32
|
+
what you read; a pipe reports the last command's status, not the gate's.
|
|
33
|
+
3. **Bump issue:** `python scripts/release_bump.py issues X.Y.Z` creates (or reuses) the `vX.Y.Z`
|
|
34
|
+
milestone, assigns it to every issue `Fixes`/`Closes`-referenced since the last tag, opens the
|
|
35
|
+
labeled `chore: cut and ship vX.Y.Z` issue, and prints its number.
|
|
36
|
+
4. **Bump PR into `dev`:**
|
|
37
|
+
- `python scripts/release_bump.py bump X.Y.Z` updates `pyproject.toml`'s version and moves
|
|
38
|
+
`CHANGELOG.md`'s `[Unreleased]` entries to a dated `## [X.Y.Z]` heading with compare links.
|
|
39
|
+
- Run `python scripts/generate_docs_reference.py` once, then verify
|
|
40
|
+
`python scripts/generate_docs_reference.py --check`.
|
|
41
|
+
- Commit: `chore(release): vX.Y.Z`. Open the PR against the bump issue from step 3
|
|
42
|
+
(`Closes #N`), wait for every required check, merge.
|
|
43
|
+
5. **Promotion issue:** `python scripts/release_bump.py promote X.Y.Z` opens the labeled
|
|
44
|
+
`chore: release vX.Y.Z to main` issue in the same milestone and prints its number.
|
|
45
|
+
6. **Promotion PR, `dev` to `main`:** Open it against the promotion issue from step 5 (`Refs #N`).
|
|
46
|
+
`Issue hygiene`, `slop`, and `Check affected documentation` skip themselves on a `main`-based
|
|
47
|
+
PR: each already ran the real per-PR version of itself against `dev` at merge time, and this
|
|
48
|
+
diff is the whole release cycle re-evaluated, not a new change. Wait for `check` and
|
|
49
|
+
`Build documentation`, then merge and close the promotion issue by hand.
|
|
50
|
+
7. **Tag:** `git tag vX.Y.Z && git push origin vX.Y.Z`. `release.yml` publishes to PyPI on this
|
|
51
|
+
push; there is no undo once the tag lands.
|
|
52
|
+
8. **Close the milestone:** `python scripts/release_bump.py close-milestone X.Y.Z`, right after
|
|
53
|
+
the tag push. Every past release skipped this: `v5.0.0` through `v5.1.0` all shipped with 0
|
|
54
|
+
open issues but stayed open on GitHub.
|
|
55
|
+
9. **Deploy:** In the `prod/` worktree (detached on a tag on purpose, so the public only sees
|
|
56
|
+
something released), run `./deploy-prod.sh vX.Y.Z`. It rebuilds `docs-site`, restarts
|
|
57
|
+
`agentdeck-docs-static.service`, and health-checks `127.0.0.1:4321`.
|
|
58
|
+
10. **Report:** Return the GitHub release URL.
|
|
59
|
+
|
|
60
|
+
## Ground Rules
|
|
61
|
+
- Keep text between tool calls to ≤25 words. Keep final responses to ≤100 words unless more detail is required.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Generated by scripts/sync_claude_to_codex.py; do not edit.
|
|
2
|
+
# Claude model "sonnet" omitted; this agent inherits the active Codex model.
|
|
3
|
+
name = "deck-dev"
|
|
4
|
+
description = "Implements a GitHub issue (feature or bug fix) for agentdeck end-to-end in an isolated worktree and opens one PR to dev."
|
|
5
|
+
developer_instructions = "You implement one agentdeck GitHub issue end-to-end in an isolated worktree and open a PR.\n\n**Objective: implement the issue with the smallest coherent change.** Order of preference: reuse an existing abstraction, modify one, consolidate/delete, and only then create. Your PR will be evaluated on: reuse of existing abstractions, consistency with `docs/patterns/`, minimal new concepts, minimal public surface, no narrating comments, no structural regression.\n\n**First action:** read `.claude/skills/ship-pr/SKILL.md` and its `references/`, and follow it. Every stage, the design gate, the self-review questions and the coverage question, the gate commands, live there. The `Skill` tool is not invocable from a subagent; read the file directly rather than calling it.\n\n**Progress:** name each stage (Understand / Design / Implement / Self-review / Gate) as you enter it. A silent multi-stage run reads as a stall.\n\n**Denied tool calls:** a denial is a stop to report, never an obstacle to route around through a different tool or command.\n\n**Subagents:** any agent you spawn passes an explicit `model: \"sonnet\"`. Never omit it, never fable, never opus.\n\n**Output style:** ≤25 words between tool calls; final response ≤100 words unless more detail is required.\n\nReturn: PR URL, one-paragraph summary, `make check` status, and declared-vs-actual concept budget.\n\nCodex compatibility:\n- Preserve worktree isolation: before changing branches or files, create and use a dedicated git worktree outside the primary checkout, and run all task commands there."
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Generated by scripts/sync_claude_to_codex.py; do not edit.
|
|
2
|
+
# Claude model "sonnet" omitted; this agent inherits the active Codex model.
|
|
3
|
+
name = "deck-reviewer"
|
|
4
|
+
description = "Review gate for an agentdeck PR before merge. Verifies correctness, spec compliance, simplicity, conciseness, and test quality against docs/engineering/."
|
|
5
|
+
developer_instructions = "You review one agentdeck PR as the merge gate. REVIEW ONLY on the code: never push a commit anywhere. You DO write review artifacts: the PR review itself, inline comments, and any DEFER, harness-note or Harvest issue.\n\n**First action:** read `.claude/skills/review-pr/SKILL.md` and its `references/`, and follow it. Everything procedural, the phases, the finding classes, the verdict format, the delivery mechanics, lives there. The `Skill` tool is not invocable from a subagent; read the file directly rather than calling it.\n\n**Progress:** say which phase you are entering as you enter it. A silent review reads as a stall.\n\n**Denied tool calls:** a denial is a stop to report, never an obstacle to route around through a different tool or command.\n\n**Subagents:** any agent you spawn passes an explicit `model: \"sonnet\"`. Never omit it, never fable, never opus.\n\n**Output style:** keep text between tool calls to ≤25 words. Keep final responses to ≤100 words unless more detail is required.\n\nReturn to the orchestrator: verdict, `make check` result, counts per finding class, links to the posted review and any DEFER issues.\n\nCodex compatibility:\n- Preserve worktree isolation: before changing branches or files, create and use a dedicated git worktree outside the primary checkout, and run all task commands there."
|
|
@@ -29,7 +29,8 @@ new dependencies: 0
|
|
|
29
29
|
- [ ] New behavior has a test
|
|
30
30
|
- [ ] CHANGELOG entry under **Unreleased** for every user-visible change
|
|
31
31
|
- [ ] User-visible behavior changes update the affected `docs-site/` pages in this PR
|
|
32
|
-
|
|
32
|
+
<!-- If a page above is affected but intentionally left unchanged, name it here (comma separated), the exact form `make check` reports. Delete this checklist line if none. -->
|
|
33
|
+
- [ ] Unchanged pages reviewed:
|
|
33
34
|
- [ ] Implementation diverging from a design doc amends that doc with a dated note in this PR
|
|
34
35
|
- [ ] Goldens (`tests/golden/`, `tests/core/snapshots/`) unchanged - or the change is declared and justified here
|
|
35
36
|
- [ ] Deliberate simplifications/shortcuts are marked with a comment naming the ceiling
|
|
@@ -157,8 +157,11 @@ jobs:
|
|
|
157
157
|
# The anti-slop gate for code that never went through a Claude Code hook:
|
|
158
158
|
# outside contributors, and anything written by a process the Edit|Write
|
|
159
159
|
# matcher never saw. Same scripts, PR-base-relative, stdlib only.
|
|
160
|
+
#
|
|
161
|
+
# Skipped on a `main`-based PR: that diff is the whole release cycle since main's last
|
|
162
|
+
# advance, re-flagging lines each contributing PR already passed against `dev` (#536).
|
|
160
163
|
slop:
|
|
161
|
-
if: github.event_name == 'pull_request'
|
|
164
|
+
if: github.event_name == 'pull_request' && github.base_ref != 'main'
|
|
162
165
|
runs-on: ubuntu-latest
|
|
163
166
|
timeout-minutes: 5
|
|
164
167
|
steps:
|
|
@@ -14,6 +14,9 @@ permissions:
|
|
|
14
14
|
jobs:
|
|
15
15
|
check:
|
|
16
16
|
name: Check affected documentation
|
|
17
|
+
# Skipped on a `main`-based PR: that diff re-accumulates everything merged into `dev`
|
|
18
|
+
# since main's last advance, each already reviewed against `dev` as its base (#536).
|
|
19
|
+
if: github.event.pull_request.base.ref != 'main'
|
|
17
20
|
runs-on: ubuntu-latest
|
|
18
21
|
timeout-minutes: 5
|
|
19
22
|
steps:
|
|
@@ -19,8 +19,13 @@ jobs:
|
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
20
|
timeout-minutes: 2
|
|
21
21
|
steps:
|
|
22
|
+
# GitHub creates closing references only for PRs based on the default branch, so this
|
|
23
|
+
# can never pass on a PR based on anything else (a promotion PR to `main`, a stacked
|
|
24
|
+
# PR based on a feature branch) (#486).
|
|
22
25
|
- name: Require a labeled closing issue
|
|
23
|
-
if:
|
|
26
|
+
if: >-
|
|
27
|
+
github.event.pull_request.user.login != 'dependabot[bot]' &&
|
|
28
|
+
github.event.pull_request.base.ref == github.event.repository.default_branch
|
|
24
29
|
env:
|
|
25
30
|
GH_TOKEN: ${{ github.token }}
|
|
26
31
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"agentdeck.surfaces": 1787998003.2833204, "agentdeck.core.ports.store": 1787998003.2813082, "agentdeck.adapters.leases.sqlite.port": 1787998003.2780778, "agentdeck.adapters.tools.mcp.wiring": 1787998003.279437, "agentdeck.adapters": 1787998003.2765703, "agentdeck.skills.bundle": 1787998003.2833204, "agentdeck.core.invocable": 1787998003.2806702, "agentdeck.adapters.executors.openai_agents.reconcile": 1787998003.2772937, "agentdeck.adapters.executors.openai_agents.executor": 1787998003.2772937, "agentdeck.core.ports.lease": 1787998003.2813082, "agentdeck": 1787998003.2765703, "agentdeck.authoring.instructions": 1787998003.2797065, "agentdeck.adapters.stores": 1787998003.2780778, "agentdeck.runtime.service": 1787998003.2823915, "agentdeck.adapters.tools.mcp.source": 1787998003.279437, "agentdeck.adapters.stores.sqlite": 1787998003.2786093, "agentdeck.adapters.telemetry.langfuse": 1787998003.2790496, "agentdeck.authoring": 1787998003.279437, "agentdeck.adapters.control.sqlite.port": 1787998003.276945, "agentdeck.adapters.leases.memory": 1787998003.2779217, "agentdeck.adapters.executors.stub.executor": 1787998003.2777145, "agentdeck.deck": 1787998003.2813082, "agentdeck.adapters.control.memory.port": 1787998003.2768457, "agentdeck.adapters.leases": 1787998003.2777145, "agentdeck.adapters.stores.memory.store": 1787998003.2782755, "agentdeck.surfaces.serve.compat": 1787998003.283601, "agentdeck.authoring.skills": 1787998003.2802627, "agentdeck.adapters.control": 1787998003.2766893, "agentdeck.core.content": 1787998003.2806702, "agentdeck.authoring.web_search": 1787998003.2802627, "agentdeck.errors": 1787998003.2813082, "agentdeck.authoring.tools": 1787998003.2802627, "agentdeck.core.control": 1787998003.2806702, "agentdeck.core.workers": 1787998003.2813082, "agentdeck.views": 1787998003.283601, "agentdeck.core.ports.tools": 1787998003.2813082, "agentdeck.runtime.registry": 1787998003.2823915, "agentdeck.adapters.executors.openai_agents.runconfig": 1787998003.2772937, "agentdeck.authoring.interrupts": 1787998003.2797065, "agentdeck.adapters.executors.native.executor": 1787998003.2771342, "agentdeck.core.ports.sink": 1787998003.2813082, "agentdeck.authoring.native": 1787998003.2797065, "agentdeck.authoring.compile": 1787998003.2797065, "agentdeck.adapters.executors.native": 1787998003.277085, "agentdeck.core.context": 1787998003.2806702, "agentdeck.core.base": 1787998003.2806702, "agentdeck.adapters.control.sqlite": 1787998003.2768457, "agentdeck.runtime.capture": 1787998003.2823915, "agentdeck.core.reporting": 1787998003.2813082, "agentdeck.runtime.settings": 1787998003.2823915, "agentdeck.surfaces.serve": 1787998003.2834902, "agentdeck.authoring.runners.agent": 1787998003.2802627, "agentdeck.adapters.telemetry.langfuse.sink": 1787998003.2791069, "agentdeck.runtime.dispatch": 1787998003.2823915, "agentdeck.core.ports": 1787998003.2806702, "agentdeck.authoring.injection": 1787998003.2797065, "agentdeck.adapters.telemetry": 1787998003.2788315, "agentdeck.adapters.control.memory": 1787998003.2767885, "agentdeck.adapters.stores.redis.store": 1787998003.2786093, "agentdeck.adapters.executors.openai_agents": 1787998003.2771342, "agentdeck.cli": 1787998003.2802627, "agentdeck.core.errors": 1787998003.2806702, "agentdeck.adapters.leases.memory.port": 1787998003.2779748, "agentdeck.runtime": 1787998003.2813082, "agentdeck.authoring.runners": 1787998003.2797065, "agentdeck.adapters.stores.memory": 1787998003.2782257, "agentdeck.mcp": 1787998003.2813082, "agentdeck.adapters.leases.sqlite": 1787998003.2779748, "agentdeck.adapters.tools": 1787998003.2791069, "agentdeck.adapters.tools.mcp.transport": 1787998003.279437, "agentdeck.authoring.hooks": 1787998003.2797065, "agentdeck.adapters.stores.sqlite.store": 1787998003.2788315, "agentdeck.surfaces.cli.chat": 1787998003.2834902, "agentdeck.surfaces.serve.app": 1787998003.283601, "agentdeck.adapters.stores.postgres.store": 1787998003.2784145, "agentdeck.adapters.stores.postgres": 1787998003.2782755, "agentdeck.core.ports.executor": 1787998003.2813082, "agentdeck.adapters.executors": 1787998003.276945, "agentdeck.adapters.tools.mcp": 1787998003.2793853, "agentdeck.composition": 1787998003.2802627, "agentdeck.core": 1787998003.2802627, "agentdeck.serve": 1787998003.2823915, "agentdeck.adapters.telemetry.langfuse.trace": 1787998003.2791069, "agentdeck.runtime.discovery": 1787998003.2823915, "agentdeck.adapters.executors.openai_agents.translate": 1787998003.2772937, "agentdeck.observers": 1787998003.2813082, "agentdeck.adapters.tools.mcp.lifecycle": 1787998003.279437, "agentdeck.core.events": 1787998003.2806702, "agentdeck.authoring.agent": 1787998003.2797065, "agentdeck.skills": 1787998003.2823915, "agentdeck.core.ports.control": 1787998003.2813082, "agentdeck.core.status": 1787998003.2813082, "agentdeck.adapters.executors.openai_agents.sessions": 1787998003.2772937, "agentdeck.surfaces.cli": 1787998003.2834408, "agentdeck.adapters.stores.redis": 1787998003.2784145, "agentdeck.adapters.telemetry.langfuse.client": 1787998003.2791069, "agentdeck.testing": 1787998003.283601, "agentdeck.adapters.executors.stub": 1787998003.2772937}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"agentdeck.adapters.control.sqlite.port":[["agentdeck.errors",17,"from agentdeck.errors import StoreError"],["typing",13,"from typing import TYPE_CHECKING"],["pathlib",21,"from pathlib import Path"],["sqlite3",10,"import sqlite3"],["agentdeck.core.ports.control",16,"from agentdeck.core.ports.control import ControlPort"],["functools",12,"from functools import partial"],["agentdeck.core.control",15,"from agentdeck.core.control import ControlSignal, Signal"],["__future__",7,"from __future__ import annotations"],["asyncio",9,"import asyncio"],["collections",20,"from collections.abc import Callable"],["contextlib",11,"from contextlib import suppress"]],"agentdeck.adapters.control":[],"agentdeck.adapters.executors":[],"agentdeck.authoring.interrupts":[["__future__",8,"from __future__ import annotations"],["typing",10,"from typing import Any, Literal, NotRequired, TypedDict"]],"agentdeck.runtime.service":[["agentdeck.runtime.dispatch",53,"from agentdeck.runtime.dispatch import SinkDispatch"],["agentdeck.core.events",27,"from agentdeck.core.events import ("],["asyncio",15,"import asyncio"],["agentdeck.core.status",41,"from agentdeck.core.status import ("],["dataclasses",19,"from dataclasses import dataclass, replace"],["agentdeck.core.context",25,"from agentdeck.core.context import RunContext"],["uuid",22,"from uuid import uuid4"],["agentdeck.core.control",26,"from agentdeck.core.control import CONTROL_POLL_INTERVAL, Gate, Signal"],["agentdeck.core.content",59,"from agentdeck.core.content import Input"],["logging",16,"import logging"],["agentdeck.core.content",24,"from agentdeck.core.content import as_answer"],["collections",56,"from collections.abc import AsyncGenerator, AsyncIterator, Mapping, Sequence"],["datetime",20,"from datetime import timedelta"],["agentdeck.core.events",61,"from agentdeck.core.events import InterruptReason, KnownPayload"],["agentdeck.errors",52,"from agentdeck.errors import DOCS_URL, ConfigError, NotFoundError, RunStateError, SessionBusyError, StoreError"],["agentdeck.core.control",60,"from agentdeck.core.control import ControlSignal"],["agentdeck.core.ports",63,"from agentdeck.core.ports import ControlPort, EventStorePort, Executor, LeasePort, Observer"],["agentdeck.core.reporting",40,"from agentdeck.core.reporting import Reporter"],["typing",57,"from typing import Any"],["collections",17,"from collections import deque"],["typing",21,"from typing import TYPE_CHECKING, Final"],["agentdeck.core.ports.store",64,"from agentdeck.core.ports.store import RunSummary"],["agentdeck.core.invocable",62,"from agentdeck.core.invocable import InvocableSpec"],["contextlib",18,"from contextlib import aclosing, asynccontextmanager, suppress"],["__future__",13,"from __future__ import annotations"]],"agentdeck.adapters.stores.postgres.store":[["psycopg",24,"from psycopg import errors as pg_errors"],["agentdeck.core.events",28,"from agentdeck.core.events import Event"],["agentdeck.core.status",39,"from agentdeck.core.status import RunStatus"],["agentdeck.core.status",30,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["__future__",17,"from __future__ import annotations"],["agentdeck.core.ports",29,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["asyncio",19,"import asyncio"],["agentdeck.core.context",37,"from agentdeck.core.context import RunContext"],["hashlib",20,"import hashlib"],["psycopg",23,"import psycopg"],["typing",21,"from typing import TYPE_CHECKING, Any"],["agentdeck.adapters.stores",27,"from agentdeck.adapters.stores import _refuse_if_cancelled"],["datetime",35,"from datetime import timedelta"],["psycopg",25,"from psycopg import sql"],["agentdeck.core.events",38,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["collections",34,"from collections.abc import Awaitable, Callable, Sequence"],["agentdeck.errors",31,"from agentdeck.errors import DuplicateKeyError, StoreError"]],"agentdeck.runtime.capture":[["__future__",12,"from __future__ import annotations"],["enum",14,"from enum import StrEnum"],["pydantic",16,"from pydantic import BaseModel"]],"agentdeck.adapters.executors.native":[["agentdeck.adapters.executors.native.executor",3,"from agentdeck.adapters.executors.native.executor import NativeExecutor"]],"agentdeck.runtime.dispatch":[["agentdeck.core.events",31,"from agentdeck.core.events import Event"],["agentdeck.core.ports",32,"from agentdeck.core.ports import Observer"],["asyncio",23,"import asyncio"],["__future__",21,"from __future__ import annotations"],["logging",24,"import logging"],["typing",26,"from typing import TYPE_CHECKING"],["collections",29,"from collections.abc import Callable"],["time",25,"import time"]],"agentdeck.adapters.executors.openai_agents.sessions":[["agentdeck.core.context",29,"from agentdeck.core.context import RunContext"],["agents",26,"from agents.memory.session import Session"],["typing",21,"from typing import TYPE_CHECKING"],["agents",23,"from agents import SQLiteSession"],["redis",53,"from redis.asyncio import Redis"],["agentdeck.runtime.settings",30,"from agentdeck.runtime.settings import SessionSettings"],["redis",27,"from redis.asyncio import Redis"],["agents",68,"from agents.extensions.memory import RedisSession"],["__future__",19,"from __future__ import annotations"]],"agentdeck.adapters.executors.openai_agents.translate":[["json",14,"import json"],["hashlib",13,"import hashlib"],["__future__",11,"from __future__ import annotations"],["agentdeck.core.events",18,"from agentdeck.core.events import ("],["typing",16,"from typing import Any"],["logging",15,"import logging"]],"agentdeck.surfaces.serve":[["__future__",3,"from __future__ import annotations"],["agentdeck.surfaces.serve.app",5,"from agentdeck.surfaces.serve.app import build_app"]],"agentdeck.core.context":[["uuid",25,"from uuid import uuid4"],["agentdeck.core.reporting",30,"from agentdeck.core.reporting import Reporter"],["agentdeck.core.control",27,"from agentdeck.core.control import Gate, RunPausedError"],["dataclasses",23,"from dataclasses import dataclass, field"],["agentdeck.core.invocable",40,"from agentdeck.core.invocable import AgentInstance"],["agentdeck.core.events",29,"from agentdeck.core.events import KnownPayload, RunInterrupted"],["asyncio",20,"import asyncio"],["asyncio",36,"from asyncio import AbstractEventLoop"],["typing",24,"from typing import TYPE_CHECKING, Any, NoReturn, Protocol, cast, runtime_checkable"],["inspect",21,"import inspect"],["collections",37,"from collections.abc import Callable, Coroutine"],["agentdeck.core.status",31,"from agentdeck.core.status import RunStatus"],["logging",22,"import logging"],["agentdeck.core.errors",28,"from agentdeck.core.errors import DOCS_URL, ConfigError"],["agentdeck.core.base",39,"from agentdeck.core.base import JsonData"],["__future__",18,"from __future__ import annotations"]],"agentdeck.core.reporting":[["typing",16,"from typing import TYPE_CHECKING"],["collections",21,"from collections import deque"],["agentdeck.core.base",23,"from agentdeck.core.base import JsonData"],["__future__",12,"from __future__ import annotations"],["threading",15,"import threading"],["agentdeck.core.events",18,"from agentdeck.core.events import Reported"],["agentdeck.core.events",24,"from agentdeck.core.events import KnownPayload"],["logging",14,"import logging"]],"agentdeck.authoring.compile":[["agentdeck.core.workers",67,"from agentdeck.core.workers import SyncToolWorkers"],["agentdeck.authoring.native",53,"from agentdeck.authoring.native import NativeDefinition"],["agents",47,"from agents import ModelSettings"],["re",43,"import re"],["typing",44,"from typing import TYPE_CHECKING, Any, get_args, get_origin"],["agents",46,"from agents import Agent as SDKAgent"],["collections",61,"from collections.abc import Awaitable, Callable, Mapping, Sequence"],["agentdeck.authoring.agent",65,"from agentdeck.authoring.agent import Agent"],["agents",48,"from agents import Tool as SDKTool"],["agentdeck.errors",57,"from agentdeck.errors import ConfigError, NotFoundError"],["__future__",41,"from __future__ import annotations"],["agentdeck.authoring.instructions",52,"from agentdeck.authoring.instructions import compile_instructions"],["agentdeck.authoring.native",54,"from agentdeck.authoring.native import tool as _native_tool"],["agentdeck.adapters.tools.mcp.wiring",50,"from agentdeck.adapters.tools.mcp.wiring import mcp_status_banner, resolve_agent_mcp_status"],["agentdeck.core.context",56,"from agentdeck.core.context import ToolCtx # noqa: TC001 - a subagent tool's own annotation, resolved at runtime"],["agents",63,"from agents.tool import FunctionTool"],["agentdeck.runtime.settings",58,"from agentdeck.runtime.settings import get_settings"],["agentdeck.authoring.agent",217,"from agentdeck.authoring.agent import Agent as AuthoringAgent"],["agentdeck.authoring.tools",55,"from agentdeck.authoring.tools import compile_tool"],["agentdeck.core.context",66,"from agentdeck.core.context import RunContext"],["agentdeck.authoring.hooks",51,"from agentdeck.authoring.hooks import compile_hooks"]],"agentdeck.adapters.telemetry":[],"agentdeck.adapters.executors.openai_agents.executor":[["agentdeck.errors",55,"from agentdeck.errors import ConfigError"],["agentdeck.core.control",51,"from agentdeck.core.control import ControlSignalled"],["json",37,"import json"],["__future__",34,"from __future__ import annotations"],["agents",60,"from agents.items import TResponseInputItem"],["agentdeck.core.invocable",68,"from agentdeck.core.invocable import InvocableSpec"],["agents",62,"from agents.result import RunResultStreaming"],["dataclasses",36,"import dataclasses"],["collections",38,"from collections.abc import Callable"],["collections",58,"from collections.abc import AsyncGenerator, AsyncIterator, Sequence"],["agentdeck.core.ports",53,"from agentdeck.core.ports import Executor"],["typing",41,"from typing import TYPE_CHECKING, Any, ClassVar, cast"],["agentdeck.adapters.executors.openai_agents.sessions",48,"from agentdeck.adapters.executors.openai_agents.sessions import ExecutionStore"],["agentdeck.adapters.executors.openai_agents.reconcile",46,"from agentdeck.adapters.executors.openai_agents.reconcile import reconcile, render_data_block"],["dataclasses",40,"from dataclasses import dataclass"],["agents",43,"from agents import Agent, Runner"],["agents",63,"from agents.usage import Usage as SDKUsage"],["agentdeck.core.content",50,"from agentdeck.core.content import AudioBlock, DataBlock, ImageBlock, ResourceBlock, TextBlock, coerce_input"],["agentdeck.core.events",67,"from agentdeck.core.events import Event, KnownPayload"],["contextlib",39,"from contextlib import AbstractAsyncContextManager, aclosing, asynccontextmanager, nullcontext"],["agentdeck.core.status",54,"from agentdeck.core.status import Play, continuation_of"],["pydantic",44,"from pydantic import BaseModel"],["agents",61,"from agents.memory.session import Session"],["agentdeck.core.context",66,"from agentdeck.core.context import RunContext"],["agentdeck.adapters.executors.openai_agents.translate",49,"from agentdeck.adapters.executors.openai_agents.translate import translate"],["agentdeck.core.events",52,"from agentdeck.core.events import RunCompleted, Usage, UsageReported"],["agentdeck.core.content",65,"from agentdeck.core.content import ContentBlock, Input"],["agentdeck.adapters.executors.openai_agents.runconfig",47,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings, build_run_config"]],"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.telemetry.langfuse.trace":[["agentdeck.core.events",20,"from agentdeck.core.events import Usage"],["typing",15,"from typing import TYPE_CHECKING, Any, Literal, Protocol"],["__future__",13,"from __future__ import annotations"],["collections",18,"from collections.abc import Mapping"]],"agentdeck.adapters.stores.memory.store":[["agentdeck.core.status",12,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, RunStatus, can_resume, status_of"],["agentdeck.core.events",10,"from agentdeck.core.events import Event"],["collections",16,"from collections.abc import Callable, Sequence"],["datetime",17,"from datetime import timedelta"],["agentdeck.adapters.stores",9,"from agentdeck.adapters.stores import _refuse_if_cancelled"],["agentdeck.core.events",20,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["__future__",3,"from __future__ import annotations"],["datetime",6,"from datetime import UTC, datetime"],["agentdeck.core.context",19,"from agentdeck.core.context import RunContext"],["typing",7,"from typing import TYPE_CHECKING"],["agentdeck.errors",13,"from agentdeck.errors import DuplicateKeyError"],["asyncio",5,"import asyncio"],["agentdeck.core.ports",11,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"]],"agentdeck.runtime.registry":[["importlib",6,"import importlib.util"],["typing",12,"from typing import Generic, TypeVar"],["agentdeck.errors",14,"from agentdeck.errors import ConfigError, NotFoundError"],["types",8,"import types"],["dataclasses",9,"from dataclasses import dataclass, field"],["__future__",3,"from __future__ import annotations"],["pathlib",11,"from pathlib import Path"],["sys",7,"import sys"],["importlib",10,"from importlib.machinery import ModuleSpec"],["importlib",5,"import importlib"]],"agentdeck.adapters.tools":[],"agentdeck.adapters.executors.stub":[["agentdeck.adapters.executors.stub.executor",3,"from agentdeck.adapters.executors.stub.executor import Step, StubExecutor, stub_spec"]],"agentdeck.authoring.hooks":[["collections",31,"from collections.abc import Callable"],["agentdeck.errors",28,"from agentdeck.errors import ConfigError"],["agentdeck.authoring.injection",26,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"],["typing",22,"from typing import TYPE_CHECKING, Any"],["agents",24,"from agents.lifecycle import AgentHooks"],["agentdeck.core.context",27,"from agentdeck.core.context import RunContext, ToolCtx"],["__future__",19,"from __future__ import annotations"],["inspect",21,"import inspect"]],"agentdeck.adapters.executors.openai_agents.reconcile":[["typing",29,"from typing import TYPE_CHECKING, Any, Literal"],["collections",36,"from collections.abc import Iterable, Sequence"],["agentdeck.core.content",41,"from agentdeck.core.content import Input"],["agentdeck.core.content",32,"from agentdeck.core.content import DataBlock, TextBlock"],["agentdeck.core.events",42,"from agentdeck.core.events import Event"],["agentdeck.core.events",33,"from agentdeck.core.events import Custom, InputAppended, MessageCompleted, RunCancelled, RunStarted"],["agents",38,"from agents.items import TResponseInputItem"],["logging",28,"import logging"],["__future__",24,"from __future__ import annotations"],["agents",39,"from agents.memory.session import Session"],["asyncio",26,"import asyncio"],["weakref",30,"from weakref import WeakKeyDictionary"],["json",27,"import json"]],"agentdeck.adapters.control.memory":[["agentdeck.adapters.control.memory.port",3,"from agentdeck.adapters.control.memory.port import MemoryControlPort"]],"agentdeck.serve":[["agentdeck.core.events",51,"from agentdeck.core.events import Event"],["uvicorn",285,"import uvicorn"],["os",37,"import os"],["typing",39,"from typing import TYPE_CHECKING, Any"],["fastapi",49,"from fastapi import FastAPI"],["agentdeck.core.status",42,"from agentdeck.core.status import status_of"],["__future__",33,"from __future__ import annotations"],["agentdeck.errors",43,"from agentdeck.errors import AgentdeckError, NotFoundError, RunStateError, SessionBusyError"],["fastapi",77,"from fastapi import FastAPI, HTTPException, Request"],["agentdeck.surfaces.serve.compat",44,"from agentdeck.surfaces.serve.compat import chat_frames, chat_result"],["contextlib",38,"from contextlib import aclosing, asynccontextmanager"],["collections",47,"from collections.abc import AsyncGenerator, AsyncIterator, Awaitable, Callable"],["agentdeck.deck",58,"from agentdeck.deck import Deck"],["argparse",35,"import argparse"],["fastapi",78,"from fastapi.responses import JSONResponse, StreamingResponse"],["agentdeck.core.content",41,"from agentdeck.core.content import coerce_input"],["logging",36,"import logging"],["agentdeck.deck",52,"from agentdeck.deck import Deck"]],"agentdeck.core.ports.control":[["typing",17,"from typing import TYPE_CHECKING"],["__future__",14,"from __future__ import annotations"],["agentdeck.core.control",20,"from agentdeck.core.control import ControlSignal, Signal"],["abc",16,"from abc import ABC, abstractmethod"]],"agentdeck.runtime.discovery":[["agentdeck.authoring.native",16,"from agentdeck.authoring.native import NativeDefinition"],["__future__",10,"from __future__ import annotations"],["typing",12,"from typing import TYPE_CHECKING, Any, Final"],["agentdeck.core.ports",28,"from agentdeck.core.ports import Executor"],["agentdeck.authoring.agent",14,"from agentdeck.authoring.agent import Agent"],["agentdeck.core.invocable",17,"from agentdeck.core.invocable import AgentInstance, InvocableKind, InvocableSpec"],["agentdeck.runtime.registry",19,"from agentdeck.runtime.registry import PluginRegistry, mount_project_dir"],["agentdeck.core.workers",29,"from agentdeck.core.workers import SyncToolWorkers"],["agentdeck.authoring.compile",15,"from agentdeck.authoring.compile import compile_agent, link_handoffs"],["collections",22,"from collections.abc import Callable, Mapping, Sequence"],["agentdeck.authoring.compile",27,"from agentdeck.authoring.compile import Delegate"],["agents",25,"from agents.tool import FunctionTool"],["agents",24,"from agents import Agent as SDKAgent"],["agentdeck.errors",18,"from agentdeck.errors import ConfigError"]],"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.executors.stub.executor":[["collections",15,"from collections.abc import Sequence"],["agentdeck.core.control",18,"from agentdeck.core.control import ControlSignalled"],["agentdeck.core.events",19,"from agentdeck.core.events import RunInterrupted"],["agentdeck.core.content",28,"from agentdeck.core.content import Input"],["agentdeck.core.invocable",20,"from agentdeck.core.invocable import InvocableKind, InvocableSpec"],["agentdeck.core.ports",21,"from agentdeck.core.ports import Executor"],["__future__",13,"from __future__ import annotations"],["collections",26,"from collections.abc import AsyncGenerator"],["agentdeck.core.events",30,"from agentdeck.core.events import Event, KnownPayload"],["agentdeck.core.status",22,"from agentdeck.core.status import Play, continuation_of"],["agentdeck.errors",23,"from agentdeck.errors import ConfigError"],["agentdeck.core.context",29,"from agentdeck.core.context import RunContext"],["typing",16,"from typing import TYPE_CHECKING, ClassVar"]],"agentdeck.core.control":[["typing",18,"from typing import TYPE_CHECKING, ClassVar"],["time",15,"import time"],["agentdeck.core.events",20,"from agentdeck.core.events import ControlObserved, ControlRequested, RunCancelled, RunPaused"],["collections",24,"from collections.abc import Callable, Mapping"],["enum",17,"from enum import StrEnum"],["dataclasses",16,"from dataclasses import dataclass"],["__future__",13,"from __future__ import annotations"],["agentdeck.core.events",26,"from agentdeck.core.events import ControlVerb, KnownPayload, SafePoint"],["agentdeck.core.ports.control",27,"from agentdeck.core.ports.control import ControlPort"],["agentdeck.core.status",21,"from agentdeck.core.status import Action, RunStatus, decide"]],"agentdeck.runtime.settings":[["pydantic",24,"from pydantic import BaseModel, ConfigDict, Field, field_validator"],["collections",17,"from collections.abc import Mapping"],["__future__",13,"from __future__ import annotations"],["os",16,"import os"],["logging",15,"import logging"],["collections",28,"from collections.abc import Callable"],["typing",21,"from typing import TYPE_CHECKING, Any, ClassVar, Self"],["datetime",18,"from datetime import timedelta"],["pydantic_settings",25,"from pydantic_settings import BaseSettings, SettingsConfigDict"],["functools",19,"from functools import lru_cache"],["pathlib",20,"from pathlib import Path"],["dotenv",23,"from dotenv import load_dotenv"]],"agentdeck.adapters.control.sqlite":[["agentdeck.adapters.control.sqlite.port",3,"from agentdeck.adapters.control.sqlite.port import SqliteControlPort"]],"agentdeck.adapters.stores.redis.store":[["agentdeck.core.ports",41,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["agentdeck.core.events",40,"from agentdeck.core.events import Event"],["urllib",34,"from urllib.parse import quote"],["redis",37,"from redis.exceptions import RedisError, WatchError"],["agentdeck.errors",43,"from agentdeck.errors import DuplicateKeyError, StoreError"],["agentdeck.adapters.stores",39,"from agentdeck.adapters.stores import _refuse_if_cancelled"],["__future__",29,"from __future__ import annotations"],["collections",46,"from collections.abc import Awaitable, Callable, Iterable, Sequence"],["redis",36,"from redis.asyncio import Redis"],["agentdeck.core.events",52,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["datetime",32,"from datetime import UTC, datetime"],["typing",33,"from typing import TYPE_CHECKING, cast"],["agentdeck.core.status",53,"from agentdeck.core.status import RunStatus"],["datetime",47,"from datetime import timedelta"],["redis",49,"from redis.asyncio.client import Pipeline"],["agentdeck.core.status",42,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["agentdeck.core.context",51,"from agentdeck.core.context import RunContext"],["json",31,"import json"]],"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"],["agents",18,"from agents.tool import FunctionTool"],["__future__",9,"from __future__ import annotations"],["typing",11,"from typing import TYPE_CHECKING"]],"agentdeck.core.events":[["__future__",21,"from __future__ import annotations"],["agentdeck.core.content",37,"from agentdeck.core.content import Input # noqa: TC001 - pydantic resolves field annotations at runtime"],["agentdeck.core.base",36,"from agentdeck.core.base import CoreModel, JsonData"],["typing",23,"from typing import Annotated, Any, Literal, get_args"],["pydantic",25,"from pydantic import ("]],"agentdeck.cli":[["__future__",17,"from __future__ import annotations"],["argparse",19,"import argparse"],["agentdeck.adapters.control.sqlite",22,"from agentdeck.adapters.control.sqlite import SqliteControlPort"],["asyncio",20,"import asyncio"],["agentdeck.core.control",23,"from agentdeck.core.control import Signal"]],"agentdeck":[["agentdeck.core.context",24,"from agentdeck.core.context import ToolCtx, WorkflowCtx"],["agentdeck.core.ports",26,"from agentdeck.core.ports import Observer"],["agentdeck.authoring",14,"from agentdeck.authoring import Agent"],["importlib",11,"from importlib.metadata import version as _version"],["agentdeck.views",13,"from agentdeck import views"],["agentdeck.errors",28,"from agentdeck.errors import ("],["agentdeck.core.content",16,"from agentdeck.core.content import ("],["agentdeck.authoring.native",15,"from agentdeck.authoring.native import tool, workflow"],["agentdeck.deck",27,"from agentdeck.deck import Deck, Run, TurnResult"],["agentdeck.core.invocable",25,"from agentdeck.core.invocable import AgentInstance"],["importlib",10,"from importlib.metadata import PackageNotFoundError"]],"agentdeck.adapters.tools.mcp.wiring":[["agentdeck.adapters.tools.mcp.lifecycle",12,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["agents",17,"from agents.mcp import MCPServer"],["collections",15,"from collections.abc import Iterable, Sequence"],["__future__",8,"from __future__ import annotations"],["typing",10,"from typing import TYPE_CHECKING"]],"agentdeck.views":[["agentdeck.core.status",18,"from agentdeck.core.status import LIFECYCLE_KINDS"],["collections",21,"from collections.abc import Callable"],["agentdeck.core.events",23,"from agentdeck.core.events import Event"],["typing",16,"from typing import TYPE_CHECKING"],["__future__",14,"from __future__ import annotations"]],"agentdeck.core.errors":[["agentdeck.core.status",20,"from agentdeck.core.status import RunStatus"],["__future__",16,"from __future__ import annotations"],["typing",18,"from typing import Any"]],"agentdeck.adapters.stores.redis":[["agentdeck.adapters.stores.redis.store",3,"from agentdeck.adapters.stores.redis.store import RedisEventStore"]],"agentdeck.authoring.runners.agent":[["contextlib",17,"from contextlib import aclosing"],["dataclasses",18,"from dataclasses import dataclass, field"],["agentdeck.runtime.settings",24,"from agentdeck.runtime.settings import Settings, default_use_responses, get_settings"],["typing",19,"from typing import TYPE_CHECKING, Any, Self, cast"],["collections",27,"from collections.abc import AsyncGenerator, AsyncIterator"],["agents",21,"from agents import Agent, RunConfig, Runner, RunResult"],["__future__",15,"from __future__ import annotations"],["agentdeck.adapters.executors.openai_agents.runconfig",23,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings, build_run_config"]],"agentdeck.core.ports.sink":[["typing",10,"from typing import TYPE_CHECKING"],["agentdeck.core.events",13,"from agentdeck.core.events import Event"],["__future__",7,"from __future__ import annotations"],["abc",9,"from abc import ABC, abstractmethod"]],"agentdeck.surfaces.serve.compat":[["collections",23,"from collections.abc import AsyncGenerator, AsyncIterator"],["json",15,"import json"],["contextlib",16,"from contextlib import aclosing"],["typing",17,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.events",25,"from agentdeck.core.events import Event"],["agentdeck.core.events",20,"from agentdeck.core.events import RunCompleted, TextDelta, UsageReported"],["agentdeck.core.content",19,"from agentdeck.core.content import DataBlock, TextBlock"],["__future__",13,"from __future__ import annotations"]],"agentdeck.adapters.leases.memory":[["agentdeck.adapters.leases.memory.port",3,"from agentdeck.adapters.leases.memory.port import MemoryLeasePort"]],"agentdeck.surfaces.cli.chat":[["collections",31,"from collections.abc import AsyncIterator, Mapping"],["typing",13,"from typing import TYPE_CHECKING"],["agentdeck.core.content",15,"from agentdeck.core.content import TextBlock"],["httpx",33,"import httpx"],["agentdeck.core.events",16,"from agentdeck.core.events import ("],["__future__",10,"from __future__ import annotations"],["json",12,"import json"]],"agentdeck.adapters.telemetry.langfuse.client":[["collections",22,"from collections.abc import Mapping"],["agentdeck.adapters.telemetry.langfuse.sink",19,"from agentdeck.adapters.telemetry.langfuse.sink import LangfuseSink"],["typing",17,"from typing import TYPE_CHECKING, Any"],["agentdeck.adapters.telemetry.langfuse.trace",24,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind"],["agentdeck.runtime.settings",26,"from agentdeck.runtime.settings import LangfuseSettings"],["__future__",13,"from __future__ import annotations"],["os",16,"import os"],["agentdeck.core.events",25,"from agentdeck.core.events import Usage"],["logging",15,"import logging"],["langfuse",102,"from langfuse import propagate_attributes # ty: ignore[unresolved-import] - [observability] extra"],["langfuse",60,"from langfuse import Langfuse # ty: ignore[unresolved-import] - [observability] extra"]],"agentdeck.authoring.tools":[["asyncio",25,"import asyncio"],["agents",38,"from agents.tool import FunctionTool"],["agentdeck.authoring.injection",40,"from agentdeck.authoring.injection import CallableAnalysis"],["agentdeck.errors",33,"from agentdeck.errors import ConfigError"],["agentdeck.core.workers",41,"from agentdeck.core.workers import SyncToolWorkers"],["collections",36,"from collections.abc import Callable"],["agentdeck.authoring.injection",31,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"],["__future__",23,"from __future__ import annotations"],["inspect",26,"import inspect"],["typing",27,"from typing import TYPE_CHECKING, Any, get_type_hints"],["agentdeck.core.context",32,"from agentdeck.core.context import RunContext, ToolCtx"],["agents",29,"from agents import RunContextWrapper, default_tool_error_function, function_tool"]],"agentdeck.authoring.agent":[["agentdeck.authoring.runners.agent",169,"from agentdeck.authoring.runners.agent import HeadlessRunner"],["typing",12,"from typing import TYPE_CHECKING, Any, ClassVar"],["agents",17,"from agents.agent_output import AgentOutputSchemaBase"],["agents",18,"from agents.lifecycle import AgentHooks"],["__future__",10,"from __future__ import annotations"],["collections",15,"from collections.abc import Callable, Mapping, Sequence"],["agentdeck.authoring.compile",163,"from agentdeck.authoring.compile import compile_agent"]],"agentdeck.core.status":[["dataclasses",19,"from dataclasses import dataclass"],["typing",21,"from typing import TYPE_CHECKING, Any"],["collections",27,"from collections.abc import Mapping, Sequence"],["agentdeck.core.events",29,"from agentdeck.core.events import Event"],["agentdeck.core.events",24,"from agentdeck.core.events import TERMINAL_KINDS, RunInterrupted, RunResumed"],["enum",20,"from enum import StrEnum"],["agentdeck.core.content",23,"from agentdeck.core.content import answer_of"],["__future__",17,"from __future__ import annotations"]],"agentdeck.core.ports":[["agentdeck.core.ports.lease",13,"from agentdeck.core.ports.lease import LeasePort"],["agentdeck.core.ports.store",15,"from agentdeck.core.ports.store import EventStorePort, RunSummary, SessionClaim"],["agentdeck.core.ports.tools",16,"from agentdeck.core.ports.tools import ToolSet, ToolSourcePort"],["agentdeck.core.ports.sink",14,"from agentdeck.core.ports.sink import Observer"],["agentdeck.core.ports.control",11,"from agentdeck.core.ports.control import ControlPort"],["agentdeck.core.ports.executor",12,"from agentdeck.core.ports.executor import Executor"]],"agentdeck.errors":[["agentdeck.core.errors",11,"from agentdeck.core.errors import ("],["__future__",9,"from __future__ import annotations"]],"agentdeck.core.workers":[["collections",17,"from collections.abc import Callable"],["__future__",10,"from __future__ import annotations"],["asyncio",12,"import asyncio"],["typing",14,"from typing import TYPE_CHECKING, Any"],["concurrent",13,"from concurrent.futures import Future, ThreadPoolExecutor"]],"agentdeck.adapters.leases.memory.port":[["collections",18,"from collections.abc import Callable, Collection"],["datetime",19,"from datetime import timedelta"],["agentdeck.core.ports.lease",15,"from agentdeck.core.ports.lease import LeasePort"],["typing",13,"from typing import TYPE_CHECKING"],["datetime",12,"from datetime import UTC, datetime"],["__future__",10,"from __future__ import annotations"]],"agentdeck.core":[["agentdeck.core.reporting",56,"from agentdeck.core.reporting import Reporter"],["agentdeck.core.context",20,"from agentdeck.core.context import RunContext"],["agentdeck.core.invocable",55,"from agentdeck.core.invocable import InvocableKind, InvocableSpec"],["agentdeck.core.content",7,"from agentdeck.core.content import ("],["agentdeck.core.status",57,"from agentdeck.core.status import RunStatus, can_resume, status_of"],["agentdeck.core.events",21,"from agentdeck.core.events import ("]],"agentdeck.core.ports.executor":[["__future__",7,"from __future__ import annotations"],["agentdeck.core.events",17,"from agentdeck.core.events import Event, KnownPayload"],["typing",10,"from typing import TYPE_CHECKING, ClassVar"],["agentdeck.core.content",15,"from agentdeck.core.content import Input"],["collections",13,"from collections.abc import AsyncGenerator, Sequence"],["agentdeck.core.invocable",18,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.context",16,"from agentdeck.core.context import RunContext"],["abc",9,"from abc import ABC, abstractmethod"]],"agentdeck.observers":[["agentdeck.errors",22,"from agentdeck.errors import ConfigError"],["agents",41,"from agents import set_trace_processors"],["agentdeck.core.ports",21,"from agentdeck.core.ports import Observer"],["agentdeck.views",27,"from agentdeck.views import View"],["agentdeck.adapters.telemetry.langfuse.client",116,"from agentdeck.adapters.telemetry.langfuse.client import langfuse_sink"],["__future__",16,"from __future__ import annotations"],["agentdeck.runtime.settings",23,"from agentdeck.runtime.settings import get_settings"],["typing",19,"from typing import TYPE_CHECKING"],["agentdeck.core.events",26,"from agentdeck.core.events import Event"],["pathlib",18,"from pathlib import Path"],["openinference",42,"from openinference.instrumentation.openai_agents import ( # ty: ignore[unresolved-import] - [observability] extra"]],"agentdeck.surfaces":[],"agentdeck.adapters.executors.native.executor":[["agentdeck.core.events",19,"from agentdeck.core.events import RunCompleted, Usage"],["typing",14,"from typing import TYPE_CHECKING, Any, ClassVar"],["asyncio",11,"import asyncio"],["dataclasses",13,"from dataclasses import dataclass, field"],["agentdeck.core.control",18,"from agentdeck.core.control import ControlSignalled"],["agentdeck.core.ports",21,"from agentdeck.core.ports import Executor"],["agentdeck.core.context",17,"from agentdeck.core.context import WorkflowCtx"],["agentdeck.core.content",28,"from agentdeck.core.content import Input"],["agentdeck.core.content",16,"from agentdeck.core.content import DataBlock, TextBlock, answer_of"],["agentdeck.core.context",29,"from agentdeck.core.context import Agents, Invoker, RunContext"],["contextlib",12,"from contextlib import suppress"],["agentdeck.core.workers",33,"from agentdeck.core.workers import SyncToolWorkers"],["agentdeck.core.status",22,"from agentdeck.core.status import SUSPENDED_KINDS, Play, continuation_of"],["collections",26,"from collections.abc import AsyncGenerator, Sequence"],["agentdeck.core.invocable",20,"from agentdeck.core.invocable import NativeExecution, NativeInvocable"],["agentdeck.core.events",30,"from agentdeck.core.events import Event, KnownPayload"],["__future__",9,"from __future__ import annotations"],["agentdeck.errors",23,"from agentdeck.errors import ConfigError"],["agentdeck.core.invocable",31,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.status",32,"from agentdeck.core.status import Continuation"]],"agentdeck.core.base":[["pydantic",12,"from pydantic import AfterValidator, BaseModel, ConfigDict, JsonValue"],["math",9,"from math import isfinite"],["__future__",7,"from __future__ import annotations"],["typing",10,"from typing import Annotated"]],"agentdeck.adapters.tools.mcp.source":[["typing",11,"from typing import TYPE_CHECKING"],["agentdeck.core.ports.tools",14,"from agentdeck.core.ports.tools import ToolSet, ToolSourcePort"],["__future__",9,"from __future__ import annotations"],["agentdeck.core.invocable",17,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.adapters.tools.mcp.wiring",13,"from agentdeck.adapters.tools.mcp.wiring import mcp_status_banner, resolve_agent_mcp_status"]],"agentdeck.authoring.native":[["collections",20,"from collections.abc import Callable"],["dataclasses",11,"from dataclasses import dataclass"],["__future__",8,"from __future__ import annotations"],["agentdeck.authoring.injection",22,"from agentdeck.authoring.injection import CallableAnalysis"],["typing",12,"from typing import TYPE_CHECKING, Any"],["agentdeck.core.context",15,"from agentdeck.core.context import ToolCtx, WorkflowCtx"],["agentdeck.errors",17,"from agentdeck.errors import ConfigError"],["agentdeck.authoring.injection",14,"from agentdeck.authoring.injection import analyze_callable, describe_callable"],["agentdeck.core.invocable",16,"from agentdeck.core.invocable import InvocableKind, NativeExecution"],["inspect",10,"import inspect"]],"agentdeck.adapters":[],"agentdeck.runtime":[],"agentdeck.adapters.tools.mcp":[["agentdeck.adapters.tools.mcp.transport",7,"from agentdeck.adapters.tools.mcp.transport import MCPServerStreamableHttpResilient"],["agentdeck.adapters.tools.mcp.lifecycle",5,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["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"],["__future__",3,"from __future__ import annotations"]],"agentdeck.adapters.leases":[],"agentdeck.adapters.telemetry.langfuse.sink":[["agentdeck.core.content",30,"from agentdeck.core.content import DataBlock, ImageBlock, ResourceBlock, TextBlock"],["re",26,"import re"],["__future__",21,"from __future__ import annotations"],["collections",48,"from collections.abc import Mapping"],["agentdeck.core.content",51,"from agentdeck.core.content import Input"],["agentdeck.core.events",31,"from agentdeck.core.events import ("],["logging",25,"import logging"],["dataclasses",27,"from dataclasses import dataclass, field"],["agentdeck.core.events",52,"from agentdeck.core.events import Event, Usage"],["agentdeck.core.ports",45,"from agentdeck.core.ports import Observer"],["agentdeck.adapters.telemetry.langfuse.trace",50,"from agentdeck.adapters.telemetry.langfuse.trace import Level, Observation, ObservationKind, Tracer"],["json",24,"import json"],["typing",28,"from typing import TYPE_CHECKING, Any"],["asyncio",23,"import asyncio"]],"agentdeck.authoring.runners":[["agentdeck.authoring.runners.agent",3,"from agentdeck.authoring.runners.agent import BaseRunner, HeadlessRunner, StreamDone"]],"agentdeck.deck":[["agentdeck.core.content",64,"from agentdeck.core.content import DataBlock, TextBlock, coerce_input"],["agentdeck.mcp",87,"from agentdeck.mcp import MCP"],["functools",39,"import functools"],["agentdeck.adapters.executors.openai_agents",49,"from agentdeck.adapters.executors.openai_agents import ExecutionStore, OpenAIAgentsExecutor, SessionFactory"],["agentdeck.runtime.service",103,"from agentdeck.runtime.service import PendingRun, Runtime"],["agentdeck.runtime.settings",90,"from agentdeck.runtime.settings import Settings, get_settings"],["agentdeck.core.events",67,"from agentdeck.core.events import ("],["agentdeck.adapters.executors.native",48,"from agentdeck.adapters.executors.native import NativeExecutor"],["agentdeck.adapters.tools.mcp.lifecycle",50,"from agentdeck.adapters.tools.mcp.lifecycle import MCPLifecycle"],["agentdeck.core.workers",78,"from agentdeck.core.workers import SyncToolWorkers"],["agentdeck.core.context",65,"from agentdeck.core.context import RunContext"],["__future__",36,"from __future__ import annotations"],["builtins",94,"import builtins"],["agentdeck.core.content",100,"from agentdeck.core.content import Input"],["agentdeck.runtime.discovery",88,"from agentdeck.runtime.discovery import EXECUTOR_FOR_KIND, InvocableRegistry"],["pathlib",44,"from pathlib import Path"],["agentdeck.core.ports",102,"from agentdeck.core.ports import EventStorePort, Executor"],["agentdeck.authoring.skills",56,"from agentdeck.authoring.skills import skills_resolver"],["agentdeck.authoring.interrupts",99,"from agentdeck.authoring.interrupts import InterruptResult"],["agentdeck.core.status",77,"from agentdeck.core.status import PRECONDITIONS, SUSPENDED_KINDS, Controls, Operation, RunStatus, Verdict, can_of"],["asyncio",38,"import asyncio"],["agentdeck.composition",57,"from agentdeck.composition import ("],["agentdeck.authoring.compile",52,"from agentdeck.authoring.compile import compile_agent, refresh_mcp_status"],["agentdeck.skills",91,"from agentdeck.skills import Skills"],["agentdeck.authoring.interrupts",54,"from agentdeck.authoring.interrupts import interrupt_result"],["agentdeck.authoring.injection",53,"from agentdeck.authoring.injection import declared_context_type"],["agentdeck.core.invocable",75,"from agentdeck.core.invocable import AgentInstance, InvocableKind, InvocableSpec"],["agentdeck.core.events",101,"from agentdeck.core.events import Event, Usage"],["uuid",41,"import uuid"],["logging",40,"import logging"],["agentdeck.runtime.registry",89,"from agentdeck.runtime.registry import PROJECT_DIR, PluginRegistry, mount_project_dir"],["collections",95,"from collections.abc import AsyncGenerator, AsyncIterator, Generator, Mapping, Sequence"],["agentdeck.authoring.native",55,"from agentdeck.authoring.native import NativeDefinition"],["agentdeck.authoring.agent",51,"from agentdeck.authoring.agent import Agent"],["agentdeck.core.control",66,"from agentdeck.core.control import Signal"],["agentdeck.errors",79,"from agentdeck.errors import ("],["agentdeck.core.ports",76,"from agentdeck.core.ports import Observer"],["types",45,"from types import MappingProxyType"],["collections",42,"from collections import ChainMap"],["typing",46,"from typing import TYPE_CHECKING, Any, Literal, cast"],["agents",97,"from agents.memory.session import Session"],["agentdeck.serve",1234,"from agentdeck.serve import build_asgi_app"],["contextlib",43,"from contextlib import aclosing, suppress"]],"agentdeck.core.invocable":[["agentdeck.core.base",15,"from agentdeck.core.base import CoreModel"],["enum",10,"from enum import StrEnum"],["dataclasses",9,"from dataclasses import dataclass"],["__future__",7,"from __future__ import annotations"],["collections",18,"from collections.abc import Callable"],["pydantic",13,"from pydantic import ConfigDict, Field"],["typing",11,"from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable"]],"agentdeck.surfaces.serve.app":[["agentdeck.runtime.service",22,"from agentdeck.runtime.service import Runtime"],["http",8,"from http import HTTPStatus"],["agentdeck.core.content",15,"from agentdeck.core.content import coerce_input"],["__future__",6,"from __future__ import annotations"],["collections",19,"from collections.abc import AsyncIterator"],["agentdeck.core.events",21,"from agentdeck.core.events import Event"],["agentdeck.errors",16,"from agentdeck.errors import SessionBusyError"],["fastapi",12,"from fastapi.responses import JSONResponse, StreamingResponse"],["typing",9,"from typing import TYPE_CHECKING, Any"],["pydantic",13,"from pydantic import BaseModel, Field"],["fastapi",11,"from fastapi import FastAPI"]],"agentdeck.adapters.stores.sqlite.store":[["functools",16,"from functools import partial"],["agentdeck.core.ports",21,"from agentdeck.core.ports import EventStorePort, RunSummary, SessionClaim"],["agentdeck.core.status",32,"from agentdeck.core.status import RunStatus"],["agentdeck.core.context",30,"from agentdeck.core.context import RunContext"],["asyncio",11,"import asyncio"],["agentdeck.errors",23,"from agentdeck.errors import DuplicateKeyError, StoreError"],["datetime",27,"from datetime import timedelta"],["agentdeck.adapters.stores",19,"from agentdeck.adapters.stores import _refuse_if_cancelled"],["datetime",15,"from datetime import datetime"],["json",12,"import json"],["typing",17,"from typing import TYPE_CHECKING"],["agentdeck.core.status",22,"from agentdeck.core.status import LIFECYCLE_KINDS, STATES, can_resume, status_of"],["agentdeck.core.events",31,"from agentdeck.core.events import KnownPayload, RunResumed, RunStarted"],["pathlib",28,"from pathlib import Path"],["contextlib",14,"from contextlib import suppress"],["agentdeck.core.events",20,"from agentdeck.core.events import Event"],["collections",26,"from collections.abc import Callable, Sequence"],["sqlite3",13,"import sqlite3"],["__future__",9,"from __future__ import annotations"]],"agentdeck.adapters.stores.postgres":[["agentdeck.adapters.stores.postgres.store",3,"from agentdeck.adapters.stores.postgres.store import PostgresEventStore"]],"agentdeck.core.content":[["base64",13,"import base64"],["typing",14,"from typing import Annotated, Any, Literal, get_args"],["agentdeck.core.base",26,"from agentdeck.core.base import CoreModel, JsonData"],["__future__",11,"from __future__ import annotations"],["pydantic",16,"from pydantic import ("]],"agentdeck.skills":[["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"],["agentdeck.errors",15,"from agentdeck.errors import DOCS_URL, ConfigError, NotFoundError"],["collections",19,"from collections.abc import Sequence"],["__future__",10,"from __future__ import annotations"]],"agentdeck.skills.bundle":[["yaml",10,"import yaml"],["agentdeck.errors",12,"from agentdeck.errors import ConfigError"],["__future__",3,"from __future__ import annotations"],["dataclasses",6,"from dataclasses import dataclass, field"],["typing",8,"from typing import Any"],["re",5,"import re"],["pathlib",7,"from pathlib import Path"]],"agentdeck.core.ports.tools":[["agentdeck.core.invocable",22,"from agentdeck.core.invocable import InvocableSpec"],["agentdeck.core.base",19,"from agentdeck.core.base import CoreModel"],["pydantic",17,"from pydantic import ConfigDict"],["typing",15,"from typing import TYPE_CHECKING, Any"],["__future__",12,"from __future__ import annotations"],["abc",14,"from abc import ABC, abstractmethod"]],"agentdeck.adapters.tools.mcp.transport":[["logging",12,"import logging"],["agents",17,"from agents.mcp import MCPServerStreamableHttp"],["__future__",9,"from __future__ import annotations"],["contextlib",13,"from contextlib import AsyncExitStack, suppress"],["typing",14,"from typing import TYPE_CHECKING, Any, TypeVar"],["collections",20,"from collections.abc import Awaitable, Callable"],["asyncio",11,"import asyncio"],["httpx",16,"import httpx"]],"agentdeck.adapters.stores.sqlite":[["agentdeck.adapters.stores.sqlite.store",3,"from agentdeck.adapters.stores.sqlite.store import SqliteEventStore"]],"agentdeck.authoring.instructions":[["typing",21,"from typing import TYPE_CHECKING, Any"],["inspect",20,"import inspect"],["agentdeck.authoring.injection",23,"from agentdeck.authoring.injection import analyze_callable, check_context_type, describe_callable"],["__future__",18,"from __future__ import annotations"],["collections",28,"from collections.abc import Callable"],["agentdeck.errors",25,"from agentdeck.errors import ConfigError"],["agentdeck.core.context",24,"from agentdeck.core.context import RunContext, ToolCtx"]],"agentdeck.adapters.executors.openai_agents.runconfig":[["agents",23,"from agents.models.multi_provider import MultiProviderMap"],["typing",19,"from typing import TYPE_CHECKING, Any, cast"],["__future__",15,"from __future__ import annotations"],["dataclasses",18,"from dataclasses import dataclass"],["agents",22,"from agents import ModelSettings, MultiProvider, OpenAIProvider, RunConfig, default_handoff_history_mapper"],["agents",28,"from agents.items import TResponseInputItem"],["agents",27,"from agents.handoffs import HandoffHistoryMapper"],["httpx",21,"import httpx"],["openai",24,"from openai import AsyncOpenAI"],["os",17,"import os"]],"agentdeck.adapters.stores.memory":[["agentdeck.adapters.stores.memory.store",3,"from agentdeck.adapters.stores.memory.store import MemoryEventStore"]],"agentdeck.adapters.executors.openai_agents":[["agentdeck.adapters.executors.openai_agents.sessions",7,"from agentdeck.adapters.executors.openai_agents.sessions import ExecutionStore, SessionFactory"],["agentdeck.adapters.executors.openai_agents.executor",5,"from agentdeck.adapters.executors.openai_agents.executor import OpenAIAgentsExecutor"],["__future__",3,"from __future__ import annotations"],["agentdeck.adapters.executors.openai_agents.runconfig",6,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings"]],"agentdeck.authoring":[["agentdeck.authoring.agent",7,"from agentdeck.authoring.agent import Agent, AgentDeclaration"],["agentdeck.authoring.interrupts",8,"from agentdeck.authoring.interrupts import InterruptResult"]],"agentdeck.adapters.tools.mcp.lifecycle":[["agentdeck.errors",24,"from agentdeck.errors import ConfigError"],["logging",20,"import logging"],["agentdeck.adapters.tools.mcp.transport",23,"from agentdeck.adapters.tools.mcp.transport import MCPServerStreamableHttpResilient"],["collections",27,"from collections.abc import Sequence"],["agents",29,"from agents.mcp import MCPServer"],["typing",21,"from typing import TYPE_CHECKING, Any"],["asyncio",19,"import asyncio"],["__future__",17,"from __future__ import annotations"]],"agentdeck.testing":[["threading",18,"import threading"],["openai",27,"from openai.types.responses import ("],["json",17,"import json"],["http",20,"from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer"],["agents",24,"from agents.items import ModelResponse"],["agents",26,"from agents.usage import Usage"],["asyncio",16,"import asyncio"],["openai",36,"from openai.types.responses.response_usage import InputTokensDetails, OutputTokensDetails"],["agents",25,"from agents.models.interface import Model"],["contextlib",19,"from contextlib import contextmanager"],["typing",21,"from typing import TYPE_CHECKING, Any"],["__future__",14,"from __future__ import annotations"],["collections",39,"from collections.abc import AsyncIterator, Callable, Iterator, Sequence"],["unittest",22,"from unittest.mock import patch"]],"agentdeck.core.ports.store":[["agentdeck.core.status",13,"from agentdeck.core.status import RunStatus, status_of"],["agentdeck.core.events",20,"from agentdeck.core.events import Event, KnownPayload, RunResumed, RunStarted"],["__future__",7,"from __future__ import annotations"],["datetime",17,"from datetime import timedelta"],["typing",11,"from typing import TYPE_CHECKING"],["dataclasses",10,"from dataclasses import dataclass"],["collections",16,"from collections.abc import Sequence"],["abc",9,"from abc import ABC, abstractmethod"],["agentdeck.core.context",19,"from agentdeck.core.context import RunContext"]],"agentdeck.adapters.leases.sqlite.port":[["typing",20,"from typing import TYPE_CHECKING"],["contextlib",18,"from contextlib import suppress"],["functools",19,"from functools import partial"],["agentdeck.errors",23,"from agentdeck.errors import StoreError"],["sqlite3",17,"import sqlite3"],["agentdeck.core.ports.lease",22,"from agentdeck.core.ports.lease import LeasePort"],["pathlib",28,"from pathlib import Path"],["__future__",14,"from __future__ import annotations"],["datetime",27,"from datetime import timedelta"],["collections",26,"from collections.abc import Callable, Collection"],["asyncio",16,"import asyncio"]],"agentdeck.core.ports.lease":[["typing",17,"from typing import TYPE_CHECKING"],["abc",16,"from abc import ABC, abstractmethod"],["datetime",21,"from datetime import timedelta"],["collections",20,"from collections.abc import Collection"],["__future__",14,"from __future__ import annotations"]],"agentdeck.mcp":[["typing",14,"from typing import Any"],["pathlib",13,"from pathlib import Path"],["__future__",10,"from __future__ import annotations"],["json",12,"import json"],["agentdeck.errors",18,"from agentdeck.errors import ConfigError"],["pydantic",16,"from pydantic import BaseModel, ConfigDict, Field"]],"agentdeck.adapters.control.memory.port":[["__future__",5,"from __future__ import annotations"],["agentdeck.core.ports.control",8,"from agentdeck.core.ports.control import ControlPort"],["agentdeck.core.control",7,"from agentdeck.core.control import ControlSignal, Signal"]],"agentdeck.adapters.leases.sqlite":[["agentdeck.adapters.leases.sqlite.port",3,"from agentdeck.adapters.leases.sqlite.port import SqliteLeasePort"]],"agentdeck.composition":[["agentdeck.adapters.executors.openai_agents.runconfig",23,"from agentdeck.adapters.executors.openai_agents.runconfig import RunSettings"],["agentdeck.core.ports",45,"from agentdeck.core.ports import ControlPort, EventStorePort, Executor, LeasePort, Observer"],["agentdeck.adapters.leases.sqlite",25,"from agentdeck.adapters.leases.sqlite import SqliteLeasePort"],["agentdeck.adapters.stores.memory",26,"from agentdeck.adapters.stores.memory import MemoryEventStore"],["agentdeck.adapters.leases.memory",24,"from agentdeck.adapters.leases.memory import MemoryLeasePort"],["agentdeck.errors",28,"from agentdeck.errors import DOCS_URL"],["agentdeck.adapters.stores.redis",235,"from agentdeck.adapters.stores.redis import RedisEventStore"],["datetime",42,"from datetime import timedelta"],["__future__",16,"from __future__ import annotations"],["agentdeck.core.invocable",44,"from agentdeck.core.invocable import InvocableSpec"],["collections",41,"from collections.abc import Mapping, Sequence"],["agentdeck.adapters.control.memory",21,"from agentdeck.adapters.control.memory import MemoryControlPort"],["agentdeck.adapters.stores.postgres",244,"from agentdeck.adapters.stores.postgres import PostgresEventStore"],["agentdeck.runtime.service",30,"from agentdeck.runtime.service import Runtime"],["agentdeck.runtime.settings",31,"from agentdeck.runtime.settings import ("],["typing",19,"from typing import TYPE_CHECKING"],["agentdeck.adapters.control.sqlite",22,"from agentdeck.adapters.control.sqlite import SqliteControlPort"],["logging",18,"import logging"],["agentdeck.adapters.stores.sqlite",27,"from agentdeck.adapters.stores.sqlite import SqliteEventStore"],["agentdeck.observers",112,"from agentdeck.observers import LangfuseObserver"],["agentdeck.runtime.discovery",29,"from agentdeck.runtime.discovery import InvocableRegistry"]],"agentdeck.adapters.stores":[["agentdeck.errors",8,"from agentdeck.errors import RunStateError"],["typing",5,"from typing import TYPE_CHECKING"],["__future__",3,"from __future__ import annotations"],["agentdeck.core.status",7,"from agentdeck.core.status import RunStatus"],["agentdeck.core.context",11,"from agentdeck.core.context import RunContext"]],"agentdeck.authoring.web_search":[["__future__",10,"from __future__ import annotations"],["httpx",12,"import httpx"],["agentdeck.runtime.settings",15,"from agentdeck.runtime.settings import get_settings"],["agents",13,"from agents import function_tool"]],"agentdeck.authoring.injection":[["collections",38,"from collections.abc import Callable, Iterable, Iterator, Mapping"],["__future__",27,"from __future__ import annotations"],["dataclasses",31,"from dataclasses import dataclass"],["agentdeck.errors",35,"from agentdeck.errors import ConfigError, ContextTypeError"],["types",30,"import types"],["inspect",29,"import inspect"],["agentdeck.core.context",34,"from agentdeck.core.context import ToolCtx, WorkflowCtx"],["typing",32,"from typing import TYPE_CHECKING, Any, Union, get_args, get_origin, get_type_hints"]]}
|
|
@@ -8,6 +8,29 @@ Fixed / Security` order - and are written to be attached to a release as-is.
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [5.2.1] - 2026-08-29
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **Release bookkeeping is now scripted** (`scripts/release_bump.py`), and the docs-site footer
|
|
16
|
+
shows the current version instead of a stale mid-page marker (#560, #564).
|
|
17
|
+
|
|
18
|
+
## [5.2.0] - 2026-08-29
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **A deployment guide for running a Deck as a service** (#353): the
|
|
23
|
+
`AGENTDECK_EVENTS`/`AGENTDECK_CONTROL`/`AGENTDECK_SESSION` durability defaults, a systemd unit,
|
|
24
|
+
`aclose()` on `SIGTERM`, uvicorn's graceful-shutdown behavior against an open SSE connection,
|
|
25
|
+
and reverse-proxy buffering. See [Deployment](https://agentdecksdk.com/operate/deployment).
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- **`Reporter` is always synchronous.** `ctx.reporter.info()`/`.warning()`/`.error()`/`.report()`
|
|
30
|
+
are plain methods now, not coroutines - drop the `await` at every call site. `SyncReporter` is
|
|
31
|
+
gone; `ToolCtx.reporter` returns the same `Reporter` whether the body runs on the event loop or
|
|
32
|
+
a worker thread. The buffer it enqueues into is thread-safe either way.
|
|
33
|
+
|
|
11
34
|
## [5.1.0] - 2026-08-28
|
|
12
35
|
|
|
13
36
|
### Added
|
|
@@ -2557,7 +2580,9 @@ documentation platform and its CI.
|
|
|
2557
2580
|
`runtime/tools.py`, `PluginRegistry.pick`, `skill_runtime` LLM/batch
|
|
2558
2581
|
helpers; deps typer, rich, prompt-toolkit.
|
|
2559
2582
|
|
|
2560
|
-
[Unreleased]: https://github.com/agentdecksdk/agentdeck/compare/v5.1
|
|
2583
|
+
[Unreleased]: https://github.com/agentdecksdk/agentdeck/compare/v5.2.1...HEAD
|
|
2584
|
+
[5.2.1]: https://github.com/agentdecksdk/agentdeck/compare/v5.2.0...v5.2.1
|
|
2585
|
+
[5.2.0]: https://github.com/agentdecksdk/agentdeck/compare/v5.1.0...v5.2.0
|
|
2561
2586
|
[5.1.0]: https://github.com/agentdecksdk/agentdeck/compare/v5.0.3...v5.1.0
|
|
2562
2587
|
[5.0.3]: https://github.com/agentdecksdk/agentdeck/compare/v5.0.0...v5.0.3
|
|
2563
2588
|
[5.0.0]: https://github.com/agentdecksdk/agentdeck/compare/v4.0.5...v5.0.0
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
# carry, and pytest's default traceback buries the assertion under frames nobody reads.
|
|
6
6
|
# `make check V=1` restores every tool's own full output.
|
|
7
7
|
V ?= 0
|
|
8
|
-
|
|
8
|
+
# In-repo, not /tmp: two worktrees running `make check` at once each get their own tree, so the
|
|
9
|
+
# log can never interleave with another checkout's (#518).
|
|
10
|
+
LOG = $(CURDIR)/.make-$@.log
|
|
9
11
|
ifeq ($(V),0)
|
|
10
12
|
E = @
|
|
11
13
|
PYTEST_ARGS = -q --no-header --tb=line -rf
|
|
@@ -283,7 +283,7 @@ def _context_for(
|
|
|
283
283
|
|
|
284
284
|
Only a workflow gets the invoker and the agent mint - a tool that could start another run is
|
|
285
285
|
no longer a leaf. A THREAD-executed tool's context also carries the running loop, which
|
|
286
|
-
switches its ``
|
|
286
|
+
switches its ``safepoint`` to a refusal.
|
|
287
287
|
"""
|
|
288
288
|
context_class = definition.context_class
|
|
289
289
|
if context_class is None:
|
|
@@ -63,7 +63,7 @@ def tool(target: Callable[..., Any] | None = None, *, name: str | None = None, d
|
|
|
63
63
|
|
|
64
64
|
@tool
|
|
65
65
|
async def search(ctx: ToolCtx[Corpus], query: str) -> list[str]:
|
|
66
|
-
|
|
66
|
+
ctx.reporter.info("Searching", query=query)
|
|
67
67
|
return await ctx.data.search(query)
|
|
68
68
|
|
|
69
69
|
The context parameter is injected by the runtime and is absent from the schema the model is
|
|
@@ -153,8 +153,8 @@ def _bridge(analysis: CallableAnalysis, workers: SyncToolWorkers | None) -> Call
|
|
|
153
153
|
f"{type(run).__name__} rather than an AgentDeck run context - a tool compiled by "
|
|
154
154
|
"AgentDeck has to be played by an AgentDeck run."
|
|
155
155
|
)
|
|
156
|
-
# Absent for an awaited body: it never leaves this loop, so it never needs
|
|
157
|
-
#
|
|
156
|
+
# Absent for an awaited body: it never leaves this loop, so it never needs safepoint()'s
|
|
157
|
+
# refusal to guard an await point it can reach the ordinary way.
|
|
158
158
|
tool_ctx = ToolCtx(run, _loop=None if awaits else asyncio.get_running_loop())
|
|
159
159
|
bound = visible_signature.bind(*supplied, **kwargs)
|
|
160
160
|
# `BoundArguments` already knows how to split a name -> value mapping back into positional
|
|
@@ -27,7 +27,7 @@ from uuid import uuid4
|
|
|
27
27
|
from agentdeck.core.control import Gate, RunPausedError
|
|
28
28
|
from agentdeck.core.errors import DOCS_URL, ConfigError
|
|
29
29
|
from agentdeck.core.events import KnownPayload, RunInterrupted
|
|
30
|
-
from agentdeck.core.reporting import Reporter
|
|
30
|
+
from agentdeck.core.reporting import Reporter
|
|
31
31
|
from agentdeck.core.status import RunStatus
|
|
32
32
|
|
|
33
33
|
logger = logging.getLogger(__name__)
|
|
@@ -168,8 +168,8 @@ class ToolCtx[T]:
|
|
|
168
168
|
A view over :class:`RunContext`, not a copy: ``data`` is the caller's own object, by
|
|
169
169
|
reference, never serialized into a prompt. ``_channel`` is present only where the executor
|
|
170
170
|
playing this body can park it in place; ``_loop`` only when it runs on a worker thread, which
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
makes :meth:`safepoint` refuse. Orchestration (``invoke``, ``parallel``, ``ask``, ``approve``)
|
|
172
|
+
is :class:`WorkflowCtx`'s alone.
|
|
173
173
|
"""
|
|
174
174
|
|
|
175
175
|
_run: RunContext
|
|
@@ -194,13 +194,10 @@ class ToolCtx[T]:
|
|
|
194
194
|
return cast("AgentInstance | None", self._run.agent)
|
|
195
195
|
|
|
196
196
|
@property
|
|
197
|
-
def reporter(self) -> Reporter
|
|
198
|
-
"""The run's report channel:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if self._loop is None:
|
|
202
|
-
return self._run.reporter
|
|
203
|
-
return SyncReporter(self._run.reporter, self._loop)
|
|
197
|
+
def reporter(self) -> Reporter:
|
|
198
|
+
"""The run's report channel: always synchronous, so a THREAD-executed body calls it the
|
|
199
|
+
same way an ASYNC one does."""
|
|
200
|
+
return self._run.reporter
|
|
204
201
|
|
|
205
202
|
@property
|
|
206
203
|
def run_id(self) -> str:
|