pi-ai's auth model reaches this adapter through three translations, all of which live here: a CredentialStore over the harness credential records, an AuthContext over the credential plane and the host filesystem, and one authorization flow per installed provider that ships a login. The seams they consume name nothing from pi-ai, so a second adapter family can arrive with a different auth model and share them. Every collection is now built with the store and the context rather than with nothing, which is what makes a signed-in provider stay signed in across the collection rebuild a configuration change causes. With a posture that works, the configurable-provider directory no longer withholds OAuth-only routes and `openai-codex` is offered again; the predicate that withheld it is gone. The credential plane stays optional. Reads answer "nothing stored" without a credentials service because such a composition genuinely holds no credential, while writes refuse by name — a login whose grant evaporated would report success and then fail every request. Flow registration is scoped to the authorization seam, so a headless or ACP composition mounts with no sign-in and everything else unchanged. Two fixes found while wiring this up: pre-release credential fixtures in the llm suites still used the flat document the record work replaced, and a flow that ignores its cancellation signal would have held its key for the life of the process — withdrawal now settles the attempt either way.
6 lines
432 B
YAML
6 lines
432 B
YAML
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
# after editing either side, bring the other along and re-record with:
|
|
# pnpm run verify-translation-pairing --write packages/llm/llm-pi-ai/README.md
|
|
README.md: 45b4815cb35e8709a6dc6cf4c50b778d2c2113f9
|
|
README.zh.md: a1e952b70d9361e945b37ed146035fa274185003
|