- 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>
Changes:
- Added RAG_ARGUMENTS dict to common.py with 3 flags:
- --chunk-for-rag (enable semantic chunking)
- --chunk-size (default: 512 tokens)
- --chunk-overlap (default: 50 tokens)
- Removed duplicate RAG arguments from create.py and scrape.py
- Used .update() pattern to merge RAG_ARGUMENTS into UNIVERSAL_ARGUMENTS and SCRAPE_ARGUMENTS
- Added helper functions: add_rag_arguments(), get_rag_argument_names()
- Updated tests to reflect new argument count (15 → 13 universal arguments)
- Fixed test expectations for boolean_args (removed 'enhance', 'enhance_local')
Result:
- Single source of truth for RAG arguments in common.py
- DRY principle maintained across all commands
- All 88 key tests passing
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>