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