agentdeck-sdk 3.1.0__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-3.1.0/.agentdeck/agents/greeter/agent.py +6 -0
- agentdeck_sdk-3.1.0/.agents/skills/open-issue/SKILL.md +30 -0
- agentdeck_sdk-3.1.0/.agents/skills/release/SKILL.md +18 -0
- agentdeck_sdk-3.1.0/.agents/skills/ship-issue/SKILL.md +20 -0
- agentdeck_sdk-3.1.0/.claude/agents/deck-dev.md +24 -0
- agentdeck_sdk-3.1.0/.claude/agents/deck-reviewer.md +23 -0
- agentdeck_sdk-3.1.0/.claude/agents/docs-reviewer.md +42 -0
- agentdeck_sdk-3.1.0/.claude/agents/docs-writer.md +58 -0
- agentdeck_sdk-3.1.0/.claude/skills/open-issue/SKILL.md +30 -0
- agentdeck_sdk-3.1.0/.claude/skills/release/SKILL.md +19 -0
- agentdeck_sdk-3.1.0/.claude/skills/ship-issue/SKILL.md +79 -0
- agentdeck_sdk-3.1.0/.codex/agents/deck-dev.toml +5 -0
- agentdeck_sdk-3.1.0/.codex/agents/deck-reviewer.toml +5 -0
- agentdeck_sdk-3.1.0/.dockerignore +7 -0
- agentdeck_sdk-3.1.0/.env.example +48 -0
- agentdeck_sdk-3.1.0/.gitattributes +3 -0
- agentdeck_sdk-3.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +69 -0
- agentdeck_sdk-3.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +68 -0
- agentdeck_sdk-3.1.0/.github/ISSUE_TEMPLATE/finding.yml +172 -0
- agentdeck_sdk-3.1.0/.github/PULL_REQUEST_TEMPLATE.md +19 -0
- agentdeck_sdk-3.1.0/.github/workflows/ci.yml +97 -0
- agentdeck_sdk-3.1.0/.github/workflows/docs-check.yml +50 -0
- agentdeck_sdk-3.1.0/.github/workflows/docs-pages.yml +77 -0
- agentdeck_sdk-3.1.0/.github/workflows/release.yml +157 -0
- agentdeck_sdk-3.1.0/.gitignore +21 -0
- agentdeck_sdk-3.1.0/.import_linter_cache/.gitignore +2 -0
- agentdeck_sdk-3.1.0/.import_linter_cache/CACHEDIR.TAG +3 -0
- agentdeck_sdk-3.1.0/.import_linter_cache/agentdeck.meta.json +1 -0
- agentdeck_sdk-3.1.0/.import_linter_cache/cc0de4ae2e5697bf7cf3a0b9c3aff14b2ece24cd.data.json +1 -0
- agentdeck_sdk-3.1.0/.importlinter +245 -0
- agentdeck_sdk-3.1.0/.pre-commit-config.yaml +30 -0
- agentdeck_sdk-3.1.0/AGENTS.md +1 -0
- agentdeck_sdk-3.1.0/CHANGELOG.md +1860 -0
- agentdeck_sdk-3.1.0/CLAUDE.md +119 -0
- agentdeck_sdk-3.1.0/CODE_OF_CONDUCT.md +83 -0
- agentdeck_sdk-3.1.0/CONTRIBUTING.md +86 -0
- agentdeck_sdk-3.1.0/Dockerfile +9 -0
- agentdeck_sdk-3.1.0/LICENSE +21 -0
- agentdeck_sdk-3.1.0/Makefile +49 -0
- agentdeck_sdk-3.1.0/PKG-INFO +222 -0
- agentdeck_sdk-3.1.0/README.md +175 -0
- agentdeck_sdk-3.1.0/SECURITY.md +56 -0
- agentdeck_sdk-3.1.0/agentdeck/README.md +50 -0
- agentdeck_sdk-3.1.0/agentdeck/__init__.py +51 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/control/__init__.py +1 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/control/memory/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/control/memory/port.py +25 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/control/sqlite/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/control/sqlite/port.py +111 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/__init__.py +1 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/langgraph/__init__.py +8 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/langgraph/checkpointer.py +205 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/langgraph/engine.py +410 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/openai_agents/__init__.py +9 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/openai_agents/engine.py +321 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/openai_agents/reconcile.py +178 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/openai_agents/runconfig.py +118 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/openai_agents/sessions.py +100 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/openai_agents/translate.py +124 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/stub/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/engines/stub/engine.py +100 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/__init__.py +1 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/memory/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/memory/store.py +148 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/postgres/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/postgres/store.py +374 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/redis/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/redis/store.py +359 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/sqlite/__init__.py +5 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/stores/sqlite/store.py +338 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/telemetry/__init__.py +1 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/telemetry/langfuse/__init__.py +18 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/telemetry/langfuse/client.py +180 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/telemetry/langfuse/sink.py +366 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/telemetry/langfuse/trace.py +88 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/tools/__init__.py +1 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/tools/mcp/__init__.py +18 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/tools/mcp/lifecycle.py +178 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/tools/mcp/source.py +47 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/tools/mcp/transport.py +234 -0
- agentdeck_sdk-3.1.0/agentdeck/adapters/tools/mcp/wiring.py +63 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/__init__.py +22 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/agent.py +169 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/compile.py +250 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/graphs.py +145 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/hooks.py +117 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/injection.py +233 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/instructions.py +80 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/interrupts.py +37 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/nodes.py +140 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/runners/__init__.py +6 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/runners/agent.py +171 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/runners/workflow.py +99 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/skills.py +56 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/state.py +44 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/timers.py +44 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/tools.py +147 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/web_search.py +43 -0
- agentdeck_sdk-3.1.0/agentdeck/authoring/workflow.py +266 -0
- agentdeck_sdk-3.1.0/agentdeck/cli.py +56 -0
- agentdeck_sdk-3.1.0/agentdeck/composition.py +213 -0
- agentdeck_sdk-3.1.0/agentdeck/core/__init__.py +110 -0
- agentdeck_sdk-3.1.0/agentdeck/core/base.py +47 -0
- agentdeck_sdk-3.1.0/agentdeck/core/content.py +166 -0
- agentdeck_sdk-3.1.0/agentdeck/core/context.py +136 -0
- agentdeck_sdk-3.1.0/agentdeck/core/control.py +150 -0
- agentdeck_sdk-3.1.0/agentdeck/core/events.py +468 -0
- agentdeck_sdk-3.1.0/agentdeck/core/invocable.py +38 -0
- agentdeck_sdk-3.1.0/agentdeck/core/ports/__init__.py +26 -0
- agentdeck_sdk-3.1.0/agentdeck/core/ports/control.py +35 -0
- agentdeck_sdk-3.1.0/agentdeck/core/ports/engine.py +66 -0
- agentdeck_sdk-3.1.0/agentdeck/core/ports/sink.py +53 -0
- agentdeck_sdk-3.1.0/agentdeck/core/ports/store.py +170 -0
- agentdeck_sdk-3.1.0/agentdeck/core/ports/tools.py +57 -0
- agentdeck_sdk-3.1.0/agentdeck/core/reporting.py +75 -0
- agentdeck_sdk-3.1.0/agentdeck/core/status.py +75 -0
- agentdeck_sdk-3.1.0/agentdeck/deck.py +894 -0
- agentdeck_sdk-3.1.0/agentdeck/errors.py +67 -0
- agentdeck_sdk-3.1.0/agentdeck/mcp.py +82 -0
- agentdeck_sdk-3.1.0/agentdeck/observers.py +111 -0
- agentdeck_sdk-3.1.0/agentdeck/py.typed +0 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/__init__.py +1 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/capture.py +32 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/config.default.yaml +38 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/discovery.py +175 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/dispatch.py +440 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/registry.py +173 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/service.py +671 -0
- agentdeck_sdk-3.1.0/agentdeck/runtime/settings.py +568 -0
- agentdeck_sdk-3.1.0/agentdeck/serve.py +330 -0
- agentdeck_sdk-3.1.0/agentdeck/skills/__init__.py +114 -0
- agentdeck_sdk-3.1.0/agentdeck/skills/bundle.py +65 -0
- agentdeck_sdk-3.1.0/agentdeck/surfaces/__init__.py +4 -0
- agentdeck_sdk-3.1.0/agentdeck/surfaces/cli/__init__.py +7 -0
- agentdeck_sdk-3.1.0/agentdeck/surfaces/cli/chat.py +88 -0
- agentdeck_sdk-3.1.0/agentdeck/surfaces/serve/__init__.py +7 -0
- agentdeck_sdk-3.1.0/agentdeck/surfaces/serve/app.py +71 -0
- agentdeck_sdk-3.1.0/agentdeck/surfaces/serve/compat.py +212 -0
- agentdeck_sdk-3.1.0/agentdeck/surfaces/serve/workflows.py +69 -0
- agentdeck_sdk-3.1.0/agentdeck/testing.py +364 -0
- agentdeck_sdk-3.1.0/context7.json +34 -0
- agentdeck_sdk-3.1.0/docker-compose.yml +23 -0
- agentdeck_sdk-3.1.0/docs/00-project-index.md +175 -0
- agentdeck_sdk-3.1.0/docs/agentdeck-prd.md +160 -0
- agentdeck_sdk-3.1.0/docs/brand/README.md +130 -0
- agentdeck_sdk-3.1.0/docs/brand/favicon.svg +26 -0
- agentdeck_sdk-3.1.0/docs/brand/logo-blue.svg +34 -0
- agentdeck_sdk-3.1.0/docs/brand/logo-mark.svg +26 -0
- agentdeck_sdk-3.1.0/docs/brand/logo-traced-original.svg +38 -0
- agentdeck_sdk-3.1.0/docs/brand/logo.svg +33 -0
- agentdeck_sdk-3.1.0/docs/brand/social-card.svg +52 -0
- agentdeck_sdk-3.1.0/docs/coding-standards.md +304 -0
- agentdeck_sdk-3.1.0/docs/delivery/beta-user-report-v3.md +199 -0
- agentdeck_sdk-3.1.0/docs/delivery/decision-v3-entry-point.md +361 -0
- agentdeck_sdk-3.1.0/docs/delivery/deck-capability-wrapper-pattern.md +88 -0
- agentdeck_sdk-3.1.0/docs/delivery/discoverability-baseline.md +166 -0
- agentdeck_sdk-3.1.0/docs/delivery/docs-site-plan.md +210 -0
- agentdeck_sdk-3.1.0/docs/delivery/epic-agentdeck-v2-core.md +283 -0
- agentdeck_sdk-3.1.0/docs/delivery/findings-register.md +172 -0
- agentdeck_sdk-3.1.0/docs/delivery/milestone-0-findings.md +269 -0
- agentdeck_sdk-3.1.0/docs/delivery/milestone-0-walking-skeleton.md +192 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-166-delivery.md +335 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-219-delivery.md +262 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-adoption.md +164 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-context-injection.md +185 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-multimodal.md +186 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-phase4-deck.md +247 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-skills.md +152 -0
- agentdeck_sdk-3.1.0/docs/delivery/plan-v2-cutover.md +160 -0
- agentdeck_sdk-3.1.0/docs/delivery/review-context-injection.md +1131 -0
- agentdeck_sdk-3.1.0/docs/delivery/review-phase4-deck.md +100 -0
- agentdeck_sdk-3.1.0/docs/delivery/roadmap-v3.1.md +258 -0
- agentdeck_sdk-3.1.0/docs/delivery/roadmap-v3.md +194 -0
- agentdeck_sdk-3.1.0/docs/delivery/workflow.md +107 -0
- agentdeck_sdk-3.1.0/docs/design/adr-d11-store-assigns-seq-and-time.md +221 -0
- agentdeck_sdk-3.1.0/docs/design/adr-d5-two-stores.md +269 -0
- agentdeck_sdk-3.1.0/docs/design/agentdeck-v2-architecture.md +1536 -0
- agentdeck_sdk-3.1.0/docs/project-brief.md +78 -0
- agentdeck_sdk-3.1.0/docs/prompts/pr0-baseline-prompt.md +103 -0
- agentdeck_sdk-3.1.0/docs/prompts/pr0-review-prompt.md +95 -0
- agentdeck_sdk-3.1.0/docs/prompts/pr1-event-schema-prompt.md +161 -0
- agentdeck_sdk-3.1.0/docs-site/.gitignore +4 -0
- agentdeck_sdk-3.1.0/docs-site/README.md +62 -0
- agentdeck_sdk-3.1.0/docs-site/app/[[...mdxPath]]/page.tsx +27 -0
- agentdeck_sdk-3.1.0/docs-site/app/ask-agentdeck.css +200 -0
- agentdeck_sdk-3.1.0/docs-site/app/ask-agentdeck.tsx +165 -0
- agentdeck_sdk-3.1.0/docs-site/app/brand.css +198 -0
- agentdeck_sdk-3.1.0/docs-site/app/icon.svg +26 -0
- agentdeck_sdk-3.1.0/docs-site/app/layout.tsx +79 -0
- agentdeck_sdk-3.1.0/docs-site/app/mark.tsx +31 -0
- agentdeck_sdk-3.1.0/docs-site/app/not-found.tsx +10 -0
- agentdeck_sdk-3.1.0/docs-site/app/robots.ts +29 -0
- agentdeck_sdk-3.1.0/docs-site/app/site.ts +13 -0
- agentdeck_sdk-3.1.0/docs-site/app/sitemap.ts +40 -0
- agentdeck_sdk-3.1.0/docs-site/content/_meta.ts +15 -0
- agentdeck_sdk-3.1.0/docs-site/content/changelog.mdx +105 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/_meta.ts +12 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/agents.mdx +128 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/capabilities.mdx +25 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/choosing-a-store-backend.mdx +113 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/index.mdx +71 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/protocols-and-surfaces.mdx +58 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/run-control.mdx +102 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/runs-and-the-event-log.mdx +158 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/sessions-and-memory.mdx +98 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/skills.mdx +81 -0
- agentdeck_sdk-3.1.0/docs-site/content/concepts/workflows.mdx +154 -0
- agentdeck_sdk-3.1.0/docs-site/content/getting-started.mdx +98 -0
- agentdeck_sdk-3.1.0/docs-site/content/guides/_meta.ts +5 -0
- agentdeck_sdk-3.1.0/docs-site/content/guides/add-a-tool.mdx +66 -0
- agentdeck_sdk-3.1.0/docs-site/content/guides/human-approval.mdx +112 -0
- agentdeck_sdk-3.1.0/docs-site/content/guides/serve-over-http.mdx +62 -0
- agentdeck_sdk-3.1.0/docs-site/content/index.mdx +58 -0
- agentdeck_sdk-3.1.0/docs-site/content/known-issues.mdx +147 -0
- agentdeck_sdk-3.1.0/docs-site/content/operating/_meta.ts +3 -0
- agentdeck_sdk-3.1.0/docs-site/content/operating/pause-resume-cancel.mdx +91 -0
- agentdeck_sdk-3.1.0/docs-site/content/reference/_meta.ts +8 -0
- agentdeck_sdk-3.1.0/docs-site/content/reference/capabilities.mdx +15 -0
- agentdeck_sdk-3.1.0/docs-site/content/reference/cli.mdx +50 -0
- agentdeck_sdk-3.1.0/docs-site/content/reference/deck.mdx +484 -0
- agentdeck_sdk-3.1.0/docs-site/content/reference/definitions.mdx +199 -0
- agentdeck_sdk-3.1.0/docs-site/content/reference/index.mdx +33 -0
- agentdeck_sdk-3.1.0/docs-site/content/reference/settings.mdx +94 -0
- agentdeck_sdk-3.1.0/docs-site/content/roadmap.mdx +117 -0
- agentdeck_sdk-3.1.0/docs-site/mdx-components.tsx +14 -0
- agentdeck_sdk-3.1.0/docs-site/next-env.d.ts +6 -0
- agentdeck_sdk-3.1.0/docs-site/next.config.mjs +14 -0
- agentdeck_sdk-3.1.0/docs-site/package-lock.json +6577 -0
- agentdeck_sdk-3.1.0/docs-site/package.json +29 -0
- agentdeck_sdk-3.1.0/docs-site/public/llms-full.txt +2813 -0
- agentdeck_sdk-3.1.0/docs-site/public/llms.txt +50 -0
- agentdeck_sdk-3.1.0/docs-site/tsconfig.json +36 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/README.md +244 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/ask_agentdeck/__init__.py +1 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/ask_agentdeck/agent.py +93 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/ask_agentdeck/corpus.py +249 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/ask_agentdeck/server.py +274 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/cloudflared.yml +40 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/eval.py +117 -0
- agentdeck_sdk-3.1.0/examples/ask-agentdeck/run.py +30 -0
- agentdeck_sdk-3.1.0/examples/chat-agent-with-a-tool/.agentdeck/agents/order_desk/agent.py +25 -0
- agentdeck_sdk-3.1.0/examples/chat-agent-with-a-tool/README.md +42 -0
- agentdeck_sdk-3.1.0/examples/chat-agent-with-a-tool/run.py +12 -0
- agentdeck_sdk-3.1.0/examples/workflow-with-an-approval/.agentdeck/workflows/refund_approval/workflow.py +42 -0
- agentdeck_sdk-3.1.0/examples/workflow-with-an-approval/README.md +48 -0
- agentdeck_sdk-3.1.0/examples/workflow-with-an-approval/run.py +18 -0
- agentdeck_sdk-3.1.0/pyproject.toml +121 -0
- agentdeck_sdk-3.1.0/scripts/generate_docs_reference.py +448 -0
- agentdeck_sdk-3.1.0/scripts/m0_demo.py +664 -0
- agentdeck_sdk-3.1.0/scripts/sync_claude_to_codex.py +122 -0
- agentdeck_sdk-3.1.0/scripts/sync_roadmap.py +113 -0
- agentdeck_sdk-3.1.0/tests/concurrency_worker.py +789 -0
- agentdeck_sdk-3.1.0/tests/conftest.py +27 -0
- agentdeck_sdk-3.1.0/tests/context_injection_subjects.py +18 -0
- agentdeck_sdk-3.1.0/tests/contract/case_types.py +40 -0
- agentdeck_sdk-3.1.0/tests/contract/conftest.py +56 -0
- agentdeck_sdk-3.1.0/tests/contract/context_subjects.py +130 -0
- agentdeck_sdk-3.1.0/tests/contract/contract_cases.py +104 -0
- agentdeck_sdk-3.1.0/tests/contract/langgraph_cases.py +86 -0
- agentdeck_sdk-3.1.0/tests/contract/live_stores.py +220 -0
- agentdeck_sdk-3.1.0/tests/contract/never_yields.py +82 -0
- agentdeck_sdk-3.1.0/tests/contract/openai_agents_cases.py +146 -0
- agentdeck_sdk-3.1.0/tests/contract/test_context_parity.py +144 -0
- agentdeck_sdk-3.1.0/tests/contract/test_control.py +286 -0
- agentdeck_sdk-3.1.0/tests/contract/test_event_stream.py +191 -0
- agentdeck_sdk-3.1.0/tests/contract/test_resume.py +153 -0
- agentdeck_sdk-3.1.0/tests/contract/test_store.py +796 -0
- agentdeck_sdk-3.1.0/tests/core/conftest.py +145 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/artifact.created.json +20 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/control.observed.json +18 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/control.requested.json +18 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/custom.json +20 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/input.appended.json +28 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/message.completed.json +18 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/node.updated.json +20 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/progress.reported.json +19 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/run.cancelled.json +17 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/run.completed.json +34 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/run.failed.json +19 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/run.interrupted.json +23 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/run.paused.json +17 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/run.resumed.json +26 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/run.started.json +44 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/status.reported.json +17 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/text.delta.json +18 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/thought.delta.json +18 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/tool.call.completed.json +23 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/tool.call.started.json +21 -0
- agentdeck_sdk-3.1.0/tests/core/snapshots/usage.reported.json +22 -0
- agentdeck_sdk-3.1.0/tests/core/test_content.py +254 -0
- agentdeck_sdk-3.1.0/tests/core/test_context.py +86 -0
- agentdeck_sdk-3.1.0/tests/core/test_events.py +634 -0
- agentdeck_sdk-3.1.0/tests/core/test_golden_json.py +74 -0
- agentdeck_sdk-3.1.0/tests/core/test_import_law.py +34 -0
- agentdeck_sdk-3.1.0/tests/core/test_model_config.py +53 -0
- agentdeck_sdk-3.1.0/tests/core/test_old_reader_block_compat.py +167 -0
- agentdeck_sdk-3.1.0/tests/core/test_old_reader_compat.py +143 -0
- agentdeck_sdk-3.1.0/tests/core/test_reporting.py +80 -0
- agentdeck_sdk-3.1.0/tests/core/test_vocabularies_agree.py +53 -0
- agentdeck_sdk-3.1.0/tests/crash_worker.py +299 -0
- agentdeck_sdk-3.1.0/tests/event_log_checks.py +44 -0
- agentdeck_sdk-3.1.0/tests/golden/README.md +130 -0
- agentdeck_sdk-3.1.0/tests/golden/conftest.py +77 -0
- agentdeck_sdk-3.1.0/tests/golden/fixture_project/.agentdeck/agents/greeter/agent.py +16 -0
- agentdeck_sdk-3.1.0/tests/golden/fixture_project/.agentdeck/workflows/approval_flow/workflow.py +26 -0
- agentdeck_sdk-3.1.0/tests/golden/fixture_project/.agentdeck/workflows/boom_flow/workflow.py +31 -0
- agentdeck_sdk-3.1.0/tests/golden/fixture_project/.agentdeck/workflows/echo_flow/workflow.py +25 -0
- agentdeck_sdk-3.1.0/tests/golden/fixture_project/.agentdeck/workflows/fanout_interrupt_flow/workflow.py +44 -0
- agentdeck_sdk-3.1.0/tests/golden/fixture_project/.agentdeck/workflows/side_effect_flow/workflow.py +30 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/01_health.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/02_chat.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/03_chat_stream.http +14 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/04_chat_missing_field.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/05_agent_unknown.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/06_workflow.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/07_workflow_stream.http +12 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/08_interrupt_stream.http +8 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/09_pending.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/10_resume.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/11_pending_after_resume.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/12_workflow_error.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/13_workflow_error_stream.http +8 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/14_side_effect.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/15_side_effect_stream.http +10 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/16_fanout_interrupt.http +4 -0
- agentdeck_sdk-3.1.0/tests/golden/snapshots/17_fanout_interrupt_stream.http +10 -0
- agentdeck_sdk-3.1.0/tests/golden/test_golden_wire.py +107 -0
- agentdeck_sdk-3.1.0/tests/project_engines.py +28 -0
- agentdeck_sdk-3.1.0/tests/test_agent_model_resolution.py +108 -0
- agentdeck_sdk-3.1.0/tests/test_ask_agentdeck.py +151 -0
- agentdeck_sdk-3.1.0/tests/test_ask_agentdeck_server.py +275 -0
- agentdeck_sdk-3.1.0/tests/test_authoring.py +76 -0
- agentdeck_sdk-3.1.0/tests/test_cli_render.py +79 -0
- agentdeck_sdk-3.1.0/tests/test_composition.py +388 -0
- agentdeck_sdk-3.1.0/tests/test_context_injection.py +221 -0
- agentdeck_sdk-3.1.0/tests/test_context_validation.py +409 -0
- agentdeck_sdk-3.1.0/tests/test_crash_reconciliation.py +446 -0
- agentdeck_sdk-3.1.0/tests/test_deck.py +1173 -0
- agentdeck_sdk-3.1.0/tests/test_docs_examples.py +152 -0
- agentdeck_sdk-3.1.0/tests/test_docs_site.py +272 -0
- agentdeck_sdk-3.1.0/tests/test_errors.py +346 -0
- agentdeck_sdk-3.1.0/tests/test_examples.py +65 -0
- agentdeck_sdk-3.1.0/tests/test_generated_reference.py +21 -0
- agentdeck_sdk-3.1.0/tests/test_handoffs.py +80 -0
- agentdeck_sdk-3.1.0/tests/test_instructions_and_hooks.py +294 -0
- agentdeck_sdk-3.1.0/tests/test_invocable_registry.py +265 -0
- agentdeck_sdk-3.1.0/tests/test_langfuse_sink.py +695 -0
- agentdeck_sdk-3.1.0/tests/test_langfuse_tracer.py +221 -0
- agentdeck_sdk-3.1.0/tests/test_langgraph_checkpointer.py +151 -0
- agentdeck_sdk-3.1.0/tests/test_langgraph_fanout_interrupt.py +114 -0
- agentdeck_sdk-3.1.0/tests/test_langgraph_structured_state.py +130 -0
- agentdeck_sdk-3.1.0/tests/test_load_file_node.py +51 -0
- agentdeck_sdk-3.1.0/tests/test_mcp.py +86 -0
- agentdeck_sdk-3.1.0/tests/test_mcp_tool_source.py +225 -0
- agentdeck_sdk-3.1.0/tests/test_memory_store.py +81 -0
- agentdeck_sdk-3.1.0/tests/test_multiprocess_concurrency.py +490 -0
- agentdeck_sdk-3.1.0/tests/test_node_compilation.py +300 -0
- agentdeck_sdk-3.1.0/tests/test_observability.py +697 -0
- agentdeck_sdk-3.1.0/tests/test_openai_agents_engine.py +339 -0
- agentdeck_sdk-3.1.0/tests/test_openai_agents_reconcile.py +82 -0
- agentdeck_sdk-3.1.0/tests/test_package.py +108 -0
- agentdeck_sdk-3.1.0/tests/test_postgres_store.py +315 -0
- agentdeck_sdk-3.1.0/tests/test_redis_store.py +204 -0
- agentdeck_sdk-3.1.0/tests/test_run_config_parity.py +174 -0
- agentdeck_sdk-3.1.0/tests/test_run_control.py +562 -0
- agentdeck_sdk-3.1.0/tests/test_run_reporting.py +318 -0
- agentdeck_sdk-3.1.0/tests/test_runtime_service.py +1334 -0
- agentdeck_sdk-3.1.0/tests/test_serve.py +274 -0
- agentdeck_sdk-3.1.0/tests/test_serve_compat.py +416 -0
- agentdeck_sdk-3.1.0/tests/test_serve_session_claim.py +119 -0
- agentdeck_sdk-3.1.0/tests/test_settings.py +214 -0
- agentdeck_sdk-3.1.0/tests/test_sink_dispatch.py +1129 -0
- agentdeck_sdk-3.1.0/tests/test_skills.py +157 -0
- agentdeck_sdk-3.1.0/tests/test_sqlite_control_port.py +80 -0
- agentdeck_sdk-3.1.0/tests/test_sqlite_store.py +198 -0
- agentdeck_sdk-3.1.0/tests/test_streaming.py +258 -0
- agentdeck_sdk-3.1.0/tests/test_tool_compilation.py +431 -0
- agentdeck_sdk-3.1.0/tests/test_uc1_handoff.py +298 -0
- agentdeck_sdk-3.1.0/tests/test_uc2_claim_pipeline.py +413 -0
- agentdeck_sdk-3.1.0/tests/test_uc3_slowpoke.py +388 -0
- agentdeck_sdk-3.1.0/tests/test_web_search.py +15 -0
- agentdeck_sdk-3.1.0/tests/test_workflow_durability.py +287 -0
- agentdeck_sdk-3.1.0/tests/test_workflow_interrupts.py +358 -0
- agentdeck_sdk-3.1.0/tests/test_workflow_streaming.py +316 -0
- agentdeck_sdk-3.1.0/tests/test_workflow_timers.py +208 -0
- agentdeck_sdk-3.1.0/uv.lock +2015 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: open-issue
|
|
3
|
+
description: File a well-formed agentdeck GitHub issue in the repo's house style (Problem / Proposed shape / Notes / Done when). Use when the user asks to open, file, or create an issue, or to turn an idea/bug into an issue.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Open an agentdeck issue
|
|
7
|
+
|
|
8
|
+
Issues here are implementation-ready specs — a subagent should be able to build from one without asking questions. Match the house style of existing issues (`gh issue list`, read one or two for tone).
|
|
9
|
+
|
|
10
|
+
Structure (omit a section only when truly empty):
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
## Problem
|
|
14
|
+
What's impossible or broken today, and why it matters for Middle/agentdeck. For bugs: the exact traceback and a minimal repro command.
|
|
15
|
+
|
|
16
|
+
## Proposed shape
|
|
17
|
+
The concrete API/behavior — real code snippets of the intended usage, named modules/functions, error behavior. State what stays unchanged. Prefer the minimal design; call out what is deliberately out of scope.
|
|
18
|
+
|
|
19
|
+
## Notes
|
|
20
|
+
Constraints, interactions with other issues/PRs (link them), which existing patterns to reuse (name the file).
|
|
21
|
+
|
|
22
|
+
## Done when
|
|
23
|
+
A checklist of observable behaviors, each phrased so it maps 1:1 to a test (no live model calls). This is the review gate's contract.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Rules:
|
|
27
|
+
- Title: terse and specific — `<area>: <what>` (e.g. "spawn_subagent: stream nested subagent deltas").
|
|
28
|
+
- One issue per concern; split unrelated asks.
|
|
29
|
+
- Check for duplicates first (`gh issue list --state open`).
|
|
30
|
+
- File with `gh issue create -t <title> -b <body>` and return the URL.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release
|
|
3
|
+
description: Cut an agentdeck release — bump the version, move CHANGELOG Unreleased entries, merge dev to main, tag vX.Y.Z. Use when the user says "release", "cut a release", "bump version", or "ship vX.Y.Z".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Release agentdeck
|
|
7
|
+
|
|
8
|
+
Follow CLAUDE.md's release process exactly. All work happens on `dev` first; `main` is release-only.
|
|
9
|
+
|
|
10
|
+
1. **Pick the version.** SemVer against the CHANGELOG's Unreleased section: breaking → major (or minor pre-1.0), features → minor, fixes only → patch. Confirm the number with the user if it isn't obvious or they didn't specify.
|
|
11
|
+
2. **Preflight on `dev`:** working tree clean, `git pull`, CHANGELOG has a non-empty Unreleased section, `make check` green.
|
|
12
|
+
3. **Bump on `dev`:** set `version` in `pyproject.toml`; in `CHANGELOG.md` move the Unreleased entries under a new `## [X.Y.Z] - <today>` heading (leave an empty Unreleased). One commit: `chore: release vX.Y.Z`.
|
|
13
|
+
4. **Push `dev`, wait for CI green.**
|
|
14
|
+
5. **Merge to `main`:** `git checkout main && git pull && git merge dev` (or a dev→main PR if branch protection requires it), push.
|
|
15
|
+
6. **Tag:** `git tag vX.Y.Z && git push origin vX.Y.Z`. release.yml verifies the tag matches `pyproject.toml`, runs the gate, and publishes the GitHub Release — watch the run and report its result.
|
|
16
|
+
7. Back to `dev`. Report the release URL.
|
|
17
|
+
|
|
18
|
+
If any step fails, stop and report — never re-tag or force-push a tag.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ship-issue
|
|
3
|
+
description: Run one agentdeck issue through the full pipeline — deck-dev implements it, deck-reviewer gates it, findings get fixed, PR merges to dev. Use when the user says "ship issue N", "handle issue N", or wants an issue implemented and merged end-to-end.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ship an issue
|
|
7
|
+
|
|
8
|
+
Orchestrate; don't implement inline. The pipeline:
|
|
9
|
+
|
|
10
|
+
1. **Implement.** Spawn `deck-dev` with the issue number (background). If several independent issues were requested, spawn one agent each, in parallel.
|
|
11
|
+
2. **Review.** When the PR opens, spawn `deck-reviewer` on it (background).
|
|
12
|
+
3. **Fix findings.** On "request changes", send the findings back to the same deck-dev agent (SendMessage — it keeps its worktree and branch) to fix and push to the existing PR. Skip findings the reviewer marked non-blocking. Trivial nits (a comment line, a missing timeout) you may fix and push yourself instead.
|
|
13
|
+
4. **Merge.** On approve (or after fixes): verify `gh pr checks` is green and the PR is MERGEABLE. If CONFLICTING, merge origin/dev into the branch — normal merge, never force-push (it's blocked); CHANGELOG conflicts resolve as a union keeping both sides. Then `gh pr merge --squash --delete-branch`.
|
|
14
|
+
5. **Report.** PR URL, what shipped, review verdict, anything deferred.
|
|
15
|
+
|
|
16
|
+
Ground rules:
|
|
17
|
+
- CI is the gate of record — a machine-local ty/venv failure that CI doesn't reproduce is not a blocker (this machine's shared venv is known-flaky).
|
|
18
|
+
- Never merge a PR whose review found unaddressed blocking findings.
|
|
19
|
+
- Agents idle mid-task ("running X in the background…") get one SendMessage nudge to continue.
|
|
20
|
+
- Relay each stage's outcome to the user as it happens; don't go silent until the end.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deck-dev
|
|
3
|
+
description: Implements a GitHub issue (feature or bug fix) for agentdeck end-to-end in an isolated worktree and opens one PR to dev. Give it the issue number or a full task spec.
|
|
4
|
+
model: sonnet
|
|
5
|
+
isolation: worktree
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You implement one agentdeck GitHub issue (feature or bug fix) end-to-end and open a PR.
|
|
9
|
+
|
|
10
|
+
Rules:
|
|
11
|
+
- Read the repo's CLAUDE.md first and follow it strictly: conventions, the comment rules in `docs/coding-standards.md` §10 (short and focused, only where the code is genuinely hard to follow, never citing a doc section or issue number — there is no one-line cap), CHANGELOG entry under Unreleased with every user-visible change, `make check` gate, PRs target `dev`.
|
|
12
|
+
- Read the issue with `gh issue view <n>` — it is the authoritative spec. Explore the existing code the issue touches and match its patterns exactly before writing anything.
|
|
13
|
+
- For bugs: reproduce first, then fix, then confirm the repro is dead. The regression test must fail on the old code.
|
|
14
|
+
- Implement minimally — no speculative abstractions, no unrequested config surface.
|
|
15
|
+
- Tests must assert real behavior for every "Done when" item, no live model calls — a broken implementation must not be able to pass them. Stub only the SDK boundary. Subprocess tests always get `timeout=`.
|
|
16
|
+
- Seed your worktree before anything else — it is clean, so it has neither a venv nor the secrets, both of which are gitignored: copy `.env` from the main workspace (`/home/sagi5060/prjs/agentdeck/.env`) if it exists, then `uv venv --python 3.12 && make install`. Commits need `PATH="$PWD/.venv/bin:$PATH"` or the pre-commit hook aborts.
|
|
17
|
+
- Gate: run `make check` in that venv — `make install` pulls `.[dev,serve,durability,observability]`, the same extras CI installs; narrower installs silently skip tests. Fix until fully green.
|
|
18
|
+
- Before the final push, `git fetch origin dev`; if dev moved, merge origin/dev in (normal merge — force-push is blocked; CHANGELOG conflicts resolve as a union keeping both sides).
|
|
19
|
+
- Branch `feat/<n>-<slug>` (or `fix/<n>-<slug>`), commit, push, open ONE PR targeting `dev` with `gh pr create`, body referencing "Closes #<n>". End commit messages with "Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>" and the PR body with the Claude Code attribution line.
|
|
20
|
+
- If asked to apply review fixes: work on the existing branch, push to the same PR — never open a new one.
|
|
21
|
+
- Open the PR as a **draft on your first commit** and push as you work; `gh pr ready` only once your own `make check` is green and the judgment ledger is in the body. A red draft mid-work is expected.
|
|
22
|
+
- After merging `origin/dev` in, verify the merge did not revert anything: `dev` is an ancestor of your HEAD, so a silent revert shows up as a deletion in `git diff origin/dev HEAD`. Check it — one merge this project shipped reverted a whole PR *and* deleted its regression tests, so the gate stayed green over a live regression.
|
|
23
|
+
|
|
24
|
+
Return: the PR URL, a one-paragraph implementation summary, and the final `make check` result.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deck-reviewer
|
|
3
|
+
description: Review gate for an agentdeck PR before merge. Give it a PR number; it verifies correctness, CLAUDE.md compliance, and test quality against the issue's "Done when" list, and returns approve / request changes with confirmed findings.
|
|
4
|
+
model: sonnet
|
|
5
|
+
isolation: worktree
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You review one agentdeck PR as the merge gate. REVIEW ONLY — never push commits or modify the PR.
|
|
9
|
+
|
|
10
|
+
Process:
|
|
11
|
+
1. Read the repo's CLAUDE.md — the source of all project guidelines (architecture rules, ONE-line comment policy, CHANGELOG requirement, `make check` gate, ty: ignore policy, openai pin).
|
|
12
|
+
2. Read the linked issue (`gh issue view`) and the full diff (`gh pr diff <n>`).
|
|
13
|
+
3. Check out the PR branch (`gh pr checkout <n>`). Scale the environment to the diff:
|
|
14
|
+
- **Small diff (< ~100 lines, no dependency changes):** skip the fresh venv — reuse an existing sibling `.venv` if importable, run only the test files the diff touches plus ruff, and rely on the PR's CI run for the full gate (check `gh pr checks` and report its status instead).
|
|
15
|
+
- **Large diff or dependency/infra changes:** fresh venv with `.[dev,serve,durability]` so durability tests run instead of skipping; run the full `make check` and report the actual output.
|
|
16
|
+
4. Review for:
|
|
17
|
+
- Correctness: trace the actual code paths the diff introduces; hunt concurrency, event-loop, checkpointer, and streaming-semantics hazards specifically.
|
|
18
|
+
- Regressions: any behavior the issue requires unchanged must be verified unchanged (spy tests, not assumptions).
|
|
19
|
+
- Every CLAUDE.md rule: comments ONE line max, config-only architecture (execution stays in the Agents SDK / LangGraph), CHANGELOG entry present and accurate.
|
|
20
|
+
- Test quality: for each "Done when" item, ask whether a broken implementation could still pass the test. Weak tests are findings.
|
|
21
|
+
5. Verify every finding against the actual code before reporting — no speculative findings. Distinguish blocking findings from advisory notes. Scale empirical experiments (reverting code, live repro scripts) to the risk: mandatory for concurrency/durability/streaming changes, skip for docs/comments/small mechanical fixes.
|
|
22
|
+
|
|
23
|
+
Return: a verdict (approve / request changes), the `make check` result (noting whether durability tests ran), and a ranked list of confirmed findings, each with file:line, what's wrong, and a concrete fix. If clean, say so plainly.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-reviewer
|
|
3
|
+
description: Review gate for an agentdeck docs-site PR. Give it a PR number; it checks every claim against the code, runs every example, and hunts stale versions and broken links. Returns approve / request changes with confirmed findings.
|
|
4
|
+
model: sonnet
|
|
5
|
+
isolation: worktree
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are the gate for one docs PR. Your job is not "does this read well" — it is **is every sentence true of the code as merged**, and **will it still be true in six months**.
|
|
9
|
+
|
|
10
|
+
## The two failure modes you exist to catch
|
|
11
|
+
|
|
12
|
+
1. **The page says X, the code does Y.** Shipped twice already: the install line pinned `v1.2.1` on a 2.0.0 package, and a release note claimed the Langfuse integration covered workflow runs when nothing wired the sink. Both were plausible sentences nobody checked.
|
|
13
|
+
2. **The page is true today and nothing will notice when it stops being.** A claim with no test and no preflight check is a claim with a decay date.
|
|
14
|
+
|
|
15
|
+
## How to verify
|
|
16
|
+
|
|
17
|
+
Read the code, don't reason about it. For every claim in the diff:
|
|
18
|
+
|
|
19
|
+
- Behaviour → open the implementation and the test that pins it. If no test pins it, say so; that is a finding about the *page*, because an unpinned claim will rot.
|
|
20
|
+
- Command or fence → run it. A fence you cannot run must not be published; a fence that runs but prints something different from the page is a finding with the real output attached.
|
|
21
|
+
- Endpoint path, status code, request or response shape → check `agentdeck/serve.py`'s endpoint table **and** the tests. Status codes are the ones most often wrong from memory: v2 answers 409 for a busy session and 404 for a missing paused run.
|
|
22
|
+
- Settings name → check the settings module. `AGENTDECK_*` only; a `SYSAGENT_*` reference is an automatic finding.
|
|
23
|
+
- Version string or install path → check `pyproject.toml`. Any pin that is not the current released tag is blocking.
|
|
24
|
+
- Internal link → follow it. Broken links are blocking, and note whether a test would have caught it.
|
|
25
|
+
|
|
26
|
+
## Scope discipline
|
|
27
|
+
|
|
28
|
+
`docs/delivery/docs-site-plan.md` is the spec: the page must be a plan item, in the section the plan puts it in, and inside §9's scope. A page documenting an **unshipped** feature is blocking regardless of how good it is. A page in `_meta.ts` nav for a feature not yet released is blocking — the deploy is release-gated and nav is a promise.
|
|
29
|
+
|
|
30
|
+
Check the split the plan sets: the site owns the user-facing run-control contract; `docs/design/` owns internals. A page explaining `core/` internals is in the wrong repo location.
|
|
31
|
+
|
|
32
|
+
## What is *not* your job
|
|
33
|
+
|
|
34
|
+
Do not rewrite the prose. Do not argue voice unless it misleads — "simply" attached to something that is not simple misleads; a sentence you would have phrased differently does not. Do not request more coverage than the plan asks for; that is how a docs PR becomes unmergeable.
|
|
35
|
+
|
|
36
|
+
## Gate
|
|
37
|
+
|
|
38
|
+
Run `make check` yourself in a fresh venv with `.[dev,serve,durability]` and report the real numbers. The docs tests parse every published Python fence, so a green gate means the fences parse — it does **not** mean they work. Say which you verified.
|
|
39
|
+
|
|
40
|
+
## Return
|
|
41
|
+
|
|
42
|
+
`approve` or `request changes`, with each finding as: the file and line, the claim, what the code actually does, and how you checked. Rank blocking findings first. State plainly what you verified and what you could not — an honest "I could not run this because X" is worth more than a silent pass.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-writer
|
|
3
|
+
description: Writes or rewrites ONE docs-site page for agentdeck, outline first. Give it the page path (or the DS item) and the issue number. Returns an outline and waits for approval before writing prose.
|
|
4
|
+
model: sonnet
|
|
5
|
+
isolation: worktree
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You write **one** `docs-site/` page per run, and you stop for approval between the outline and the prose.
|
|
9
|
+
|
|
10
|
+
## Two phases, always
|
|
11
|
+
|
|
12
|
+
**Phase 1 — outline. Do this, then stop and return.** Never write the page in the same turn as the outline.
|
|
13
|
+
|
|
14
|
+
Return: the headings in order; the single example you will use and where it came from; what a reader can do after the page that they could not before; and an explicit list of what you will **not** cover and why. Then wait. Do not create a branch, a commit or a PR in phase 1.
|
|
15
|
+
|
|
16
|
+
**Phase 2 — prose, only after the outline is approved.** Write the page, verify every claim, open the PR.
|
|
17
|
+
|
|
18
|
+
## The plan is the spec
|
|
19
|
+
|
|
20
|
+
`docs/delivery/docs-site-plan.md` says which pages exist, in what section, and why. Read the DS item you were given and its decisions (DS-D1…DS-D10) before anything else. §9 lists what is out of scope — a page not traceable to a persona and an FR is coverage theatre, so if your assignment is not in the plan, say so in phase 1 rather than inventing a page.
|
|
21
|
+
|
|
22
|
+
`docs/00-project-index.md` says which doc wins when two disagree.
|
|
23
|
+
|
|
24
|
+
When your assignment cites a design issue, **read its comments too, not just its body** — a design proposal here is verified after the fact, and the verification supersedes the body where they disagree. Issue #135's measurements, for instance, were corrected by verification; building to the body's numbers would build to the wrong ones. The docs-site owns the *user-facing* contract for run control (safe points, restart survival); `docs/design/` owns internals. Never document `core/` internals here.
|
|
25
|
+
|
|
26
|
+
## Every claim is verified, not remembered
|
|
27
|
+
|
|
28
|
+
This is the rule the site has already broken twice: the install line pinned `v1.2.1` on a 2.0.0 package for months, and a release note claimed Langfuse covered workflow runs when nothing had wired the sink. Both would have been caught by checking rather than trusting.
|
|
29
|
+
|
|
30
|
+
- Read the code for every behaviour you describe. Cite nothing you have not opened.
|
|
31
|
+
- Run every command you put in a fence. If you cannot run it, do not publish it.
|
|
32
|
+
- Endpoint shapes come from `agentdeck/serve.py`'s endpoint table and the tests, not from memory.
|
|
33
|
+
- Settings names come from the settings modules. Env prefix is `AGENTDECK_*` — the old `SYSAGENT_*` must never appear.
|
|
34
|
+
- Version pins: name a released tag, and check it against `pyproject.toml`.
|
|
35
|
+
- If the code and the plan disagree, **stop and report it**. That is a finding, not something to paper over in prose.
|
|
36
|
+
|
|
37
|
+
## Voice
|
|
38
|
+
|
|
39
|
+
Match the existing pages and `CONTRIBUTING.md`. Prose over bullet-soup. Say what a thing is for before how it works. State limits plainly in the same breath as the capability — a reader who discovers a limit later stops trusting the page. No marketing adjectives, no "simply", no "just". A page should be about one screen; if it is longer, it is two pages.
|
|
40
|
+
|
|
41
|
+
Write what ships today. A page for an unbuilt feature is a lie with a future date on it.
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
DS-1 makes the pages the source of examples, and DS-D4 requires every Python fence to be checked by `make check`. So an example must survive that check, and once the example executor exists it must actually run. Prefer the smallest example that does something real over a complete one that does nothing.
|
|
46
|
+
|
|
47
|
+
## Process
|
|
48
|
+
|
|
49
|
+
- Branch `docs/<n>-<slug>`, one page, one PR to `dev`, `Closes #<n>` (or `Refs` if the issue covers more pages than yours).
|
|
50
|
+
- `make check` green before `gh pr ready` — the docs tests parse every published Python fence, so a broken example fails the gate.
|
|
51
|
+
- Keep a new page out of `_meta.ts` nav until its feature is released; the deploy is release-gated, so an unlisted page is safe and a listed one is a promise.
|
|
52
|
+
- Push at each milestone. Open the PR as a draft on your first commit.
|
|
53
|
+
- CHANGELOG only if the change is user-visible beyond the docs themselves; a new page usually is not.
|
|
54
|
+
|
|
55
|
+
## Return
|
|
56
|
+
|
|
57
|
+
Phase 1: the outline, and the source you verified each planned claim against.
|
|
58
|
+
Phase 2: the PR URL, what you verified and how, anything where code and plan disagreed, and the `make check` result.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: open-issue
|
|
3
|
+
description: File a well-formed agentdeck GitHub issue in the repo's house style (Problem / Proposed shape / Notes / Done when). Use when the user asks to open, file, or create an issue, or to turn an idea/bug into an issue.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Open an agentdeck issue
|
|
7
|
+
|
|
8
|
+
Issues here are implementation-ready specs — a subagent should be able to build from one without asking questions. Match the house style of existing issues (`gh issue list`, read one or two for tone).
|
|
9
|
+
|
|
10
|
+
Structure (omit a section only when truly empty):
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
## Problem
|
|
14
|
+
What's impossible or broken today, and why it matters for Middle/agentdeck. For bugs: the exact traceback and a minimal repro command.
|
|
15
|
+
|
|
16
|
+
## Proposed shape
|
|
17
|
+
The concrete API/behavior — real code snippets of the intended usage, named modules/functions, error behavior. State what stays unchanged. Prefer the minimal design; call out what is deliberately out of scope.
|
|
18
|
+
|
|
19
|
+
## Notes
|
|
20
|
+
Constraints, interactions with other issues/PRs (link them), which existing patterns to reuse (name the file).
|
|
21
|
+
|
|
22
|
+
## Done when
|
|
23
|
+
A checklist of observable behaviors, each phrased so it maps 1:1 to a test (no live model calls). This is the review gate's contract.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Rules:
|
|
27
|
+
- Title: terse and specific — `<area>: <what>` (e.g. "spawn_subagent: stream nested subagent deltas").
|
|
28
|
+
- One issue per concern; split unrelated asks.
|
|
29
|
+
- Check for duplicates first (`gh issue list --state open`).
|
|
30
|
+
- File with `gh issue create -t <title> -b <body>` and return the URL.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release
|
|
3
|
+
description: Cut an agentdeck release — bump the version, move CHANGELOG Unreleased entries, merge dev to main, tag vX.Y.Z. Use when the user says "release", "cut a release", "bump version", or "ship vX.Y.Z".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Release agentdeck
|
|
7
|
+
|
|
8
|
+
Follow CLAUDE.md's release process exactly. All work happens on `dev` first; `main` is release-only.
|
|
9
|
+
|
|
10
|
+
1. **Pick the version.** SemVer against the CHANGELOG's Unreleased section: breaking → major (or minor pre-1.0), features → minor, fixes only → patch. Confirm the number with the user if it isn't obvious or they didn't specify.
|
|
11
|
+
2. **Preflight on `dev`:** working tree clean, `git pull`, CHANGELOG has a non-empty Unreleased section, `make check` green.
|
|
12
|
+
Also `grep -rn '@v[0-9]' docs-site/content/` and update any version the install instructions pin. Nothing gates this — `test_docs_site.py` only parses `python` fences and `docs-check.yml` only checks the build produced a page — so a stale pin ships silently, and the getting-started page once told users to install v1.2.1 on a 2.0.0b4 package.
|
|
13
|
+
3. **Bump on `dev`:** set `version` in `pyproject.toml`; in `CHANGELOG.md` move the Unreleased entries under a new `## [X.Y.Z] - <today>` heading (leave an empty Unreleased). One commit: `chore: release vX.Y.Z`.
|
|
14
|
+
4. **Push `dev`, wait for CI green.**
|
|
15
|
+
5. **Merge to `main`:** `git checkout main && git pull && git merge dev` (or a dev→main PR if branch protection requires it), push.
|
|
16
|
+
6. **Tag:** `git tag vX.Y.Z && git push origin vX.Y.Z`. release.yml verifies the tag matches `pyproject.toml`, runs the gate, and publishes the GitHub Release — watch the run and report its result.
|
|
17
|
+
7. Back to `dev`. Report the release URL.
|
|
18
|
+
|
|
19
|
+
If any step fails, stop and report — never re-tag or force-push a tag.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ship-issue
|
|
3
|
+
description: Run one agentdeck issue through the full pipeline — brief the user, deck-dev implements it, deck-reviewer gates it, findings get fixed, PR merges to dev, board updated. Use when the user says "ship issue N", "handle issue N", "start issue N", or wants an issue implemented and merged end-to-end.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ship an issue
|
|
7
|
+
|
|
8
|
+
Orchestrate; don't implement inline. Steps 0–7 run without being asked for.
|
|
9
|
+
|
|
10
|
+
## 0. Brief before launching
|
|
11
|
+
|
|
12
|
+
Read the issue, then check its claims against the tree — issues here routinely predate the
|
|
13
|
+
code they describe. Post the brief as five headlines, one to four lines each, nothing else:
|
|
14
|
+
|
|
15
|
+
> **The claim** — what the issue asks for, one line.
|
|
16
|
+
> **What's true now** — what the tree actually does; name every stale premise, with file:line.
|
|
17
|
+
> **The shape** — the plan in 3–5 bullets, files named.
|
|
18
|
+
> **The hard gate** — what must not move: `tests/golden/` snapshots, the frozen v1 wire, the
|
|
19
|
+
> public API, import law.
|
|
20
|
+
> **Skipped** — what we deliberately won't build, and the trigger that would change that.
|
|
21
|
+
|
|
22
|
+
Then launch. Only stop for approval when the correction changes what the issue is *for* —
|
|
23
|
+
say which headline turned, in one line, and wait.
|
|
24
|
+
|
|
25
|
+
## 1. Open the work on the board
|
|
26
|
+
|
|
27
|
+
Project `PVT_kwHOBHijkM4BgHFZ` (users/sagi5060/projects/5) — `gh project item-edit`:
|
|
28
|
+
|
|
29
|
+
| field | id | values |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| Status | `PVTSSF_lAHOBHijkM4BgHFZzhaVHh8` | In progress `47fc9ee4` · In review `78b3efd5` · Done `98236657` |
|
|
32
|
+
| Start date | `PVTF_lAHOBHijkM4BgHFZzhaVHnE` | `--date YYYY-MM-DD` |
|
|
33
|
+
| Target date | `PVTF_lAHOBHijkM4BgHFZzhaVHnI` | end date, set at merge |
|
|
34
|
+
|
|
35
|
+
Set **Status = In progress**, fill **Start date**, and comment on the issue with the UTC start
|
|
36
|
+
time (`date -u`) plus any scope correction from the brief — the date field is date-only, so the
|
|
37
|
+
clock time and the reasoning only survive in the comment.
|
|
38
|
+
|
|
39
|
+
## 2. Implement
|
|
40
|
+
|
|
41
|
+
Spawn `deck-dev` with the issue number and the brief's corrected scope (background). Several
|
|
42
|
+
independent issues → one agent each, in parallel.
|
|
43
|
+
|
|
44
|
+
## 3. Attach the PR
|
|
45
|
+
|
|
46
|
+
When the draft opens, verify it targets `dev` and its body says `Closes #<n>` — that link is what
|
|
47
|
+
fills the board's *Linked pull requests* column. Fix it yourself if either is wrong.
|
|
48
|
+
When deck-dev flips it ready, set **Status = In review**.
|
|
49
|
+
|
|
50
|
+
## 4. Review
|
|
51
|
+
|
|
52
|
+
Spawn `deck-reviewer` on the PR (background).
|
|
53
|
+
|
|
54
|
+
## 5. Fix findings
|
|
55
|
+
|
|
56
|
+
On "request changes", send the findings back to the same deck-dev agent (SendMessage — it keeps
|
|
57
|
+
its worktree and branch) to fix and push to the existing PR. Skip findings the reviewer marked
|
|
58
|
+
non-blocking. Trivial nits (a comment line, a missing timeout) you may fix and push yourself.
|
|
59
|
+
|
|
60
|
+
## 6. Merge
|
|
61
|
+
|
|
62
|
+
On approve (or after fixes): verify `gh pr checks` is green and the PR is MERGEABLE. If
|
|
63
|
+
CONFLICTING, merge origin/dev into the branch — normal merge, never force-push (it's blocked);
|
|
64
|
+
CHANGELOG conflicts resolve as a union keeping both sides. Then
|
|
65
|
+
`gh pr merge --squash --delete-branch`.
|
|
66
|
+
|
|
67
|
+
## 7. Close the work on the board
|
|
68
|
+
|
|
69
|
+
Set **Status = Done** and **Target date** to the merge date, and comment on the issue with the
|
|
70
|
+
UTC end time and the elapsed wall clock. Then report: PR URL, what shipped, review verdict,
|
|
71
|
+
anything deferred.
|
|
72
|
+
|
|
73
|
+
## Ground rules
|
|
74
|
+
|
|
75
|
+
- CI is the gate of record — a machine-local ty/venv failure CI doesn't reproduce is not a
|
|
76
|
+
blocker (this machine's shared venv is known-flaky).
|
|
77
|
+
- Never merge a PR whose review found unaddressed blocking findings.
|
|
78
|
+
- Agents idle mid-task ("running X in the background…") get one SendMessage nudge to continue.
|
|
79
|
+
- Relay each stage's outcome as it happens; don't go silent until the end.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Generated by scripts/sync_claude_to_codex.py; do not edit.
|
|
2
|
+
# Claude model "sonnet" omitted; this agent inherits the active Codex model.
|
|
3
|
+
name = "deck-dev"
|
|
4
|
+
description = "Implements a GitHub issue (feature or bug fix) for agentdeck end-to-end in an isolated worktree and opens one PR to dev. Give it the issue number or a full task spec."
|
|
5
|
+
developer_instructions = "You implement one agentdeck GitHub issue (feature or bug fix) end-to-end and open a PR.\n\nRules:\n- Read the repo's CLAUDE.md first and follow it strictly: conventions, ONE-line comment policy, CHANGELOG entry under Unreleased with every user-visible change, `make check` gate, PRs target `dev`.\n- Read the issue with `gh issue view <n>` — it is the authoritative spec. Explore the existing code the issue touches and match its patterns exactly before writing anything.\n- For bugs: reproduce first, then fix, then confirm the repro is dead. The regression test must fail on the old code.\n- Implement minimally — no speculative abstractions, no unrequested config surface.\n- Tests must assert real behavior for every \"Done when\" item, no live model calls — a broken implementation must not be able to pass them. Stub only the SDK boundary. Subprocess tests always get `timeout=`.\n- Gate: run `make check` in a fresh venv installed with `.[dev,serve,durability]` (base extras skip tests) and fix until fully green.\n- Before the final push, `git fetch origin dev`; if dev moved, merge origin/dev in (normal merge — force-push is blocked; CHANGELOG conflicts resolve as a union keeping both sides).\n- Branch `feat/<n>-<slug>` (or `fix/<n>-<slug>`), commit, push, open ONE PR targeting `dev` with `gh pr create`, body referencing \"Closes #<n>\". End commit messages with \"Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\" and the PR body with the Claude Code attribution line.\n- If asked to apply review fixes: work on the existing branch, push to the same PR — never open a new one.\n\nReturn: the PR URL, a one-paragraph implementation summary, and the final `make check` result.\n\nCodex compatibility:\n- Preserve worktree isolation: before changing branches or files, create and use a dedicated git worktree outside the primary checkout, and run all task commands there.\n- Treat Claude-specific attribution instructions as inapplicable in Codex. Do not add model or vendor attribution unless the user or repository explicitly requires it."
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Generated by scripts/sync_claude_to_codex.py; do not edit.
|
|
2
|
+
# Claude model "sonnet" omitted; this agent inherits the active Codex model.
|
|
3
|
+
name = "deck-reviewer"
|
|
4
|
+
description = "Review gate for an agentdeck PR before merge. Give it a PR number; it verifies correctness, CLAUDE.md compliance, and test quality against the issue's \"Done when\" list, and returns approve / request changes with confirmed findings."
|
|
5
|
+
developer_instructions = "You review one agentdeck PR as the merge gate. REVIEW ONLY — never push commits or modify the PR.\n\nProcess:\n1. Read the repo's CLAUDE.md — the source of all project guidelines (architecture rules, ONE-line comment policy, CHANGELOG requirement, `make check` gate, ty: ignore policy, openai pin).\n2. Read the linked issue (`gh issue view`) and the full diff (`gh pr diff <n>`).\n3. Check out the PR branch (`gh pr checkout <n>`). Scale the environment to the diff:\n - **Small diff (< ~100 lines, no dependency changes):** skip the fresh venv — reuse an existing sibling `.venv` if importable, run only the test files the diff touches plus ruff, and rely on the PR's CI run for the full gate (check `gh pr checks` and report its status instead).\n - **Large diff or dependency/infra changes:** fresh venv with `.[dev,serve,durability]` so durability tests run instead of skipping; run the full `make check` and report the actual output.\n4. Review for:\n - Correctness: trace the actual code paths the diff introduces; hunt concurrency, event-loop, checkpointer, and streaming-semantics hazards specifically.\n - Regressions: any behavior the issue requires unchanged must be verified unchanged (spy tests, not assumptions).\n - Every CLAUDE.md rule: comments ONE line max, config-only architecture (execution stays in the Agents SDK / LangGraph), CHANGELOG entry present and accurate.\n - Test quality: for each \"Done when\" item, ask whether a broken implementation could still pass the test. Weak tests are findings.\n5. Verify every finding against the actual code before reporting — no speculative findings. Distinguish blocking findings from advisory notes. Scale empirical experiments (reverting code, live repro scripts) to the risk: mandatory for concurrency/durability/streaming changes, skip for docs/comments/small mechanical fixes.\n\nReturn: a verdict (approve / request changes), the `make check` result (noting whether durability tests ran), and a ranked list of confirmed findings, each with file:line, what's wrong, and a concrete fix. If clean, say so plainly.\n\nCodex compatibility:\n- Preserve worktree isolation: before changing branches or files, create and use a dedicated git worktree outside the primary checkout, and run all task commands there."
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Copy to .env — loaded automatically (process env wins over .env). Read from the repo
|
|
2
|
+
# root only: an installed package resolves it next to itself, so export the vars instead.
|
|
3
|
+
|
|
4
|
+
# --- model provider (required) ---
|
|
5
|
+
OPENAI_MODEL=gpt-4.1-mini
|
|
6
|
+
OPENAI_API_KEY=sk-...
|
|
7
|
+
# Unset => SDK default (api.openai.com). Set it for any other provider:
|
|
8
|
+
OPENAI_BASE_URL=https://api.openai.com/v1
|
|
9
|
+
# Set false for Chat-Completions-only servers (vLLM, Ollama, ...):
|
|
10
|
+
# OPENAI_USE_RESPONSES=false
|
|
11
|
+
|
|
12
|
+
# --- runner ---
|
|
13
|
+
# AGENTDECK_RUNNER_MAX_TURNS=30
|
|
14
|
+
# AGENTDECK_RUNNER_TEMPERATURE=1.0
|
|
15
|
+
# AGENTDECK_RUNNER_MAX_TOKENS=
|
|
16
|
+
|
|
17
|
+
# --- runtime (one turn per session) ---
|
|
18
|
+
# How long an open run may write nothing before it stops holding its session, so a turn can
|
|
19
|
+
# take over after a process was killed mid-run. Keep it comfortably longer than the quietest
|
|
20
|
+
# stretch of a healthy turn — a slow tool call, a human answering an approval: below that, a
|
|
21
|
+
# working turn looks abandoned and the next turn takes its session, which is the one-turn-per-
|
|
22
|
+
# session guarantee lost rather than tuned. Clock skew between workers eats into it too.
|
|
23
|
+
# AGENTDECK_RUNTIME_STALE_RUN_AFTER_SECONDS=3600
|
|
24
|
+
|
|
25
|
+
# --- conversation sessions (chat memory) ---
|
|
26
|
+
# unset -> in-process SQLite fallback (dev only, lost on exit)
|
|
27
|
+
# AGENTDECK_SESSION=redis://localhost:6379/0
|
|
28
|
+
# AGENTDECK_SESSION_REDIS_TTL=
|
|
29
|
+
|
|
30
|
+
# --- observability (optional, needs the [observability] extra) ---
|
|
31
|
+
# AGENTDECK_LANGFUSE_PUBLIC_KEY=
|
|
32
|
+
# AGENTDECK_LANGFUSE_SECRET_KEY=
|
|
33
|
+
# AGENTDECK_LANGFUSE_BASE_URL=http://localhost:3000
|
|
34
|
+
|
|
35
|
+
# --- MCP servers (optional) ---
|
|
36
|
+
# Named MCP servers live in a `.mcp.json` file at the project root, not here:
|
|
37
|
+
# {"mcpServers": {"docs": {"type": "http", "url": "http://..."}}}
|
|
38
|
+
|
|
39
|
+
# --- event log / control signals (optional) ---
|
|
40
|
+
# The scheme names the backend. memory:// (default) never persists; sqlite:// survives a
|
|
41
|
+
# restart; redis:// and postgresql:// (needs the [durability] extra, events only) are the two
|
|
42
|
+
# several workers can share.
|
|
43
|
+
# AGENTDECK_EVENTS=sqlite:///var/lib/agentdeck/events.db
|
|
44
|
+
# AGENTDECK_CONTROL=sqlite:///var/lib/agentdeck/control.db
|
|
45
|
+
|
|
46
|
+
# --- workflow durability (optional; only read by workflows with durable=True) ---
|
|
47
|
+
# scheme: sqlite:// | postgresql:// | memory://. sqlite/postgres need the [durability] extra.
|
|
48
|
+
# AGENTDECK_CHECKPOINT=sqlite:///var/lib/agentdeck/checkpoints.db
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report reproducible incorrect behavior
|
|
3
|
+
labels: [bug]
|
|
4
|
+
body:
|
|
5
|
+
- type: dropdown
|
|
6
|
+
id: area
|
|
7
|
+
attributes:
|
|
8
|
+
label: Area
|
|
9
|
+
description: Which part of agentdeck is affected?
|
|
10
|
+
options:
|
|
11
|
+
- Agents
|
|
12
|
+
- Workflows
|
|
13
|
+
- Skills
|
|
14
|
+
- App / serving
|
|
15
|
+
- Runtime / observability
|
|
16
|
+
- Documentation
|
|
17
|
+
- Other
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: actual
|
|
22
|
+
attributes:
|
|
23
|
+
label: Actual behavior
|
|
24
|
+
description: What happened? Include the exact error or traceback when available.
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: expected
|
|
29
|
+
attributes:
|
|
30
|
+
label: Expected behavior
|
|
31
|
+
description: What should have happened instead?
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
- type: textarea
|
|
35
|
+
id: repro
|
|
36
|
+
attributes:
|
|
37
|
+
label: Minimal reproduction
|
|
38
|
+
description: Provide the smallest .agentdeck bundle, code snippet, or command that reproduces the problem.
|
|
39
|
+
render: python
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
- type: input
|
|
43
|
+
id: version
|
|
44
|
+
attributes:
|
|
45
|
+
label: agentdeck version / commit
|
|
46
|
+
placeholder: "1.2.0 or 9912016"
|
|
47
|
+
validations:
|
|
48
|
+
required: true
|
|
49
|
+
- type: textarea
|
|
50
|
+
id: env
|
|
51
|
+
attributes:
|
|
52
|
+
label: Environment
|
|
53
|
+
description: Python version, OS, model provider, and relevant AGENTDECK_* settings. Never paste credentials or API keys.
|
|
54
|
+
validations:
|
|
55
|
+
required: true
|
|
56
|
+
- type: textarea
|
|
57
|
+
id: context
|
|
58
|
+
attributes:
|
|
59
|
+
label: Additional context
|
|
60
|
+
description: Logs, screenshots, related issues, or anything else that may help isolate the problem.
|
|
61
|
+
- type: checkboxes
|
|
62
|
+
id: checks
|
|
63
|
+
attributes:
|
|
64
|
+
label: Pre-submission checks
|
|
65
|
+
options:
|
|
66
|
+
- label: I searched the existing issues and did not find a duplicate.
|
|
67
|
+
required: true
|
|
68
|
+
- label: I removed credentials, API keys, and other sensitive data.
|
|
69
|
+
required: true
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose a focused addition or behavior change
|
|
3
|
+
labels: [enhancement]
|
|
4
|
+
body:
|
|
5
|
+
- type: dropdown
|
|
6
|
+
id: area
|
|
7
|
+
attributes:
|
|
8
|
+
label: Area
|
|
9
|
+
description: Which part of agentdeck would this change affect?
|
|
10
|
+
options:
|
|
11
|
+
- Agents
|
|
12
|
+
- Workflows
|
|
13
|
+
- Skills
|
|
14
|
+
- App / serving
|
|
15
|
+
- Runtime / observability
|
|
16
|
+
- Documentation
|
|
17
|
+
- Other
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: problem
|
|
22
|
+
attributes:
|
|
23
|
+
label: Problem
|
|
24
|
+
description: What cannot be done today, who is affected, and why does it matter? Describe the need before the solution.
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: proposal
|
|
29
|
+
attributes:
|
|
30
|
+
label: Proposed shape
|
|
31
|
+
description: Describe the intended behavior. Include a rough API or configuration example when useful.
|
|
32
|
+
render: python
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
- type: textarea
|
|
36
|
+
id: done
|
|
37
|
+
attributes:
|
|
38
|
+
label: Done when
|
|
39
|
+
description: List observable outcomes that can be verified by tests or documentation review.
|
|
40
|
+
placeholder: |
|
|
41
|
+
- [ ] ...
|
|
42
|
+
- [ ] ...
|
|
43
|
+
validations:
|
|
44
|
+
required: true
|
|
45
|
+
- type: textarea
|
|
46
|
+
id: scope
|
|
47
|
+
attributes:
|
|
48
|
+
label: Scope and non-goals
|
|
49
|
+
description: Clarify what belongs in this request and what should remain unchanged or be handled separately.
|
|
50
|
+
- type: textarea
|
|
51
|
+
id: alternatives
|
|
52
|
+
attributes:
|
|
53
|
+
label: Alternatives considered
|
|
54
|
+
description: Include workarounds and the do-nothing option. Why is the current surface insufficient?
|
|
55
|
+
- type: textarea
|
|
56
|
+
id: context
|
|
57
|
+
attributes:
|
|
58
|
+
label: Additional context
|
|
59
|
+
description: Related issues, examples from other projects, diagrams, or implementation constraints.
|
|
60
|
+
- type: checkboxes
|
|
61
|
+
id: checks
|
|
62
|
+
attributes:
|
|
63
|
+
label: Pre-submission checks
|
|
64
|
+
options:
|
|
65
|
+
- label: I searched the existing issues and did not find a duplicate.
|
|
66
|
+
required: true
|
|
67
|
+
- label: This request describes one focused concern rather than several unrelated changes.
|
|
68
|
+
required: true
|