drawspec 0.3.1__tar.gz → 0.3.2__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.
- {drawspec-0.3.1 → drawspec-0.3.2}/AGENTS.md +1 -1
- {drawspec-0.3.1 → drawspec-0.3.2}/CHANGELOG.md +18 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/PKG-INFO +5 -2
- {drawspec-0.3.1 → drawspec-0.3.2}/README.md +4 -1
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/guide.md +12 -7
- {drawspec-0.3.1 → drawspec-0.3.2}/pyproject.toml +1 -1
- {drawspec-0.3.1 → drawspec-0.3.2}/server.json +2 -2
- {drawspec-0.3.1 → drawspec-0.3.2}/skills/drawspec/SKILL.md +2 -1
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/__init__.py +1 -1
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/mcp.py +212 -45
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_mcp.py +65 -18
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_skill.py +2 -2
- {drawspec-0.3.1 → drawspec-0.3.2}/uv.lock +1 -1
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/settings.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/continue/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/continue/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/continue/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/coverage-gaps/scripts/analyze_coverage.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/dep-upgrade/scripts/compare_lockfile.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/references/template-plan.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/references/template-specification-tail.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/design/scripts/validate_plan.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/execution/references/template.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/references/gate-grammar.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/gate-check/scripts/run_gate.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/references/pr-review-loop.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/references/projects-detection.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/scripts/query_pr_state.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/github/scripts/query_project_type.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/.bundle-version +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/AGENTS.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/agents/worker.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/budget_check.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/check_skill_workshop_loaded.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/check_update.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/claim_task.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/detect_surface.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/gate_run.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/gate_target.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/github_channel.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/mark_skill_workshop_loaded.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/mark_skill_workshop_loaded_from_prompt.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/open_task_pr.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/outline.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/rebase_stack.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/rescue_snapshot.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/statusline_capture.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/worker_postcheck.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/workspace_list.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/bin/worktree_probe.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/claiming-internals.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/evidence-gates.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/github-automation.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/queue-seeding.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/quota-governance.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/state-layout.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/references/worker-loop.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/arsenal_config.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/arsenal_migrate.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/create_reader.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/gate_evidence.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/handle_sync.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/issue_for_task.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/issue_import.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/query_status.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/queue_hooks.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/scripts/task_select.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/session/handover.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/assets/workflows/arsenal-queue.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/init/scripts/init.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/mutmut-report/scripts/analyze_mutmut.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/pypi-release/scripts/validate_release.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/references/canonical-config.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/python-bootstrap/scripts/analyze_project.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/references/payload-template.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-add/scripts/new_task.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-status/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-status/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/queue-status/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/review/references/template.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/references/auto-fire-setup.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/references/handoff-mode.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/references/retrospective-rubric.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/scripts/create_handoff.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/session-end/scripts/query_session_history.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/ship/references/template.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/.arsenal-vendored +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/SKILL.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/evals/loading_verification.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/references/template.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.claude/skills/specify/scripts/validate_spec.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.dockerignore +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/ISSUE_TEMPLATE/kind_or_field_request.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/dependabot.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/pull_request_template.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/workflows/arsenal-queue.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/workflows/ci.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.github/workflows/release.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/.gitignore +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/CLAUDE.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/CONTRIBUTING.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/Dockerfile +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/LICENSE +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/Makefile +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/_config.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/config.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/session/handover.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-0727.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-0e20.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-0e91.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1270.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1291.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1b55.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1c11.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1c47.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-1d28.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2158.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-21c8.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2382.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2f7f.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-2f92.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-30b0.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-38d8.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-3b60.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-3ecf.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-4c51.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-4e89.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-4f9b.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-52fa.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-533d.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-666f.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-6e34.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-70ef.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-7bfe.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-825e.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-88b7.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-9dd6.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-a204.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-a63e.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b569.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b67b.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b7a8.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-b94c.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-c107.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-dcd5.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-e854.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-e93c.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-ee92.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-f0f8.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-f75a.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/lo-fbbb.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-1a23523c.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-2117d467.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-29944b23.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-2f4aa14a.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-36a712a2.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-4796518d.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-4a1b3b93.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-4b992703.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-5355943b.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-5641cbd3.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-5e82a719.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-629fc7cd.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-641a4cdc.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-7e3d313a.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-875d4d3f.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-99eb4b61.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-9b329b00.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-ae407597.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-caeb21fc.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-df2996f3.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-e783b178.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_history/t-f26679ad.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/arsenal/tasks/_migrated-history.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/.bundle-version +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/AGENTS.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/agents/worker.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/budget_check.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/check_skill_workshop_loaded.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/check_update.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/claim_task.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/detect_surface.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/gate_run.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/gate_target.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/github_channel.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/mark_skill_workshop_loaded.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/mark_skill_workshop_loaded_from_prompt.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/open_task_pr.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/outline.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/rebase_stack.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/rescue_snapshot.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/statusline_capture.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/worker_postcheck.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/workspace_list.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/bin/worktree_probe.sh +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/claiming-internals.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/evidence-gates.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/github-automation.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/queue-seeding.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/quota-governance.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/state-layout.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/references/worker-loop.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/arsenal_config.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/arsenal_migrate.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/create_reader.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/gate_evidence.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/handle_sync.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/issue_for_task.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/issue_import.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/query_status.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/queue_hooks.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/scripts/task_select.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/session/handover.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/claude-arsenal/workflows/arsenal-queue.yml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/README.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-001.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-002.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-003.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-004.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-005.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-006.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-007.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-008.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-009.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-010.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-011.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-012.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-013.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-014.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-015.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-016.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-017.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-018.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-019.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-020.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-021.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-022.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-023.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-024.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-025.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-026.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-027.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-028.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-029.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-030.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-031.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-032.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-033.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-034.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-035.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-036.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-037.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-038.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-039.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-040.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-041.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-042.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-043.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-044.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-045.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-046.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-047.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-048.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-049.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-050.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-051.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-052.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-053.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-054.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-055.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-056.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-057.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-058.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-059.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-060.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-061.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-062.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-063.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-064.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-065.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-066.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-067.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-068.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-069.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-070.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-071.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-072.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-073.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-074.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-075.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-076.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-077.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-078.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-079.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-080.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-081.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-082.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-083.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-084.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-085.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-086.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/fixtures/fixture-087.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/corpus/metrics.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/brief.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/claude-arsenal-logo.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/cli.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/format.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-congestion.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-contract.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-homework.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/argument-readmissions.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-bus.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-fraction.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-pages.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-ratio.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/barmodel-savings.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-migration.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-onboarding.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-retrospective.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/board-story-map.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-accent.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-across.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-area.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-bars.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-brand-readings.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-complaints.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-responsibility.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/chart-stacked.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-journey.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-quarters.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-roman.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/clock-worksheet.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/columns-before-after.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/columns-rise.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/curve-burndown.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/curve-hype.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/curve-variance.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-hub-flywheel.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-hub-oncall.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-hub-quality.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-review.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/cycle-wheel.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-blueprint-parts.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-enrolment.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-library.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-orders.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/entities-shapes.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-clinic.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-cousins.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-reunion.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/familytree-tudors.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/files-project.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/files-text.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-backup.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-flaky-ci.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-late-orders.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/fishbone-signups.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-accent.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-actor-handover.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-actors.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-bands.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-blueprint-pump.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-brand-release.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-classes-context.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-classes-teams.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-critical-path.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-edge-roles.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-groups.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-hub.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-inventory.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-adoption.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-predators.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-town.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-loops-waiting.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-mesh.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-meter-readings.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-node-roles.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-person-helpdesk.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-retry.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-status-failover.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-status-search.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-triage.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/flow-validation.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/funnel-applications.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/funnel-innovation.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-critical-path.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-migration.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-progress.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-semester.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/gantt-upgrade.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/index.html +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-bug-report.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-first-week.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-outpatient.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/journey-parking-permit.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-appointment.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-classes-claim.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-disclosure.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-expense.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-onboarding.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-phases-loan.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-phases-purchase.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-phases-release.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/lanes-tender.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-process.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-raid.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-scale-ci.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-scale-risk.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/matrix-scale-skills.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-appeal.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-library.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-migration.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/meter-ward.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-essay-plan.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-moving-house.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-offsite.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/mindmap-photosynthesis.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-inequality.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-interval-us.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-ph.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-spectrum.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/numberline-tense.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-spending.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-team-week.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-travel.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pie-trip.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pyramid-evidence.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/pyramid-top-heavy.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/quadrant-conflict.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/quadrant-priorities.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-confidence.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-refit.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-register.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rag-school.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/rings-scope.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-budget.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-cores.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-energy.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sankey-tickets.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/scatter-pareto.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-actor-handover.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-actor-signin.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-async-export.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-checkout.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-dns.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-drain.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-terminal.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/sequence-upload.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/stack-decisions.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-blueprint-lift.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-brand-station.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-breaker.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-fork-onboarding.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-fork-order.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-fork-release.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-invoice.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-process.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-regions-keyboard.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-regions-order.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-regions-player.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/states-ticket.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/timeline-disaster.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/timeline-rise.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/timeline-work.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-classes-board.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-compartments.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-decisions.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-person-escalation.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/tree-status-reorg.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-bundle.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-disk.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-latency.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/treemap-oncall.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-data-roles.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-four-ikigai.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-four-launch.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-four-ponds.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-frameworks.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-parity.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/venn-telemetry.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-budget-gap.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-cash.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-deficit.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/gallery/waterfall-result.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/hero.png +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/hero.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/kinds-wanted.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/logo.png +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/logo.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/plan-round-five.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/plan-round-three.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/plan-round-two.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/README.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/argument.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/barmodel.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/board.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/clock.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/coverage-vs-diagram-design.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/cycle-hub.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/entities.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/exports.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/familytree.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/filetree.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/fishbone.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/flow-loops.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/flow-status.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/gantt.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/journey.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/lanes.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/matrix-scale.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/meter.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/mindmap.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/numberline.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/pie.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/rag.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/sankey.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/sequence.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/states.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/text.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/theme-from.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/treemap.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/venn.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/venn4.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/proposals/waterfall.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-congestion.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-contract.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-homework.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/argument-readmissions.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-bus.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-fraction.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-pages.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-ratio.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/barmodel-savings.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-migration.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-onboarding.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-retrospective.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/board-story-map.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/brand/tidemark.css +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/brand/tidemark.tokens.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/brand/tidemark.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-accent.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-across.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-area.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-bars.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-brand-readings.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-complaints.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-responsibility.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/chart-stacked.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-journey.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-quarters.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-roman.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/clock-worksheet.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/columns-before-after.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/columns-rise.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/curve-burndown.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/curve-hype.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/curve-variance.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-hub-flywheel.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-hub-oncall.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-hub-quality.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-review.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/cycle-wheel.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-blueprint-parts.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-enrolment.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-library.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-orders.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/entities-shapes.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-clinic.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-cousins.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-reunion.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/familytree-tudors.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/files-project.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/files-text.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-backup.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-flaky-ci.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-late-orders.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/fishbone-signups.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-accent.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-actor-handover.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-actors.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-bands.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-blueprint-pump.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-brand-release.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-classes-context.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-classes-teams.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-critical-path.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-edge-roles.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-groups.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-hub.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-inventory.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-adoption.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-predators.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-town.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-loops-waiting.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-mesh.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-meter-readings.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-node-roles.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-person-helpdesk.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-retry.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-status-failover.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-status-search.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-triage.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/flow-validation.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/funnel-applications.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/funnel-innovation.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-critical-path.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-migration.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-progress.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-semester.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/gantt-upgrade.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-bug-report.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-first-week.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-outpatient.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/journey-parking-permit.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-appointment.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-classes-claim.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-disclosure.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-expense.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-onboarding.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-phases-loan.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-phases-purchase.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-phases-release.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/lanes-tender.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-process.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-raid.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-scale-ci.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-scale-risk.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/matrix-scale-skills.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-appeal.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-library.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-migration.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/meter-ward.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-essay-plan.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-moving-house.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-offsite.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/mindmap-photosynthesis.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-inequality.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-interval-us.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-ph.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-spectrum.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/numberline-tense.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-spending.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-team-week.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-travel.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pie-trip.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pyramid-evidence.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/pyramid-top-heavy.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/quadrant-conflict.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/quadrant-priorities.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-confidence.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-refit.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-register.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rag-school.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-grandalf-down.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-grandalf-right.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-layered-down.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/cycle-review-layered-right.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-grandalf-down.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-grandalf-right.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-layered-down.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/flow-validation-layered-right.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-grandalf-down.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-grandalf-right.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-layered-down.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rendered/tree-decisions-layered-right.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/rings-scope.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-budget.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-cores.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-energy.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sankey-tickets.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/scatter-pareto.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-actor-handover.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-actor-signin.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-async-export.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-checkout.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-dns.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-drain.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-terminal.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/sequence-upload.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/stack-decisions.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-blueprint-lift.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-brand-station.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-breaker.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-fork-onboarding.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-fork-order.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-fork-release.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-invoice.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-process.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-regions-keyboard.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-regions-order.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-regions-player.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/states-ticket.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/themes/algebra-us.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/themes/donut.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/themes/same-opposite.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/timeline-disaster.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/timeline-rise.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/timeline-work.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-classes-board.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-compartments.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-decisions.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-person-escalation.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/tree-status-reorg.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-bundle.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-disk.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-latency.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/treemap-oncall.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-data-roles.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-four-ikigai.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-four-launch.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-four-ponds.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-frameworks.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-parity.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/venn-telemetry.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-budget-gap.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-cash.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-deficit.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/reference/waterfall-result.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/research/corpus-round2.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/research/kind-audit.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/research/kinds-survey.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/review-2026-10.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/social-preview.png +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/social-preview.svg +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/theme-requirements.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/docs/theme.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/glama.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/llms.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/schema/drawspec-v1.schema.json +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/brand.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/charts.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/clearance.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/cli.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/emit.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/errors.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/examples.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/export.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/filetree.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/LICENSE +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/mono-bold.ttf +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/mono.ttf +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/sans-bold.ttf +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/sans.ttf +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/serif-bold.ttf +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/fonts/serif.ttf +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/geometry.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/__init__.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/argument.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/barmodel.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/board.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/clock.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/common.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/containers.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/cycle.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/entities.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/familytree.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/files.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/fishbone.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/gantt.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/graph.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/graphtext.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/grid.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/journey.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/lanes.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/loops.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/meter.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/mindmap.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/numberline.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/pie.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/rag.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/sankey.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/sequence.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/shape.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/treemap.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/venn.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/kinds/waterfall.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/__init__.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/base.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/grandalf_engine.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/layout/layered.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/legend.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/py.typed +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/render.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/routing.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/scene.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/schema.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/sheet.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/__init__.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/fontlib.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/measure.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/text/wrap.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/textgrid.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/theme.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/accent.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/blueprint.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/compartment.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/default.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/src/drawspec/themes/wheel.toml +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/status/plan.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/status/spec-annotated.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/status/spec-reader.html +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/status/specification.md +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/board-story-map.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/board-story-map.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/files-project.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/files-project.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/flow-retry.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/flow-retry.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/gantt-semester.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/gantt-semester.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/lanes-phases-loan.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/lanes-phases-loan.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-appeal.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-appeal.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-library.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-library.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-migration.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-migration.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-ward.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/meter-ward.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/rag-refit.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/rag-refit.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/sequence-upload.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/sequence-upload.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/stack-decisions.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/stack-decisions.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/states-process.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/states-process.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/timeline-disaster.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/timeline-disaster.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/tree-compartments.ascii.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/golden/text/tree-compartments.unicode.txt +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_acceptance.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_actor.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_blueprint.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_box.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_brand.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_caption.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_clearance.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_cli.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_clipping.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_clock.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_docs.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_embedding.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_emit.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_export.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_failure_families.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_flow_loops.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_frame_crossings.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_gallery.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_argument.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_barmodel.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_board.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_chart.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_containers.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_cycle.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_entities.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_family.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_files.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_fishbone.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_gantt.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_graph.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_grid.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_journey.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_lanes.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_mindmap.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_numberline.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_pie.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_sankey.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_sequence.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_shape.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_states.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_treemap.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_kinds_venn.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_labels.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_layout.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_layout_spike.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_lead_rule.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_legend.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_margins.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_measure.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_meter.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_packaging.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_readability.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_routing.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_routing_crossings.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_schema.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_self_loops.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_status.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_status_rag.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_text_graph.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_text_output.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_theme.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_venn4.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_waterfall.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tests/test_wrap.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/clipping.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/collisions.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/compare.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/docs.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/frames.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/gallery.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/hero.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/spike_layout.py +0 -0
- {drawspec-0.3.1 → drawspec-0.3.2}/tools/subset_fonts.py +0 -0
|
@@ -11,7 +11,7 @@ drawspec schema --out schema.json # the full JSON Schema
|
|
|
11
11
|
drawspec theme from site.css -o house.toml # a theme from a brand's CSS or design tokens
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
**If your client speaks MCP**, `drawspec-mcp` serves `
|
|
14
|
+
**If your client speaks MCP**, `drawspec-mcp` serves `list_kinds`, `get_example`, `get_schema`, `validate_document` and `render_document` as tools,
|
|
15
15
|
each violation a `{"pointer": "/edges/0/to", "message": …}` object: `pip install 'drawspec[mcp]'`, [`docs/guide.md`](docs/guide.md).
|
|
16
16
|
|
|
17
17
|
## The one rule
|
|
@@ -10,6 +10,24 @@ against it would stop working. Everything below is about the *package*.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.3.2] — 2026-10-15
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **The MCP tools are renamed to one verb_noun convention**: `validate` →
|
|
18
|
+
`validate_document`, `render` → `render_document`, `kinds` → `list_kinds`. The CLI
|
|
19
|
+
commands keep their names.
|
|
20
|
+
- **Sharper tool descriptions**: when to validate and when to render, the shape of
|
|
21
|
+
every answer and of every refusal, and read-only annotations on all tools. JSON
|
|
22
|
+
answers also come back as structured content matching an output schema.
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **`get_example`** and **`get_schema`** MCP tools: the smallest valid document of a
|
|
27
|
+
kind (what `drawspec example` prints), and that kind's slice of the published
|
|
28
|
+
schema with only the definitions it uses (a few thousand characters, not the whole
|
|
29
|
+
file's two hundred thousand).
|
|
30
|
+
|
|
13
31
|
## [0.3.1] — 2026-10-15
|
|
14
32
|
|
|
15
33
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: drawspec
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Declarative diagram spec to clean, themeable SVG — writable by an LLM with no coordinates.
|
|
5
5
|
Project-URL: Homepage, https://github.com/nuncaeslupus/drawspec
|
|
6
6
|
Project-URL: Documentation, https://github.com/nuncaeslupus/drawspec/blob/main/docs/guide.md
|
|
@@ -46,6 +46,8 @@ Description-Content-Type: text/markdown
|
|
|
46
46
|
[](https://github.com/nuncaeslupus/claude-arsenal)
|
|
47
47
|
<!-- /claude-arsenal:attribution -->
|
|
48
48
|
|
|
49
|
+
[](https://glama.ai/mcp/servers/nuncaeslupus/drawspec)
|
|
50
|
+
|
|
49
51
|
<p align="center">
|
|
50
52
|
<img src="https://raw.githubusercontent.com/nuncaeslupus/drawspec/main/docs/hero.png" width="100%" alt="drawspec: a blueprint sheet with the wordmark, a JSON flow spec and the flow chart drawspec renders from it, with large faint venn and pie drawings behind the wordmark, a mind map and a project file tree drawn by drawspec, and beside them a small sequence diagram as drawspec's text output, once in box drawing and once in ASCII">
|
|
51
53
|
</p>
|
|
@@ -401,7 +403,8 @@ what the guide and the references are for. [`llms.txt`](llms.txt) is the index
|
|
|
401
403
|
that points at it.
|
|
402
404
|
|
|
403
405
|
And if your client speaks **MCP**, `pip install 'drawspec[mcp]'` gives you
|
|
404
|
-
`drawspec-mcp`: `
|
|
406
|
+
`drawspec-mcp`: `list_kinds`, `get_example`, `get_schema`, `validate_document` and
|
|
407
|
+
`render_document` as tools, so a refusal arrives as
|
|
405
408
|
`{"pointer": "/edges/0/to", "message": …}` in the model's own loop instead of as
|
|
406
409
|
prose on stderr it has to read. Same checks, same messages, no shell. See
|
|
407
410
|
[the guide](docs/guide.md#using-it-from-an-agent-the-mcp-server).
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
[](https://github.com/nuncaeslupus/claude-arsenal)
|
|
7
7
|
<!-- /claude-arsenal:attribution -->
|
|
8
8
|
|
|
9
|
+
[](https://glama.ai/mcp/servers/nuncaeslupus/drawspec)
|
|
10
|
+
|
|
9
11
|
<p align="center">
|
|
10
12
|
<img src="https://raw.githubusercontent.com/nuncaeslupus/drawspec/main/docs/hero.png" width="100%" alt="drawspec: a blueprint sheet with the wordmark, a JSON flow spec and the flow chart drawspec renders from it, with large faint venn and pie drawings behind the wordmark, a mind map and a project file tree drawn by drawspec, and beside them a small sequence diagram as drawspec's text output, once in box drawing and once in ASCII">
|
|
11
13
|
</p>
|
|
@@ -361,7 +363,8 @@ what the guide and the references are for. [`llms.txt`](llms.txt) is the index
|
|
|
361
363
|
that points at it.
|
|
362
364
|
|
|
363
365
|
And if your client speaks **MCP**, `pip install 'drawspec[mcp]'` gives you
|
|
364
|
-
`drawspec-mcp`: `
|
|
366
|
+
`drawspec-mcp`: `list_kinds`, `get_example`, `get_schema`, `validate_document` and
|
|
367
|
+
`render_document` as tools, so a refusal arrives as
|
|
365
368
|
`{"pointer": "/edges/0/to", "message": …}` in the model's own loop instead of as
|
|
366
369
|
prose on stderr it has to read. Same checks, same messages, no shell. See
|
|
367
370
|
[the guide](docs/guide.md#using-it-from-an-agent-the-mcp-server).
|
|
@@ -466,7 +466,7 @@ cross-links or groups is drawn this way too; `bands` have no text form yet.
|
|
|
466
466
|
side by side.
|
|
467
467
|
|
|
468
468
|
From Python, `render_text(document, width=80, charset="unicode")` returns the
|
|
469
|
-
string; the MCP `
|
|
469
|
+
string; the MCP `render_document` tool takes `"format": "text"` with the same `width` and
|
|
470
470
|
`charset`.
|
|
471
471
|
|
|
472
472
|
## Validating in a build
|
|
@@ -760,14 +760,19 @@ picking a winner would be drawspec deciding which of two things you meant.
|
|
|
760
760
|
## Using it from an agent: the MCP server
|
|
761
761
|
|
|
762
762
|
If the thing writing your documents is a language model rather than a person,
|
|
763
|
-
there is a third interface. `drawspec-mcp` serves the same work as
|
|
764
|
-
tools over stdio:
|
|
763
|
+
there is a third interface. `drawspec-mcp` serves the same work as five MCP
|
|
764
|
+
tools over stdio, one per step of writing a document:
|
|
765
765
|
|
|
766
766
|
| Tool | Answers |
|
|
767
767
|
|---|---|
|
|
768
|
-
| `
|
|
769
|
-
| `
|
|
770
|
-
| `
|
|
768
|
+
| `list_kinds` | every kind and what it is for, so a model chooses one instead of guessing |
|
|
769
|
+
| `get_example` | the smallest valid document of one kind — what `drawspec example <kind>` prints |
|
|
770
|
+
| `get_schema` | one kind's fields, cut from the published schema with only the definitions it uses |
|
|
771
|
+
| `validate_document` | would `render_document` refuse this, and **where** — every violation as `{"pointer", "message"}` |
|
|
772
|
+
| `render_document` | the SVG, with the same optional `theme`, `width` and `height` — or, with `"format": "png"` (and optional `scale`, `background`), a base64 PNG image block, when the server has `drawspec[png]`; or with `"format": "text"`, the plain-text form |
|
|
773
|
+
|
|
774
|
+
All five are read-only; the JSON answers also come back as structured content
|
|
775
|
+
matching each tool's output schema.
|
|
771
776
|
|
|
772
777
|
```bash
|
|
773
778
|
pip install 'drawspec[mcp]'
|
|
@@ -783,7 +788,7 @@ Then point a client at it. For anything that reads the conventional JSON config:
|
|
|
783
788
|
}
|
|
784
789
|
```
|
|
785
790
|
|
|
786
|
-
**`
|
|
791
|
+
**`validate_document` is the one that earns the server.** Shelling out to the CLI works,
|
|
787
792
|
and it hands a model prose on stderr that it has to read to discover that
|
|
788
793
|
`/edges/2/to` names nothing. As a tool the same refusal comes back as data, in
|
|
789
794
|
the model's own loop, and the write-validate-fix cycle closes without a shell in
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"url": "https://github.com/nuncaeslupus/drawspec",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.3.
|
|
10
|
+
"version": "0.3.2",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "pypi",
|
|
14
14
|
"identifier": "drawspec",
|
|
15
|
-
"version": "0.3.
|
|
15
|
+
"version": "0.3.2",
|
|
16
16
|
"runtimeHint": "uvx",
|
|
17
17
|
"runtimeArguments": [
|
|
18
18
|
{
|
|
@@ -11,7 +11,8 @@ rather than guess at.
|
|
|
11
11
|
|
|
12
12
|
1. **Install.** `pip install drawspec`. If your client speaks MCP and the
|
|
13
13
|
`drawspec-mcp` server is available (`pip install 'drawspec[mcp]'`), use its
|
|
14
|
-
`
|
|
14
|
+
`list_kinds`, `get_example`, `get_schema`, `validate_document` and
|
|
15
|
+
`render_document` tools instead of the shell commands below.
|
|
15
16
|
2. **Read the format.** `AGENTS.md` at
|
|
16
17
|
https://github.com/nuncaeslupus/drawspec/blob/main/AGENTS.md — read it whole,
|
|
17
18
|
once. Offline, `drawspec kinds` lists the kinds and `drawspec example <kind>`
|
|
@@ -19,7 +19,7 @@ from drawspec.scene import Ellipse, Path, Polygon, Rect, Scene, TextRun
|
|
|
19
19
|
from drawspec.schema import Document, load_document, parse_document, validate_document
|
|
20
20
|
from drawspec.theme import Theme, load_theme
|
|
21
21
|
|
|
22
|
-
__version__ = "0.3.
|
|
22
|
+
__version__ = "0.3.2"
|
|
23
23
|
|
|
24
24
|
__all__ = [
|
|
25
25
|
"Box",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""drawspec as
|
|
1
|
+
"""drawspec as five MCP tools, so an agent's refusals arrive as data.
|
|
2
2
|
|
|
3
3
|
An agent writing a document today has to shell out to `drawspec validate`,
|
|
4
4
|
capture stderr, and read prose to find out that `/edges/2/to` names nothing.
|
|
@@ -9,19 +9,23 @@ pass is one edit — and they arrive in the one shape a program cannot use.
|
|
|
9
9
|
as `{"pointer": "/edges/0/to", "message": ...}` inside the agent's own loop, and
|
|
10
10
|
the write-validate-fix cycle closes without a shell in it.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Five tools, one per step of writing a document, and deliberately not more:
|
|
13
13
|
|
|
14
14
|
====================== ====================================================
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
``list_kinds`` every kind and what each is for
|
|
16
|
+
``get_example`` the smallest valid document of one kind
|
|
17
|
+
``get_schema`` one kind's fields, cut from the published schema
|
|
18
|
+
``validate_document`` would ``render_document`` refuse this, and where
|
|
19
|
+
``render_document`` the SVG, a PNG as an image block, or plain text
|
|
18
20
|
====================== ====================================================
|
|
19
21
|
|
|
20
22
|
**Nothing here paraphrases drawspec.** Every tool takes the document the CLI
|
|
21
23
|
takes and reports the violations :class:`~drawspec.schema.Violation` already
|
|
22
|
-
carries; `
|
|
23
|
-
|
|
24
|
-
schema
|
|
24
|
+
carries; `list_kinds` is `drawspec.examples.PURPOSE` verbatim, `get_example`
|
|
25
|
+
is `drawspec.examples.EXAMPLES` and `get_schema` a slice of the generated
|
|
26
|
+
schema. A layer that reworded the refusals would be a third description of the
|
|
27
|
+
format to keep in step with the schema and `AGENTS.md`, which is the drift this
|
|
28
|
+
project keeps designing out.
|
|
25
29
|
|
|
26
30
|
Run it with `python -m drawspec.mcp`, or as the `drawspec-mcp` script. It speaks
|
|
27
31
|
stdio, which is what every client supports; there is no HTTP transport because
|
|
@@ -51,20 +55,21 @@ except ImportError as error: # pragma: no cover - the extra is installed in CI
|
|
|
51
55
|
|
|
52
56
|
from drawspec import __version__
|
|
53
57
|
from drawspec.errors import DrawspecError
|
|
54
|
-
from drawspec.examples import PURPOSE
|
|
58
|
+
from drawspec.examples import EXAMPLES, PURPOSE
|
|
55
59
|
from drawspec.export import BACKGROUNDS, DEFAULT_SCALE, MAX_SCALE, render_png
|
|
56
60
|
from drawspec.kinds import TEXT_KINDS
|
|
57
61
|
from drawspec.render import render_document, render_text
|
|
58
|
-
from drawspec.schema import KINDS, SCHEMA_ID, Document, parse_document
|
|
62
|
+
from drawspec.schema import KINDS, SCHEMA_ID, Document, build_schema, parse_document
|
|
59
63
|
from drawspec.textgrid import CHARSETS, DEFAULT_WIDTH, WIDE_WIDTH
|
|
60
64
|
|
|
61
|
-
#: What every tool is handed. Spelled once because
|
|
62
|
-
#: thing: an agent that has learnt one call has learnt all of them.
|
|
65
|
+
#: What every tool is handed. Spelled once because the document tools all take
|
|
66
|
+
#: the same thing: an agent that has learnt one call has learnt all of them.
|
|
63
67
|
_DOCUMENT: Final[dict[str, Any]] = {
|
|
64
68
|
"type": "object",
|
|
65
69
|
"description": (
|
|
66
|
-
f"A drawspec document, as JSON.
|
|
67
|
-
|
|
70
|
+
f"A drawspec document, as JSON. `list_kinds` names the {len(KINDS)} values `kind` "
|
|
71
|
+
"may take, `get_example` returns the smallest valid document of one, and "
|
|
72
|
+
f"`get_schema` returns its fields (the whole format is published at {SCHEMA_ID})."
|
|
68
73
|
),
|
|
69
74
|
}
|
|
70
75
|
|
|
@@ -73,32 +78,132 @@ _THEME: Final[dict[str, Any]] = {
|
|
|
73
78
|
"description": "A bundled theme name or a path to a theme file. Omit for the default.",
|
|
74
79
|
}
|
|
75
80
|
|
|
81
|
+
_KIND: Final[dict[str, Any]] = {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"enum": list(KINDS),
|
|
84
|
+
"description": "A diagram kind, as `list_kinds` names them.",
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#: Every tool reads its arguments and writes nothing: calling one twice with the
|
|
88
|
+
#: same arguments returns the same answer and changes nothing anywhere.
|
|
89
|
+
_READ_ONLY: Final = types.ToolAnnotations(
|
|
90
|
+
read_only_hint=True, destructive_hint=False, idempotent_hint=True, open_world_hint=False
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
#: What a refused call returns, in the description's words. One shape for every
|
|
94
|
+
#: tool, so a caller has one error path.
|
|
95
|
+
_REFUSAL_SHAPE: Final[str] = (
|
|
96
|
+
"A refusal comes back as an error result whose text is JSON: "
|
|
97
|
+
'`{"ok": false, "error": "<type>", "message": "<text>", '
|
|
98
|
+
'"violations": [{"pointer": "/edges/0/to", "message": "<text>"}]}`, '
|
|
99
|
+
"where `pointer` is an RFC 6901 JSON pointer into the document (empty for the "
|
|
100
|
+
"document as a whole) and `violations` is never empty."
|
|
101
|
+
)
|
|
102
|
+
|
|
76
103
|
|
|
77
104
|
TOOLS: Final[tuple[types.Tool, ...]] = (
|
|
78
105
|
types.Tool(
|
|
79
|
-
name="
|
|
106
|
+
name="list_kinds",
|
|
107
|
+
title="List the diagram kinds",
|
|
108
|
+
description=(
|
|
109
|
+
"List the vocabulary: every value `kind` may take and what each one is for, as "
|
|
110
|
+
'`{"kinds": [{"kind": "flow", "purpose": "<text>"}]}`. Takes no arguments. Call '
|
|
111
|
+
"it first, before "
|
|
112
|
+
"choosing a kind — several kinds are not box-and-arrow diagrams and are easy to "
|
|
113
|
+
"miss; then `get_example` for a starting document."
|
|
114
|
+
),
|
|
115
|
+
input_schema={"type": "object", "properties": {}},
|
|
116
|
+
output_schema={
|
|
117
|
+
"type": "object",
|
|
118
|
+
"properties": {
|
|
119
|
+
"kinds": {
|
|
120
|
+
"type": "array",
|
|
121
|
+
"items": {
|
|
122
|
+
"type": "object",
|
|
123
|
+
"properties": {"kind": {"type": "string"}, "purpose": {"type": "string"}},
|
|
124
|
+
"required": ["kind", "purpose"],
|
|
125
|
+
},
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"required": ["kinds"],
|
|
129
|
+
},
|
|
130
|
+
annotations=_READ_ONLY,
|
|
131
|
+
),
|
|
132
|
+
types.Tool(
|
|
133
|
+
name="get_example",
|
|
134
|
+
title="Get an example document of one kind",
|
|
135
|
+
description=(
|
|
136
|
+
"Get the smallest valid document of one kind, as JSON ready to edit: the fastest "
|
|
137
|
+
"way to the right field names. Use it after `list_kinds` has settled the kind, "
|
|
138
|
+
"and `get_schema` only when a field the example does not use is needed."
|
|
139
|
+
),
|
|
140
|
+
input_schema={
|
|
141
|
+
"type": "object",
|
|
142
|
+
"properties": {"kind": _KIND},
|
|
143
|
+
"required": ["kind"],
|
|
144
|
+
},
|
|
145
|
+
output_schema={"type": "object", "description": "A drawspec document."},
|
|
146
|
+
annotations=_READ_ONLY,
|
|
147
|
+
),
|
|
148
|
+
types.Tool(
|
|
149
|
+
name="get_schema",
|
|
150
|
+
title="Get the JSON Schema for one kind",
|
|
151
|
+
description=(
|
|
152
|
+
"Get the JSON Schema for one kind's documents: every field it accepts, with "
|
|
153
|
+
"types, limits and descriptions, plus the shared definitions it refers to. Use "
|
|
154
|
+
"it when `get_example` does not show a field you need. Referential rules "
|
|
155
|
+
"(unique ids, edges that land on real nodes) are beyond JSON Schema — "
|
|
156
|
+
"`validate_document` checks those."
|
|
157
|
+
),
|
|
158
|
+
input_schema={
|
|
159
|
+
"type": "object",
|
|
160
|
+
"properties": {"kind": _KIND},
|
|
161
|
+
"required": ["kind"],
|
|
162
|
+
},
|
|
163
|
+
output_schema={"type": "object", "description": "A JSON Schema (draft 2020-12)."},
|
|
164
|
+
annotations=_READ_ONLY,
|
|
165
|
+
),
|
|
166
|
+
types.Tool(
|
|
167
|
+
name="validate_document",
|
|
80
168
|
title="Validate a drawspec document",
|
|
81
169
|
description=(
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"pass is one edit. Call
|
|
170
|
+
"Check whether `render_document` would refuse this document, and if so exactly "
|
|
171
|
+
"where, without drawing anything for you to read. Returns every violation, not "
|
|
172
|
+
"the first, so one pass is one edit. Call it while a document is being written "
|
|
173
|
+
"or edited; skip it when you are about to render anyway, since "
|
|
174
|
+
"`render_document` refuses in the same shape. "
|
|
175
|
+
'A valid document returns `{"ok": true, "kind": "flow", "message": "<text>"}`. '
|
|
176
|
+
+ _REFUSAL_SHAPE
|
|
85
177
|
),
|
|
86
178
|
input_schema={
|
|
87
179
|
"type": "object",
|
|
88
180
|
"properties": {"document": _DOCUMENT, "theme": _THEME},
|
|
89
181
|
"required": ["document"],
|
|
90
182
|
},
|
|
183
|
+
output_schema={
|
|
184
|
+
"type": "object",
|
|
185
|
+
"properties": {
|
|
186
|
+
"ok": {"type": "boolean"},
|
|
187
|
+
"kind": {"type": "string"},
|
|
188
|
+
"message": {"type": "string"},
|
|
189
|
+
},
|
|
190
|
+
"required": ["ok", "kind", "message"],
|
|
191
|
+
},
|
|
192
|
+
annotations=_READ_ONLY,
|
|
91
193
|
),
|
|
92
194
|
types.Tool(
|
|
93
|
-
name="
|
|
195
|
+
name="render_document",
|
|
94
196
|
title="Render a drawspec document to SVG, PNG or text",
|
|
95
197
|
description=(
|
|
96
|
-
"Draw the document
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"with
|
|
198
|
+
"Draw the document. Use it when the document is ready to show; while still "
|
|
199
|
+
"fixing errors, `validate_document` returns just the verdict instead of the drawing. "
|
|
200
|
+
"Returns one content "
|
|
201
|
+
"block: by default a text block holding the SVG markup, safe to paste inline "
|
|
202
|
+
"into a Markdown page (no global styles, no colliding ids, no meaning carried "
|
|
203
|
+
"by colour alone); with format `png`, an image block (base64 `image/png`) for "
|
|
204
|
+
"a chat, a slide or an attachment, which needs the server's `drawspec[png]` "
|
|
205
|
+
"extra; with format `text`, a text block with the diagram as plain text, for "
|
|
206
|
+
"the kinds that have a text form. Nothing is written to disk. " + _REFUSAL_SHAPE
|
|
102
207
|
),
|
|
103
208
|
input_schema={
|
|
104
209
|
"type": "object",
|
|
@@ -142,17 +247,7 @@ TOOLS: Final[tuple[types.Tool, ...]] = (
|
|
|
142
247
|
},
|
|
143
248
|
"required": ["document"],
|
|
144
249
|
},
|
|
145
|
-
|
|
146
|
-
types.Tool(
|
|
147
|
-
name="kinds",
|
|
148
|
-
title="List the diagram kinds",
|
|
149
|
-
description=(
|
|
150
|
-
"The vocabulary: every value `kind` may take and what each one is for. Takes no "
|
|
151
|
-
"arguments. Read this before choosing a kind — several of them are not "
|
|
152
|
-
"box-and-arrow diagrams and are easy to miss."
|
|
153
|
-
),
|
|
154
|
-
input_schema={"type": "object", "properties": {}},
|
|
155
|
-
annotations=types.ToolAnnotations(read_only_hint=True, idempotent_hint=True),
|
|
250
|
+
annotations=_READ_ONLY,
|
|
156
251
|
),
|
|
157
252
|
)
|
|
158
253
|
|
|
@@ -240,6 +335,67 @@ def _kinds() -> dict[str, Any]:
|
|
|
240
335
|
return {"kinds": [{"kind": kind, "purpose": PURPOSE[kind]} for kind in KINDS]}
|
|
241
336
|
|
|
242
337
|
|
|
338
|
+
def _kind(arguments: dict[str, Any]) -> str:
|
|
339
|
+
"""The `kind` argument, checked: an unknown kind is the arguments' fault."""
|
|
340
|
+
kind = str(arguments["kind"])
|
|
341
|
+
if kind not in KINDS:
|
|
342
|
+
raise ValueError(f"unknown kind {kind!r}; `list_kinds` names the {len(KINDS)} kinds")
|
|
343
|
+
return kind
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
def _example(arguments: dict[str, Any]) -> dict[str, Any]:
|
|
347
|
+
"""The smallest document of one kind — the same one `drawspec example` prints."""
|
|
348
|
+
return dict(EXAMPLES[_kind(arguments)])
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
def _schema(arguments: dict[str, Any]) -> dict[str, Any]:
|
|
352
|
+
"""One kind's branch of the published schema, with only the definitions it uses.
|
|
353
|
+
|
|
354
|
+
The whole schema is some two hundred thousand characters, most of it about
|
|
355
|
+
kinds the caller is not writing. The branch is cut from the same generated
|
|
356
|
+
schema the file is, so the two cannot disagree; the `$defs` it needs are
|
|
357
|
+
followed transitively through `$ref`, since a definition may refer to another.
|
|
358
|
+
"""
|
|
359
|
+
kind = _kind(arguments)
|
|
360
|
+
full = build_schema()
|
|
361
|
+
branch = next(v for v in full["oneOf"] if kind in v["properties"]["kind"]["enum"])
|
|
362
|
+
branch = {**branch, "properties": {**branch["properties"], "kind": {"const": kind}}}
|
|
363
|
+
branch.pop("title", None)
|
|
364
|
+
definitions: dict[str, Any] = full["$defs"]
|
|
365
|
+
needed: dict[str, Any] = {}
|
|
366
|
+
pending = _refs(branch)
|
|
367
|
+
while pending:
|
|
368
|
+
name = pending.pop()
|
|
369
|
+
if name not in needed:
|
|
370
|
+
needed[name] = definitions[name]
|
|
371
|
+
pending |= _refs(definitions[name])
|
|
372
|
+
schema = {
|
|
373
|
+
"$schema": full["$schema"],
|
|
374
|
+
"$id": SCHEMA_ID,
|
|
375
|
+
"title": f"drawspec {kind} document",
|
|
376
|
+
"description": full["description"],
|
|
377
|
+
**branch,
|
|
378
|
+
}
|
|
379
|
+
if needed:
|
|
380
|
+
schema["$defs"] = dict(sorted(needed.items()))
|
|
381
|
+
return schema
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
def _refs(node: object) -> set[str]:
|
|
385
|
+
"""The `$defs` names a schema fragment refers to, directly."""
|
|
386
|
+
if isinstance(node, dict):
|
|
387
|
+
found = set()
|
|
388
|
+
ref = node.get("$ref")
|
|
389
|
+
if isinstance(ref, str) and ref.startswith("#/$defs/"):
|
|
390
|
+
found.add(ref.removeprefix("#/$defs/"))
|
|
391
|
+
for value in node.values():
|
|
392
|
+
found |= _refs(value)
|
|
393
|
+
return found
|
|
394
|
+
if isinstance(node, list):
|
|
395
|
+
return set().union(*(_refs(item) for item in node)) if node else set()
|
|
396
|
+
return set()
|
|
397
|
+
|
|
398
|
+
|
|
243
399
|
def _image(png: bytes) -> types.CallToolResult:
|
|
244
400
|
data = base64.b64encode(png).decode("ascii")
|
|
245
401
|
return types.CallToolResult(
|
|
@@ -248,8 +404,14 @@ def _image(png: bytes) -> types.CallToolResult:
|
|
|
248
404
|
|
|
249
405
|
|
|
250
406
|
def _text(payload: object) -> types.CallToolResult:
|
|
251
|
-
|
|
252
|
-
|
|
407
|
+
if isinstance(payload, str):
|
|
408
|
+
return types.CallToolResult(content=[types.TextContent(type="text", text=payload)])
|
|
409
|
+
# A JSON answer goes out twice: as text for clients that read only content,
|
|
410
|
+
# and as structured content matching the tool's `output_schema`.
|
|
411
|
+
return types.CallToolResult(
|
|
412
|
+
content=[types.TextContent(type="text", text=json.dumps(payload, indent=2))],
|
|
413
|
+
structured_content=payload if isinstance(payload, dict) else None,
|
|
414
|
+
)
|
|
253
415
|
|
|
254
416
|
|
|
255
417
|
async def _on_list_tools(
|
|
@@ -271,20 +433,24 @@ async def _on_call_tool(
|
|
|
271
433
|
"""
|
|
272
434
|
arguments = dict(params.arguments or {})
|
|
273
435
|
try:
|
|
274
|
-
if params.name == "
|
|
436
|
+
if params.name == "validate_document":
|
|
275
437
|
return _text(_validate(arguments))
|
|
276
|
-
if params.name == "
|
|
438
|
+
if params.name == "render_document":
|
|
277
439
|
rendered = _render(arguments)
|
|
278
440
|
return _image(rendered) if isinstance(rendered, bytes) else _text(rendered)
|
|
279
|
-
if params.name == "
|
|
441
|
+
if params.name == "list_kinds":
|
|
280
442
|
return _text(_kinds())
|
|
443
|
+
if params.name == "get_example":
|
|
444
|
+
return _text(_example(arguments))
|
|
445
|
+
if params.name == "get_schema":
|
|
446
|
+
return _text(_schema(arguments))
|
|
281
447
|
except DrawspecError as error:
|
|
282
448
|
return types.CallToolResult(
|
|
283
449
|
content=[types.TextContent(type="text", text=json.dumps(_refusal(error), indent=2))],
|
|
284
450
|
is_error=True,
|
|
285
451
|
)
|
|
286
452
|
except ValueError as error:
|
|
287
|
-
# An out-of-range `scale
|
|
453
|
+
# An out-of-range `scale`, an unknown `background` or `kind`: the arguments,
|
|
288
454
|
# not the document, so there is nothing to locate.
|
|
289
455
|
message = str(error)
|
|
290
456
|
return types.CallToolResult(
|
|
@@ -344,9 +510,10 @@ def build_server() -> Server[None]:
|
|
|
344
510
|
title="drawspec",
|
|
345
511
|
instructions=(
|
|
346
512
|
"Write what a diagram means — nodes, edges, labels, and a semantic role for each — "
|
|
347
|
-
"and drawspec decides every coordinate. Call `
|
|
348
|
-
"
|
|
349
|
-
|
|
513
|
+
"and drawspec decides every coordinate. Call `list_kinds` to choose a kind, "
|
|
514
|
+
"`get_example` for a starting document (`get_schema` for every field), "
|
|
515
|
+
"`validate_document` while writing (its violations are located by JSON pointer), "
|
|
516
|
+
f"and `render_document` for the SVG. The document format is published at {SCHEMA_ID}."
|
|
350
517
|
),
|
|
351
518
|
on_list_tools=_on_list_tools,
|
|
352
519
|
on_call_tool=_on_call_tool,
|