deepwork 0.7.0a1__tar.gz → 0.7.0a2__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 (189) hide show
  1. {deepwork-0.7.0a1/src/deepwork/standard_jobs → deepwork-0.7.0a2/.deepwork/jobs}/deepwork_jobs/job.yml +3 -13
  2. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/define.md +0 -70
  3. {deepwork-0.7.0a1/src/deepwork/standard_jobs → deepwork-0.7.0a2/.deepwork/jobs}/deepwork_jobs/steps/errata.md +17 -1
  4. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/learn.md +0 -68
  5. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/schemas/job.schema.json +1 -2
  6. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CONTRIBUTING.md +27 -0
  7. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/PKG-INFO +1 -1
  8. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/mcp_interface.md +1 -1
  9. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/flake.lock +70 -1
  10. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/flake.nix +6 -10
  11. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/pyproject.toml +1 -1
  12. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/__init__.py +1 -1
  13. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/tools.py +10 -3
  14. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/job.schema.json +1 -2
  15. {deepwork-0.7.0a1/.deepwork/jobs → deepwork-0.7.0a2/src/deepwork/standard_jobs}/deepwork_jobs/job.yml +3 -13
  16. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/make_new_job.sh +15 -16
  17. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/define.md +0 -70
  18. {deepwork-0.7.0a1/.deepwork/jobs → deepwork-0.7.0a2/src/deepwork/standard_jobs}/deepwork_jobs/steps/errata.md +17 -1
  19. {deepwork-0.7.0a1/.deepwork/jobs → deepwork-0.7.0a2/src/deepwork/standard_jobs}/deepwork_jobs/steps/fix_jobs.md +2 -3
  20. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/learn.md +0 -68
  21. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_tools.py +62 -3
  22. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/uv.lock +1 -1
  23. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/doc_specs/job_spec.md +0 -184
  24. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.template +0 -26
  25. deepwork-0.7.0a1/.github/workflows/update-claude-code.yml +0 -63
  26. deepwork-0.7.0a1/nix/claude-code/package-lock.json +0 -314
  27. deepwork-0.7.0a1/nix/claude-code/package.nix +0 -78
  28. deepwork-0.7.0a1/nix/claude-code/update.sh +0 -49
  29. deepwork-0.7.0a1/nix/update +0 -18
  30. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/doc_specs/job_spec.md +0 -184
  31. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.template +0 -26
  32. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.claude/settings.json +0 -0
  33. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.claude/skills/deepwork/SKILL.md +0 -0
  34. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/.gitignore +0 -0
  35. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/config.yml +0 -0
  36. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/doc_specs/claude_code_skill.md +0 -0
  37. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/doc_specs/job_spec.md +0 -0
  38. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/AGENTS.md +0 -0
  39. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/make_new_job.sh +0 -0
  40. {deepwork-0.7.0a1/src/deepwork/standard_jobs → deepwork-0.7.0a2/.deepwork/jobs}/deepwork_jobs/steps/fix_jobs.md +0 -0
  41. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/fix_settings.md +0 -0
  42. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/implement.md +0 -0
  43. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/iterate.md +0 -0
  44. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
  45. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/test.md +0 -0
  46. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/agents.md.template +0 -0
  47. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/job.yml.example +0 -0
  48. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/job.yml.template +0 -0
  49. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
  50. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
  51. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/tmp/.gitkeep +0 -0
  52. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.envrc +0 -0
  53. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.gemini/skills/deepwork/index.toml +0 -0
  54. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/copilot-instructions.md +0 -0
  55. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/README.md +0 -0
  56. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/cla.yml +0 -0
  57. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/claude-code-test.yml +0 -0
  58. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/copilot-setup-steps.yml +0 -0
  59. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/prepare-release.yml +0 -0
  60. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/publish-release.yml +0 -0
  61. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/release.yml +0 -0
  62. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/validate.yml +0 -0
  63. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.gitignore +0 -0
  64. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.mcp.json +0 -0
  65. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/AGENTS.md +0 -0
  66. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CHANGELOG.md +0 -0
  67. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CLA/version_1/CLA.md +0 -0
  68. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CLA/version_1/CLA_SIGNATORIES.md +0 -0
  69. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/LICENSE.md +0 -0
  70. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/README.md +0 -0
  71. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/claude.md +0 -0
  72. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/architecture.md +0 -0
  73. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/code_review_standards.md +0 -0
  74. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/debugging_history/AGENTS.md +0 -0
  75. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/debugging_history/hooks.md +0 -0
  76. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/doc-specs.md +0 -0
  77. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/nix-flake.md +0 -0
  78. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/README.md +0 -0
  79. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/cli_configuration.md +0 -0
  80. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/hooks.md +0 -0
  81. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/hooks_system.md +0 -0
  82. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/learnings.md +0 -0
  83. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/cli_configuration.md +0 -0
  84. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/hooks.md +0 -0
  85. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/hooks_system.md +0 -0
  86. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/learnings.md +0 -0
  87. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/reference/calling_claude_in_print_mode.md +0 -0
  88. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/README.md +0 -0
  89. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/job.yml +0 -0
  90. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/readme.md +0 -0
  91. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/clarify.md +0 -0
  92. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/constitution.md +0 -0
  93. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/implement.md +0 -0
  94. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/plan.md +0 -0
  95. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/specify.md +0 -0
  96. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/tasks.md +0 -0
  97. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/__init__.py +0 -0
  98. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/hook.py +0 -0
  99. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/install.py +0 -0
  100. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/main.py +0 -0
  101. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/serve.py +0 -0
  102. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/sync.py +0 -0
  103. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/__init__.py +0 -0
  104. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/adapters.py +0 -0
  105. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/detector.py +0 -0
  106. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/doc_spec_parser.py +0 -0
  107. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/generator.py +0 -0
  108. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/hooks_syncer.py +0 -0
  109. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/parser.py +0 -0
  110. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/README.md +0 -0
  111. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/__init__.py +0 -0
  112. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/check_version.sh +0 -0
  113. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/claude_hook.sh +0 -0
  114. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/gemini_hook.sh +0 -0
  115. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/wrapper.py +0 -0
  116. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/__init__.py +0 -0
  117. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/quality_gate.py +0 -0
  118. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/schemas.py +0 -0
  119. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/server.py +0 -0
  120. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/state.py +0 -0
  121. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/__init__.py +0 -0
  122. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/doc_spec_schema.py +0 -0
  123. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/job_schema.py +0 -0
  124. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/AGENTS.md +0 -0
  125. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/fix_settings.md +0 -0
  126. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/implement.md +0 -0
  127. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/iterate.md +0 -0
  128. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
  129. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/test.md +0 -0
  130. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template +0 -0
  131. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example +0 -0
  132. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template +0 -0
  133. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
  134. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
  135. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/__init__.py +0 -0
  136. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/claude/AGENTS.md +0 -0
  137. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/claude/settings.json +0 -0
  138. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/claude/skill-deepwork.md.jinja +0 -0
  139. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/gemini/skill-deepwork.md.jinja +0 -0
  140. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/__init__.py +0 -0
  141. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/fs.py +0 -0
  142. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/git.py +0 -0
  143. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/validation.py +0 -0
  144. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/yaml_utils.py +0 -0
  145. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/__init__.py +0 -0
  146. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/conftest.py +0 -0
  147. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/e2e/__init__.py +0 -0
  148. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/e2e/test_claude_code_integration.py +0 -0
  149. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/doc_specs/minimal_doc_spec.md +0 -0
  150. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/doc_specs/valid_report.md +0 -0
  151. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/job.yml +0 -0
  152. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/comparative_report.md +0 -0
  153. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/identify_competitors.md +0 -0
  154. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/primary_research.md +0 -0
  155. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/secondary_research.md +0 -0
  156. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/job.yml +0 -0
  157. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/compile_results.md +0 -0
  158. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/final_review.md +0 -0
  159. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/research_docs.md +0 -0
  160. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/research_interviews.md +0 -0
  161. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/research_web.md +0 -0
  162. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/setup.md +0 -0
  163. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/exposed_step_job/job.yml +0 -0
  164. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/exposed_step_job/steps/exposed_step.md +0 -0
  165. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/exposed_step_job/steps/hidden_step.md +0 -0
  166. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/fruits/job.yml +0 -0
  167. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/fruits/steps/classify.md +0 -0
  168. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/fruits/steps/identify.md +0 -0
  169. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/invalid_job/job.yml +0 -0
  170. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/job_with_doc_spec/job.yml +0 -0
  171. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/job_with_doc_spec/steps/generate_report.md +0 -0
  172. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/simple_job/job.yml +0 -0
  173. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/simple_job/steps/single_step.md +0 -0
  174. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/mock_review_agent.py +0 -0
  175. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/integration/test_install_flow.py +0 -0
  176. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/integration/test_quality_gate_integration.py +0 -0
  177. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/__init__.py +0 -0
  178. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_async_interface.py +0 -0
  179. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_quality_gate.py +0 -0
  180. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_schemas.py +0 -0
  181. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_state.py +0 -0
  182. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_doc_spec_parser.py +0 -0
  183. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_doc_spec_schema.py +0 -0
  184. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_fs.py +0 -0
  185. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_git.py +0 -0
  186. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_hook_wrapper.py +0 -0
  187. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_parser.py +0 -0
  188. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_validation.py +0 -0
  189. {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_yaml_utils.py +0 -0
@@ -58,12 +58,6 @@ changelog:
58
58
  changes: "Removed implementation_summary and learning_summary outputs; simplified step outputs"
59
59
  - version: "0.5.0"
60
60
  changes: "Standardized on 'ask structured questions' phrasing for user input; Updated quality criteria hooks to verify phrase usage; Added guidance in implement.md to use phrase in generated instructions"
61
- - version: "0.6.0"
62
- changes: "Added doc spec support; define.md now detects document-oriented workflows and guides doc spec creation; learn.md now identifies and applies doc spec-related improvements"
63
- - version: "0.7.0"
64
- changes: "Added job.yml doc spec; define step now outputs job.yml with doc_spec reference for quality validation"
65
- - version: "0.8.0"
66
- changes: "Added review_job_spec step between define and implement for doc spec-based quality validation using sub-agent review"
67
61
  - version: "0.9.0"
68
62
  changes: "Improved skill descriptions with third-person voice and 'Use when...' triggers for better discoverability"
69
63
 
@@ -76,8 +70,7 @@ steps:
76
70
  - name: job_purpose
77
71
  description: "What complex task or workflow are you trying to accomplish?"
78
72
  outputs:
79
- - file: job.yml
80
- doc_spec: .deepwork/doc_specs/job_spec.md
73
+ - job.yml
81
74
  dependencies: []
82
75
  - id: implement
83
76
  name: "Implement Job Steps"
@@ -158,8 +151,6 @@ steps:
158
151
  - "**Instructions Improved**: Were job instructions updated to address identified issues?"
159
152
  - "**Instructions Concise**: Are instructions free of redundancy and unnecessary verbosity?"
160
153
  - "**Shared Content Extracted**: Is lengthy/duplicated content extracted into referenced files?"
161
- - "**doc spec Reviewed (if applicable)**: For jobs with doc spec outputs, were doc spec-related learnings identified?"
162
- - "**doc spec Updated (if applicable)**: Were doc spec files updated with improved quality criteria or structure?"
163
154
  - "**Bespoke Learnings Captured**: Were run-specific learnings added to AGENTS.md?"
164
155
  - "**File References Used**: Do AGENTS.md entries reference other files where appropriate?"
165
156
  - "**Working Folder Correct**: Is AGENTS.md in the correct working folder for the job?"
@@ -206,11 +197,10 @@ steps:
206
197
  name: "Clean Up Errata"
207
198
  description: "Removes obsolete files and folders from prior DeepWork versions, including old skill directories, temp files, and deprecated configurations."
208
199
  instructions_file: steps/errata.md
200
+ outputs: []
209
201
  inputs:
210
202
  - file: .deepwork/jobs/
211
203
  from_step: fix_jobs
212
- outputs:
213
- - repair_summary.md
214
204
  dependencies:
215
205
  - fix_settings
216
206
  - fix_jobs
@@ -221,5 +211,5 @@ steps:
221
211
  - "**Rules Folder Removed**: Is `.deepwork/rules/` folder backed up and removed (fully deprecated)?"
222
212
  - "**Rules Job Removed**: Is `.deepwork/jobs/deepwork_rules/` removed if present?"
223
213
  - "**Config Version Updated**: Is `.deepwork/config.yml` using current version format?"
224
- - "**Summary Provided**: Is a repair_summary.md file created documenting all changes made?"
214
+ - "**DeepWork Re-installed**: Was `deepwork install` run after cleanup, and does it complete without errors?"
225
215
  - "**Git Status Clean**: Are changes ready to be committed (no untracked garbage files)?"
@@ -31,60 +31,6 @@ Start by asking structured questions to understand what the user wants to accomp
31
31
  - What are the distinct stages from start to finish?
32
32
  - Are there any dependencies between phases?
33
33
 
34
- ### Step 1.5: Detect Document-Oriented Workflows
35
-
36
- **Check for document-focused patterns** in the user's description:
37
- - Keywords: "report", "summary", "document", "create", "monthly", "quarterly", "for stakeholders", "for leadership"
38
- - Final deliverable is a specific document (e.g., "AWS spending report", "competitive analysis", "sprint summary")
39
- - Recurring documents with consistent structure
40
-
41
- **If a document-oriented workflow is detected:**
42
-
43
- 1. Inform the user: "This workflow produces a specific document type. I recommend defining a doc spec first to ensure consistent quality."
44
-
45
- 2. Ask structured questions to understand if they want to:
46
- - Create a doc spec for this document
47
- - Use an existing doc spec (if any exist in `.deepwork/doc_specs/`)
48
- - Skip doc spec and proceed with simple outputs
49
-
50
- ### Step 1.6: Define the Doc Spec (if needed)
51
-
52
- When creating a doc spec, gather the following information:
53
-
54
- 1. **Document Identity**
55
- - What is the document called? (e.g., "Monthly AWS Spending Report")
56
- - Brief description of its purpose
57
- - Where should these documents be stored? (path patterns like `finance/aws-reports/*.md`)
58
-
59
- 2. **Audience and Context**
60
- - Who reads this document? (target audience)
61
- - How often is it produced? (frequency)
62
-
63
- 3. **Quality Criteria** (3-5 criteria, each with name and description)
64
-
65
- **Important**: Doc spec quality criteria define requirements for the **output document itself**, not the process of creating it. Focus on what the finished document must contain or achieve.
66
-
67
- Examples for a spending report:
68
- - **Visualization**: Must include charts showing spend breakdown by service
69
- - **Variance Analysis**: Must compare current month against previous with percentages
70
- - **Action Items**: Must include recommended cost optimization actions
71
-
72
- **Note**: When a doc spec is created for a step's output, the step should generally NOT have separate `quality_criteria` in the job.yml. The doc spec's criteria cover output quality. Only add step-level quality_criteria if there are essential process requirements (e.g., "must use specific tool"), and minimize these when possible.
73
-
74
- 4. **Document Structure**
75
- - What sections should it have?
76
- - Any required elements (tables, charts, summaries)?
77
-
78
- ### Step 1.7: Create the doc spec File (if needed)
79
-
80
- Create the doc spec file at `.deepwork/doc_specs/[doc_spec_name].md`:
81
-
82
- **Template reference**: See `.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.template` for the standard structure.
83
-
84
- **Complete example**: See `.deepwork/doc_specs/job_spec.md` for a fully worked example (the doc spec for job.yml files).
85
-
86
- After creating the doc spec, proceed to Step 2 with the doc spec reference for the final step's output.
87
-
88
34
  ### Step 2: Define Each Step
89
35
 
90
36
  For each major phase they mentioned, ask structured questions to gather details:
@@ -106,8 +52,6 @@ For each major phase they mentioned, ask structured questions to gather details:
106
52
  - Where should each output be saved? (filename/path)
107
53
  - Should outputs be organized in subdirectories? (e.g., `reports/`, `data/`, `drafts/`)
108
54
  - Will other steps need this output?
109
- - **Does this output have a doc spec?** If a doc spec was created in Step 1.6/1.7, reference it for the appropriate output
110
-
111
55
  #### Work Product Storage Guidelines
112
56
 
113
57
  **Key principle**: Job outputs belong in the main repository directory structure, not in dot-directories. The `.deepwork/` directory is for job definitions and configuration only.
@@ -189,18 +133,6 @@ For each major phase they mentioned, ask structured questions to gather details:
189
133
 
190
134
  **Note**: You're gathering this information to understand what instructions will be needed, but you won't create the instruction files yet - that happens in the `implement` step.
191
135
 
192
- #### Doc Spec-Aware Output Format
193
-
194
- When a step produces a document with a doc spec reference, use this format in job.yml:
195
-
196
- ```yaml
197
- outputs:
198
- - file: reports/monthly_spending.md
199
- doc_spec: .deepwork/doc_specs/monthly_aws_report.md
200
- ```
201
-
202
- The doc spec's quality criteria will automatically be included in the generated skill, ensuring consistent document quality.
203
-
204
136
  ### Capability Considerations
205
137
 
206
138
  When defining steps, identify any that require specialized tools:
@@ -299,8 +231,6 @@ This creates:
299
231
 
300
232
  (Where `[job_name]` is the name of the NEW job you're creating, e.g., `competitive_research`)
301
233
 
302
- **Doc Spec**: See `.deepwork/doc_specs/job_spec.md` for the complete specification with quality criteria.
303
-
304
234
  **Template reference**: See `.deepwork/jobs/deepwork_jobs/templates/job.yml.template` for the standard structure.
305
235
 
306
236
  **Complete example**: See `.deepwork/jobs/deepwork_jobs/templates/job.yml.example` for a fully worked example.
@@ -134,7 +134,23 @@ Check for and remove other obsolete files:
134
134
  | `.claude/commands/` | Generated commands | Keep (current system) |
135
135
  | `.claude/settings.local.json` | Local overrides | Keep (user settings) |
136
136
 
137
- ### Step 6: Verify Git Status
137
+ ### Step 6: Re-install DeepWork
138
+
139
+ After all cleanup is complete, re-run `deepwork install` to ensure configurations are current and consistent:
140
+
141
+ ```bash
142
+ deepwork install
143
+ ```
144
+
145
+ **Then verify:**
146
+ 1. Check that `.deepwork/config.yml` is valid and up to date
147
+ 2. Check that `.claude/skills/deepwork/` exists and contains the expected skill entry point
148
+ 3. Check that all jobs in `.deepwork/jobs/` have valid `job.yml` files
149
+ 4. Run `deepwork install` a second time and confirm the output is clean (no errors or warnings)
150
+
151
+ If any issues are found, fix them before proceeding. The goal is a clean, working DeepWork installation with no residual problems from the repair process.
152
+
153
+ ### Step 7: Verify Git Status
138
154
 
139
155
  Check that the cleanup hasn't left untracked garbage:
140
156
 
@@ -66,15 +66,6 @@ For each learning identified, determine if it is:
66
66
  - "Quality criteria should include checking for Y"
67
67
  - "Add example of correct output format"
68
68
 
69
- **doc spec-Related** (should improve doc spec files):
70
- - Improvements to document quality criteria
71
- - Changes to document structure or format
72
- - Updated audience or frequency information
73
- - Examples:
74
- - "The report should include a summary table"
75
- - "Quality criterion 'Visualization' needs clearer requirements"
76
- - "Documents need a section for action items"
77
-
78
69
  **Bespoke** (should go in AGENTS.md):
79
70
  - Specific to THIS project/codebase/run
80
71
  - Depends on local conventions or structure
@@ -85,30 +76,6 @@ For each learning identified, determine if it is:
85
76
  - "This project uses camelCase for function names"
86
77
  - "The main config file is at `config/settings.yml`"
87
78
 
88
- ### Step 3.5: Identify doc spec-Related Learnings
89
-
90
- Review the conversation for doc spec-related improvements:
91
-
92
- 1. **Quality Criteria Changes**
93
- - Were any quality criteria unclear or insufficient?
94
- - Did the agent repeatedly fail certain criteria?
95
- - Are there new criteria that should be added?
96
-
97
- 2. **Document Structure Changes**
98
- - Did the user request different sections?
99
- - Were parts of the document format confusing?
100
- - Should the example document be updated?
101
-
102
- 3. **Metadata Updates**
103
- - Has the target audience changed?
104
- - Should frequency or path patterns be updated?
105
-
106
- **Signals for doc spec improvements:**
107
- - User asked for changes to document format
108
- - Repeated validation failures on specific criteria
109
- - Feedback about missing sections or information
110
- - Changes to how documents are organized/stored
111
-
112
79
  ### Step 4: Update Job Instructions (Generalizable Learnings)
113
80
 
114
81
  For each generalizable learning:
@@ -162,41 +129,6 @@ Review all instruction files for the job and identify content that:
162
129
  - Shorter instruction files - easier to read and maintain
163
130
  - Consistent guidance across steps
164
131
 
165
- ### Step 4.5: Update doc spec Files (doc spec-Related Learnings)
166
-
167
- If doc spec-related learnings were identified:
168
-
169
- 1. **Locate the doc spec file**
170
- - Find doc spec references in job.yml outputs (look for `doc_spec: .deepwork/doc_specs/[doc_spec_name].md`)
171
- - doc spec files are at `.deepwork/doc_specs/[doc_spec_name].md`
172
-
173
- 2. **Update quality_criteria array**
174
- - Add new criteria with name and description
175
- - Modify existing criteria descriptions for clarity
176
- - Remove criteria that are no longer relevant
177
-
178
- 3. **Update example document**
179
- - Modify the markdown body to reflect structure changes
180
- - Ensure the example matches updated criteria
181
-
182
- 4. **Update metadata as needed**
183
- - target_audience: If audience has changed
184
- - frequency: If production cadence has changed
185
- - path_patterns: If storage location has changed
186
-
187
- **Example doc spec update:**
188
- ```yaml
189
- # Before
190
- quality_criteria:
191
- - name: Visualization
192
- description: Include charts
193
-
194
- # After
195
- quality_criteria:
196
- - name: Visualization
197
- description: Include Mermaid.js charts showing spend breakdown by service and month-over-month trend
198
- ```
199
-
200
132
  ### Step 5: Create/Update AGENTS.md (Bespoke Learnings)
201
133
 
202
134
  The AGENTS.md file captures project-specific knowledge that helps future agent runs.
@@ -150,8 +150,7 @@
150
150
  },
151
151
  "outputs": {
152
152
  "type": "array",
153
- "minItems": 1,
154
- "description": "List of output files/directories produced by this step",
153
+ "description": "List of output files/directories produced by this step. May be empty for cleanup or validation steps.",
155
154
  "items": {
156
155
  "$ref": "#/$defs/stepOutput"
157
156
  }
@@ -7,6 +7,7 @@ Thank you for your interest in contributing to DeepWork! This guide will help yo
7
7
  - [Prerequisites](#prerequisites)
8
8
  - [Development Setup](#development-setup)
9
9
  - [Installing DeepWork Locally](#installing-deepwork-locally)
10
+ - [Installing Pre-Release Versions](#installing-pre-release-versions)
10
11
  - [Testing Your Local Installation](#testing-your-local-installation)
11
12
  - [Running Tests](#running-tests)
12
13
  - [Code Quality](#code-quality)
@@ -240,6 +241,32 @@ which deepwork # Should point to .venv/bin/deepwork
240
241
  deepwork --version
241
242
  ```
242
243
 
244
+ ## Installing Pre-Release Versions
245
+
246
+ DeepWork uses pre-release versions (e.g., `0.7.0a1`) during development. By default, `uv` and `pip` skip pre-release versions, so you need to opt in explicitly.
247
+
248
+ ### With uv
249
+
250
+ ```bash
251
+ # Install the latest pre-release from PyPI
252
+ uv pip install --prerelease=allow deepwork
253
+
254
+ # Or pin to a specific pre-release
255
+ uv pip install --prerelease=allow "deepwork==0.7.0a1"
256
+ ```
257
+
258
+ ### With pip
259
+
260
+ ```bash
261
+ pip install --pre deepwork
262
+ ```
263
+
264
+ ### With uv tool install (global CLI)
265
+
266
+ ```bash
267
+ uv tool install --prerelease=allow deepwork
268
+ ```
269
+
243
270
  ## Testing Your Local Installation
244
271
 
245
272
  To test your local DeepWork installation in a real project:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepwork
3
- Version: 0.7.0a1
3
+ Version: 0.7.0a2
4
4
  Summary: Framework for enabling AI agents to perform complex, multi-step work tasks
5
5
  Project-URL: Homepage, https://github.com/deepwork/deepwork
6
6
  Project-URL: Documentation, https://github.com/deepwork/deepwork#readme
@@ -65,7 +65,7 @@ Start a new workflow session. Creates a git branch, initializes state tracking,
65
65
  |-----------|------|----------|-------------|
66
66
  | `goal` | `string` | Yes | What the user wants to accomplish |
67
67
  | `job_name` | `string` | Yes | Name of the job |
68
- | `workflow_name` | `string` | Yes | Name of the workflow within the job |
68
+ | `workflow_name` | `string` | Yes | Name of the workflow within the job. If the name doesn't match but the job has only one workflow, that workflow is selected automatically. If the job has multiple workflows, an error is returned listing the available workflow names. |
69
69
  | `instance_id` | `string \| null` | No | Optional identifier for naming (e.g., 'acme', 'q1-2026') |
70
70
 
71
71
  #### Returns
@@ -1,6 +1,59 @@
1
1
  {
2
2
  "nodes": {
3
+ "claude-code-nix": {
4
+ "inputs": {
5
+ "flake-utils": "flake-utils",
6
+ "nixpkgs": "nixpkgs"
7
+ },
8
+ "locked": {
9
+ "lastModified": 1770315205,
10
+ "narHash": "sha256-yOYprNUvMHRBC7EfmhNOYYLqNm43cLtydV39ITnCfZk=",
11
+ "owner": "sadjow",
12
+ "repo": "claude-code-nix",
13
+ "rev": "b774ffcdcd9987f4a2e6e3809130d04438e29a13",
14
+ "type": "github"
15
+ },
16
+ "original": {
17
+ "owner": "sadjow",
18
+ "repo": "claude-code-nix",
19
+ "type": "github"
20
+ }
21
+ },
22
+ "flake-utils": {
23
+ "inputs": {
24
+ "systems": "systems"
25
+ },
26
+ "locked": {
27
+ "lastModified": 1731533236,
28
+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
29
+ "owner": "numtide",
30
+ "repo": "flake-utils",
31
+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
32
+ "type": "github"
33
+ },
34
+ "original": {
35
+ "owner": "numtide",
36
+ "repo": "flake-utils",
37
+ "type": "github"
38
+ }
39
+ },
3
40
  "nixpkgs": {
41
+ "locked": {
42
+ "lastModified": 1770169770,
43
+ "narHash": "sha256-awR8qIwJxJJiOmcEGgP2KUqYmHG4v/z8XpL9z8FnT1A=",
44
+ "owner": "NixOS",
45
+ "repo": "nixpkgs",
46
+ "rev": "aa290c9891fa4ebe88f8889e59633d20cc06a5f2",
47
+ "type": "github"
48
+ },
49
+ "original": {
50
+ "owner": "NixOS",
51
+ "ref": "nixpkgs-unstable",
52
+ "repo": "nixpkgs",
53
+ "type": "github"
54
+ }
55
+ },
56
+ "nixpkgs_2": {
4
57
  "locked": {
5
58
  "lastModified": 1770197578,
6
59
  "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
@@ -64,12 +117,28 @@
64
117
  },
65
118
  "root": {
66
119
  "inputs": {
67
- "nixpkgs": "nixpkgs",
120
+ "claude-code-nix": "claude-code-nix",
121
+ "nixpkgs": "nixpkgs_2",
68
122
  "pyproject-build-systems": "pyproject-build-systems",
69
123
  "pyproject-nix": "pyproject-nix",
70
124
  "uv2nix": "uv2nix"
71
125
  }
72
126
  },
127
+ "systems": {
128
+ "locked": {
129
+ "lastModified": 1681028828,
130
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
131
+ "owner": "nix-systems",
132
+ "repo": "default",
133
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
134
+ "type": "github"
135
+ },
136
+ "original": {
137
+ "owner": "nix-systems",
138
+ "repo": "default",
139
+ "type": "github"
140
+ }
141
+ },
73
142
  "uv2nix": {
74
143
  "inputs": {
75
144
  "nixpkgs": [
@@ -4,6 +4,9 @@
4
4
  inputs = {
5
5
  nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6
6
 
7
+ # Claude Code with pre-built native binaries (hourly updates)
8
+ claude-code-nix.url = "github:sadjow/claude-code-nix";
9
+
7
10
  pyproject-nix = {
8
11
  url = "github:pyproject-nix/pyproject.nix";
9
12
  inputs.nixpkgs.follows = "nixpkgs";
@@ -23,7 +26,7 @@
23
26
  };
24
27
  };
25
28
 
26
- outputs = { self, nixpkgs, pyproject-nix, uv2nix, pyproject-build-systems, ... }:
29
+ outputs = { self, nixpkgs, claude-code-nix, pyproject-nix, uv2nix, pyproject-build-systems, ... }:
27
30
  let
28
31
  inherit (nixpkgs) lib;
29
32
 
@@ -64,9 +67,6 @@
64
67
  config.allowUnfree = true;
65
68
  };
66
69
 
67
- # Local claude-code package (update via nix/claude-code/update.sh)
68
- claude-code = pkgs.callPackage ./nix/claude-code/package.nix { };
69
-
70
70
  # Python set with editable overlay for development
71
71
  pythonSet = pythonSets.${system}.overrideScope editableOverlay;
72
72
 
@@ -80,7 +80,7 @@
80
80
  pkgs.uv
81
81
  pkgs.git
82
82
  pkgs.jq
83
- claude-code
83
+ claude-code-nix.packages.${system}.default
84
84
  pkgs.gh
85
85
  ];
86
86
 
@@ -97,9 +97,6 @@
97
97
  unset PYTHONPATH
98
98
  export REPO_ROOT=$(git rev-parse --show-toplevel)
99
99
 
100
- # Add nix/ scripts to PATH (for 'update' command)
101
- export PATH="$PWD/nix:$PATH"
102
-
103
100
  # Only show welcome message in interactive shells
104
101
  if [[ $- == *i* ]]; then
105
102
  echo ""
@@ -113,9 +110,8 @@
113
110
  echo " pytest Run tests"
114
111
  echo " ruff check src/ Lint code"
115
112
  echo " mypy src/ Type check"
116
- echo " claude-code Claude Code CLI"
113
+ echo " claude Claude Code CLI"
117
114
  echo " gh GitHub CLI"
118
- echo " update Update claude-code and flake inputs"
119
115
  echo ""
120
116
  fi
121
117
  '';
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "deepwork"
3
- version = "0.7.0a1"
3
+ version = "0.7.0a2"
4
4
  description = "Framework for enabling AI agents to perform complex, multi-step work tasks"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1,6 +1,6 @@
1
1
  """DeepWork - Framework for enabling AI agents to perform complex, multi-step work tasks."""
2
2
 
3
- __version__ = "0.7.0a1"
3
+ __version__ = "0.7.0a2"
4
4
  __author__ = "DeepWork Contributors"
5
5
 
6
6
  __all__ = [
@@ -132,6 +132,9 @@ class WorkflowTools:
132
132
  def _get_workflow(self, job: JobDefinition, workflow_name: str) -> Workflow:
133
133
  """Get a specific workflow from a job.
134
134
 
135
+ If the workflow name doesn't match any workflow but the job has exactly
136
+ one workflow, that workflow is returned automatically.
137
+
135
138
  Args:
136
139
  job: Job definition
137
140
  workflow_name: Workflow name to find
@@ -140,12 +143,16 @@ class WorkflowTools:
140
143
  Workflow
141
144
 
142
145
  Raises:
143
- ToolError: If workflow not found
146
+ ToolError: If workflow not found and job has multiple workflows
144
147
  """
145
148
  for wf in job.workflows:
146
149
  if wf.name == workflow_name:
147
150
  return wf
148
151
 
152
+ # Auto-select if there's only one workflow
153
+ if len(job.workflows) == 1:
154
+ return job.workflows[0]
155
+
149
156
  available = [wf.name for wf in job.workflows]
150
157
  raise ToolError(
151
158
  f"Workflow '{workflow_name}' not found in job '{job.name}'. "
@@ -214,10 +221,10 @@ class WorkflowTools:
214
221
  if first_step is None:
215
222
  raise ToolError(f"First step not found: {first_step_id}")
216
223
 
217
- # Create session
224
+ # Create session (use resolved workflow name in case it was auto-selected)
218
225
  session = await self.state_manager.create_session(
219
226
  job_name=input_data.job_name,
220
- workflow_name=input_data.workflow_name,
227
+ workflow_name=workflow.name,
221
228
  goal=input_data.goal,
222
229
  first_step_id=first_step_id,
223
230
  instance_id=input_data.instance_id,
@@ -150,8 +150,7 @@
150
150
  },
151
151
  "outputs": {
152
152
  "type": "array",
153
- "minItems": 1,
154
- "description": "List of output files/directories produced by this step",
153
+ "description": "List of output files/directories produced by this step. May be empty for cleanup or validation steps.",
155
154
  "items": {
156
155
  "$ref": "#/$defs/stepOutput"
157
156
  }
@@ -58,12 +58,6 @@ changelog:
58
58
  changes: "Removed implementation_summary and learning_summary outputs; simplified step outputs"
59
59
  - version: "0.5.0"
60
60
  changes: "Standardized on 'ask structured questions' phrasing for user input; Updated quality criteria hooks to verify phrase usage; Added guidance in implement.md to use phrase in generated instructions"
61
- - version: "0.6.0"
62
- changes: "Added doc spec support; define.md now detects document-oriented workflows and guides doc spec creation; learn.md now identifies and applies doc spec-related improvements"
63
- - version: "0.7.0"
64
- changes: "Added job.yml doc spec; define step now outputs job.yml with doc_spec reference for quality validation"
65
- - version: "0.8.0"
66
- changes: "Added review_job_spec step between define and implement for doc spec-based quality validation using sub-agent review"
67
61
  - version: "0.9.0"
68
62
  changes: "Improved skill descriptions with third-person voice and 'Use when...' triggers for better discoverability"
69
63
 
@@ -76,8 +70,7 @@ steps:
76
70
  - name: job_purpose
77
71
  description: "What complex task or workflow are you trying to accomplish?"
78
72
  outputs:
79
- - file: job.yml
80
- doc_spec: .deepwork/doc_specs/job_spec.md
73
+ - job.yml
81
74
  dependencies: []
82
75
  - id: implement
83
76
  name: "Implement Job Steps"
@@ -158,8 +151,6 @@ steps:
158
151
  - "**Instructions Improved**: Were job instructions updated to address identified issues?"
159
152
  - "**Instructions Concise**: Are instructions free of redundancy and unnecessary verbosity?"
160
153
  - "**Shared Content Extracted**: Is lengthy/duplicated content extracted into referenced files?"
161
- - "**doc spec Reviewed (if applicable)**: For jobs with doc spec outputs, were doc spec-related learnings identified?"
162
- - "**doc spec Updated (if applicable)**: Were doc spec files updated with improved quality criteria or structure?"
163
154
  - "**Bespoke Learnings Captured**: Were run-specific learnings added to AGENTS.md?"
164
155
  - "**File References Used**: Do AGENTS.md entries reference other files where appropriate?"
165
156
  - "**Working Folder Correct**: Is AGENTS.md in the correct working folder for the job?"
@@ -206,11 +197,10 @@ steps:
206
197
  name: "Clean Up Errata"
207
198
  description: "Removes obsolete files and folders from prior DeepWork versions, including old skill directories, temp files, and deprecated configurations."
208
199
  instructions_file: steps/errata.md
200
+ outputs: []
209
201
  inputs:
210
202
  - file: .deepwork/jobs/
211
203
  from_step: fix_jobs
212
- outputs:
213
- - repair_summary.md
214
204
  dependencies:
215
205
  - fix_settings
216
206
  - fix_jobs
@@ -221,5 +211,5 @@ steps:
221
211
  - "**Rules Folder Removed**: Is `.deepwork/rules/` folder backed up and removed (fully deprecated)?"
222
212
  - "**Rules Job Removed**: Is `.deepwork/jobs/deepwork_rules/` removed if present?"
223
213
  - "**Config Version Updated**: Is `.deepwork/config.yml` using current version format?"
224
- - "**Summary Provided**: Is a repair_summary.md file created documenting all changes made?"
214
+ - "**DeepWork Re-installed**: Was `deepwork install` run after cleanup, and does it complete without errors?"
225
215
  - "**Git Status Clean**: Are changes ready to be committed (no untracked garbage files)?"