Connection billing, subscription routing, and usage (0.4.0) - #17
Merged
Merged
Conversation
Raw '', absent, and null provider URLs are unspecified SDK defaults instead of invalid identity. Public rates still require an exact provider/model/endpoint match, so a missing public URL cannot certify a custom gateway and CLI cost cannot override a route mismatch. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Persist nonsecret connection identities per configured host slot. Existing Paid settings migrate to verified-pricing so unpriced routes are not newly authorized without an explicit adoption. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Unknown public prices no longer block a configured paid route after the user adopts configured-connections. Free and migrated verified- pricing Paid keep the previous verified-price gate. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
OpenCode subscription auth loaders attach an opaque fetch. Allow it on provider options when Paid policy is active and the exact model binding matches. Task and model route overrides stay rejected. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Report tokens separately from OpenCode-recorded cost, keep missing values null, and store private HMAC attribution. The panel splits connection, access, and pricing, and existing Paid users must adopt configured-connection access. Bump package 0.4.0 and managed surface 3. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Repair keeps the original connection ID/revision and stops before a provider call if billing binding changes. Browser and package acceptance now expect settings schema 4 and managed surface 3. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
…etch Observe connections during catalog refresh, block revoked or missing pinned connections at eligibility and dispatch, complete HMAC usage records after successful owned replies, and add a host scenario that attaches an auth-loader-shaped fetch on Paid routes. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Live observation no longer clears reported-revoked. Host acceptance requires the auth-loader fetch wrapper to handle the provider request. Attribution waits for completion instead of a timer, and packaged acceptance expects 20 host scenarios. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Host acceptance now stores synthetic omctest OAuth and requires the plugin auth-loader fetch to stamp every provider request. Routing completion updates workflow state before queued attribution writes. Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
Signed-off-by: Chris <51251284+BitL8-ByteShort@users.noreply.github.com>
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.
Connecting a subscription-backed model could show “Available” alongside “Unknown — Blocked” because public API pricing was being used as the access gate. Empty SDK-default endpoints and provider-owned authentication transports also caused identity conflicts.
This 0.4.0 change separates configured connection access, billing evidence, public prices, and recorded usage:
Final pre-merge review added per-model route fingerprints for mixed-endpoint providers. Endpoint/SDK changes and swaps invalidate pins and retained repairs, and discard old quota. Homogeneous shared-endpoint additions remain stable. Two independent reviews assessed the original issue and the resulting fix; no unresolved blockers remain.
Local full verification for
060320f: 348 tests passed with zero failures/skips, plus type check and production build on Node 24.14.0 with exact OpenCode 1.18.22. Fresh CI run 34688494703 passed all source, package, and four OS/Node acceptance jobs for this head. CodeQL also passed. Historical candidate CI 34304377304 passed the four OS/Node combinations but predates this correction; its tarball will not be published.Merged through protected main as
942a94c5eb354da877b22ddc6eb37b098a598f7cwith DCO sign-offs. Final artifact CI 34688784337 passed all seven jobs, including Linux/macOS × Node 22.12.0/24.x acceptance. Main CodeQL passed.Published npm 0.4.0 and immutable GitHub v0.4.0 on 2026-09-12. The release tag resolves to the merge commit. One final tarball was built and published to both channels: SHA-256
1ee2d3ab864f2615ec3f8c750a400694ac8587129bdef78b0d1b275793f0828b.Public verification completed: independent credential-free npm and GitHub downloads match the final bytes; npm SHA-512/SHA-1 integrity also matches. A fresh version-pinned npm install reports 0.4.0 and matches all 83 package files. Each public download separately passed full installed-package acceptance on Linux / Node 24.14.0: OpenCode 1.18.22 and 1.18.28 each passed 20 scenarios / 57 loopback requests; browser 14/14; 0.3.0 Free/Paid migration, private backups, guarded updates, restart, disconnect, and recovery passed. Zero real-provider inference requests. Release assets contain the four-way final acceptance and public npm evidence; this receipt records the subsequent public GitHub acceptance.
Limits: synthetic loopback credentials and transports do not prove any real account's entitlement. Opaque host transports are host-managed; quota and unreported token semantics are not invented. Captured history is partial and is not added to aggregate host costs. Final-artifact and public-download gates passed; real-account entitlement remains outside synthetic acceptance.