mirror of
https://github.com/codewhale-hq/Codewhale.git
synced 2026-11-07 10:36:05 -10:00
First placement-independent step of the S7=(c) decision (config, credentials and OAuth move toward codewhale-runtime). credentials has no dependency on any other tui module (0 outbound edges) and is the only module the config cluster was blocked on at module level (23 references), so it moves first and alone. - scripts/split/move-modules.py credentials rewrote the seven callers (config, config/credential_resolve, config/tests, provider_readiness, runtime_api/secrets, tui/provider_picker, client test cases) to codewhale_runtime::credentials. No shim or re-export stays in tui. - scripts/split/widen.py widened exactly the 38 items the compiler named (pub(crate) to pub) and deleted three expect(dead_code) attributes the export fulfils. Token and key material is unchanged: Credential keeps its hand-written Debug that prints only the variant tag, and secrets stay behind the existing store trait. - MapAuthContext is gated on any(test, feature = "test-support") instead of cfg(test) so tui tests can still use it across the crate boundary; the tui dev-dependency on runtime already enables test-support. - codewhale-runtime gains a codewhale-secrets dependency (Cargo.toml and Cargo.lock). codewhale-secrets is a leaf; the command-crate-boundaries check still passes with runtime free of UI packages. - One module comment that named crate::config::credential_resolve now names codewhale_tui::config::credential_resolve. THIRD_PARTY_NOTICES and the old decomposition roadmap carry the path sweep; the roadmap still plans a later move into codewhale-secrets, which S7=(c) supersedes. - dead-code budget lowered 212 to 209. Size: codewhale-runtime production lines 14,699 to 15,416 (closure_report), tui 965,801 to 965,081. This is NOT progress on the 79-module SCC (credentials was never in it) and the crate split is not done. Honest headroom note for the founder: moving the rest of the S7=(c) cluster (config 14,105, settings 5,935, config_persistence 2,180, oauth 9,896, codex_model_cache 608 = 32,724 production lines) would take runtime to about 48,140, within about 1,900 of the 50k ceiling and far from the 10k typical target, with no room for the 13 other wave-0 modules (5,988 lines). Verified (macOS, local only; no hosted CI, Linux/FreeBSD/Windows compile): - scripts/dev-cargo.sh build -p codewhale-cli --bin codewhale --locked: exit 0 (known ld __eh_frame warning only). - nextest -p codewhale-runtime -p codewhale-tui --lib, filters runtime credentials:: and tui credential / secrets / provider_readiness / provider_picker / config::tests: 774 run, 774 passed, 0 failed, 14792 skipped (10 runtime credentials tests, 755 tui tests). - module_graph --check 121 closure modules PASS, blocking calls 543/165, command-crate-boundaries PASS, dead-code 209 (budget updated). Not verified: a signing-in or key-saving run through the product. The exercised paths are the existing unit and API tests only. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
3.1 KiB
3.1 KiB
Third-party notices
Codewhale is MIT licensed (see LICENSE). Portions of it are
adapted from other open-source projects. Their copyright and permission
notices are reproduced here, and each adapted file carries an attribution
header pointing back to its origin.
Rust crate dependencies are covered by cargo deny (see deny.toml)
and are not duplicated here; this file records source-level adaptations, where
the licence obligation travels with the code rather than with a package.
pi-mono — credential resolution design
- Project: pi-mono (https://github.com/earendil-works/pi-mono)
- Author: Mario Zechner
- Licence: MIT
- Used in:
crates/runtime/src/credentials/andcrates/tui/src/config/credential_resolve.rs - What was taken: the design of
packages/ai/src/auth/— one type-tagged credential per provider,modifyas the only serialized write path, a single stated precedence rule enforced in one place, an injectable auth context, and a resolution result that names its source. This is a design port into idiomatic synchronous Rust over Codewhale's existing stores, not a line-for-line copy; several doc comments are adapted closely.
MIT License
Copyright (c) 2025 Mario Zechner
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Other source-level adaptations
These predate this file. Each already names its origin in a header comment on the adapting file; they are listed here so the set is discoverable from one place. Their licence text has not been reproduced below — that is a gap, not a claim that none is required.
| Codewhale file | Adapted from |
|---|---|
crates/tui/src/tui/frame_rate_limiter.rs |
codex-rs/tui/src/tui/frame_rate_limiter.rs, openai/codex |
crates/tui/src/tui/display_refresh.rs |
Grok CLI's host display-refresh probe |
patches/unicode-width-0.2.2/ |
vendored patch; upstream LICENSE-MIT retained in-tree |
patches/crossterm-0.29.0/ |
vendored patch (surrogate key-up handling in src/event/sys/windows/parse.rs, the change proposed upstream as crossterm-rs/crossterm#1073); upstream MIT LICENSE retained in-tree |