MCPcopy
hub / github.com/anomalyco/opencode / catalogHost

Function catalogHost

packages/core/test/plugin/host.ts:79–141  ·  view source on GitHub ↗
(catalog: Catalog.Interface)

Source from the content-addressed store, hash-verified

77}
78
79export function catalogHost(catalog: Catalog.Interface): PluginContext["catalog"] {
80 return {
81 reload: catalog.reload,
82 transform: (callback) =>
83 catalog.transform((draft) =>
84 callback({
85 provider: {
86 list: () =>
87 draft.provider.list().map((value) => ({
88 provider: providerInfo(value.provider),
89 models: new Map(Array.from(value.models, ([id, model]) => [id, modelInfo(model)])),
90 })),
91 get: (id) => {
92 const value = draft.provider.get(ProviderV2.ID.make(id))
93 return (
94 value && {
95 provider: providerInfo(value.provider),
96 models: new Map(Array.from(value.models, ([id, model]) => [id, modelInfo(model)])),
97 }
98 )
99 },
100 update: (id, update) =>
101 draft.provider.update(ProviderV2.ID.make(id), (value) => {
102 const current = providerInfo(value)
103 update(current)
104 Object.assign(value, current, { id: ProviderV2.ID.make(current.id) })
105 }),
106 remove: (id) => draft.provider.remove(ProviderV2.ID.make(id)),
107 },
108 model: {
109 get: (providerID, modelID) => {
110 const value = draft.model.get(ProviderV2.ID.make(providerID), ModelV2.ID.make(modelID))
111 return value && modelInfo(value)
112 },
113 update: (providerID, modelID, update) =>
114 draft.model.update(ProviderV2.ID.make(providerID), ModelV2.ID.make(modelID), (value) => {
115 const current = modelInfo(value)
116 update(current)
117 Object.assign(value, current, {
118 id: ModelV2.ID.make(current.id),
119 providerID: ProviderV2.ID.make(current.providerID),
120 family: current.family === undefined ? undefined : ModelV2.Family.make(current.family),
121 variants: current.variants.map((variant) => ({
122 ...variant,
123 id: ModelV2.VariantID.make(variant.id),
124 })),
125 })
126 }),
127 remove: (providerID, modelID) =>
128 draft.model.remove(ProviderV2.ID.make(providerID), ModelV2.ID.make(modelID)),
129 default: {
130 get: () => {
131 const value = draft.model.default.get()
132 return value && { providerID: value.providerID, modelID: value.modelID }
133 },
134 set: (providerID, modelID) =>
135 draft.model.default.set(ProviderV2.ID.make(providerID), ModelV2.ID.make(modelID)),
136 },

Callers 2

variant.test.tsFile · 0.90
models-dev.test.tsFile · 0.90

Calls 12

providerInfoFunction · 0.85
modelInfoFunction · 0.70
listMethod · 0.65
getMethod · 0.65
updateMethod · 0.65
removeMethod · 0.65
callbackFunction · 0.50
updateFunction · 0.50
transformMethod · 0.45
fromMethod · 0.45
makeMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected