ww-agentic-workflows 1.0.0.dev3__tar.gz → 1.0.0.dev6__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.
- ww_agentic_workflows-1.0.0.dev6/.claude/skills/noww/SKILL.md +12 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.claude/skills/ww/SKILL.md +23 -11
- ww_agentic_workflows-1.0.0.dev6/.codex/skills/noww/SKILL.md +12 -0
- ww_agentic_workflows-1.0.0.dev6/.codex/skills/ww/SKILL.md +71 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CHANGELOG.md +59 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/PKG-INFO +10 -10
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/README.md +9 -9
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/WW_AGENT_INSTRUCTIONS.md +13 -3
- ww_agentic_workflows-1.0.0.dev6/documentation/agent-hooks.md +135 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/architecture.md +55 -60
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/features.md +168 -122
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/limitations.md +5 -10
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/specification.md +156 -34
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/todo.md +3 -5
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/ext/ww/git/extension.py +23 -2
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/pyproject.toml +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/agent_instructions.md +13 -3
- ww_agentic_workflows-1.0.0.dev6/src/ww/assets/noww_skill.md +12 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/workflows/onboarding.yaml +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-deduce-feedback_skill.md +6 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-wizard_skill.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww_skill.md +23 -11
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/builtin_workflows.py +0 -6
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/changes.py +44 -11
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/claude_permissions.py +1 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/catalogs.py +1 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/discover.py +53 -102
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/initialization.py +3 -5
- ww_agentic_workflows-1.0.0.dev6/src/ww/cli/lookup.py +266 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/main.py +89 -86
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/parser.py +53 -17
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/__init__.py +7 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/rules.py +26 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/defaults.py +0 -2
- ww_agentic_workflows-1.0.0.dev6/src/ww/direct_work.py +275 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/decoding.py +12 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/plan_codec.py +2 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/records.py +28 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/feedback.py +6 -2
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/hooks/__init__.py +2 -5
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/hooks/agents.py +7 -82
- ww_agentic_workflows-1.0.0.dev6/src/ww/hooks/notices.py +32 -0
- ww_agentic_workflows-1.0.0.dev6/src/ww/hooks/runtime.py +75 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/builder.py +12 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/commands.py +13 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/handoff.py +16 -4
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/models.py +13 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/interactions.py +4 -7
- ww_agentic_workflows-1.0.0.dev6/src/ww/open_work.py +42 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output.py +11 -4
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/markdown.py +56 -11
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/rule_pages.py +7 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/compiler.py +2 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/models.py +4 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/project_config.py +24 -18
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/results.py +18 -3
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_checks.py +2 -2
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_verification.py +9 -3
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_views.py +7 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_writes.py +36 -4
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/runtimes.py +12 -2
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/service.py +370 -38
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/base.py +21 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/filesystem.py +32 -5
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/memory.py +17 -2
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/transitions.py +50 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workflow_config.py +4 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/conftest.py +6 -6
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/fix-required.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/interactive.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/item-stage.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/loop-body.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/loop-continue.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/manager-dispatch.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/step-auto-worker.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/step-rules.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/step-single.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/values-and-metadata.md +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/worker-handoff.md +2 -0
- ww_agentic_workflows-1.0.0.dev6/tests/integration/test_adjustments.py +227 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_builtin_workflows.py +7 -26
- ww_agentic_workflows-1.0.0.dev6/tests/integration/test_children_added_mid_run.py +227 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_cli.py +5 -7
- ww_agentic_workflows-1.0.0.dev6/tests/integration/test_direct_work.py +582 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_discover.py +57 -81
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_git_extension.py +38 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_handler_repairs.py +11 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_handoff_block.py +226 -1
- ww_agentic_workflows-1.0.0.dev6/tests/integration/test_hooks.py +536 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_interactive.py +2 -2
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_onboarding_workflows.py +2 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_page_gates.py +1 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_plan_execution.py +90 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_write_commands.py +61 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rules_and_checks.py +94 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_worker_handoff.py +70 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_workflow_service.py +3 -3
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_changes.py +52 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_config.py +3 -3
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_config_composition.py +2 -14
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_execution_hints.py +4 -3
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_hook_agents.py +12 -94
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_plan.py +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_project_config.py +29 -8
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_verification.py +30 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rules.py +16 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_storage_adapters.py +59 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_variables.py +1 -1
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_workflow_inheritance.py +24 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_workflow_validation.py +18 -11
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/ww.yaml +3 -1
- ww_agentic_workflows-1.0.0.dev3/.claude/skills/noww/SKILL.md +0 -11
- ww_agentic_workflows-1.0.0.dev3/.codex/skills/noww/SKILL.md +0 -11
- ww_agentic_workflows-1.0.0.dev3/.codex/skills/ww/SKILL.md +0 -34
- ww_agentic_workflows-1.0.0.dev3/documentation/agent-hooks.md +0 -270
- ww_agentic_workflows-1.0.0.dev3/src/ww/assets/noww_skill.md +0 -11
- ww_agentic_workflows-1.0.0.dev3/src/ww/assets/workflows/catchall.yaml +0 -26
- ww_agentic_workflows-1.0.0.dev3/src/ww/cli/lookup.py +0 -287
- ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/notices.py +0 -206
- ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/records.py +0 -209
- ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/runtime.py +0 -266
- ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/transcripts.py +0 -183
- ww_agentic_workflows-1.0.0.dev3/src/ww/open_work.py +0 -236
- ww_agentic_workflows-1.0.0.dev3/tests/integration/test_catchall.py +0 -212
- ww_agentic_workflows-1.0.0.dev3/tests/integration/test_hooks.py +0 -1324
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.claude/settings.json +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.claude/skills/update-architecture-documentation/SKILL.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.codex/hooks.json +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.codex/skills/update-architecture-documentation/SKILL.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.git-blame-ignore-revs +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.githooks/pre-commit +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/workflows/dev-publish.yml +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/workflows/release-gates.yml +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.gitignore +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/AGENTS.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CLAUDE.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CODE_OF_CONDUCT.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CONTRIBUTING.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/LICENSE +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/SECURITY.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/development-releases.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/examples.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/python-agent-rules.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/check_distribution.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/check_release_gates.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/demo.sh +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/ensure_spdx_license.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/measure_pages.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/run_workflow_dummy.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/set_dev_version.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/test +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/action_execution.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/command.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/contracts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/extension.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/mcp.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/prompt.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/skill.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/slash_command.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/agents.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/amendments.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/artifacts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assessments.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/workflows/scriptize.yaml +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-automate_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-feedback-rules_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-learn-project_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-refresh_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-rule_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-rules-from-artifacts_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-scriptize_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-setup_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-solve_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-suggest_skill.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assignments.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/bootstrap.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/child_coordination.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/children.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/__main__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/audit.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/prompts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/updates.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/completion_artifacts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/completion_inputs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/actions.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/composition.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/steps.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/values.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config_files.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config_writes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/contracts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/control.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/design_docs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/discovery.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/documents.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/errors.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/executable.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/construction.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/runs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/api.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/registry.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/store.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/handler_repairs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/hooks/install.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/inspect.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/policy.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/text.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/interpolation.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/item_passes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/items.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/locking.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/metadata_publication.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/onboarding.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operations.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/page.html +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/server.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/session.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/sheet.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/view.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/base.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/json_adapter.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/terminal.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/package_updates.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/actions.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/constructs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/recovery.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/replanning.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_conversion.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_disputes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_store.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/run_coordination.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/setup_apply.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/step_values.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/__init__.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/project_metadata.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/task_document.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/task_ids.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/task_references.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/updates.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/upgrade.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/validation.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/variables.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workflow_update.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workflow_validation.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workspace.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/action_contract_helpers.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/config_helpers.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/example_documents.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/fixtures/packaged_extension/ww_test_packaged_extension.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/completion.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/operator-stop.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/verification.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/worker-bootstrap.md +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_artifact_from_containers.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_assessment_outcomes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_assignment_tokens.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_auto_retries.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_automatic_handler_groups.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_automatic_modes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_awaiting_operator.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_bootstrap_task_id.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_identity.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_launch_settings.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_stages.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_start_action.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_start_guards.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_tasks.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_command_metadata.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_complete_dispatch.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_concurrency.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_config_files.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_configuration_authority.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_documents.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_example_behaviour.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_executable.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_extension_execution.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_feedback_commands.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_git_variables.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_golden_pages.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_init_force.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_init_permissions.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_inspect.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_assignment.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_fields.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_pass_restarts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_pass_runs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_reply_reports.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_runtime_values.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_items.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_local_step_pages.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_loops.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_memory_workflow_service.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_metadata_lists.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_onboarding.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_pack_scenarios.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_packaged_extension.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_projects.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_recommended_workflow.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_recovery_guards.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_replanning.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_requirements_pages.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_requirements_per_session.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_restart.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_commands.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_conversion.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_verification_flow.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_scriptize_workflow.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_setup_apply.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_setup_update.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_setup_verification.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_shared_items.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_stale_task_records.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_state_unknown_fields.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_system_scenarios.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_update_notice.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_upgrade.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_workdir.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_worker_bootstrap_text.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/page_catalog.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/plan_helpers.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/test_dev_version.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_action_contracts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_action_example.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_action_phase_contexts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_artifacts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_assignments.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_beta_notice.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_builtin_actions.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_checklist_prompt.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_child_stages_config.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_children_config.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_cli_prompts.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_completion_inputs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_completion_selection.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_config_writes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_delegation_requests.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_design_docs.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_discovery.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_examples_doc.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_extensions.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_feedback.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_handler_failure_report.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_instruction_commands.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_interactions.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_item_config.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_item_passes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_item_validation.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_locking.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_markdown_output.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_modes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_operator_ui.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_package_updates.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_project_metadata_storage_adapters.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_records.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_disputes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_store.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_writes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_runtimes.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_scripts_test_bootstrap.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_step_role.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_storage.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_document.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_ids.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_references.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_transitions.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_updates.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_validation.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_workspace.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/workflow_helpers.py +0 -0
- {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/ww.json +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: noww
|
|
3
|
+
description: Work without ww. Use only when the user invokes /noww or asks not to use ww.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Work without ww
|
|
7
|
+
|
|
8
|
+
Do not use ww for the rest of this conversation, unless the user asks for it
|
|
9
|
+
again: do not run `./ww discover`, `./ww lookup` or `./ww record`, and do not
|
|
10
|
+
start, continue, or complete a ww task. Carry out requests directly, as in a
|
|
11
|
+
project without ww. A ww task already in progress stays as it is; do not reset
|
|
12
|
+
or fail it.
|
{ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.claude/skills/ww/SKILL.md
RENAMED
|
@@ -17,17 +17,29 @@ change, start from step 1 then.
|
|
|
17
17
|
carry out the request without ww and do not ask.
|
|
18
18
|
2. To continue an existing task, run
|
|
19
19
|
`./ww instruction <task-id> --role manager` instead of starting a new one.
|
|
20
|
-
3. Otherwise
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
3. Otherwise decide how the request is carried out, in this order:
|
|
21
|
+
a. It names a ticket or clearly matches a configured workflow's
|
|
22
|
+
description, and is more than a small change: propose that workflow, and
|
|
23
|
+
offer the alternative in the same choice, "run `<workflow>`" / "just do
|
|
24
|
+
it, register afterwards". A workflow the user named is started without
|
|
25
|
+
asking. When one is chosen, keep its default
|
|
26
|
+
modes unless the user's wording matches another mode, and start the task
|
|
27
|
+
with the start command `discover` shows. Pass the user's requirements,
|
|
28
|
+
normalized, as `--requirements`. When the request names an external
|
|
29
|
+
ticket, such as a Jira key, use that key as the task ID; omit the ID
|
|
30
|
+
only when there is none or the workflow obtains its own.
|
|
31
|
+
b. Otherwise it is direct work: do it as you would in a plain conversation,
|
|
32
|
+
with no question asked, then run
|
|
33
|
+
`./ww record <task> --summary "..."`. `./ww lookup [<task>] --agent
|
|
34
|
+
<agent>` names the task and the command; pass the task the conversation
|
|
35
|
+
works on or the request names, as written. Read-only work needs no task.
|
|
36
|
+
c. Judge each prompt on its own. A series of small requests stays a series
|
|
37
|
+
of direct-work entries; never promote them into a workflow because they
|
|
38
|
+
add up.
|
|
39
|
+
d. Ask only when it is genuinely ambiguous, and never again on the same
|
|
40
|
+
task once the operator chose direct work.
|
|
41
|
+
e. If `record` fails or is forgotten, ww records the commits it had not
|
|
42
|
+
seen on the next run; say so, and do not retry it endlessly.
|
|
31
43
|
When the first page of `start` says rules have no check
|
|
32
44
|
yet, tell the user once and carry on: it never blocks the task, and the
|
|
33
45
|
`ww-scriptize` skill builds those checks when they want it.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: noww
|
|
3
|
+
description: Work without ww. Use only when the user invokes /noww or asks not to use ww.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Work without ww
|
|
7
|
+
|
|
8
|
+
Do not use ww for the rest of this conversation, unless the user asks for it
|
|
9
|
+
again: do not run `./ww discover`, `./ww lookup` or `./ww record`, and do not
|
|
10
|
+
start, continue, or complete a ww task. Carry out requests directly, as in a
|
|
11
|
+
project without ww. A ww task already in progress stays as it is; do not reset
|
|
12
|
+
or fail it.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ww
|
|
3
|
+
description: Carry out a development request through ww, this project's workflow tool. Use only when the request changes something (implement, fix, refactor, merge, edit documentation) or the user explicitly asks to work via ww, to start or continue a ww task, or to run a ww workflow; where `./ww discover` says ww is used by default, use it before changing files for any request, since every change then goes through ww. Never use it for reviews, questions, explanations, investigations, status checks or other read-only work, even when they concern ww or a ww task.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Work through ww
|
|
7
|
+
|
|
8
|
+
ww is for development: requests that change files. A review, question,
|
|
9
|
+
explanation, investigation, status check or other read-only request never
|
|
10
|
+
goes through ww; answer it directly, without these steps and without a task,
|
|
11
|
+
even where ww is used by default. When a read-only conversation turns into a
|
|
12
|
+
change, start from step 1 then.
|
|
13
|
+
|
|
14
|
+
1. Run `./ww discover` and read all of it. If it says ww is disabled, stop:
|
|
15
|
+
do not use ww, and tell the user. If it says ww is used only on request
|
|
16
|
+
and the user did not explicitly ask for ww (invoking this skill counts),
|
|
17
|
+
carry out the request without ww and do not ask.
|
|
18
|
+
2. To continue an existing task, run
|
|
19
|
+
`./ww instruction <task-id> --role manager` instead of starting a new one.
|
|
20
|
+
3. Otherwise decide how the request is carried out, in this order:
|
|
21
|
+
a. It names a ticket or clearly matches a configured workflow's
|
|
22
|
+
description, and is more than a small change: propose that workflow, and
|
|
23
|
+
offer the alternative in the same choice, "run `<workflow>`" / "just do
|
|
24
|
+
it, register afterwards". A workflow the user named is started without
|
|
25
|
+
asking. When one is chosen, keep its default
|
|
26
|
+
modes unless the user's wording matches another mode, and start the task
|
|
27
|
+
with the start command `discover` shows. Pass the user's requirements,
|
|
28
|
+
normalized, as `--requirements`. When the request names an external
|
|
29
|
+
ticket, such as a Jira key, use that key as the task ID; omit the ID
|
|
30
|
+
only when there is none or the workflow obtains its own.
|
|
31
|
+
b. Otherwise it is direct work: do it as you would in a plain conversation,
|
|
32
|
+
with no question asked, then run
|
|
33
|
+
`./ww record <task> --summary "..."`. `./ww lookup [<task>] --agent
|
|
34
|
+
<agent>` names the task and the command; pass the task the conversation
|
|
35
|
+
works on or the request names, as written. Read-only work needs no task.
|
|
36
|
+
c. Judge each prompt on its own. A series of small requests stays a series
|
|
37
|
+
of direct-work entries; never promote them into a workflow because they
|
|
38
|
+
add up.
|
|
39
|
+
d. Ask only when it is genuinely ambiguous, and never again on the same
|
|
40
|
+
task once the operator chose direct work.
|
|
41
|
+
e. If `record` fails or is forgotten, ww records the commits it had not
|
|
42
|
+
seen on the next run; say so, and do not retry it endlessly.
|
|
43
|
+
When the first page of `start` says rules have no check
|
|
44
|
+
yet, tell the user once and carry on: it never blocks the task, and the
|
|
45
|
+
`ww-scriptize` skill builds those checks when they want it.
|
|
46
|
+
4. Follow every ww response exactly: run each displayed command with all
|
|
47
|
+
placeholders replaced, and keep going until ww reports that the workflow
|
|
48
|
+
is complete or reports an error. On `interactive: true` steps, converse
|
|
49
|
+
naturally until intent to finish is clear, ask if ambiguous, and treat
|
|
50
|
+
"done for today" as a pause. Record and end the interaction before
|
|
51
|
+
completing it. Use the host choice tool when available; keep asynchronous
|
|
52
|
+
choices pending until an answer arrives, and do not treat timeouts or
|
|
53
|
+
preselection as answers. After completion, relay any optional
|
|
54
|
+
`ww-deduce-feedback` suggestion; do not insert learning into the plan.
|
|
55
|
+
Deduction uses ww commands and explicit existing point IDs; rule review
|
|
56
|
+
and pruning are separate, and rules require operator approval.
|
|
57
|
+
5. Never run a ww-owned handler yourself, edit ww state, or read
|
|
58
|
+
`ww.yaml` or ww's source to work out what to do next. For a handler repair
|
|
59
|
+
assignment, fix the cause and complete with an artifact; ww retries the
|
|
60
|
+
command. In `auto`, the manager dispatches the repair with `next`. When
|
|
61
|
+
ww reports `awaiting_operator` (a failed handler or work, an interrupted
|
|
62
|
+
command, a loop at its iteration limit, a changed workflow), stop and report the task, its
|
|
63
|
+
`operator_reason` and the exact error to the user (unless they gave a
|
|
64
|
+
standing authorization for routine repairs such as dependency installation,
|
|
65
|
+
formatting or retries: apply it to a stop of that kind without asking again,
|
|
66
|
+
and ask only for a material decision or an action outside it); when they
|
|
67
|
+
decide, run the recovery command ww showed, `./ww next <task-id> --retry` to run the
|
|
68
|
+
handler again, `--force --reason` to skip it or leave the loop, or
|
|
69
|
+
`--replan` / `--keep-plan` for a changed workflow. A `pass_incomplete`
|
|
70
|
+
stop is cleared by recording what it names with `./ww update-item`, then
|
|
71
|
+
`./ww next <task-id> --retry`; `--force` is refused there.
|
|
@@ -11,6 +11,65 @@ yet, is in [documentation/limitations.md](documentation/limitations.md).
|
|
|
11
11
|
|
|
12
12
|
## 2026-10-05
|
|
13
13
|
|
|
14
|
+
- Fixed: in the `auto` runtime, a worker's `loop --continue` below the loop's limit left the task stuck: the
|
|
15
|
+
continue ended the assignment yet opened the next round's first step for a worker that no longer held a
|
|
16
|
+
token, so the worker's next command was refused and the manager's `next` reported a step in progress. The
|
|
17
|
+
continue now ends the assignment with its handoff block, and the manager's `next` dispatches the first step
|
|
18
|
+
of the next round as a new assignment.
|
|
19
|
+
- Removed: the session-start task list, stop reminders, interruption records and transcript recovery, and the
|
|
20
|
+
`interrupted` command. Hooks, events and `agent_hooks` keys stay accepted. `5414a34`
|
|
21
|
+
- Added: `add-child` is accepted while a per-child stage of a roadmap-style parent is active, not only while the
|
|
22
|
+
collecting step is. The new child is appended after the last planned child with its own expanded lifecycle;
|
|
23
|
+
once the last child's stages have finished the command is refused. `00338d9`
|
|
24
|
+
- Added: `ww handoff <task> [--run ID] [--assignment TOKEN] [--json]` prints the handoff block of an ended assignment
|
|
25
|
+
again, for a worker whose output was cut short; the completion page and the `auto` runtime instruction name it.
|
|
26
|
+
The change set is reproduced only while the assignment is the latest one, otherwise the block says so. `aae3ed2`
|
|
27
|
+
- Fixed: when a child task's run has completed, its handoff block names the parent task's `next` command
|
|
28
|
+
("Manager: continue with the parent task: ...") instead of a command that fails because the child is completed;
|
|
29
|
+
a child partway through its run keeps its own. The handoff JSON carries `continuation_task_id`. `6b6669c`
|
|
30
|
+
- Fixed: a child task's `ww/git` worktree is named like its branch, the parent's rendered `worktree_name_format`
|
|
31
|
+
plus `-<child id>` (`ww-worktrees/TASK-51-A`), so it no longer lands inside the parent's checkout as untracked
|
|
32
|
+
content; any other rendered name holding a `/` has each one replaced with `-`. Worktrees already created inside
|
|
33
|
+
a parent's are not migrated. `6b6669c`
|
|
34
|
+
- Fixed: the continuation line of a requested-worker page names the flags (`--selected-agent`, `--model`,
|
|
35
|
+
`--reasoning`) whose values follow the request. `6b6669c`
|
|
36
|
+
- Changed: ww's own roadmap workflow's `fix` step tells the worker to prefix its commits with the child ID, as the
|
|
37
|
+
child's own commits are. `6b6669c`
|
|
38
|
+
|
|
39
|
+
- Added: direct work replaces the `catchall` workflow. A change no workflow fits is made as in a plain
|
|
40
|
+
conversation and registered afterwards with `record <task> --summary "<text>"`, which appends an entry to
|
|
41
|
+
the task's `direct-work.json` with the commits ww finds itself (the task's recorded branch since its base,
|
|
42
|
+
minus the commits ww already knows; without a recorded branch, the current branch's commits that name the task
|
|
43
|
+
ID). A task needs no run, and `lookup` no longer asks before a task ww has not seen. When the manager asks for
|
|
44
|
+
a task's page with `instruction --role manager`, ww records any commits it had not seen as a `reconciled` entry
|
|
45
|
+
and prints one line at the top of the page, so a forgotten or failed `record` is made up for. `status` lists the
|
|
46
|
+
entries and short SHAs. The agent instructions, the `ww` and `noww` skills and `discover` now say: propose a
|
|
47
|
+
matching workflow with "just do it, register afterwards" as the alternative, otherwise work directly and ask
|
|
48
|
+
nothing, judge each prompt on its own, and never ask again on a task once direct work was chosen. Existing
|
|
49
|
+
projects keep their installed skills; `init --force` or copying the bundled ones picks up the new wording.
|
|
50
|
+
- Removed: the `catchall` workflow, its `discover` section (`catchall` is gone from the JSON, `direct_work`
|
|
51
|
+
replaces it) and the `lookup` menu. A `catchall` entry under `workflows` in `ww.json` is ignored and `lint`
|
|
52
|
+
warns about it, instead of failing.
|
|
53
|
+
- The repair page for a failed automatic handler now says what to do when the cause is the environment rather than
|
|
54
|
+
the work (a sandbox or permission denial, a network or package-install error, a held lock): change no project
|
|
55
|
+
files, fix the environment or ask the operator, and say in the completion that the cause was environmental.
|
|
56
|
+
- A rule file can narrow a rule to files by content with `contains`, a list of plain, case-sensitive strings (no
|
|
57
|
+
regular expressions) in its frontmatter: a file must match a `paths` glob, if any, and contain one of the
|
|
58
|
+
strings. A check whose strings are in no changed file is not applicable, a converted check covering several
|
|
59
|
+
rules takes the union of their strings, and the step page prints the strings beside the globs. `rules add` and
|
|
60
|
+
`rules edit` take `--contains <text>...` and report how many project files hold each string. Rules written in a
|
|
61
|
+
step's own `rules` list still take no `paths` or `contains`.
|
|
62
|
+
- `complete` and `loop` take `--adjustments "<text>"` for the changes the operator asked for during a step. ww
|
|
63
|
+
stores it on the step record, shows it in `status`, beside the summary on the next step's page and on the
|
|
64
|
+
verifier's page, and hands it to feedback deduction as a labelled `adjustments` field; a repair completion
|
|
65
|
+
refuses it. Every worker step page now asks the worker to record such requests in the artifact and in the flag.
|
|
66
|
+
- A workflow can set `manual: true`: `discover` and `lookup` leave it out, `start` still accepts it, and `inherit`
|
|
67
|
+
does not copy the setting. A workflow named `manual` in the `- name: description` shorthand must now use the
|
|
68
|
+
`name:` key.
|
|
69
|
+
- A handoff now gives the new run the target workflow's declared `runtime`, and replaces the run-level `model` and
|
|
70
|
+
`reasoning` with the target's declared values, keeping the source run's values for what the target does not
|
|
71
|
+
declare.
|
|
72
|
+
- The specification and features now describe how a child gets its external ID.
|
|
14
73
|
- The `ww` skill and agent instructions now say ww is only for development: reviews, questions, investigations,
|
|
15
74
|
status checks and other read-only requests never invoke the skill or start a task. Existing projects keep their
|
|
16
75
|
installed skill; `init --force` or copying the bundled one picks up the new wording.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ww-agentic-workflows
|
|
3
|
-
Version: 1.0.0.
|
|
3
|
+
Version: 1.0.0.dev6
|
|
4
4
|
Summary: A local-first, resumable workflow CLI for people and AI agents.
|
|
5
5
|
Project-URL: Homepage, https://agenticworkflows.dev
|
|
6
6
|
Project-URL: Documentation, https://github.com/from-developers-for-developers/agentic-workflows/tree/main/documentation
|
|
@@ -323,14 +323,14 @@ one:
|
|
|
323
323
|
- `--role manager` is the role driving the task; a worker performing a single
|
|
324
324
|
assignment uses `--role worker`.
|
|
325
325
|
|
|
326
|
-
A request no workflow fits
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
agent to leave ww out.
|
|
326
|
+
A request no workflow fits is direct work: the agent does it exactly as it
|
|
327
|
+
would without ww, then registers it with `./ww record <task> --summary "..."`,
|
|
328
|
+
and ww keeps the summary and the commits it finds for it. Questions and other
|
|
329
|
+
read-only work never start a task. The agent first runs `./ww lookup` with the
|
|
330
|
+
task you named, however you wrote it (`12345` finds `FOOBAR-12345`), and asks
|
|
331
|
+
you nothing unless the request clearly matches a workflow, in which case it
|
|
332
|
+
offers that workflow or "just do it, register afterwards". Say `/noww` when
|
|
333
|
+
you want the agent to leave ww out.
|
|
334
334
|
|
|
335
335
|
If you would rather open the task yourself — to pin an external ticket key, or
|
|
336
336
|
to hand a prepared task to an agent — the same command works typed in.
|
|
@@ -649,7 +649,7 @@ ww-agentic-workflows complete TASK-123 --role worker \
|
|
|
649
649
|
- [architecture.md](documentation/architecture.md) describes internals, boundaries, state, and
|
|
650
650
|
design decisions.
|
|
651
651
|
- [agent-hooks.md](documentation/agent-hooks.md) covers the agent's own hooks
|
|
652
|
-
(session-start
|
|
652
|
+
(the session-start line): what it does, per-agent support, and
|
|
653
653
|
install/uninstall/show.
|
|
654
654
|
- [examples.md](documentation/examples.md) is a set of complete, tested
|
|
655
655
|
`ww.yaml` examples, one per control or behaviour.
|
|
@@ -285,14 +285,14 @@ one:
|
|
|
285
285
|
- `--role manager` is the role driving the task; a worker performing a single
|
|
286
286
|
assignment uses `--role worker`.
|
|
287
287
|
|
|
288
|
-
A request no workflow fits
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
agent to leave ww out.
|
|
288
|
+
A request no workflow fits is direct work: the agent does it exactly as it
|
|
289
|
+
would without ww, then registers it with `./ww record <task> --summary "..."`,
|
|
290
|
+
and ww keeps the summary and the commits it finds for it. Questions and other
|
|
291
|
+
read-only work never start a task. The agent first runs `./ww lookup` with the
|
|
292
|
+
task you named, however you wrote it (`12345` finds `FOOBAR-12345`), and asks
|
|
293
|
+
you nothing unless the request clearly matches a workflow, in which case it
|
|
294
|
+
offers that workflow or "just do it, register afterwards". Say `/noww` when
|
|
295
|
+
you want the agent to leave ww out.
|
|
296
296
|
|
|
297
297
|
If you would rather open the task yourself — to pin an external ticket key, or
|
|
298
298
|
to hand a prepared task to an agent — the same command works typed in.
|
|
@@ -611,7 +611,7 @@ ww-agentic-workflows complete TASK-123 --role worker \
|
|
|
611
611
|
- [architecture.md](documentation/architecture.md) describes internals, boundaries, state, and
|
|
612
612
|
design decisions.
|
|
613
613
|
- [agent-hooks.md](documentation/agent-hooks.md) covers the agent's own hooks
|
|
614
|
-
(session-start
|
|
614
|
+
(the session-start line): what it does, per-agent support, and
|
|
615
615
|
install/uninstall/show.
|
|
616
616
|
- [examples.md](documentation/examples.md) is a set of complete, tested
|
|
617
617
|
`ww.yaml` examples, one per control or behaviour.
|
{ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/WW_AGENT_INSTRUCTIONS.md
RENAMED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
ww saves progress, runs handlers, and names the next role; it is only for
|
|
4
4
|
development. Where ww is used by default, every file change goes through ww
|
|
5
5
|
unless the user asks you not to. Reviews, questions, investigations and other
|
|
6
|
-
read-only work never use ww, its skill or a task.
|
|
7
|
-
`./ww lookup [<task>] --agent <agent>` and follow it; it never creates a task without operator confirmation.
|
|
6
|
+
read-only work never use ww, its skill or a task.
|
|
8
7
|
|
|
9
8
|
## Start here
|
|
10
9
|
|
|
@@ -14,7 +13,7 @@ Before starting new work, run:
|
|
|
14
13
|
./ww discover
|
|
15
14
|
```
|
|
16
15
|
|
|
17
|
-
It lists the project's workflows, modes, the start command,
|
|
16
|
+
It lists the project's workflows, modes, the start command, and
|
|
18
17
|
whether to use ww unasked. If disabled, stop; if used only on request, use it only when
|
|
19
18
|
the user asks for ww. Choose the matching workflow and keep its default modes
|
|
20
19
|
unless the request matches another mode; ask only when the choice would
|
|
@@ -23,6 +22,17 @@ materially change the work.
|
|
|
23
22
|
When a request names an external ticket, use that as the task ID. Omit the ID
|
|
24
23
|
only when none is named or the workflow obtains it in its first step.
|
|
25
24
|
|
|
25
|
+
A request that names a ticket or clearly matches a workflow's description, and
|
|
26
|
+
is more than a small change: propose that workflow, and offer the alternative in
|
|
27
|
+
the same choice, "run `<workflow>`" / "just do it, register afterwards". Any
|
|
28
|
+
other request is direct work: do it as in a plain conversation, ask nothing,
|
|
29
|
+
then run `./ww record <task> --summary "..."` (`./ww lookup [<task>] --agent
|
|
30
|
+
<agent>` names the task). Judge each prompt on its own; a series of small
|
|
31
|
+
requests stays direct work, never a workflow. Ask only when genuinely ambiguous,
|
|
32
|
+
and never again on a task once the operator chose direct work. If `record`
|
|
33
|
+
fails or is forgotten, ww records the commits on the next manager
|
|
34
|
+
page (`instruction --role manager`): do not retry.
|
|
35
|
+
|
|
26
36
|
To continue an existing task, run `./ww instruction <task-id> --role manager`;
|
|
27
37
|
a worker resuming its assignment uses `--role worker`. Check status with
|
|
28
38
|
`./ww status <task-id>`.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Agent hooks
|
|
2
|
+
|
|
3
|
+
ww's instructions to agents are static, so a session needs one pointer to
|
|
4
|
+
find ww at all. Agent hooks are the agent's own hooks, installed with `ww hook`
|
|
5
|
+
— not the workflow hooks of `ww.yaml` (see
|
|
6
|
+
[Workflow hooks, variables, and transitions](features.md#workflow-hooks-variables-and-transitions)
|
|
7
|
+
in the feature reference), which run as part of a plan and can run
|
|
8
|
+
handlers, gate completion, or trigger a check. Agent hooks are gentle by
|
|
9
|
+
design: they add one line of context, and nothing they do ever blocks the
|
|
10
|
+
agent.
|
|
11
|
+
|
|
12
|
+
ww registers one hook, `session-start`, which runs when a session starts,
|
|
13
|
+
resumes, or is compacted. It prints a reminder that ww coordinates work here
|
|
14
|
+
(under `"enabled": "on_request"`: that ww is used only when the user asks for
|
|
15
|
+
it) and how to list its workflows. It lists no task: `discover` lists the
|
|
16
|
+
project's workflows, and the operator names the task to continue.
|
|
17
|
+
|
|
18
|
+
There is no pre-spawn hook yet: ww does not intercept an agent's own
|
|
19
|
+
subagent calls. `subagents: false` is enforced only through the step's
|
|
20
|
+
page today; see [Agent limitations](limitations.md#agent-limitations).
|
|
21
|
+
|
|
22
|
+
## What `session-start` prints
|
|
23
|
+
|
|
24
|
+
What `session-start` prints stays in the agent's context for the whole
|
|
25
|
+
session, so it is one line:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
This project coordinates work through ww: `./ww discover` lists its workflows.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
After a compaction it starts with a line before that one: "Context was
|
|
32
|
+
compacted; ww's task state is authoritative." Only the main session gets this
|
|
33
|
+
context: no hook is registered for a subagent's start, since a worker receives
|
|
34
|
+
its bootstrap command from the manager.
|
|
35
|
+
|
|
36
|
+
## `stop` and `interrupt` are retired
|
|
37
|
+
|
|
38
|
+
Earlier versions of ww also registered `stop` and `interrupt` hooks, which
|
|
39
|
+
listed unfinished tasks, reminded an agent to close a step, and recorded
|
|
40
|
+
interrupted sessions. They are gone: a reminder written for one session
|
|
41
|
+
confused another, and nothing in them was needed to continue a task.
|
|
42
|
+
|
|
43
|
+
The events stay accepted so a hooks file written by an older ww keeps
|
|
44
|
+
working. `ww hook stop` and `ww hook interrupt` exit 0 with no output and
|
|
45
|
+
record nothing; the audit log notes the call. The `agent_hooks` keys
|
|
46
|
+
`check_unfinished` and `recent_days` in `ww.json` are still validated and
|
|
47
|
+
still accepted, and have no effect. Running `hook install` again replaces an
|
|
48
|
+
older registration with the one `session-start` entry, and `hook uninstall`
|
|
49
|
+
removes every ww entry, whichever events it registered.
|
|
50
|
+
|
|
51
|
+
## Agents and their files
|
|
52
|
+
|
|
53
|
+
| Agent | Project file | Native event | Local file |
|
|
54
|
+
| --- | --- | --- | --- |
|
|
55
|
+
| Claude Code | `.claude/settings.json` | `SessionStart` | `.claude/settings.local.json` |
|
|
56
|
+
| Codex | `.codex/hooks.json` | `SessionStart` | none; user file `~/.codex/hooks.json` |
|
|
57
|
+
| Cursor | `.cursor/hooks.json` | `sessionStart` | none; user file `~/.cursor/hooks.json` |
|
|
58
|
+
| Antigravity | `.agents/hooks.json`, group `ww` | `PreInvocation` | none; user file `~/.gemini/config/hooks.json` |
|
|
59
|
+
|
|
60
|
+
Claude Code's `SessionStart` has no matcher, so it fires for every source,
|
|
61
|
+
compaction included. Antigravity has no session-start event, so ww answers
|
|
62
|
+
only its first pre-invocation of a conversation, as an ephemeral message that
|
|
63
|
+
never accumulates. Codex loads project hooks only once the project's `.codex/`
|
|
64
|
+
layer is trusted: review them with `/hooks` in Codex.
|
|
65
|
+
|
|
66
|
+
These per-agent gaps (no session-start event, a trust gate) are permanent
|
|
67
|
+
differences between agents, not bugs; see
|
|
68
|
+
[Agent limitations](limitations.md#agent-limitations) for the summary.
|
|
69
|
+
|
|
70
|
+
## Install, remove, and show
|
|
71
|
+
|
|
72
|
+
```console
|
|
73
|
+
ww-agentic-workflows hook install --agent claudecode
|
|
74
|
+
ww-agentic-workflows hook uninstall --agent codex
|
|
75
|
+
ww-agentic-workflows hook show --agent cursor
|
|
76
|
+
ww-agentic-workflows hook install --agent claudecode --local
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`install` merges ww's entry into whatever the file already holds and leaves
|
|
80
|
+
every other entry alone. ww recognises its own entries by their command, so a
|
|
81
|
+
second `install` changes nothing and `uninstall` removes exactly what ww added,
|
|
82
|
+
including the `stop` and `interrupt` entries an older ww registered. `show`
|
|
83
|
+
prints the file and the exact snippet, that is, what ww registers, for a
|
|
84
|
+
machine or an agent where `install` cannot run. A file that is not valid JSON,
|
|
85
|
+
or cannot be written, makes `install` fail with the path and the full snippet
|
|
86
|
+
to add by hand.
|
|
87
|
+
|
|
88
|
+
`--local` writes the agent's project file kept out of version control, so the
|
|
89
|
+
hooks stay one person's choice. Only Claude Code has one,
|
|
90
|
+
`.claude/settings.local.json`; for the other agents `--local` fails and names
|
|
91
|
+
their user-level file, which applies to every project on the machine. Without
|
|
92
|
+
`--local` the hooks go into the shared project file, which is usually committed,
|
|
93
|
+
so everyone who clones the project gets them. When ww's hooks sit in both of
|
|
94
|
+
Claude Code's files every hook would run twice, so `install` and `show` print a
|
|
95
|
+
notice with the command that removes one copy.
|
|
96
|
+
|
|
97
|
+
The registered command calls the project's tracked `./ww` launcher: through
|
|
98
|
+
`"$CLAUDE_PROJECT_DIR"` for Claude Code, from the project root for Cursor, and
|
|
99
|
+
from the repository's top level (`git rev-parse --show-toplevel`) for Codex and
|
|
100
|
+
Antigravity. The launcher resolves the durable root through the shared Git
|
|
101
|
+
directory, so a session in a task worktree reaches the same state; the launcher
|
|
102
|
+
must therefore be tracked for worktree sessions.
|
|
103
|
+
|
|
104
|
+
The runtime form, `ww hook session-start|stop|interrupt --agent <agent>`, is
|
|
105
|
+
what the agents call; it reads the agent's JSON payload on stdin.
|
|
106
|
+
|
|
107
|
+
## When a hook fails or runs too often
|
|
108
|
+
|
|
109
|
+
A hook never breaks the agent. On any error, a bad argument, or outside a ww
|
|
110
|
+
root, it exits 0 with no output: some agents read exit code 2 as "continue", and
|
|
111
|
+
an unexpected message would enter the agent's context. The worst outcome is a
|
|
112
|
+
lost hint. When the command cannot start at all, for example a missing
|
|
113
|
+
launcher or an untrusted Codex hook, the agent shows its own non-blocking hook
|
|
114
|
+
error. A hook that times out is killed by the agent, which carries on.
|
|
115
|
+
|
|
116
|
+
Running more often than needed is harmless. Antigravity calls its
|
|
117
|
+
pre-invocation hook before every model call; only the first one returns
|
|
118
|
+
context.
|
|
119
|
+
|
|
120
|
+
Every hook call is written to the audit log, `.ww/executions.jsonl`, with the
|
|
121
|
+
event, the agent, and ww's decision, so a session can be followed there:
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{"command": "hook", "hook_event": "session-start", "hook_agent": "claudecode", "hook_decision": "context", "outcome": "ok"}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
A failure is logged with `outcome: error` and the exception type. The agent's
|
|
128
|
+
payload is never logged.
|
|
129
|
+
|
|
130
|
+
## See also
|
|
131
|
+
|
|
132
|
+
- [Agent limitations](limitations.md#agent-limitations): per-agent hook
|
|
133
|
+
gaps, nested subagents, and why a worker cannot talk to the operator.
|
|
134
|
+
- [architecture.md](architecture.md#agent-hooks) for how the hook answers
|
|
135
|
+
are computed internally.
|