Implement draftwise scan with AI plumbing#4
Merged
Merged
Conversation
Adds the scan command and the foundations for every AI-driven command that follows. Three layers: - src/utils/config.js reads .draftwise/config.yaml (yaml package). - src/ai/provider.js routes calls by provider; src/ai/providers/claude.js wraps @anthropic-ai/sdk. OpenAI and Gemini are stubbed with a clear not-yet-wired-up error. - src/core/scanner.js gains framework detection (Next/Express/Fastify/ React/Vue/Svelte/etc), Next pages+app router parsing, regex-based Express/Fastify/Koa route detection, React/Vue/Svelte component listing, and Prisma/Mongoose/Drizzle model parsing. Test files are excluded from route detection (caught a bogus match in our own scanner.test.js fixtures). scan branches on config.mode: api mode calls the model and writes overview.md; agent mode dumps structured scanner data + an instruction to stdout for the host coding agent (Claude Code, Cursor, etc.) to consume and write overview.md itself. 20 tests across config, scanner, and command. Smoke-tested in agent mode against this repo — zero spurious routes after the test-file fix. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4nkur
added a commit
that referenced
this pull request
Apr 26, 2026
CI workflow at .github/workflows/ci.yml — install + lint + test on Node 20 and 22, on every PR and push to main. Manual checks before merge stop being the only line of defense. Anthropic SDK maxRetries goes from its default 2 to 4. The SDK already handles 429 / 5xx / network retries internally; the audit suggested wrapping our own retry but that's redundant with existing SDK behavior. Bumping the SDK's own knob covers more transient blips with less code. scan-cache.json gains a cacheVersion field. When we change scan output shape later (new field, renamed key), bumping CACHE_VERSION in src/utils/scan-cache.js makes old caches miss instead of poisoning downstream commands with stale shapes. Closes audit P2 #4, #6, #7. All seven P2s now closed.
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the scan command and the foundations for every AI-driven command that follows. Three layers:
scan branches on config.mode: api mode calls the model and writes overview.md; agent mode dumps structured scanner data + an instruction to stdout for the host coding agent (Claude Code, Cursor, etc.) to consume and write overview.md itself.
20 tests across config, scanner, and command. Smoke-tested in agent mode against this repo — zero spurious routes after the test-file fix.