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.
Files changed (385) hide show
  1. ww_agentic_workflows-1.0.0.dev6/.claude/skills/noww/SKILL.md +12 -0
  2. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.claude/skills/ww/SKILL.md +23 -11
  3. ww_agentic_workflows-1.0.0.dev6/.codex/skills/noww/SKILL.md +12 -0
  4. ww_agentic_workflows-1.0.0.dev6/.codex/skills/ww/SKILL.md +71 -0
  5. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CHANGELOG.md +59 -0
  6. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/PKG-INFO +10 -10
  7. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/README.md +9 -9
  8. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/WW_AGENT_INSTRUCTIONS.md +13 -3
  9. ww_agentic_workflows-1.0.0.dev6/documentation/agent-hooks.md +135 -0
  10. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/architecture.md +55 -60
  11. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/features.md +168 -122
  12. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/limitations.md +5 -10
  13. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/specification.md +156 -34
  14. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/todo.md +3 -5
  15. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/ext/ww/git/extension.py +23 -2
  16. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/pyproject.toml +1 -1
  17. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/agent_instructions.md +13 -3
  18. ww_agentic_workflows-1.0.0.dev6/src/ww/assets/noww_skill.md +12 -0
  19. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/workflows/onboarding.yaml +1 -1
  20. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-deduce-feedback_skill.md +6 -0
  21. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-wizard_skill.md +1 -1
  22. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww_skill.md +23 -11
  23. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/builtin_workflows.py +0 -6
  24. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/changes.py +44 -11
  25. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/claude_permissions.py +1 -0
  26. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/catalogs.py +1 -0
  27. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/discover.py +53 -102
  28. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/initialization.py +3 -5
  29. ww_agentic_workflows-1.0.0.dev6/src/ww/cli/lookup.py +266 -0
  30. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/main.py +89 -86
  31. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/parser.py +53 -17
  32. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/__init__.py +7 -0
  33. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/rules.py +26 -1
  34. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/defaults.py +0 -2
  35. ww_agentic_workflows-1.0.0.dev6/src/ww/direct_work.py +275 -0
  36. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/decoding.py +12 -0
  37. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/plan_codec.py +2 -0
  38. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/records.py +28 -1
  39. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/feedback.py +6 -2
  40. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/hooks/__init__.py +2 -5
  41. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/hooks/agents.py +7 -82
  42. ww_agentic_workflows-1.0.0.dev6/src/ww/hooks/notices.py +32 -0
  43. ww_agentic_workflows-1.0.0.dev6/src/ww/hooks/runtime.py +75 -0
  44. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/builder.py +12 -1
  45. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/commands.py +13 -0
  46. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/handoff.py +16 -4
  47. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/models.py +13 -0
  48. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/interactions.py +4 -7
  49. ww_agentic_workflows-1.0.0.dev6/src/ww/open_work.py +42 -0
  50. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output.py +11 -4
  51. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/markdown.py +56 -11
  52. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/rule_pages.py +7 -1
  53. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/compiler.py +2 -0
  54. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/models.py +4 -0
  55. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/project_config.py +24 -18
  56. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/results.py +18 -3
  57. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_checks.py +2 -2
  58. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_verification.py +9 -3
  59. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_views.py +7 -0
  60. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_writes.py +36 -4
  61. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/runtimes.py +12 -2
  62. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/service.py +370 -38
  63. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/base.py +21 -0
  64. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/filesystem.py +32 -5
  65. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/memory.py +17 -2
  66. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/transitions.py +50 -0
  67. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workflow_config.py +4 -0
  68. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/conftest.py +6 -6
  69. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/fix-required.md +1 -1
  70. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/interactive.md +1 -1
  71. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/item-stage.md +1 -1
  72. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/loop-body.md +1 -1
  73. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/loop-continue.md +1 -1
  74. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/manager-dispatch.md +1 -1
  75. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/step-auto-worker.md +1 -1
  76. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/step-rules.md +1 -1
  77. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/step-single.md +1 -1
  78. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/values-and-metadata.md +1 -1
  79. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/worker-handoff.md +2 -0
  80. ww_agentic_workflows-1.0.0.dev6/tests/integration/test_adjustments.py +227 -0
  81. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_builtin_workflows.py +7 -26
  82. ww_agentic_workflows-1.0.0.dev6/tests/integration/test_children_added_mid_run.py +227 -0
  83. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_cli.py +5 -7
  84. ww_agentic_workflows-1.0.0.dev6/tests/integration/test_direct_work.py +582 -0
  85. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_discover.py +57 -81
  86. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_git_extension.py +38 -0
  87. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_handler_repairs.py +11 -0
  88. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_handoff_block.py +226 -1
  89. ww_agentic_workflows-1.0.0.dev6/tests/integration/test_hooks.py +536 -0
  90. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_interactive.py +2 -2
  91. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_onboarding_workflows.py +2 -1
  92. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_page_gates.py +1 -0
  93. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_plan_execution.py +90 -0
  94. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_write_commands.py +61 -1
  95. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rules_and_checks.py +94 -0
  96. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_worker_handoff.py +70 -0
  97. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_workflow_service.py +3 -3
  98. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_changes.py +52 -0
  99. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_config.py +3 -3
  100. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_config_composition.py +2 -14
  101. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_execution_hints.py +4 -3
  102. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_hook_agents.py +12 -94
  103. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_plan.py +1 -1
  104. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_project_config.py +29 -8
  105. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_verification.py +30 -0
  106. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rules.py +16 -0
  107. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_storage_adapters.py +59 -0
  108. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_variables.py +1 -1
  109. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_workflow_inheritance.py +24 -0
  110. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_workflow_validation.py +18 -11
  111. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/ww.yaml +3 -1
  112. ww_agentic_workflows-1.0.0.dev3/.claude/skills/noww/SKILL.md +0 -11
  113. ww_agentic_workflows-1.0.0.dev3/.codex/skills/noww/SKILL.md +0 -11
  114. ww_agentic_workflows-1.0.0.dev3/.codex/skills/ww/SKILL.md +0 -34
  115. ww_agentic_workflows-1.0.0.dev3/documentation/agent-hooks.md +0 -270
  116. ww_agentic_workflows-1.0.0.dev3/src/ww/assets/noww_skill.md +0 -11
  117. ww_agentic_workflows-1.0.0.dev3/src/ww/assets/workflows/catchall.yaml +0 -26
  118. ww_agentic_workflows-1.0.0.dev3/src/ww/cli/lookup.py +0 -287
  119. ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/notices.py +0 -206
  120. ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/records.py +0 -209
  121. ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/runtime.py +0 -266
  122. ww_agentic_workflows-1.0.0.dev3/src/ww/hooks/transcripts.py +0 -183
  123. ww_agentic_workflows-1.0.0.dev3/src/ww/open_work.py +0 -236
  124. ww_agentic_workflows-1.0.0.dev3/tests/integration/test_catchall.py +0 -212
  125. ww_agentic_workflows-1.0.0.dev3/tests/integration/test_hooks.py +0 -1324
  126. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.claude/settings.json +0 -0
  127. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.claude/skills/update-architecture-documentation/SKILL.md +0 -0
  128. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.codex/hooks.json +0 -0
  129. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.codex/skills/update-architecture-documentation/SKILL.md +0 -0
  130. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.git-blame-ignore-revs +0 -0
  131. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.githooks/pre-commit +0 -0
  132. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  133. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  134. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  135. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  136. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/workflows/dev-publish.yml +0 -0
  137. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.github/workflows/release-gates.yml +0 -0
  138. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/.gitignore +0 -0
  139. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/AGENTS.md +0 -0
  140. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CLAUDE.md +0 -0
  141. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CODE_OF_CONDUCT.md +0 -0
  142. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/CONTRIBUTING.md +0 -0
  143. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/LICENSE +0 -0
  144. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/SECURITY.md +0 -0
  145. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/development-releases.md +0 -0
  146. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/examples.md +0 -0
  147. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/documentation/python-agent-rules.md +0 -0
  148. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/check_distribution.py +0 -0
  149. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/check_release_gates.py +0 -0
  150. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/demo.sh +0 -0
  151. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/ensure_spdx_license.py +0 -0
  152. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/measure_pages.py +0 -0
  153. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/run_workflow_dummy.py +0 -0
  154. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/set_dev_version.py +0 -0
  155. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/scripts/test +0 -0
  156. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/__init__.py +0 -0
  157. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/action_execution.py +0 -0
  158. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/__init__.py +0 -0
  159. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/command.py +0 -0
  160. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/contracts.py +0 -0
  161. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/extension.py +0 -0
  162. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/mcp.py +0 -0
  163. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/prompt.py +0 -0
  164. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/skill.py +0 -0
  165. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/actions/slash_command.py +0 -0
  166. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/agents.py +0 -0
  167. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/amendments.py +0 -0
  168. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/artifacts.py +0 -0
  169. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assessments.py +0 -0
  170. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/__init__.py +0 -0
  171. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/workflows/scriptize.yaml +0 -0
  172. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-automate_skill.md +0 -0
  173. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-feedback-rules_skill.md +0 -0
  174. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-learn-project_skill.md +0 -0
  175. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-refresh_skill.md +0 -0
  176. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-rule_skill.md +0 -0
  177. {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
  178. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-scriptize_skill.md +0 -0
  179. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-setup_skill.md +0 -0
  180. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-solve_skill.md +0 -0
  181. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assets/ww-suggest_skill.md +0 -0
  182. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/assignments.py +0 -0
  183. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/bootstrap.py +0 -0
  184. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/child_coordination.py +0 -0
  185. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/children.py +0 -0
  186. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/__init__.py +0 -0
  187. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/__main__.py +0 -0
  188. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/audit.py +0 -0
  189. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/prompts.py +0 -0
  190. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/cli/updates.py +0 -0
  191. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/completion_artifacts.py +0 -0
  192. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/completion_inputs.py +0 -0
  193. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/actions.py +0 -0
  194. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/composition.py +0 -0
  195. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/steps.py +0 -0
  196. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config/values.py +0 -0
  197. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config_files.py +0 -0
  198. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/config_writes.py +0 -0
  199. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/contracts.py +0 -0
  200. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/control.py +0 -0
  201. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/design_docs.py +0 -0
  202. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/discovery.py +0 -0
  203. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/documents.py +0 -0
  204. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/errors.py +0 -0
  205. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/executable.py +0 -0
  206. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/__init__.py +0 -0
  207. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/construction.py +0 -0
  208. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/execution_models/runs.py +0 -0
  209. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/__init__.py +0 -0
  210. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/api.py +0 -0
  211. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/registry.py +0 -0
  212. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/extensions/store.py +0 -0
  213. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/handler_repairs.py +0 -0
  214. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/hooks/install.py +0 -0
  215. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/inspect.py +0 -0
  216. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/__init__.py +0 -0
  217. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/policy.py +0 -0
  218. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/instructions/text.py +0 -0
  219. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/interpolation.py +0 -0
  220. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/item_passes.py +0 -0
  221. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/items.py +0 -0
  222. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/locking.py +0 -0
  223. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/metadata_publication.py +0 -0
  224. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/onboarding.py +0 -0
  225. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operations.py +0 -0
  226. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/__init__.py +0 -0
  227. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/page.html +0 -0
  228. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/server.py +0 -0
  229. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/session.py +0 -0
  230. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/sheet.py +0 -0
  231. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/operator_ui/view.py +0 -0
  232. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/__init__.py +0 -0
  233. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/base.py +0 -0
  234. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/json_adapter.py +0 -0
  235. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/output_adapters/terminal.py +0 -0
  236. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/package_updates.py +0 -0
  237. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/__init__.py +0 -0
  238. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/actions.py +0 -0
  239. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/plan/constructs.py +0 -0
  240. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/recovery.py +0 -0
  241. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/replanning.py +0 -0
  242. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_conversion.py +0 -0
  243. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_disputes.py +0 -0
  244. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/rule_store.py +0 -0
  245. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/run_coordination.py +0 -0
  246. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/setup_apply.py +0 -0
  247. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/step_values.py +0 -0
  248. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage.py +0 -0
  249. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/__init__.py +0 -0
  250. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/project_metadata.py +0 -0
  251. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/storage_adapters/task_document.py +0 -0
  252. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/task_ids.py +0 -0
  253. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/task_references.py +0 -0
  254. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/updates.py +0 -0
  255. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/upgrade.py +0 -0
  256. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/validation.py +0 -0
  257. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/variables.py +0 -0
  258. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workflow_update.py +0 -0
  259. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workflow_validation.py +0 -0
  260. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/src/ww/workspace.py +0 -0
  261. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/action_contract_helpers.py +0 -0
  262. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/config_helpers.py +0 -0
  263. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/example_documents.py +0 -0
  264. {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
  265. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/completion.md +0 -0
  266. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/operator-stop.md +0 -0
  267. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/verification.md +0 -0
  268. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/golden/pages/worker-bootstrap.md +0 -0
  269. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_artifact_from_containers.py +0 -0
  270. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_assessment_outcomes.py +0 -0
  271. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_assignment_tokens.py +0 -0
  272. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_auto_retries.py +0 -0
  273. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_automatic_handler_groups.py +0 -0
  274. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_automatic_modes.py +0 -0
  275. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_awaiting_operator.py +0 -0
  276. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_bootstrap_task_id.py +0 -0
  277. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_identity.py +0 -0
  278. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_launch_settings.py +0 -0
  279. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_stages.py +0 -0
  280. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_start_action.py +0 -0
  281. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_start_guards.py +0 -0
  282. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_child_tasks.py +0 -0
  283. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_command_metadata.py +0 -0
  284. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_complete_dispatch.py +0 -0
  285. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_concurrency.py +0 -0
  286. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_config_files.py +0 -0
  287. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_configuration_authority.py +0 -0
  288. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_documents.py +0 -0
  289. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_example_behaviour.py +0 -0
  290. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_executable.py +0 -0
  291. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_extension_execution.py +0 -0
  292. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_feedback_commands.py +0 -0
  293. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_git_variables.py +0 -0
  294. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_golden_pages.py +0 -0
  295. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_init_force.py +0 -0
  296. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_init_permissions.py +0 -0
  297. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_inspect.py +0 -0
  298. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_assignment.py +0 -0
  299. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_fields.py +0 -0
  300. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_pass_restarts.py +0 -0
  301. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_pass_runs.py +0 -0
  302. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_reply_reports.py +0 -0
  303. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_item_runtime_values.py +0 -0
  304. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_items.py +0 -0
  305. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_local_step_pages.py +0 -0
  306. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_loops.py +0 -0
  307. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_memory_workflow_service.py +0 -0
  308. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_metadata_lists.py +0 -0
  309. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_onboarding.py +0 -0
  310. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_pack_scenarios.py +0 -0
  311. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_packaged_extension.py +0 -0
  312. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_projects.py +0 -0
  313. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_recommended_workflow.py +0 -0
  314. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_recovery_guards.py +0 -0
  315. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_replanning.py +0 -0
  316. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_requirements_pages.py +0 -0
  317. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_requirements_per_session.py +0 -0
  318. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_restart.py +0 -0
  319. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_commands.py +0 -0
  320. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_conversion.py +0 -0
  321. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_rule_verification_flow.py +0 -0
  322. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_scriptize_workflow.py +0 -0
  323. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_setup_apply.py +0 -0
  324. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_setup_update.py +0 -0
  325. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_setup_verification.py +0 -0
  326. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_shared_items.py +0 -0
  327. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_stale_task_records.py +0 -0
  328. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_state_unknown_fields.py +0 -0
  329. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_system_scenarios.py +0 -0
  330. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_update_notice.py +0 -0
  331. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_upgrade.py +0 -0
  332. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_workdir.py +0 -0
  333. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/integration/test_worker_bootstrap_text.py +0 -0
  334. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/page_catalog.py +0 -0
  335. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/plan_helpers.py +0 -0
  336. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/test_dev_version.py +0 -0
  337. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_action_contracts.py +0 -0
  338. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_action_example.py +0 -0
  339. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_action_phase_contexts.py +0 -0
  340. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_artifacts.py +0 -0
  341. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_assignments.py +0 -0
  342. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_beta_notice.py +0 -0
  343. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_builtin_actions.py +0 -0
  344. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_checklist_prompt.py +0 -0
  345. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_child_stages_config.py +0 -0
  346. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_children_config.py +0 -0
  347. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_cli_prompts.py +0 -0
  348. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_completion_inputs.py +0 -0
  349. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_completion_selection.py +0 -0
  350. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_config_writes.py +0 -0
  351. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_delegation_requests.py +0 -0
  352. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_design_docs.py +0 -0
  353. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_discovery.py +0 -0
  354. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_examples_doc.py +0 -0
  355. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_extensions.py +0 -0
  356. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_feedback.py +0 -0
  357. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_handler_failure_report.py +0 -0
  358. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_instruction_commands.py +0 -0
  359. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_interactions.py +0 -0
  360. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_item_config.py +0 -0
  361. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_item_passes.py +0 -0
  362. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_item_validation.py +0 -0
  363. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_locking.py +0 -0
  364. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_markdown_output.py +0 -0
  365. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_modes.py +0 -0
  366. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_operator_ui.py +0 -0
  367. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_package_updates.py +0 -0
  368. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_project_metadata_storage_adapters.py +0 -0
  369. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_records.py +0 -0
  370. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_disputes.py +0 -0
  371. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_store.py +0 -0
  372. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_rule_writes.py +0 -0
  373. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_runtimes.py +0 -0
  374. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_scripts_test_bootstrap.py +0 -0
  375. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_step_role.py +0 -0
  376. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_storage.py +0 -0
  377. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_document.py +0 -0
  378. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_ids.py +0 -0
  379. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_task_references.py +0 -0
  380. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_transitions.py +0 -0
  381. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_updates.py +0 -0
  382. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_validation.py +0 -0
  383. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/unit/test_workspace.py +0 -0
  384. {ww_agentic_workflows-1.0.0.dev3 → ww_agentic_workflows-1.0.0.dev6}/tests/workflow_helpers.py +0 -0
  385. {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.
@@ -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 choose the workflow that matches the request, keep its default
21
- modes unless the user's wording matches another mode, and start the task
22
- with the start command `discover` shows. Pass the user's requirements,
23
- normalized, as `--requirements`. When the request names an external
24
- ticket, such as a Jira key, use that key as the task ID; omit the ID only
25
- when there is none or the workflow obtains its own.
26
- When no workflow fits and you are about to change files, do not start
27
- `catchall` directly: run `./ww lookup [<task>] --agent <agent>` with the
28
- task the conversation works on or the request names, as written, and
29
- follow its answer, then do the work as you would without ww. Read-only work
30
- needs no task.
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.dev3
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 still goes through ww once it changes files. The
327
- agent records it with `catchall`, a one-step workflow ww provides to every
328
- project, and otherwise works exactly as it would without ww. Questions and
329
- other read-only work never start a task. The agent first runs `./ww lookup`
330
- with the task you named, however you wrote it (`12345` finds `FOOBAR-12345`),
331
- and a task ww has never seen is only created after you confirm it in the
332
- agent's choice menu. Say `/noww` when you want the
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, stop, interrupt): what they do, per-agent support, and
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 still goes through ww once it changes files. The
289
- agent records it with `catchall`, a one-step workflow ww provides to every
290
- project, and otherwise works exactly as it would without ww. Questions and
291
- other read-only work never start a task. The agent first runs `./ww lookup`
292
- with the task you named, however you wrote it (`12345` finds `FOOBAR-12345`),
293
- and a task ww has never seen is only created after you confirm it in the
294
- agent's choice menu. Say `/noww` when you want the
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, stop, interrupt): what they do, per-agent support, and
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.
@@ -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. When no workflow fits a change, run
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, resume commands, and
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.