Commit 7fce618
committed
fix(opencode): read provider id directly off input.provider (#190)
The generated chat.headers plugin guarded provider scoping with
input.provider?.info?.id, but opencode's real hook input.provider is
the runtime Provider record itself (id/name/env/options/source/models)
-- id lives directly on input.provider, never under a nested .info.
The guard's !providerId check was therefore always true, so the hook
returned immediately on every request and never refreshed
Authorization for any provider. Axis B was a complete no-op in
production despite passing all prior tests, because those tests only
asserted on the generated JS's string content, never its behavior
against a real hook invocation.
Found via an isolated end-to-end test against the real opencode
1.17.10 binary (separate $HOME/XDG dirs, real Databricks auth, no
contact with the live ucode install): a well-formed-but-expired JWT
baked into the static provider.options.headers.Authorization/apiKey
still produced 'Bad Request: Invalid Token' with the plugin loaded and
firing -- diagnostic instrumentation showed the guard's providerId was
always undefined. Fixed to input.provider?.id and reverified against
the same isolated harness: the plugin now fetches a fresh token and
the request succeeds despite the stale static config.
Adds TestRenderAuthPluginRuntimeBehavior, which shells out to a real
node process and invokes the generated plugin's chat.headers hook
against the actual runtime input shape (not a mocked one) -- verified
to fail against the old input.provider?.info?.id line and pass against
the fix, so this class of bug is now covered by an assertion that
actually exercises behavior rather than string content.1 parent 98478ab commit 7fce618
2 files changed
Lines changed: 110 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
247 | 247 | | |
248 | 248 | | |
249 | 249 | | |
250 | | - | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
251 | 257 | | |
252 | 258 | | |
253 | 259 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
474 | 476 | | |
475 | 477 | | |
476 | 478 | | |
477 | | - | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
478 | 493 | | |
479 | | - | |
| 494 | + | |
| 495 | + | |
480 | 496 | | |
481 | 497 | | |
482 | 498 | | |
| |||
489 | 505 | | |
490 | 506 | | |
491 | 507 | | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
492 | 593 | | |
493 | 594 | | |
494 | 595 | | |
| |||
0 commit comments