feat: support multiple --enhance-workflow flags with shared workflow_runner
- Change --enhance-workflow from type:str to action:append in all argument
files (workflow, create, scrape, github, pdf) so the flag can be given
multiple times to chain workflows in sequence
- Add workflow_runner.py: shared utility used by all 4 scrapers
- collect_workflow_vars(): merges extra context then user --var flags
(user flags take precedence over scraper metadata)
- run_workflows(): executes named workflows in order, then any inline
--enhance-stage workflow; handles dry-run/preview mode
- Remove duplicate ~115-130 line workflow blocks from doc_scraper,
github_scraper, pdf_scraper, and codebase_scraper; replace with
single run_workflows() call each
- Remove mutual exclusivity between workflows and AI enhancement:
workflows now run first, then traditional enhancement continues
independently (--enhance-level 0 to disable)
- Add tests/test_workflow_runner.py: 21 tests covering no-flags, single
workflow, multiple/chained workflows, inline stages, mixed mode,
variable precedence, and dry-run
- Fix test_markdown_parsing: accept "text" or "unknown" for unlabelled
code blocks (unified MarkdownParser returns "text" by default)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,9 +16,10 @@ from skill_seekers.cli.constants import DEFAULT_RATE_LIMIT
|
||||
from .common import RAG_ARGUMENTS
|
||||
|
||||
# =============================================================================
|
||||
# TIER 1: UNIVERSAL ARGUMENTS (15 flags)
|
||||
# TIER 1: UNIVERSAL ARGUMENTS (19 flags)
|
||||
# =============================================================================
|
||||
# These arguments work for ALL source types
|
||||
# Includes: 11 core + 4 workflow + 4 RAG (merged from common.py)
|
||||
|
||||
UNIVERSAL_ARGUMENTS: dict[str, dict[str, Any]] = {
|
||||
# Identity arguments
|
||||
@@ -112,6 +113,38 @@ UNIVERSAL_ARGUMENTS: dict[str, dict[str, Any]] = {
|
||||
"metavar": "FILE",
|
||||
},
|
||||
},
|
||||
# Enhancement Workflow arguments (NEW - Phase 2)
|
||||
"enhance_workflow": {
|
||||
"flags": ("--enhance-workflow",),
|
||||
"kwargs": {
|
||||
"action": "append",
|
||||
"help": "Apply enhancement workflow (file path or preset: security-focus, minimal, api-documentation, architecture-comprehensive). Can use multiple times to chain workflows.",
|
||||
"metavar": "WORKFLOW",
|
||||
},
|
||||
},
|
||||
"enhance_stage": {
|
||||
"flags": ("--enhance-stage",),
|
||||
"kwargs": {
|
||||
"action": "append",
|
||||
"help": "Add inline enhancement stage (format: 'name:prompt'). Can be used multiple times.",
|
||||
"metavar": "STAGE",
|
||||
},
|
||||
},
|
||||
"var": {
|
||||
"flags": ("--var",),
|
||||
"kwargs": {
|
||||
"action": "append",
|
||||
"help": "Override workflow variable (format: 'key=value'). Can be used multiple times.",
|
||||
"metavar": "VAR",
|
||||
},
|
||||
},
|
||||
"workflow_dry_run": {
|
||||
"flags": ("--workflow-dry-run",),
|
||||
"kwargs": {
|
||||
"action": "store_true",
|
||||
"help": "Preview workflow stages without executing (requires --enhance-workflow)",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
# Merge RAG arguments from common.py into universal arguments
|
||||
|
||||
Reference in New Issue
Block a user