This makes qbit-assistant-provider-api self-sufficient for qbit-marketing and the qbit-bom G1 guardrails.
Why
The API types lived in ...assistant.provider and ...assistant.engine, which are split packages shared with qbit-assistant internals, so a package allow-list could not tell API from implementation. ...assistant.api is already taken by the internal HTTP classes.
Change
The only package in qbit-assistant-provider-api is now com.kingsrook.qbits.assistant.spi. It holds 23 types, ModelPricing included.
Internal classes stay where they are: provider.RegistryModelProvider and provider.fake.*.
ArchUnit checks that the API module depends on nothing else in com.kingsrook.qbits.. and that there are no split packages.
BREAKING: imports change from ...assistant.provider.X and ...assistant.engine.ModelPricing to ...assistant.spi.X. UPGRADE.md has the full mapping.
Consumers depend only on com.kingsrook.qbits:qbit-assistant-provider-api.
Guardrails: QRun-IO/qbit-bom (companion PR) adds com.kingsrook.qbits.assistant.spi to the G1 default allowed API packages. The artifact already matches the *-api default.
This makes `qbit-assistant-provider-api` self-sufficient for qbit-marketing and the qbit-bom G1 guardrails.
### Why
The API types lived in `...assistant.provider` and `...assistant.engine`, which are split packages shared with qbit-assistant internals, so a package allow-list could not tell API from implementation. `...assistant.api` is already taken by the internal HTTP classes.
### Change
- The **only** package in `qbit-assistant-provider-api` is now `com.kingsrook.qbits.assistant.spi`. It holds 23 types, `ModelPricing` included.
- Internal classes stay where they are: `provider.RegistryModelProvider` and `provider.fake.*`.
- **ArchUnit** checks that the API module depends on nothing else in `com.kingsrook.qbits..` and that there are no split packages.
- **BREAKING:** imports change from `...assistant.provider.X` and `...assistant.engine.ModelPricing` to `...assistant.spi.X`. UPGRADE.md has the full mapping.
- **Consumers** depend only on `com.kingsrook.qbits:qbit-assistant-provider-api`.
- **Guardrails:** QRun-IO/qbit-bom (companion PR) adds `com.kingsrook.qbits.assistant.spi` to the G1 default allowed API packages. The artifact already matches the `*-api` default.
### Tests
`./mvnw verify` passes: 378 tests, 1 skipped (Docker only).
### Merge note
#21 (write mode, waiting on RC.8) will need its imports updated after this. I'll do that.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This makes
qbit-assistant-provider-apiself-sufficient for qbit-marketing and the qbit-bom G1 guardrails.Why
The API types lived in
...assistant.providerand...assistant.engine, which are split packages shared with qbit-assistant internals, so a package allow-list could not tell API from implementation....assistant.apiis already taken by the internal HTTP classes.Change
qbit-assistant-provider-apiis nowcom.kingsrook.qbits.assistant.spi. It holds 23 types,ModelPricingincluded.provider.RegistryModelProviderandprovider.fake.*.com.kingsrook.qbits..and that there are no split packages....assistant.provider.Xand...assistant.engine.ModelPricingto...assistant.spi.X. UPGRADE.md has the full mapping.com.kingsrook.qbits:qbit-assistant-provider-api.com.kingsrook.qbits.assistant.spito the G1 default allowed API packages. The artifact already matches the*-apidefault.Tests
./mvnw verifypasses: 378 tests, 1 skipped (Docker only).Merge note
#21 (write mode, waiting on RC.8) will need its imports updated after this. I'll do that.
🤖 Generated with Claude Code