Skip to content

feat(providers): route explicitly text-only models through existing vision handling - #4376

Merged
lidge-jun merged 7 commits into
devfrom
codex/260912-60plus-models-text-only
Sep 13, 2026
Merged

feat(providers): route explicitly text-only models through existing vision handling#4376
lidge-jun merged 7 commits into
devfrom
codex/260912-60plus-models-text-only

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Summary

CLI provider add/edit can mark an exact model text-only through --model and --text-only. The shared capability declaration takes precedence over legacy hints, while missing declarations preserve existing behavior. Positive routed image declarations also override stale helper metadata.

Text-only requests use the existing vision description or explicit omission path before the upstream send; native Chat image requests divert into that path. Forced provider overwrites preserve other models and capability axes. Refs #3377 and the original text-only request #3268 by @turin-dev. Context tier and video activation remain separate unresolved acceptance.

Manual chain, merge bottom-up by the coordinating maintainer: #4374 common capability contract -> this text-only consumer. The base is the parent's head branch; no GitHub native stack is registered. Final hosted verification applies to this cumulative tip.

Verification

  • Independent source plan review PASS; Erdos final independent source review PASS at c663c17.
  • Regression code covers exact keys, legacy restoration, positive image declarations, routed describer selection, native Chat diversion, user/developer/tool-result images, unavailable sidecar behavior, CLI targeting and force preservation.
  • Static owner coverage and git diff --check passed.
  • Local test suites of every size, build, typecheck and install: NOT RUN by explicit maintainer instruction. Final cumulative tip GitHub-hosted CI is required.
  • No merge/auto-merge, original issue closure or live service changes.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@turin-dev

Copy link
Copy Markdown
Contributor

Thank you

…bilities

Refs #3377 and original text-only request #3268 by @turin-dev. Reuse existing vision description/omission handling, preserve exact model keys and legacy fallback.
@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 62 / 80

이 PR은 프로덕션에서 “이 모델은 글자만 받는다”고 명시한 뒤, 이미지가 들어오면 예전에 쓰던 vision sidecar(설명으로 바꾸기)나 omission(이미지 빼고 보내기) 길로 보내 주는 소비자(consumer) 층입니다. 부모는 #4374 feat(providers): persist exact per-model capability declarations 이고, 베이스가 codex/260912-60plus-models-capabilities 입니다. 지금 dev HEAD는 489af939b (#4347 cache-prefix 포함) 이고, #4374 자체는 아직 dev에 없고 CONFLICTING 상태라서 이 PR만 따로 머지할 수 없습니다. 본문도 말한 대로 아래부터 올리는 수동 체인입니다. 원 요청은 #3377 / #3268(@turin-dev) 쪽 text-only 선언입니다.

무엇을 바꾸는지 쉽게 말하면 세 갈래입니다. (1) CLI: ocx provider add … --text-only / ocx provider edit … --model <id> --text-only 로 그 모델의 modelCapabilities.<id>.inputModalities["text"] 로 찍습니다. add는 mergeModelCapabilities 로 형제 모델·다른 축을 지키고, edit는 PATCH body에 한 모델만 넣는데 관리 API가 mergeModelCapabilities 로 합치므로 맵 전체 덮어쓰기는 아닙니다. (2) 카탈로그: configuredInputModalities 가 선언을 legacy modelInputModalities 보다 먼저 봅니다. (3) 런타임: src/vision/eligibility.tsisModelVisionSidecarConsumer / modelAcceptsImageInputWithCache 가 선언을 읽고, 텍스트만이면 기존 설명/생략 경로로 보냅니다. 네이티브 Chat 이미지 요청은 그 경로로 우회한다는 테스트가 openai-chat-native-policy.test.ts 에 있습니다. 구조 문서·docs-site에도 같은 문장이 여러 파일에 붙었습니다. contextTier / video 활성화는 여전히 별개로 남겨 둔 상태입니다.

현재 dev와의 관계: cache-lane(#4347/#4365) 과는 축이 다릅니다. 이 PR은 models-capabilities 스택(#4374#4376) 쪽입니다. 로컬 테스트·빌드·타입체크는 메인테이너 지시로 NOT RUN 이고, 누적 tip의 호스티드 CI가 최종 증거입니다. draft 라벨도 그대로입니다.

라인 147 근처 src/vision/eligibility.ts (native 분기) - 네이티브/지원 OpenAI 슬러그 경로에서 isModelVisionSidecarConsumer 호출 시 modelCapabilities 를 넘기지 않고 legacy(noVisionModels/modelInputModalities)만 봅니다. 문서의 “native catalog authority retains existing legacy policy” 와 맞지만, 운영자가 openai 네이티브 모델에 --text-only 로 선언해도 modelAcceptsImageInput 네이티브 분기는 그 선언을 안 봅니다.
라인 50-55 src/cli/provider-runtime.ts - edit 는 --text-only--model 을 같이 요구하고, Incomplete 조합을 서버 호출 전에 거절합니다. 의도는 분명합니다.
경로 structure/*.md 다수 - 동일한 “Exact model input declarations…” 문단이 catalog/runtime/config 등 여러 파일에 복붙됩니다. 저장소 관례와 맞지만 이후 한 줄만 고치면 흩어질 위험이 있습니다.
경로 테스트/CI - 회귀는 exact key, legacy 복귀, 긍정 image 선언, native Chat 우회, tool-result 이미지, sidecar 없음까지 넓게 잡혀 있습니다. 다만 로컬 미실행이라 tip CI 초록이 머지 전제입니다.
경로 베이스 #4374 - 부모가 dev와 CONFLICTING 이라 이 PR의 diff는 부모 tip 기준입니다. 부모를 리베이스/충돌 해소하기 전에 이 PR만 dev로 옮기면 깨집니다.

메인테이너의 판단이 필요한 지점

너의 추천
draft 유지. 먼저 #4374dev에 맞게 충돌 해소·머지(또는 landing으로 흡수)한 뒤, 이 tip의 호스티드 CI가 초록이면 ready → 머지. 네이티브 슬러그+capabilities 정책은 문서에 한 줄 더 박아 두고, 바꾸려면 후속 PR. issue #3268/#3377 라벨/본문은 닫지 말고 이 PR이 증명하는 범위만 짧게 남기세요.

이 댓글은 grok-bot이 작성했습니다

@lidge-jun
lidge-jun force-pushed the codex/260912-60plus-models-capabilities branch from 17a6e5f to d1dee68 Compare September 12, 2026 05:48
@lidge-jun
lidge-jun force-pushed the codex/260912-60plus-models-text-only branch from c663c17 to ca15403 Compare September 12, 2026 05:48
@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the enhancement New feature or request label Sep 12, 2026
Keep this layer's exact-modality text-only consumer note and retain the
Cline CLI registry-parity sentence from origin/dev.
…t-only

Carry the lower layer's note placement and keep this layer's text-only
consumer and input-declaration notes beside the sections they describe.
Base automatically changed from codex/260912-60plus-models-capabilities to dev September 13, 2026 03:20
@lidge-jun
lidge-jun merged commit c26daa4 into dev Sep 13, 2026
5 checks passed
@lidge-jun
lidge-jun deleted the codex/260912-60plus-models-text-only branch September 13, 2026 03:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants