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.
- {deepwork-0.7.0a1/src/deepwork/standard_jobs → deepwork-0.7.0a2/.deepwork/jobs}/deepwork_jobs/job.yml +3 -13
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/define.md +0 -70
- {deepwork-0.7.0a1/src/deepwork/standard_jobs → deepwork-0.7.0a2/.deepwork/jobs}/deepwork_jobs/steps/errata.md +17 -1
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/learn.md +0 -68
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/schemas/job.schema.json +1 -2
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CONTRIBUTING.md +27 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/PKG-INFO +1 -1
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/mcp_interface.md +1 -1
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/flake.lock +70 -1
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/flake.nix +6 -10
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/pyproject.toml +1 -1
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/__init__.py +1 -1
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/tools.py +10 -3
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/job.schema.json +1 -2
- {deepwork-0.7.0a1/.deepwork/jobs → deepwork-0.7.0a2/src/deepwork/standard_jobs}/deepwork_jobs/job.yml +3 -13
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/make_new_job.sh +15 -16
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/define.md +0 -70
- {deepwork-0.7.0a1/.deepwork/jobs → deepwork-0.7.0a2/src/deepwork/standard_jobs}/deepwork_jobs/steps/errata.md +17 -1
- {deepwork-0.7.0a1/.deepwork/jobs → deepwork-0.7.0a2/src/deepwork/standard_jobs}/deepwork_jobs/steps/fix_jobs.md +2 -3
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/learn.md +0 -68
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_tools.py +62 -3
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/uv.lock +1 -1
- deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/doc_specs/job_spec.md +0 -184
- deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.template +0 -26
- deepwork-0.7.0a1/.github/workflows/update-claude-code.yml +0 -63
- deepwork-0.7.0a1/nix/claude-code/package-lock.json +0 -314
- deepwork-0.7.0a1/nix/claude-code/package.nix +0 -78
- deepwork-0.7.0a1/nix/claude-code/update.sh +0 -49
- deepwork-0.7.0a1/nix/update +0 -18
- deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/doc_specs/job_spec.md +0 -184
- deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.template +0 -26
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.claude/settings.json +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.claude/skills/deepwork/SKILL.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/.gitignore +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/config.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/doc_specs/claude_code_skill.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/doc_specs/job_spec.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/AGENTS.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/make_new_job.sh +0 -0
- {deepwork-0.7.0a1/src/deepwork/standard_jobs → deepwork-0.7.0a2/.deepwork/jobs}/deepwork_jobs/steps/fix_jobs.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/fix_settings.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/implement.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/iterate.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/steps/test.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/agents.md.template +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/job.yml.example +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/job.yml.template +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.deepwork/tmp/.gitkeep +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.envrc +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.gemini/skills/deepwork/index.toml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/copilot-instructions.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/README.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/cla.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/claude-code-test.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/copilot-setup-steps.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/prepare-release.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/publish-release.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/release.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.github/workflows/validate.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.gitignore +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/.mcp.json +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/AGENTS.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CHANGELOG.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CLA/version_1/CLA.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/CLA/version_1/CLA_SIGNATORIES.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/LICENSE.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/README.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/claude.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/architecture.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/code_review_standards.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/debugging_history/AGENTS.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/debugging_history/hooks.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/doc-specs.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/nix-flake.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/README.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/cli_configuration.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/hooks.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/hooks_system.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/claude/learnings.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/cli_configuration.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/hooks.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/hooks_system.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/platforms/gemini/learnings.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/doc/reference/calling_claude_in_print_mode.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/README.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/readme.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/clarify.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/constitution.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/implement.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/plan.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/specify.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/library/jobs/spec_driven_development/steps/tasks.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/hook.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/install.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/main.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/serve.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/cli/sync.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/adapters.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/detector.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/doc_spec_parser.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/generator.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/hooks_syncer.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/core/parser.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/README.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/check_version.sh +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/claude_hook.sh +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/gemini_hook.sh +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/hooks/wrapper.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/quality_gate.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/schemas.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/server.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/mcp/state.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/doc_spec_schema.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/schemas/job_schema.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/AGENTS.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/fix_settings.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/implement.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/iterate.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/steps/test.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/claude/AGENTS.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/claude/settings.json +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/claude/skill-deepwork.md.jinja +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/templates/gemini/skill-deepwork.md.jinja +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/fs.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/git.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/validation.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/src/deepwork/utils/yaml_utils.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/conftest.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/e2e/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/e2e/test_claude_code_integration.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/doc_specs/minimal_doc_spec.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/doc_specs/valid_report.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/comparative_report.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/identify_competitors.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/primary_research.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/complex_job/steps/secondary_research.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/compile_results.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/final_review.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/research_docs.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/research_interviews.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/research_web.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/concurrent_steps_job/steps/setup.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/exposed_step_job/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/exposed_step_job/steps/exposed_step.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/exposed_step_job/steps/hidden_step.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/fruits/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/fruits/steps/classify.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/fruits/steps/identify.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/invalid_job/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/job_with_doc_spec/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/job_with_doc_spec/steps/generate_report.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/simple_job/job.yml +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/jobs/simple_job/steps/single_step.md +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/fixtures/mock_review_agent.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/integration/test_install_flow.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/integration/test_quality_gate_integration.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/__init__.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_async_interface.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_quality_gate.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_schemas.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/mcp/test_state.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_doc_spec_parser.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_doc_spec_schema.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_fs.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_git.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_hook_wrapper.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_parser.py +0 -0
- {deepwork-0.7.0a1 → deepwork-0.7.0a2}/tests/unit/test_validation.py +0 -0
- {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
|
-
-
|
|
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
|
-
- "**
|
|
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:
|
|
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
|
-
"
|
|
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.
|
|
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
|
-
"
|
|
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
|
|
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
|
'';
|
|
@@ -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=
|
|
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
|
-
"
|
|
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
|
-
-
|
|
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
|
-
- "**
|
|
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)?"
|