feat(dogfood): route .mts/.cts → typescript + .mdx → markdown #147

Merged
altair823 merged 1 commits from feat/dogfood-routing-cts-mts-mdx into main 2026-05-20 06:28:43 +00:00
Owner

요약

Multi-root dogfooding 의 issue #6.mts / .cts / .mdx 28개 파일이 skipped_by_extension 으로 분류되던 것 routing 추가. 모두 기존 extractor 가 처리 가능한 변종.

변경

  • .mts (ESM TypeScript) / .cts (CommonJS TypeScript)MediaType::Code("typescript"). tree-sitter-typescript 0.23 의 LANGUAGE_TYPESCRIPT grammar 가 모두 처리 (.tsx 만 별도 LANGUAGE_TSX). code_lang_for_path + module_path_for_tsjs ext-strip 도 동시 확장.
  • .mdx (Markdown + JSX)MediaType::Markdown. md parser 가 JSX islands 를 raw passthrough 로 처리.

검증

  • cargo test -p kebab-source-fs --lib → 44/44 (2 신규)
  • cargo test -p kebab-parse-code --lib → 20/20
  • cargo test -p kebab-parse-code --test lang → 4/4 (assertion 2개 확장)
  • cargo clippy -p kebab-source-fs -p kebab-parse-code --all-targets -- -D warnings clean

영향

  • wire schema 변경 없음 (확장자 routing 만 확장).
  • frozen design 변경 없음.
  • 기존 색인 데이터 invalidation 없음 — 신규 파일만 추가로 색인됨.

다음 dogfood 후보

  • Ranking 편향 (본문 vs 테스트 우선): BM25 + path-based weighting 검토 필요. 별도 PR.
  • Asset table workspace_path flip-flop (minor semantic, user-impact 없음).

🤖 Generated with Claude Code

## 요약 Multi-root dogfooding 의 issue #6 — `.mts` / `.cts` / `.mdx` 28개 파일이 `skipped_by_extension` 으로 분류되던 것 routing 추가. 모두 기존 extractor 가 처리 가능한 변종. ## 변경 - **`.mts` (ESM TypeScript) / `.cts` (CommonJS TypeScript)** → `MediaType::Code("typescript")`. tree-sitter-typescript 0.23 의 `LANGUAGE_TYPESCRIPT` grammar 가 모두 처리 (`.tsx` 만 별도 `LANGUAGE_TSX`). `code_lang_for_path` + `module_path_for_tsjs` ext-strip 도 동시 확장. - **`.mdx` (Markdown + JSX)** → `MediaType::Markdown`. md parser 가 JSX islands 를 raw passthrough 로 처리. ## 검증 - `cargo test -p kebab-source-fs --lib` → 44/44 (2 신규) - `cargo test -p kebab-parse-code --lib` → 20/20 - `cargo test -p kebab-parse-code --test lang` → 4/4 (assertion 2개 확장) - `cargo clippy -p kebab-source-fs -p kebab-parse-code --all-targets -- -D warnings` clean ## 영향 - wire schema 변경 없음 (확장자 routing 만 확장). - frozen design 변경 없음. - 기존 색인 데이터 invalidation 없음 — 신규 파일만 추가로 색인됨. ## 다음 dogfood 후보 - Ranking 편향 (본문 vs 테스트 우선): BM25 + path-based weighting 검토 필요. 별도 PR. - Asset table workspace_path flip-flop (minor semantic, user-impact 없음). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
altair823 added 1 commit 2026-05-20 06:24:41 +00:00
Dogfood (PR #142 1B + multi-root: kebab-docs + httpx + zod + lodash)
showed 28 files skipped by extension that are routable to existing
extractors:
- .mts (ESM TypeScript) / .cts (CommonJS TypeScript) — same grammar as
  .ts in tree-sitter-typescript 0.23 (LANGUAGE_TYPESCRIPT covers JSX-
  agnostic variants; LANGUAGE_TSX stays for .tsx only)
- .mdx (Markdown + JSX) — routed as MediaType::Markdown; the md parser
  folds JSX islands through as raw passthrough

Changes:
- crates/kebab-source-fs/src/media.rs: 'mts'|'cts' → Code(typescript),
  'mdx' → Markdown. +2 unit tests.
- crates/kebab-parse-code/src/lang.rs: code_lang_for_path matches mts/cts;
  module_path_for_tsjs strips .mts/.cts as well. Test cases extended.
- crates/kebab-parse-code/src/typescript.rs: doc comment on select_grammar
  refreshed to mention .mts/.cts.
- crates/kebab-parse-code/tests/lang.rs: 2 new assertions.

verify: kebab-source-fs 44 / kebab-parse-code lib 20 + lang 4 all pass; clippy clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
claude-reviewer-01 approved these changes 2026-05-20 06:27:45 +00:00
claude-reviewer-01 left a comment
Member

회차 1 — APPROVE (no action items)

도그푸딩에서 발견된 28개 파일의 skipped_by_extension 문제를 정확히 수정한 PR입니다.

검증 항목

  1. media.rs"mts" | "cts" 를 TypeScript 아암에, "mdx" 를 Markdown 아암에 추가. 두 신규 테스트(ts_variants_mts_cts, mdx_routes_to_markdown) 모두 의도에 맞게 작성됨.

  2. lang.rs::code_lang_for_path"mts" | "cts" 를 기존 "ts" | "tsx" 아암에 자연스럽게 합류.

  3. lang.rs::module_path_for_tsjs — strip 리스트에 .mts/.cts.ts 앞에 배치. 순서가 결정적으로 중요한데 올바름 확인: a/b.mts.mts 에 먼저 매칭되어 a/b 로 스트립되고, .ts 가 먼저 오면 a/b.m 이 남는 버그가 발생했을 것.

  4. typescript.rs::select_grammar — 로직 변경 없음. doc-comment 에 .mts/.cts 를 명시하고 tree-sitter-typescript 0.23 에서 단일 grammar 임을 기술. 적절.

  5. tests/lang.rsknown_extensions_map_to_canonical_identifiers 에 2 케이스 추가.

테스트 결과

  • kebab-source-fs --lib: 44/44 pass (회귀 없음)
  • kebab-parse-code --lib: 20/20 pass
  • kebab-parse-code --test lang: 4/4 pass
  • clippy -p kebab-source-fs -p kebab-parse-code --all-targets -D warnings: clean

크로스커팅 확인

  • .mdx 를 Markdown 으로 라우팅할 때 pulldown-cmark 의 JSX 처리 방식을 직접 확인: 이벤트 워커의 catch-all _ => {} (blocks.rs:1103–1105) 가 Html 이벤트를 "dropped silently per design §3.4" 로 처리. catch_unwind 가중 적용됨. 패닉 위험 없음.
  • 변경 파일: kebab-source-fs, kebab-parse-code 두 크레이트만. 새 의존성 없음.

소규모 수술적 수정으로 완성도 높음. 즉시 머지 가능합니다.

회차 1 — APPROVE (no action items) 도그푸딩에서 발견된 28개 파일의 `skipped_by_extension` 문제를 정확히 수정한 PR입니다. **검증 항목** 1. `media.rs` — `"mts" | "cts"` 를 TypeScript 아암에, `"mdx"` 를 Markdown 아암에 추가. 두 신규 테스트(`ts_variants_mts_cts`, `mdx_routes_to_markdown`) 모두 의도에 맞게 작성됨. 2. `lang.rs::code_lang_for_path` — `"mts" | "cts"` 를 기존 `"ts" | "tsx"` 아암에 자연스럽게 합류. 3. `lang.rs::module_path_for_tsjs` — strip 리스트에 `.mts`/`.cts` 를 `.ts` 앞에 배치. 순서가 결정적으로 중요한데 올바름 확인: `a/b.mts` 가 `.mts` 에 먼저 매칭되어 `a/b` 로 스트립되고, `.ts` 가 먼저 오면 `a/b.m` 이 남는 버그가 발생했을 것. 4. `typescript.rs::select_grammar` — 로직 변경 없음. doc-comment 에 `.mts`/`.cts` 를 명시하고 tree-sitter-typescript 0.23 에서 단일 grammar 임을 기술. 적절. 5. `tests/lang.rs` — `known_extensions_map_to_canonical_identifiers` 에 2 케이스 추가. **테스트 결과** - `kebab-source-fs --lib`: 44/44 pass (회귀 없음) - `kebab-parse-code --lib`: 20/20 pass - `kebab-parse-code --test lang`: 4/4 pass - `clippy -p kebab-source-fs -p kebab-parse-code --all-targets -D warnings`: clean **크로스커팅 확인** - `.mdx` 를 Markdown 으로 라우팅할 때 pulldown-cmark 의 JSX 처리 방식을 직접 확인: 이벤트 워커의 catch-all `_ => {}` (blocks.rs:1103–1105) 가 `Html` 이벤트를 "dropped silently per design §3.4" 로 처리. catch_unwind 가중 적용됨. 패닉 위험 없음. - 변경 파일: `kebab-source-fs`, `kebab-parse-code` 두 크레이트만. 새 의존성 없음. 소규모 수술적 수정으로 완성도 높음. 즉시 머지 가능합니다.
altair823 merged commit ea5f7b22c8 into main 2026-05-20 06:28:43 +00:00
altair823 deleted branch feat/dogfood-routing-cts-mts-mdx 2026-05-20 06:28:44 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: altair823-org/kebab#147