@kortix/sdk 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/core/client/kortix.d.ts.map +1 -1
  2. package/dist/core/rest/projects-client/github.d.ts +7 -1
  3. package/dist/core/rest/projects-client/github.d.ts.map +1 -1
  4. package/dist/core/rest/projects-client/github.js.map +1 -1
  5. package/dist/core/rest/projects-client/index.d.ts +1 -0
  6. package/dist/core/rest/projects-client/index.d.ts.map +1 -1
  7. package/dist/core/rest/projects-client/index.js +1 -0
  8. package/dist/core/rest/projects-client/index.js.map +1 -1
  9. package/dist/core/rest/projects-client/model-enablement.d.ts +9 -0
  10. package/dist/core/rest/projects-client/model-enablement.d.ts.map +1 -0
  11. package/dist/core/rest/projects-client/model-enablement.js +16 -0
  12. package/dist/core/rest/projects-client/model-enablement.js.map +1 -0
  13. package/dist/core/rest/projects-client/projects.d.ts +82 -3
  14. package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
  15. package/dist/core/rest/projects-client/projects.js +8 -0
  16. package/dist/core/rest/projects-client/projects.js.map +1 -1
  17. package/dist/core/rest/projects-client/sessions.d.ts +14 -0
  18. package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
  19. package/dist/core/rest/projects-client/sessions.js.map +1 -1
  20. package/dist/kortix.esm.min.js +5 -5
  21. package/dist/kortix.global.js +14 -14
  22. package/dist/react/index.d.ts +1 -1
  23. package/dist/react/index.d.ts.map +1 -1
  24. package/dist/react/index.js.map +1 -1
  25. package/dist/react/model-flatten.d.ts +16 -4
  26. package/dist/react/model-flatten.d.ts.map +1 -1
  27. package/dist/react/model-flatten.js +11 -0
  28. package/dist/react/model-flatten.js.map +1 -1
  29. package/dist/react/opencode.d.ts +3 -2
  30. package/dist/react/opencode.d.ts.map +1 -1
  31. package/dist/react/opencode.js +3 -2
  32. package/dist/react/opencode.js.map +1 -1
  33. package/dist/react/provider-selection.d.ts +9 -0
  34. package/dist/react/provider-selection.d.ts.map +1 -1
  35. package/dist/react/provider-selection.js +23 -0
  36. package/dist/react/provider-selection.js.map +1 -1
  37. package/dist/react/use-model-enablement.d.ts +25 -0
  38. package/dist/react/use-model-enablement.d.ts.map +1 -0
  39. package/dist/react/use-model-enablement.js +92 -0
  40. package/dist/react/use-model-enablement.js.map +1 -0
  41. package/dist/react/use-opencode-local.d.ts +5 -4
  42. package/dist/react/use-opencode-local.d.ts.map +1 -1
  43. package/dist/react/use-opencode-local.js +20 -37
  44. package/dist/react/use-opencode-local.js.map +1 -1
  45. package/dist/react/use-session.d.ts +24 -1
  46. package/dist/react/use-session.d.ts.map +1 -1
  47. package/dist/react/use-session.js +63 -0
  48. package/dist/react/use-session.js.map +1 -1
  49. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  export * from './opencode.js';
2
- export { answerQuestion, answerPermission, rejectQuestion, classifySendError, type KortixSendError, type KortixSendErrorKind, type SendState, } from './use-session.js';
2
+ export { answerQuestion, answerPermission, rejectQuestion, classifySendError, type KortixSendError, type KortixSendErrorConnector, type KortixSendErrorKind, type SendState, } from './use-session.js';
3
3
  export { BillingError, RequestTooLargeError, parseBillingError, isBillingError, formatBillingErrorForUI, type BillingErrorUI, } from '../core/http/api/errors.js';
4
4
  export { openEventStream, type EventStreamClient, type EventStreamHandle, type EventStreamTimers, type OpenCodeEvent, type OpenEventStreamOptions, } from '../core/stream/event-stream.js';
5
5
  export * from './use-kortix-master.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,cAAc,YAAY,CAAC;AAI3B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,SAAS,GACf,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,sBAAsB,GAC5B,MAAM,6BAA6B,CAAC;AAOrC,cAAc,qBAAqB,CAAC;AAMpC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAOtF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,cAAc,YAAY,CAAC;AAI3B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,SAAS,GACf,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,sBAAsB,GAC5B,MAAM,6BAA6B,CAAC;AAOrC,cAAc,qBAAqB,CAAC;AAMpC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAOtF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,0EAA0E;AAC1E,gFAAgF;AAChF,qEAAqE;AACrE,cAAc,YAAY,CAAC;AAE3B,+EAA+E;AAC/E,qEAAqE;AACrE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAIlB,MAAM,eAAe,CAAC;AAEvB,qEAAqE;AACrE,8EAA8E;AAC9E,4EAA4E;AAC5E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AAEjC,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,iEAAiE;AACjE,8BAA8B;AAC9B,OAAO,EACL,eAAe,GAMhB,MAAM,6BAA6B,CAAC;AAErC,0EAA0E;AAC1E,8DAA8D;AAC9D,sEAAsE;AACtE,yEAAyE;AACzE,4EAA4E;AAC5E,cAAc,qBAAqB,CAAC;AAEpC,0EAA0E;AAC1E,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,GAajB,MAAM,oBAAoB,CAAC;AAE5B,yEAAyE;AACzE,mEAAmE;AACnE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAiB,WAAW,EAAsB,MAAM,QAAQ,CAAC;AAEtF,uEAAuE;AACvE,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,oDAAoD;AACpD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEhG,8EAA8E;AAC9E,gFAAgF;AAChF,uEAAuE;AACvE,wEAAwE;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,0EAA0E;AAC1E,gFAAgF;AAChF,qEAAqE;AACrE,cAAc,YAAY,CAAC;AAE3B,+EAA+E;AAC/E,qEAAqE;AACrE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAKlB,MAAM,eAAe,CAAC;AAEvB,qEAAqE;AACrE,8EAA8E;AAC9E,4EAA4E;AAC5E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AAEjC,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,iEAAiE;AACjE,8BAA8B;AAC9B,OAAO,EACL,eAAe,GAMhB,MAAM,6BAA6B,CAAC;AAErC,0EAA0E;AAC1E,8DAA8D;AAC9D,sEAAsE;AACtE,yEAAyE;AACzE,4EAA4E;AAC5E,cAAc,qBAAqB,CAAC;AAEpC,0EAA0E;AAC1E,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,GAajB,MAAM,oBAAoB,CAAC;AAE5B,yEAAyE;AACzE,mEAAmE;AACnE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAiB,WAAW,EAAsB,MAAM,QAAQ,CAAC;AAEtF,uEAAuE;AACvE,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,oDAAoD;AACpD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEhG,8EAA8E;AAC9E,gFAAgF;AAChF,uEAAuE;AACvE,wEAAwE;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
@@ -54,12 +54,24 @@ export interface FlatModel {
54
54
  lastUpdated?: string;
55
55
  /**
56
56
  * Whether the project OFFERS this model. Server-owned per-project
57
- * enablement, resolved by the API and enforced by the gateway the picker
58
- * renders the enabled ones and "Manage models" switches on this flag.
59
- * Neither re-derives it. Undefined on catalogs that don't carry enablement
60
- * (anything but `/model-picker`), which callers read as "not applicable".
57
+ * enablement, resolved by the API (`/model-picker`) the picker renders the
58
+ * enabled ones and "Manage models" switches on this flag. Neither re-derives
59
+ * it, and the gateway never refuses a request over it (display-only).
60
+ * Undefined on catalogs that don't carry enablement (anything but
61
+ * `/model-picker`), which callers read as "not applicable".
61
62
  */
62
63
  enabled?: boolean;
63
64
  }
65
+ /**
66
+ * Whether `key` may be offered/resolved from `models` — present in the catalog
67
+ * and not turned off by the server's per-project enablement (`enabled` above).
68
+ * THE one predicate for "is this model selectable?"; a second, client-local
69
+ * visibility heuristic beside it is exactly what made the session picker and
70
+ * "Manage models" disagree.
71
+ */
72
+ export declare function isOfferedModel(models: FlatModel[], key: {
73
+ providerID: string;
74
+ modelID: string;
75
+ }): boolean;
64
76
  export declare function flattenModels(providers: ProviderListResponse | undefined): FlatModel[];
65
77
  //# sourceMappingURL=model-flatten.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-flatten.d.ts","sourceRoot":"","sources":["../../src/react/model-flatten.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAsC1F;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,4DAA4D;IAC5D,YAAY,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;iCAC6B;IAC7B,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1F,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;wEACoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,wBAAgB,aAAa,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,SAAS,EAAE,CA0DtF"}
1
+ {"version":3,"file":"model-flatten.d.ts","sourceRoot":"","sources":["../../src/react/model-flatten.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAsC1F;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,4DAA4D;IAC5D,YAAY,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;iCAC6B;IAC7B,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1F,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;wEACoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EAAE,EACnB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAGT;AAgBD,wBAAgB,aAAa,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,SAAS,EAAE,CA0DtF"}
@@ -2,6 +2,17 @@ import { GATEWAY_PROVIDER_IDS } from './use-opencode-sessions/index.js';
2
2
  function hasCapabilities(model) {
3
3
  return 'capabilities' in model && model.capabilities != null;
4
4
  }
5
+ /**
6
+ * Whether `key` may be offered/resolved from `models` — present in the catalog
7
+ * and not turned off by the server's per-project enablement (`enabled` above).
8
+ * THE one predicate for "is this model selectable?"; a second, client-local
9
+ * visibility heuristic beside it is exactly what made the session picker and
10
+ * "Manage models" disagree.
11
+ */
12
+ export function isOfferedModel(models, key) {
13
+ const model = models.find((m) => m.providerID === key.providerID && m.modelID === key.modelID);
14
+ return !!model && model.enabled !== false;
15
+ }
5
16
  export function flattenModels(providers) {
6
17
  if (!providers)
7
18
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"model-flatten.js","sourceRoot":"","sources":["../../src/react/model-flatten.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-flatten.js","sourceRoot":"","sources":["../../src/react/model-flatten.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ export * from './use-opencode-sessions/index.js';
16
16
  export * from './use-opencode-events/index.js';
17
17
  export * from './use-opencode-local.js';
18
18
  export * from './use-model-defaults.js';
19
+ export * from './use-model-enablement.js';
19
20
  export * from './use-session-model-selection.js';
20
21
  export * from './use-opencode-mcp.js';
21
22
  export * from './use-opencode-pty.js';
@@ -52,8 +53,8 @@ export * from './use-canonical-opencode-session.js';
52
53
  export * from './use-gateway-catalog-sync.js';
53
54
  export * from './use-visible-agents.js';
54
55
  export * from './provider-refresh.js';
55
- export { flattenModels, type FlatModel } from './model-flatten.js';
56
- export { GATEWAY_PROVIDER_IDS, LLM_PROVIDER_CREDENTIALS, connectedGatewayProviderIdsFromSecretNames, filterToGatewayProviders, filterToNativeProviders, mergeProjectSecretConnectedProviders, mergeProviderLists, normalizeProviderList, projectLlmCatalogToProviderList, providerListHasGateway, providerListHasModels, } from './provider-selection.js';
56
+ export { flattenModels, isOfferedModel, type FlatModel } from './model-flatten.js';
57
+ export { GATEWAY_PROVIDER_IDS, LLM_PROVIDER_CREDENTIALS, connectedGatewayProviderIdsFromSecretNames, filterToGatewayProviders, applyEnablementToProviderList, filterToNativeProviders, mergeProjectSecretConnectedProviders, mergeProviderLists, normalizeProviderList, projectLlmCatalogToProviderList, providerListHasGateway, providerListHasModels, } from './provider-selection.js';
57
58
  export { useProjectModels } from './use-project-models.js';
58
59
  export { useProjectConfig } from './use-project-config.js';
59
60
  export type { ProjectConfigSummary } from '../core/rest/projects-client/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/react/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/react/opencode.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@ export * from './use-opencode-sessions/index.js';
37
37
  export * from './use-opencode-events/index.js';
38
38
  export * from './use-opencode-local.js';
39
39
  export * from './use-model-defaults.js';
40
+ export * from './use-model-enablement.js';
40
41
  export * from './use-session-model-selection.js';
41
42
  export * from './use-opencode-mcp.js';
42
43
  export * from './use-opencode-pty.js';
@@ -104,8 +105,8 @@ export * from './provider-refresh.js';
104
105
  // picker BEFORE a session runtime exists (e.g. on a "new session" screen) by
105
106
  // feeding `project(id).llmCatalog()` through these, with correct provider/model
106
107
  // ids — no guessing the gateway-vs-BYOK key format.
107
- export { flattenModels } from './model-flatten.js';
108
- export { GATEWAY_PROVIDER_IDS, LLM_PROVIDER_CREDENTIALS, connectedGatewayProviderIdsFromSecretNames, filterToGatewayProviders, filterToNativeProviders, mergeProjectSecretConnectedProviders, mergeProviderLists, normalizeProviderList, projectLlmCatalogToProviderList, providerListHasGateway, providerListHasModels, } from './provider-selection.js';
108
+ export { flattenModels, isOfferedModel } from './model-flatten.js';
109
+ export { GATEWAY_PROVIDER_IDS, LLM_PROVIDER_CREDENTIALS, connectedGatewayProviderIdsFromSecretNames, filterToGatewayProviders, applyEnablementToProviderList, filterToNativeProviders, mergeProjectSecretConnectedProviders, mergeProviderLists, normalizeProviderList, projectLlmCatalogToProviderList, providerListHasGateway, providerListHasModels, } from './provider-selection.js';
109
110
  export { useProjectModels } from './use-project-models.js';
110
111
  export { useProjectConfig } from './use-project-config.js';
111
112
  // ── The one-hook session surface ─────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/react/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/react/opencode.ts"],"names":[],"mappings":"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"}
@@ -33,5 +33,14 @@ export declare function mergeProjectSecretConnectedProviders(providers: Provider
33
33
  authRequirement: ProviderAuthRequirement;
34
34
  }>): ProviderListResponse;
35
35
  export declare function connectedGatewayProviderIdsFromSecretNames(secretNames: Set<string>): Set<string>;
36
+ /**
37
+ * Restamp `enabled` on a gateway ProviderListResponse from an overrides map
38
+ * (`wireModelId -> enabled`), touching only the models the map names. Pure —
39
+ * returns a new list. Used to optimistically update the cached
40
+ * `['project-providers', :id, 'gateway']` query when "Manage models" writes an
41
+ * override, so the session picker (which renders from THAT cache, staleTime
42
+ * Infinity) reflects the toggle without waiting for the refetch.
43
+ */
44
+ export declare function applyEnablementToProviderList(providers: ProviderListResponse, overrides: Record<string, boolean>): ProviderListResponse;
36
45
  export declare function projectLlmCatalogToProviderList(catalog: ProjectLlmCatalogResponse): ProviderListResponse;
37
46
  //# sourceMappingURL=provider-selection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-selection.d.ts","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAG7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAElG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAGE,CAAC;AAIJ,eAAO,MAAM,oBAAoB,aAAsB,CAAC;AAGxD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAiC3F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAO1F;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAM3F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS9F;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,oBAAoB,GAC9B,oBAAoB,CAmBtB;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS7F;AAED,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,oBAAoB,EAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,mBAAmB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,uBAAuB,CAAA;CAAE,CAAC,GACnF,oBAAoB,CAuBtB;AAED,wBAAgB,0CAA0C,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAWhG;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAmBtB"}
1
+ {"version":3,"file":"provider-selection.d.ts","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAG7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAElG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAGE,CAAC;AAIJ,eAAO,MAAM,oBAAoB,aAAsB,CAAC;AAGxD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAiC3F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAO1F;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAM3F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS9F;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,oBAAoB,GAC9B,oBAAoB,CAmBtB;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS7F;AAED,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,oBAAoB,EAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,mBAAmB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,uBAAuB,CAAA;CAAE,CAAC,GACnF,oBAAoB,CAuBtB;AAED,wBAAgB,0CAA0C,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAWhG;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,oBAAoB,EAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,oBAAoB,CAgBtB;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAmBtB"}
@@ -141,6 +141,29 @@ export function connectedGatewayProviderIdsFromSecretNames(secretNames) {
141
141
  }
142
142
  return ids;
143
143
  }
144
+ /**
145
+ * Restamp `enabled` on a gateway ProviderListResponse from an overrides map
146
+ * (`wireModelId -> enabled`), touching only the models the map names. Pure —
147
+ * returns a new list. Used to optimistically update the cached
148
+ * `['project-providers', :id, 'gateway']` query when "Manage models" writes an
149
+ * override, so the session picker (which renders from THAT cache, staleTime
150
+ * Infinity) reflects the toggle without waiting for the refetch.
151
+ */
152
+ export function applyEnablementToProviderList(providers, overrides) {
153
+ const all = Array.isArray(providers.all) ? providers.all : [];
154
+ return {
155
+ ...providers,
156
+ all: all.map((provider) => ({
157
+ ...provider,
158
+ models: Object.fromEntries(Object.entries(provider.models ?? {}).map(([id, model]) => [
159
+ id,
160
+ overrides[id] === undefined
161
+ ? model
162
+ : { ...model, enabled: overrides[id] },
163
+ ])),
164
+ })),
165
+ };
166
+ }
144
167
  export function projectLlmCatalogToProviderList(catalog) {
145
168
  const models = Object.fromEntries(Object.entries(catalog.models ?? {}).filter(([modelId]) => modelId !== 'auto' && modelId !== 'kortix/auto'));
146
169
  const firstModelId = Object.keys(models)[0];
@@ -1 +1 @@
1
- {"version":3,"file":"provider-selection.js","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-selection.js","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAO7B;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAGhC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxC,EAAE,EAAE,QAAQ,CAAC,EAAE;IACf,eAAe,EAAE,uBAAuB,CAAC,QAAQ,CAAC;CACnD,CAAC,CAAC,CAAC;AAEJ,8EAA8E;AAC9E,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEzD,MAAM,UAAU,qBAAqB,CAAC,SAA+B;IACnE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,GAAG,SAAS;YACZ,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,WAAW,GAAI,SAAgD,CAAC,SAAS,CAAC;IAChF,MAAM,eAAe,GAA4D,KAAK,CAAC,OAAO,CAC5F,WAAW,CACZ;QACC,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,GAAG,SAAS;YACZ,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,GAAG,EAAE,eAAe;QACpB,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;KAClC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAA2C;IAC/E,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAA2C;IAChF,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAA+B;IACtE,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO;QACL,GAAG,UAAU;QACb,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAA6B,EAC7B,SAA+B;IAE/B,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4D,CAAC;IAChF,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1F,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5F,OAAO;QACL,GAAG,KAAK;QACR,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;QACzB,OAAO,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAA+B;IACrE,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO;QACL,GAAG,UAAU;QACb,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,SAA+B,EAC/B,WAAwB,EACxB,mBAAoF;IAEpF,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE3F,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,IACE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,uBAAuB,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACtF,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IACE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QACnB,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAC7E,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,0CAA0C,CAAC,WAAwB;IACjF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;QAChD,IAAI,uBAAuB,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,SAA+B,EAC/B,SAAkC;IAElC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO;QACL,GAAG,SAAS;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,QAAQ;YACX,MAAM,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACzD,EAAE;gBACF,SAAS,CAAC,EAAE,CAAC,KAAK,SAAS;oBACzB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,EAAE,GAAI,KAAiC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;aACtE,CAAC,CACH;SACF,CAAC,CAAC;KAC+B,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,OAAkC;IAElC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,aAAa,CAC/D,CACF,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;QACrD,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,GAAG,EAAE;YACH;gBACE,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,SAAS;gBACjB,MAAM;aACP;SACF;KACiC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,25 @@
1
+ export interface UseModelEnablement {
2
+ /** True while the project has made no exceptions to the catalog default. */
3
+ usingDefaults: boolean;
4
+ /**
5
+ * The model `auto` resolves to. It cannot be turned off, so render its switch
6
+ * locked rather than letting the user click into a 409.
7
+ */
8
+ defaultModel: string | undefined;
9
+ /** Pin a wire model on/off, as an exception to the default. */
10
+ setEnabled: (wireModel: string, enabled: boolean) => Promise<void>;
11
+ /** Drop every exception so the catalog default applies again. */
12
+ resetToDefaults: () => Promise<void>;
13
+ isUpdating: boolean;
14
+ }
15
+ /**
16
+ * Server-owned per-project model enablement. Every model served by
17
+ * `/model-picker` already carries its own resolved `enabled` flag — read THAT
18
+ * to render a switch or filter a list. This hook only handles the writes.
19
+ *
20
+ * Writes are EXCEPTIONS, never the resolved set: a project that pins its whole
21
+ * list would stop tracking "the latest", and every future model would arrive
22
+ * switched off.
23
+ */
24
+ export declare function useModelEnablement(projectId: string | null | undefined): UseModelEnablement;
25
+ //# sourceMappingURL=use-model-enablement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-model-enablement.d.ts","sourceRoot":"","sources":["../../src/react/use-model-enablement.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,+DAA+D;IAC/D,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,iEAAiE;IACjE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,kBAAkB,CAuF3F"}
@@ -0,0 +1,92 @@
1
+ 'use client';
2
+ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
3
+ import { useCallback, useMemo } from 'react';
4
+ import { getProjectModelPicker } from '../core/rest/projects-client/index.js';
5
+ import { setProjectModelEnablement } from '../core/rest/projects-client/model-enablement.js';
6
+ import { applyEnablementToProviderList } from './provider-selection.js';
7
+ /**
8
+ * Server-owned per-project model enablement. Every model served by
9
+ * `/model-picker` already carries its own resolved `enabled` flag — read THAT
10
+ * to render a switch or filter a list. This hook only handles the writes.
11
+ *
12
+ * Writes are EXCEPTIONS, never the resolved set: a project that pins its whole
13
+ * list would stop tracking "the latest", and every future model would arrive
14
+ * switched off.
15
+ */
16
+ export function useModelEnablement(projectId) {
17
+ const queryClient = useQueryClient();
18
+ const queryKey = useMemo(() => ['project-model-picker', projectId], [projectId]);
19
+ // The session picker does NOT render from the query above — it renders from
20
+ // the gateway provider list (`useOpenCodeProviders`), a SECOND cache of the
21
+ // same `/model-picker` payload with `staleTime: Infinity`. Every write must
22
+ // restamp + invalidate it too, or the composer keeps offering the
23
+ // pre-toggle list until a hard refresh.
24
+ const providersKey = useMemo(() => ['project-providers', projectId, 'gateway'], [projectId]);
25
+ const { data } = useQuery({
26
+ queryKey,
27
+ queryFn: () => getProjectModelPicker(projectId),
28
+ enabled: !!projectId,
29
+ staleTime: 30_000,
30
+ retry: false,
31
+ });
32
+ const mutation = useMutation({
33
+ mutationFn: (next) => setProjectModelEnablement(projectId, next),
34
+ // Apply the new flags to the cached picker payload up front. Every surface
35
+ // reads `enabled` off THIS query — the switch and the session picker both —
36
+ // so without it the UI sits on the pre-toggle answer until the round trip
37
+ // lands (and any picker that is currently unmounted keeps serving the stale
38
+ // list when it remounts, which reads as "I had to hard refresh").
39
+ onMutate: async (next) => {
40
+ await queryClient.cancelQueries({ queryKey });
41
+ await queryClient.cancelQueries({ queryKey: providersKey });
42
+ const previous = queryClient.getQueryData(queryKey);
43
+ const previousProviders = queryClient.getQueryData(providersKey);
44
+ if (previous) {
45
+ queryClient.setQueryData(queryKey, {
46
+ ...previous,
47
+ models: Object.fromEntries(Object.entries(previous.models ?? {}).map(([id, model]) => [
48
+ id,
49
+ next[id] === undefined ? model : { ...model, enabled: next[id] },
50
+ ])),
51
+ modelOverrides: next,
52
+ usingDefaults: Object.keys(next).length === 0,
53
+ });
54
+ }
55
+ if (previousProviders) {
56
+ queryClient.setQueryData(providersKey, applyEnablementToProviderList(previousProviders, next));
57
+ }
58
+ return { previous, previousProviders };
59
+ },
60
+ // A rejected write (e.g. 409 on the project default) must not leave the UI
61
+ // showing a state the server refused.
62
+ onError: (_err, _next, context) => {
63
+ if (context?.previous)
64
+ queryClient.setQueryData(queryKey, context.previous);
65
+ if (context?.previousProviders) {
66
+ queryClient.setQueryData(providersKey, context.previousProviders);
67
+ }
68
+ },
69
+ // `refetchType: 'all'` so an unmounted picker's cache is refreshed too, not
70
+ // just marked stale. The providers refetch also rewrites its localStorage
71
+ // seed, so the next cold paint starts from the post-toggle list.
72
+ onSettled: () => {
73
+ void queryClient.invalidateQueries({ queryKey, refetchType: 'all' });
74
+ void queryClient.invalidateQueries({ queryKey: providersKey, refetchType: 'all' });
75
+ },
76
+ });
77
+ // The stored exceptions, served alongside the resolved flags so a toggle is
78
+ // a merge into what's already there rather than a fresh full set.
79
+ const overrides = useMemo(() => data?.modelOverrides ?? {}, [data]);
80
+ return {
81
+ usingDefaults: data?.usingDefaults ?? true,
82
+ defaultModel: data?.defaultModel,
83
+ setEnabled: useCallback(async (wireModel, enabled) => {
84
+ await mutation.mutateAsync({ ...overrides, [wireModel]: enabled });
85
+ }, [overrides, mutation]),
86
+ resetToDefaults: useCallback(async () => {
87
+ await mutation.mutateAsync({});
88
+ }, [mutation]),
89
+ isUpdating: mutation.isPending,
90
+ };
91
+ }
92
+ //# sourceMappingURL=use-model-enablement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-model-enablement.js","sourceRoot":"","sources":["../../src/react/use-model-enablement.ts"],"names":[],"mappings":"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"}
@@ -30,9 +30,10 @@ export interface UseOpenCodeLocalOptions {
30
30
  */
31
31
  defaultAgentName?: string | null;
32
32
  /**
33
- * Free-tier gate for model visibility, threaded straight into `useModelStore`.
34
- * A host that doesn't have a billing/account concept can omit it (default
35
- * `false` nothing is gated).
33
+ * @deprecated Inert. Entitlement is resolved server-side into each model's
34
+ * `enabled` flag by `/model-picker` (`freeManagedOnly` drops managed models
35
+ * for free-tier accounts before the catalog is even served), so there is
36
+ * nothing left to gate client-side.
36
37
  */
37
38
  freeTier?: boolean;
38
39
  /**
@@ -143,5 +144,5 @@ export declare function resolveCurrentAgentName(input: {
143
144
  explicitAgentName?: string;
144
145
  lastAgentName?: string;
145
146
  }): string | undefined;
146
- export declare function useOpenCodeLocal({ agents: rawAgents, providers, config, sessionId, boundAgentName, defaultAgentName, freeTier, resolveServerDefault, }: UseOpenCodeLocalOptions): OpenCodeLocal;
147
+ export declare function useOpenCodeLocal({ agents: rawAgents, providers, config, sessionId, boundAgentName, defaultAgentName, resolveServerDefault, }: UseOpenCodeLocalOptions): OpenCodeLocal;
147
148
  //# sourceMappingURL=use-opencode-local.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-opencode-local.d.ts","sourceRoot":"","sources":["../../src/react/use-opencode-local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-opencode-local.d.ts","sourceRoot":"","sources":["../../src/react/use-opencode-local.ts"],"names":[],"mappings":"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"}
@@ -9,14 +9,12 @@
9
9
  * - Recent model list persisted via useModelStore
10
10
  * - Variant persistence via useModelStore
11
11
  */
12
- import { flattenModels } from './model-flatten.js';
12
+ import { flattenModels, isOfferedModel } from './model-flatten.js';
13
13
  import { featureFlags } from '../core/http/feature-flags.js';
14
- import { listProjectSecrets } from '../core/rest/projects-client/index.js';
15
- import { useQuery } from '@tanstack/react-query';
16
14
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
17
- import { useKortixRouteProjectId } from './route-project.js';
18
15
  import { createAgentSelectionScope } from './agent-selection-scope.js';
19
- import { connectedGatewayProviderIdsFromSecretNames, normalizeProviderList, } from './provider-selection.js';
16
+ import { useKortixRouteProjectId } from './route-project.js';
17
+ import { normalizeProviderList } from './provider-selection.js';
20
18
  import { useModelStore } from './use-model-store.js';
21
19
  // ============================================================================
22
20
  // Helpers
@@ -122,35 +120,21 @@ export function resolveCurrentAgentName(input) {
122
120
  // ============================================================================
123
121
  // Hook
124
122
  // ============================================================================
125
- export function useOpenCodeLocal({ agents: rawAgents, providers, config, sessionId, boundAgentName, defaultAgentName, freeTier, resolveServerDefault, }) {
123
+ export function useOpenCodeLocal({ agents: rawAgents, providers, config, sessionId, boundAgentName, defaultAgentName, resolveServerDefault, }) {
126
124
  // ---- Flatten models from providers (shared with the chat input, so the
127
125
  // gateway-only allowlist applies here too — native providers never leak in) ----
128
126
  const flatModels = useMemo(() => flattenModels(providers), [providers]);
129
127
  const projectId = useKortixRouteProjectId();
130
128
  const providerMode = useMemo(() => modelProviderMode(providers), [providers]);
131
- const secretsQuery = useQuery({
132
- queryKey: ['project-secrets', projectId],
133
- queryFn: () => listProjectSecrets(projectId),
134
- enabled: !!projectId && providerMode === 'gateway',
135
- staleTime: 10_000,
136
- });
137
- const connectedProviderIds = useMemo(() => {
138
- if (providerMode !== 'gateway')
139
- return undefined;
140
- const data = secretsQuery.data;
141
- const items = Array.isArray(data) ? data : (data?.items ?? []);
142
- return connectedGatewayProviderIdsFromSecretNames(new Set(items.map((secret) => secret.name)));
143
- }, [providerMode, secretsQuery.data]);
144
- // ---- Model store (persisted: visibility, recent, variant) ----
145
- const modelStore = useModelStore(flatModels, {
146
- connectedProviderIds,
147
- freeTier: providerMode === 'gateway' && !!freeTier,
148
- });
149
- // ---- Model validation: a model is valid only if it's in the flattened list,
150
- // which is already filtered to connected + gateway-only providers. This keeps
151
- // default/recent resolution from ever selecting a native (bypass) model. ----
152
- const isModelValid = useCallback((model) => flatModels.some((m) => m.providerID === model.providerID && m.modelID === model.modelID) &&
153
- modelStore.isVisible(model), [flatModels, modelStore]);
129
+ // ---- Model store (persisted: recent, variant, per-agent/session selection) ----
130
+ const modelStore = useModelStore(flatModels);
131
+ // ---- Model validation: a model is valid only if it's in the flattened list
132
+ // (already filtered to connected + gateway-only providers, so default/recent
133
+ // resolution can never select a native bypass model) AND the server hasn't
134
+ // turned it off for this project (`enabled`, stamped by `/model-picker`).
135
+ // The SAME predicate the session picker renders with — a second, client-only
136
+ // visibility rule here is what let a hidden model stay resolvable. ----
137
+ const isModelValid = useCallback((model) => isOfferedModel(flatModels, model), [flatModels]);
154
138
  // ---- First valid model from a list of fallback sources ----
155
139
  const getFirstValidModel = useCallback((...modelFns) => {
156
140
  for (const modelFn of modelFns) {
@@ -164,7 +148,6 @@ export function useOpenCodeLocal({ agents: rawAgents, providers, config, session
164
148
  }, [isModelValid]);
165
149
  // ---- Find FlatModel from ModelKey ----
166
150
  const findModel = useCallback((key) => flatModels.find((m) => m.modelID === key.modelID && m.providerID === key.providerID), [flatModels]);
167
- const isModelDefaultVisible = useCallback((model) => modelStore.isVisible(model), [modelStore]);
168
151
  // ---- Agent state — persisted per-session in localStorage so switching tabs preserves selection ----
169
152
  // Project-only agents (orchestrator/project-maintainer/worker) are hidden
170
153
  // when the project paradigm is off; their bodies reference project
@@ -265,18 +248,18 @@ export function useOpenCodeLocal({ agents: rawAgents, providers, config, session
265
248
  const configured = defaults[p.id];
266
249
  if (configured) {
267
250
  const key = { providerID: p.id, modelID: configured };
268
- if (isModelValid(key) && isModelDefaultVisible(key))
251
+ if (isModelValid(key))
269
252
  return key;
270
253
  }
271
254
  for (const modelID of Object.keys(p.models)) {
272
255
  const key = { providerID: p.id, modelID };
273
- if (isModelValid(key) && isModelDefaultVisible(key))
256
+ if (isModelValid(key))
274
257
  return key;
275
258
  }
276
259
  }
277
260
  }
278
261
  return undefined;
279
- }, [config?.model, modelStore.recent, providers, isModelValid, isModelDefaultVisible]);
262
+ }, [config?.model, modelStore.recent, providers, isModelValid]);
280
263
  // ---- Explicit per-conversation/per-agent picks (highest priority, localStorage) ----
281
264
  const explicitModelKey = useMemo(() => getFirstValidModel(
282
265
  // Per-session model (user's explicit choice in this session — survives reload)
@@ -335,9 +318,6 @@ export function useOpenCodeLocal({ agents: rawAgents, providers, config, session
335
318
  if (scopedSessionModelKey && next) {
336
319
  modelStore.setSessionModel(scopedSessionModelKey, next);
337
320
  }
338
- if (model) {
339
- modelStore.setVisibility(model, true);
340
- }
341
321
  if (options?.recent && model) {
342
322
  modelStore.pushRecent(model);
343
323
  // Per-session and per-agent overrides already take priority in the
@@ -486,7 +466,10 @@ export function useOpenCodeLocal({ agents: rawAgents, providers, config, session
486
466
  recent: recentModels,
487
467
  list: flatModels,
488
468
  set: setModel,
489
- visible: modelStore.isVisible,
469
+ // The server's enablement answer, not the localStorage heuristic — the
470
+ // one predicate every surface (picker list, stash replay, default
471
+ // resolution) agrees on.
472
+ visible: isModelValid,
490
473
  setVisibility: modelStore.setVisibility,
491
474
  cycle: cycleModel,
492
475
  hasSessionModel,