@shipfox/client-agent 5.0.0 → 6.0.2

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 (168) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +57 -0
  3. package/dist/components/available-provider-card.d.ts +2 -2
  4. package/dist/components/available-provider-card.d.ts.map +1 -1
  5. package/dist/components/available-provider-card.js.map +1 -1
  6. package/dist/components/available-providers-grid.d.ts +2 -2
  7. package/dist/components/available-providers-grid.d.ts.map +1 -1
  8. package/dist/components/available-providers-grid.js +1 -1
  9. package/dist/components/available-providers-grid.js.map +1 -1
  10. package/dist/components/change-default-model-form.d.ts +3 -4
  11. package/dist/components/change-default-model-form.d.ts.map +1 -1
  12. package/dist/components/change-default-model-form.js +2 -4
  13. package/dist/components/change-default-model-form.js.map +1 -1
  14. package/dist/components/custom-model-provider-api-options.d.ts +3 -3
  15. package/dist/components/custom-model-provider-api-options.d.ts.map +1 -1
  16. package/dist/components/custom-model-provider-api-options.js.map +1 -1
  17. package/dist/components/custom-model-provider-form.d.ts +2 -2
  18. package/dist/components/custom-model-provider-form.d.ts.map +1 -1
  19. package/dist/components/custom-model-provider-form.js +12 -10
  20. package/dist/components/custom-model-provider-form.js.map +1 -1
  21. package/dist/components/custom-model-provider-form.stories.d.ts.map +1 -1
  22. package/dist/components/custom-model-provider-form.stories.js +11 -11
  23. package/dist/components/custom-model-provider-form.stories.js.map +1 -1
  24. package/dist/components/custom-model-provider-payload.d.ts +9 -9
  25. package/dist/components/custom-model-provider-payload.d.ts.map +1 -1
  26. package/dist/components/custom-model-provider-payload.js +42 -26
  27. package/dist/components/custom-model-provider-payload.js.map +1 -1
  28. package/dist/components/custom-model-provider-slug.d.ts +1 -1
  29. package/dist/components/custom-model-provider-slug.d.ts.map +1 -1
  30. package/dist/components/custom-model-provider-slug.js +3 -3
  31. package/dist/components/custom-model-provider-slug.js.map +1 -1
  32. package/dist/components/default-model-field.d.ts +2 -2
  33. package/dist/components/default-model-field.d.ts.map +1 -1
  34. package/dist/components/default-model-field.js +1 -1
  35. package/dist/components/default-model-field.js.map +1 -1
  36. package/dist/components/harness-availability.d.ts +4 -7
  37. package/dist/components/harness-availability.d.ts.map +1 -1
  38. package/dist/components/harness-availability.js +2 -11
  39. package/dist/components/harness-availability.js.map +1 -1
  40. package/dist/components/harnesses-section.d.ts.map +1 -1
  41. package/dist/components/harnesses-section.js +4 -6
  42. package/dist/components/harnesses-section.js.map +1 -1
  43. package/dist/components/model-provider-usage-modal.d.ts +2 -2
  44. package/dist/components/model-provider-usage-modal.d.ts.map +1 -1
  45. package/dist/components/model-provider-usage-modal.js +4 -4
  46. package/dist/components/model-provider-usage-modal.js.map +1 -1
  47. package/dist/components/model-provider-usage-modal.stories.d.ts.map +1 -1
  48. package/dist/components/model-provider-usage-modal.stories.js +14 -16
  49. package/dist/components/model-provider-usage-modal.stories.js.map +1 -1
  50. package/dist/components/model-provider-usage-target.d.ts +5 -5
  51. package/dist/components/model-provider-usage-target.d.ts.map +1 -1
  52. package/dist/components/model-provider-usage-target.js +10 -8
  53. package/dist/components/model-provider-usage-target.js.map +1 -1
  54. package/dist/components/model-providers-section.d.ts.map +1 -1
  55. package/dist/components/model-providers-section.js +112 -94
  56. package/dist/components/model-providers-section.js.map +1 -1
  57. package/dist/components/model-providers-section.stories.js +8 -4
  58. package/dist/components/model-providers-section.stories.js.map +1 -1
  59. package/dist/components/test-and-save-form.d.ts +3 -3
  60. package/dist/components/test-and-save-form.d.ts.map +1 -1
  61. package/dist/components/test-and-save-form.js +7 -7
  62. package/dist/components/test-and-save-form.js.map +1 -1
  63. package/dist/core/harness-policy.d.ts +11 -0
  64. package/dist/core/harness-policy.d.ts.map +1 -0
  65. package/dist/core/harness-policy.js +71 -0
  66. package/dist/core/harness-policy.js.map +1 -0
  67. package/dist/core/model-provider-management-reducer.d.ts +51 -0
  68. package/dist/core/model-provider-management-reducer.d.ts.map +1 -0
  69. package/dist/core/model-provider-management-reducer.js +43 -0
  70. package/dist/core/model-provider-management-reducer.js.map +1 -0
  71. package/dist/core/models.d.ts +120 -0
  72. package/dist/core/models.d.ts.map +1 -0
  73. package/dist/core/models.js +3 -0
  74. package/dist/core/models.js.map +1 -0
  75. package/dist/core/onboarding-reducer.d.ts +36 -0
  76. package/dist/core/onboarding-reducer.d.ts.map +1 -0
  77. package/dist/core/onboarding-reducer.js +54 -0
  78. package/dist/core/onboarding-reducer.js.map +1 -0
  79. package/dist/core/provider-policy.d.ts +9 -0
  80. package/dist/core/provider-policy.d.ts.map +1 -0
  81. package/dist/core/provider-policy.js +37 -0
  82. package/dist/core/provider-policy.js.map +1 -0
  83. package/dist/feature.d.ts +7 -0
  84. package/dist/feature.d.ts.map +1 -1
  85. package/dist/feature.js +10 -9
  86. package/dist/feature.js.map +1 -1
  87. package/dist/hooks/api/model-provider-command-mapper.d.ts +11 -0
  88. package/dist/hooks/api/model-provider-command-mapper.d.ts.map +1 -0
  89. package/dist/hooks/api/model-provider-command-mapper.js +144 -0
  90. package/dist/hooks/api/model-provider-command-mapper.js.map +1 -0
  91. package/dist/hooks/api/model-provider-mapper.d.ts +11 -0
  92. package/dist/hooks/api/model-provider-mapper.d.ts.map +1 -0
  93. package/dist/hooks/api/model-provider-mapper.js +94 -0
  94. package/dist/hooks/api/model-provider-mapper.js.map +1 -0
  95. package/dist/hooks/api/model-providers.d.ts +60 -295
  96. package/dist/hooks/api/model-providers.d.ts.map +1 -1
  97. package/dist/hooks/api/model-providers.js +51 -37
  98. package/dist/hooks/api/model-providers.js.map +1 -1
  99. package/dist/pages/model-provider-onboarding-page.d.ts.map +1 -1
  100. package/dist/pages/model-provider-onboarding-page.js +57 -45
  101. package/dist/pages/model-provider-onboarding-page.js.map +1 -1
  102. package/dist/routes/inputs.d.ts +4 -0
  103. package/dist/routes/inputs.d.ts.map +1 -0
  104. package/dist/routes/inputs.js +12 -0
  105. package/dist/routes/inputs.js.map +1 -0
  106. package/dist/routes/model-provider.d.ts.map +1 -1
  107. package/dist/routes/model-provider.js +4 -5
  108. package/dist/routes/model-provider.js.map +1 -1
  109. package/dist/state/model-provider-onboarding.d.ts.map +1 -1
  110. package/dist/state/model-provider-onboarding.js +9 -18
  111. package/dist/state/model-provider-onboarding.js.map +1 -1
  112. package/dist/tsconfig.test.tsbuildinfo +1 -1
  113. package/package.json +9 -10
  114. package/src/components/available-provider-card.tsx +2 -2
  115. package/src/components/available-providers-grid.tsx +3 -3
  116. package/src/components/change-default-model-form.tsx +5 -6
  117. package/src/components/custom-model-provider-api-options.ts +3 -3
  118. package/src/components/custom-model-provider-form.stories.tsx +13 -13
  119. package/src/components/custom-model-provider-form.tsx +19 -12
  120. package/src/components/custom-model-provider-payload.test.ts +22 -22
  121. package/src/components/custom-model-provider-payload.ts +69 -54
  122. package/src/components/custom-model-provider-slug.test.ts +1 -1
  123. package/src/components/custom-model-provider-slug.ts +6 -3
  124. package/src/components/default-model-field.tsx +5 -5
  125. package/src/components/harness-availability.test.ts +13 -10
  126. package/src/components/harness-availability.ts +4 -28
  127. package/src/components/harnesses-section.tsx +7 -11
  128. package/src/components/model-provider-usage-modal.stories.tsx +18 -23
  129. package/src/components/model-provider-usage-modal.test.tsx +35 -7
  130. package/src/components/model-provider-usage-modal.tsx +12 -16
  131. package/src/components/model-provider-usage-target.ts +15 -18
  132. package/src/components/model-providers-section.stories.tsx +4 -1
  133. package/src/components/model-providers-section.tsx +112 -125
  134. package/src/components/test-and-save-form.tsx +13 -17
  135. package/src/core/harness-policy.test.ts +15 -0
  136. package/src/core/harness-policy.ts +83 -0
  137. package/src/core/model-provider-management-reducer.test.ts +59 -0
  138. package/src/core/model-provider-management-reducer.ts +72 -0
  139. package/src/core/models.ts +143 -0
  140. package/src/core/onboarding-reducer.test.ts +44 -0
  141. package/src/core/onboarding-reducer.ts +64 -0
  142. package/src/core/provider-policy.ts +53 -0
  143. package/src/feature.ts +12 -10
  144. package/src/hooks/api/model-provider-command-mapper.ts +122 -0
  145. package/src/hooks/api/model-provider-mapper.test.ts +27 -0
  146. package/src/hooks/api/model-provider-mapper.ts +120 -0
  147. package/src/hooks/api/model-providers.test.ts +15 -15
  148. package/src/hooks/api/model-providers.ts +146 -81
  149. package/src/pages/model-provider-onboarding-page.tsx +62 -56
  150. package/src/routes/inputs.test.ts +11 -0
  151. package/src/routes/inputs.ts +9 -0
  152. package/src/routes/model-provider.tsx +4 -3
  153. package/src/state/model-provider-onboarding.test.ts +4 -4
  154. package/src/state/model-provider-onboarding.ts +13 -23
  155. package/test/fixtures/model-providers.ts +1 -1
  156. package/tsconfig.build.tsbuildinfo +1 -1
  157. package/vercel.json +5 -0
  158. package/dist/components/provider-search.d.ts +0 -4
  159. package/dist/components/provider-search.d.ts.map +0 -1
  160. package/dist/components/provider-search.js +0 -13
  161. package/dist/components/provider-search.js.map +0 -1
  162. package/dist/components/supported-model-provider-catalog-entry.d.ts +0 -8
  163. package/dist/components/supported-model-provider-catalog-entry.d.ts.map +0 -1
  164. package/dist/components/supported-model-provider-catalog-entry.js +0 -9
  165. package/dist/components/supported-model-provider-catalog-entry.js.map +0 -1
  166. package/src/components/provider-search.test.ts +0 -45
  167. package/src/components/provider-search.ts +0 -18
  168. package/src/components/supported-model-provider-catalog-entry.ts +0 -19
@@ -1,339 +1,104 @@
1
- import type { CreateCustomModelProviderBodyDto, DiscoverCustomModelProviderModelsBodyDto, DiscoverCustomModelProviderModelsBySlugBodyDto, ListModelProviderConfigsResponseDto, ModelProviderRef, SetDefaultHarnessBodyDto, SetDefaultModelProviderBodyDto, SupportedModelProviderId, UpdateCustomModelProviderBodyDto, UpdateModelProviderConfigBodyDto, UpdateModelProviderDefaultModelBodyDto } from '@shipfox/api-agent-dto';
1
+ import { type ModelProviderRef } from '@shipfox/api-agent-dto';
2
2
  import { type FetchQueryOptions } from '@tanstack/react-query';
3
+ import type { AgentModel, CreateCustomProviderCommand, DefaultHarnessSelection, DefaultModelProviderSelection, DiscoverProviderModelsCommand, HarnessId, ProviderCatalog, ProviderConfig, ProviderConfiguration, ProviderCredentialsCommand, UpdateCustomProviderCommand } from '#core/models.js';
3
4
  export declare const modelProviderQueryKeys: {
4
5
  all: readonly ["model-providers"];
5
6
  catalog: () => readonly ["model-providers", "catalog"];
6
7
  configs: (workspaceId: string) => readonly ["model-providers", "configs", string];
7
8
  };
8
9
  type ModelProviderConfigsQueryKey = ReturnType<typeof modelProviderQueryKeys.configs> | readonly ['model-providers', 'configs'];
9
- type ModelProviderConfigsQueryOptions = FetchQueryOptions<ListModelProviderConfigsResponseDto, Error, ListModelProviderConfigsResponseDto, ModelProviderConfigsQueryKey>;
10
- export declare function getModelProviderCatalog({ signal }?: {
10
+ type ModelProviderConfigsQueryOptions = FetchQueryOptions<ProviderConfiguration, Error, ProviderConfiguration, ModelProviderConfigsQueryKey>;
11
+ type ModelProviderCatalogQueryOptions = FetchQueryOptions<ProviderCatalog, Error, ProviderCatalog, ReturnType<typeof modelProviderQueryKeys.catalog>>;
12
+ export declare function getModelProviderCatalog({ signal, }?: {
11
13
  signal?: AbortSignal;
12
- }): Promise<{
13
- providers: {
14
- id: "anthropic" | "ant-ling" | "azure-openai-responses" | "openai" | "deepseek" | "nvidia" | "google" | "mistral" | "groq" | "cerebras" | "cloudflare-ai-gateway" | "cloudflare-workers-ai" | "xai" | "openrouter" | "vercel-ai-gateway" | "zai" | "zai-coding-cn" | "opencode" | "opencode-go" | "huggingface" | "fireworks" | "together" | "kimi-coding" | "minimax" | "minimax-cn" | "moonshotai" | "moonshotai-cn" | "xiaomi" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-sgp" | "amazon-bedrock" | "google-vertex" | "openai-codex" | "github-copilot";
15
- label: string;
16
- support_status: "supported" | "unsupported";
17
- default_model: string | null;
18
- credential_fields: {
19
- key: string;
20
- label: string;
21
- secret: boolean;
22
- }[];
23
- unsupported_reason: string | null;
24
- models: {
25
- id: string;
26
- label: string;
27
- }[];
28
- }[];
29
- }>;
14
+ }): Promise<ProviderCatalog>;
30
15
  export declare function listModelProviderConfigs({ workspaceId, signal, }: {
31
16
  workspaceId: string;
32
17
  signal?: AbortSignal;
33
- }): Promise<{
34
- configs: ({
35
- kind: "builtin";
36
- provider_id: string;
37
- default_model: string | null;
38
- created_at: string;
39
- updated_at: string;
40
- } | {
41
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
42
- base_url: string;
43
- headers: {
44
- name: string;
45
- value: string;
46
- }[];
47
- secret_header_names: string[];
48
- models: {
49
- id: string;
50
- label: string;
51
- context_window?: number | undefined;
52
- max_output_tokens?: number | undefined;
53
- input_image?: boolean | undefined;
54
- reasoning?: boolean | undefined;
55
- }[];
56
- kind: "custom";
57
- provider_id: string;
58
- display_name: string;
59
- default_model: string | null;
60
- created_at: string;
61
- updated_at: string;
62
- })[];
63
- default_provider_id: string | null;
64
- default_harness_id: "pi" | "claude" | null;
65
- }>;
18
+ }): Promise<ProviderConfiguration>;
66
19
  export declare function modelProviderConfigsQueryOptions(workspaceId: string | undefined): ModelProviderConfigsQueryOptions;
67
- export declare function upsertModelProviderConfig({ workspaceId, providerId, body, }: {
20
+ export declare function upsertModelProviderConfig({ workspaceId, providerId, command, }: {
68
21
  workspaceId: string;
69
- providerId: SupportedModelProviderId;
70
- body: UpdateModelProviderConfigBodyDto;
71
- }): Promise<{
72
- kind: "builtin";
73
- provider_id: string;
74
- default_model: string | null;
75
- created_at: string;
76
- updated_at: string;
77
- }>;
78
- export declare function createCustomModelProviderConfig({ workspaceId, body, }: {
22
+ providerId: string;
23
+ command: ProviderCredentialsCommand;
24
+ }): Promise<ProviderConfig>;
25
+ export declare function createCustomModelProviderConfig({ workspaceId, command, }: {
79
26
  workspaceId: string;
80
- body: CreateCustomModelProviderBodyDto;
81
- }): Promise<{
82
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
83
- base_url: string;
84
- headers: {
85
- name: string;
86
- value: string;
87
- }[];
88
- secret_header_names: string[];
89
- models: {
90
- id: string;
91
- label: string;
92
- context_window?: number | undefined;
93
- max_output_tokens?: number | undefined;
94
- input_image?: boolean | undefined;
95
- reasoning?: boolean | undefined;
96
- }[];
97
- kind: "custom";
98
- provider_id: string;
99
- display_name: string;
100
- default_model: string | null;
101
- created_at: string;
102
- updated_at: string;
103
- }>;
104
- export declare function updateCustomModelProviderConfig({ workspaceId, providerId, body, }: {
27
+ command: CreateCustomProviderCommand;
28
+ }): Promise<ProviderConfig>;
29
+ export declare function updateCustomModelProviderConfig({ workspaceId, providerId, command, }: {
105
30
  workspaceId: string;
106
31
  providerId: ModelProviderRef;
107
- body: UpdateCustomModelProviderBodyDto;
108
- }): Promise<{
109
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
110
- base_url: string;
111
- headers: {
112
- name: string;
113
- value: string;
114
- }[];
115
- secret_header_names: string[];
116
- models: {
117
- id: string;
118
- label: string;
119
- context_window?: number | undefined;
120
- max_output_tokens?: number | undefined;
121
- input_image?: boolean | undefined;
122
- reasoning?: boolean | undefined;
123
- }[];
124
- kind: "custom";
125
- provider_id: string;
126
- display_name: string;
127
- default_model: string | null;
128
- created_at: string;
129
- updated_at: string;
130
- }>;
131
- export declare function discoverCustomModelProviderModels({ workspaceId, body, }: {
32
+ command: UpdateCustomProviderCommand;
33
+ }): Promise<ProviderConfig>;
34
+ export declare function discoverCustomModelProviderModels({ workspaceId, command, }: {
132
35
  workspaceId: string;
133
- body: DiscoverCustomModelProviderModelsBodyDto;
134
- }): Promise<{
135
- models: {
136
- id: string;
137
- label: string;
138
- }[];
139
- }>;
140
- export declare function discoverCustomModelProviderModelsBySlug({ workspaceId, providerId, body, }: {
36
+ command: DiscoverProviderModelsCommand;
37
+ }): Promise<readonly AgentModel[]>;
38
+ export declare function discoverCustomModelProviderModelsBySlug({ workspaceId, providerId, command, }: {
141
39
  workspaceId: string;
142
40
  providerId: ModelProviderRef;
143
- body: DiscoverCustomModelProviderModelsBySlugBodyDto;
144
- }): Promise<{
145
- models: {
146
- id: string;
147
- label: string;
148
- }[];
149
- }>;
41
+ command: DiscoverProviderModelsCommand;
42
+ }): Promise<readonly AgentModel[]>;
150
43
  export declare function deleteModelProviderConfig({ workspaceId, providerId, }: {
151
44
  workspaceId: string;
152
45
  providerId: ModelProviderRef;
153
- }): Promise<void>;
154
- export declare function updateModelProviderDefaultModel({ workspaceId, providerId, body, }: {
155
- workspaceId: string;
156
- providerId: SupportedModelProviderId;
157
- body: UpdateModelProviderDefaultModelBodyDto;
158
- }): Promise<{
159
- kind: "builtin";
160
- provider_id: string;
161
- default_model: string | null;
162
- created_at: string;
163
- updated_at: string;
164
- }>;
165
- export declare function setDefaultModelProvider({ workspaceId, body, }: {
166
- workspaceId: string;
167
- body: SetDefaultModelProviderBodyDto;
168
- }): Promise<{
169
- default_provider_id: string | null;
170
- }>;
171
- export declare function setDefaultHarness({ workspaceId, body, }: {
172
- workspaceId: string;
173
- body: SetDefaultHarnessBodyDto;
174
- }): Promise<{
175
- default_harness_id: "pi" | "claude";
176
- }>;
177
- export declare function useModelProviderCatalogQuery(): import("@tanstack/react-query").UseQueryResult<NoInfer<{
178
- providers: {
179
- id: "anthropic" | "ant-ling" | "azure-openai-responses" | "openai" | "deepseek" | "nvidia" | "google" | "mistral" | "groq" | "cerebras" | "cloudflare-ai-gateway" | "cloudflare-workers-ai" | "xai" | "openrouter" | "vercel-ai-gateway" | "zai" | "zai-coding-cn" | "opencode" | "opencode-go" | "huggingface" | "fireworks" | "together" | "kimi-coding" | "minimax" | "minimax-cn" | "moonshotai" | "moonshotai-cn" | "xiaomi" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-sgp" | "amazon-bedrock" | "google-vertex" | "openai-codex" | "github-copilot";
180
- label: string;
181
- support_status: "supported" | "unsupported";
182
- default_model: string | null;
183
- credential_fields: {
184
- key: string;
185
- label: string;
186
- secret: boolean;
187
- }[];
188
- unsupported_reason: string | null;
189
- models: {
190
- id: string;
191
- label: string;
192
- }[];
193
- }[];
194
- }>, Error>;
195
- export declare function useModelProviderConfigsQuery(workspaceId: string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<{
196
- configs: ({
197
- kind: "builtin";
198
- provider_id: string;
199
- default_model: string | null;
200
- created_at: string;
201
- updated_at: string;
202
- } | {
203
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
204
- base_url: string;
205
- headers: {
206
- name: string;
207
- value: string;
208
- }[];
209
- secret_header_names: string[];
210
- models: {
211
- id: string;
212
- label: string;
213
- context_window?: number | undefined;
214
- max_output_tokens?: number | undefined;
215
- input_image?: boolean | undefined;
216
- reasoning?: boolean | undefined;
217
- }[];
218
- kind: "custom";
219
- provider_id: string;
220
- display_name: string;
221
- default_model: string | null;
222
- created_at: string;
223
- updated_at: string;
224
- })[];
225
- default_provider_id: string | null;
226
- default_harness_id: "pi" | "claude" | null;
227
- }>, Error>;
228
- export declare function useUpsertModelProviderConfigMutation(): import("@tanstack/react-query").UseMutationResult<{
229
- kind: "builtin";
230
- provider_id: string;
231
- default_model: string | null;
232
- created_at: string;
233
- updated_at: string;
234
- }, Error, {
235
- workspaceId: string;
236
- providerId: SupportedModelProviderId;
237
- body: UpdateModelProviderConfigBodyDto;
46
+ }): Promise<undefined>;
47
+ export declare function updateModelProviderDefaultModel({ workspaceId, providerId, defaultModel, }: {
48
+ workspaceId: string;
49
+ providerId: string;
50
+ defaultModel: string | null;
51
+ }): Promise<ProviderConfig>;
52
+ export declare function setDefaultModelProvider({ workspaceId, providerId, }: {
53
+ workspaceId: string;
54
+ providerId: string;
55
+ }): Promise<DefaultModelProviderSelection>;
56
+ export declare function setDefaultHarness({ workspaceId, harnessId, }: {
57
+ workspaceId: string;
58
+ harnessId: HarnessId;
59
+ }): Promise<DefaultHarnessSelection>;
60
+ export declare function useModelProviderCatalogQuery(): import("@tanstack/react-query").UseQueryResult<NoInfer<ProviderCatalog>, Error>;
61
+ export declare function modelProviderCatalogQueryOptions(): ModelProviderCatalogQueryOptions;
62
+ export declare function useModelProviderConfigsQuery(workspaceId: string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<ProviderConfiguration>, Error>;
63
+ export declare function useUpsertModelProviderConfigMutation(): import("@tanstack/react-query").UseMutationResult<ProviderConfig, Error, {
64
+ workspaceId: string;
65
+ providerId: string;
66
+ command: ProviderCredentialsCommand;
238
67
  }, unknown>;
239
- export declare function useCreateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<{
240
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
241
- base_url: string;
242
- headers: {
243
- name: string;
244
- value: string;
245
- }[];
246
- secret_header_names: string[];
247
- models: {
248
- id: string;
249
- label: string;
250
- context_window?: number | undefined;
251
- max_output_tokens?: number | undefined;
252
- input_image?: boolean | undefined;
253
- reasoning?: boolean | undefined;
254
- }[];
255
- kind: "custom";
256
- provider_id: string;
257
- display_name: string;
258
- default_model: string | null;
259
- created_at: string;
260
- updated_at: string;
261
- }, Error, {
68
+ export declare function useCreateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<ProviderConfig, Error, {
262
69
  workspaceId: string;
263
- body: CreateCustomModelProviderBodyDto;
70
+ command: CreateCustomProviderCommand;
264
71
  }, unknown>;
265
- export declare function useUpdateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<{
266
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
267
- base_url: string;
268
- headers: {
269
- name: string;
270
- value: string;
271
- }[];
272
- secret_header_names: string[];
273
- models: {
274
- id: string;
275
- label: string;
276
- context_window?: number | undefined;
277
- max_output_tokens?: number | undefined;
278
- input_image?: boolean | undefined;
279
- reasoning?: boolean | undefined;
280
- }[];
281
- kind: "custom";
282
- provider_id: string;
283
- display_name: string;
284
- default_model: string | null;
285
- created_at: string;
286
- updated_at: string;
287
- }, Error, {
72
+ export declare function useUpdateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<ProviderConfig, Error, {
288
73
  workspaceId: string;
289
74
  providerId: ModelProviderRef;
290
- body: UpdateCustomModelProviderBodyDto;
75
+ command: UpdateCustomProviderCommand;
291
76
  }, unknown>;
292
- export declare function useDiscoverCustomModelProviderModelsMutation(): import("@tanstack/react-query").UseMutationResult<{
293
- models: {
294
- id: string;
295
- label: string;
296
- }[];
297
- }, Error, {
77
+ export declare function useDiscoverCustomModelProviderModelsMutation(): import("@tanstack/react-query").UseMutationResult<readonly AgentModel[], Error, {
298
78
  workspaceId: string;
299
- body: DiscoverCustomModelProviderModelsBodyDto;
79
+ command: DiscoverProviderModelsCommand;
300
80
  }, unknown>;
301
- export declare function useDiscoverCustomModelProviderModelsBySlugMutation(): import("@tanstack/react-query").UseMutationResult<{
302
- models: {
303
- id: string;
304
- label: string;
305
- }[];
306
- }, Error, {
81
+ export declare function useDiscoverCustomModelProviderModelsBySlugMutation(): import("@tanstack/react-query").UseMutationResult<readonly AgentModel[], Error, {
307
82
  workspaceId: string;
308
83
  providerId: ModelProviderRef;
309
- body: DiscoverCustomModelProviderModelsBySlugBodyDto;
84
+ command: DiscoverProviderModelsCommand;
310
85
  }, unknown>;
311
- export declare function useDeleteModelProviderConfigMutation(): import("@tanstack/react-query").UseMutationResult<void, Error, {
86
+ export declare function useDeleteModelProviderConfigMutation(): import("@tanstack/react-query").UseMutationResult<undefined, Error, {
312
87
  workspaceId: string;
313
88
  providerId: ModelProviderRef;
314
89
  }, unknown>;
315
- export declare function useUpdateModelProviderDefaultModelMutation(): import("@tanstack/react-query").UseMutationResult<{
316
- kind: "builtin";
317
- provider_id: string;
318
- default_model: string | null;
319
- created_at: string;
320
- updated_at: string;
321
- }, Error, {
90
+ export declare function useUpdateModelProviderDefaultModelMutation(): import("@tanstack/react-query").UseMutationResult<ProviderConfig, Error, {
322
91
  workspaceId: string;
323
- providerId: SupportedModelProviderId;
324
- body: UpdateModelProviderDefaultModelBodyDto;
92
+ providerId: string;
93
+ defaultModel: string | null;
325
94
  }, unknown>;
326
- export declare function useSetDefaultModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<{
327
- default_provider_id: string | null;
328
- }, Error, {
95
+ export declare function useSetDefaultModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<DefaultModelProviderSelection, Error, {
329
96
  workspaceId: string;
330
- body: SetDefaultModelProviderBodyDto;
97
+ providerId: string;
331
98
  }, unknown>;
332
- export declare function useSetDefaultHarnessMutation(): import("@tanstack/react-query").UseMutationResult<{
333
- default_harness_id: "pi" | "claude";
334
- }, Error, {
99
+ export declare function useSetDefaultHarnessMutation(): import("@tanstack/react-query").UseMutationResult<DefaultHarnessSelection, Error, {
335
100
  workspaceId: string;
336
- body: SetDefaultHarnessBodyDto;
101
+ harnessId: HarnessId;
337
102
  }, unknown>;
338
103
  export {};
339
104
  //# sourceMappingURL=model-providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-providers.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/model-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-providers.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/model-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EAKtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,iBAAiB,EAKvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,UAAU,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,EAC7B,SAAS,EACT,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAmBzB,eAAO,MAAM,sBAAsB;;;2BAGV,MAAM;CAE9B,CAAC;AAEF,KAAK,4BAA4B,GAC7B,UAAU,CAAC,OAAO,sBAAsB,CAAC,OAAO,CAAC,GACjD,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAE5C,KAAK,gCAAgC,GAAG,iBAAiB,CACvD,qBAAqB,EACrB,KAAK,EACL,qBAAqB,EACrB,4BAA4B,CAC7B,CAAC;AAEF,KAAK,gCAAgC,GAAG,iBAAiB,CACvD,eAAe,EACf,KAAK,EACL,eAAe,EACf,UAAU,CAAC,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAClD,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,EAC5C,MAAM,GACP,GAAE;IACD,MAAM,CAAC,EAAE,WAAW,CAAC;CACjB,GAAG,OAAO,CAAC,eAAe,CAAC,CAMhC;AAED,wBAAsB,wBAAwB,CAAC,EAC7C,WAAW,EACX,MAAM,GACP,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAQjC;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,gCAAgC,CAQlC;AAED,wBAAsB,yBAAyB,CAAC,EAC9C,WAAW,EACX,UAAU,EACV,OAAO,GACR,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,0BAA0B,CAAC;CACrC,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ1B;AAED,wBAAsB,+BAA+B,CAAC,EACpD,WAAW,EACX,OAAO,GACR,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,2BAA2B,CAAC;CACtC,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ1B;AAED,wBAAsB,+BAA+B,CAAC,EACpD,WAAW,EACX,UAAU,EACV,OAAO,GACR,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,2BAA2B,CAAC;CACtC,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ1B;AAED,wBAAsB,iCAAiC,CAAC,EACtD,WAAW,EACX,OAAO,GACR,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,6BAA6B,CAAC;CACxC,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAOjC;AAED,wBAAsB,uCAAuC,CAAC,EAC5D,WAAW,EACX,UAAU,EACV,OAAO,GACR,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,6BAA6B,CAAC;CACxC,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAOjC;AAED,wBAAsB,yBAAyB,CAAC,EAC9C,WAAW,EACX,UAAU,GACX,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;CAC9B,sBAMA;AAED,wBAAsB,+BAA+B,CAAC,EACpD,WAAW,EACX,UAAU,EACV,YAAY,GACb,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ1B;AAED,wBAAsB,uBAAuB,CAAC,EAC5C,WAAW,EACX,UAAU,GACX,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAQzC;AAED,wBAAsB,iBAAiB,CAAC,EACtC,WAAW,EACX,SAAS,GACV,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;CACtB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAQnC;AAED,wBAAgB,4BAA4B,oFAE3C;AAED,wBAAgB,gCAAgC,IAAI,gCAAgC,CAMnF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,yFAE3E;AAED,wBAAgB,oCAAoC;iBA/JrC,MAAM;gBACP,MAAM;aACT,0BAA0B;YAuKpC;AAED,wBAAgB,oCAAoC;iBA1JrC,MAAM;aACV,2BAA2B;YAmKrC;AAED,wBAAgB,oCAAoC;iBArJrC,MAAM;gBACP,gBAAgB;aACnB,2BAA2B;YA6JrC;AAED,wBAAgB,4CAA4C;iBAhJ7C,MAAM;aACV,6BAA6B;YAiJvC;AAED,wBAAgB,kDAAkD;iBApInD,MAAM;gBACP,gBAAgB;aACnB,6BAA6B;YAoIvC;AAED,wBAAgB,oCAAoC;iBAxHrC,MAAM;gBACP,gBAAgB;YAiI7B;AAED,wBAAgB,0CAA0C;iBArH3C,MAAM;gBACP,MAAM;kBACJ,MAAM,GAAG,IAAI;YA6H5B;AAED,wBAAgB,kCAAkC;iBAhHnC,MAAM;gBACP,MAAM;YAyHnB;AAED,wBAAgB,4BAA4B;iBA5G7B,MAAM;eACR,SAAS;YAqHrB"}
@@ -1,5 +1,8 @@
1
- import { apiRequest } from '@shipfox/client-api';
1
+ import { customModelProviderConfigDtoSchema, discoverCustomModelProviderModelsResponseSchema, listModelProviderConfigsResponseSchema, modelProviderCatalogResponseSchema, modelProviderConfigDtoSchema, setDefaultHarnessResponseSchema, setDefaultModelProviderResponseSchema } from '@shipfox/api-agent-dto';
2
+ import { checkedApiRequest, emptyResponseSchema } from '@shipfox/client-api';
2
3
  import { queryOptions, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
4
+ import { toCreateCustomProviderBody, toDefaultHarnessBody, toDefaultModelBody, toDefaultProviderBody, toDiscoverModelsBody, toDiscoverModelsBySlugBody, toProviderCredentialsBody, toUpdateCustomProviderBody } from './model-provider-command-mapper.js';
5
+ import { toDefaultHarnessSelection, toDefaultModelProviderSelection, toProviderCatalog, toProviderConfig, toProviderConfiguration } from './model-provider-mapper.js';
3
6
  export const modelProviderQueryKeys = {
4
7
  all: [
5
8
  'model-providers'
@@ -15,14 +18,14 @@ export const modelProviderQueryKeys = {
15
18
  ]
16
19
  };
17
20
  export async function getModelProviderCatalog({ signal } = {}) {
18
- return await apiRequest('/agent/model-provider-catalog', {
21
+ return toProviderCatalog(await checkedApiRequest(modelProviderCatalogResponseSchema, '/agent/model-provider-catalog', {
19
22
  signal
20
- });
23
+ }));
21
24
  }
22
25
  export async function listModelProviderConfigs({ workspaceId, signal }) {
23
- return await apiRequest(`/workspaces/${workspaceId}/agent/model-providers`, {
26
+ return toProviderConfiguration(await checkedApiRequest(listModelProviderConfigsResponseSchema, `/workspaces/${workspaceId}/agent/model-providers`, {
24
27
  signal
25
- });
28
+ }));
26
29
  }
27
30
  export function modelProviderConfigsQueryOptions(workspaceId) {
28
31
  return queryOptions({
@@ -37,61 +40,72 @@ export function modelProviderConfigsQueryOptions(workspaceId) {
37
40
  })
38
41
  });
39
42
  }
40
- export async function upsertModelProviderConfig({ workspaceId, providerId, body }) {
41
- return await apiRequest(`/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {
43
+ export async function upsertModelProviderConfig({ workspaceId, providerId, command }) {
44
+ return toProviderConfig(await checkedApiRequest(modelProviderConfigDtoSchema, `/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {
42
45
  method: 'PUT',
43
- body
44
- });
46
+ body: toProviderCredentialsBody(command)
47
+ }));
45
48
  }
46
- export async function createCustomModelProviderConfig({ workspaceId, body }) {
47
- return await apiRequest(`/workspaces/${workspaceId}/agent/custom-model-providers`, {
49
+ export async function createCustomModelProviderConfig({ workspaceId, command }) {
50
+ return toProviderConfig(await checkedApiRequest(customModelProviderConfigDtoSchema, `/workspaces/${workspaceId}/agent/custom-model-providers`, {
48
51
  method: 'POST',
49
- body
50
- });
52
+ body: toCreateCustomProviderBody(command)
53
+ }));
51
54
  }
52
- export async function updateCustomModelProviderConfig({ workspaceId, providerId, body }) {
53
- return await apiRequest(`/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}`, {
55
+ export async function updateCustomModelProviderConfig({ workspaceId, providerId, command }) {
56
+ return toProviderConfig(await checkedApiRequest(customModelProviderConfigDtoSchema, `/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}`, {
54
57
  method: 'PUT',
55
- body
56
- });
58
+ body: toUpdateCustomProviderBody(command)
59
+ }));
57
60
  }
58
- export async function discoverCustomModelProviderModels({ workspaceId, body }) {
59
- return await apiRequest(`/workspaces/${workspaceId}/agent/custom-model-providers/discover-models`, {
61
+ export async function discoverCustomModelProviderModels({ workspaceId, command }) {
62
+ const response = await checkedApiRequest(discoverCustomModelProviderModelsResponseSchema, `/workspaces/${workspaceId}/agent/custom-model-providers/discover-models`, {
60
63
  method: 'POST',
61
- body
64
+ body: toDiscoverModelsBody(command)
62
65
  });
66
+ return response.models.map((model)=>({
67
+ id: model.id,
68
+ label: model.label
69
+ }));
63
70
  }
64
- export async function discoverCustomModelProviderModelsBySlug({ workspaceId, providerId, body }) {
65
- return await apiRequest(`/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}/discover-models`, {
71
+ export async function discoverCustomModelProviderModelsBySlug({ workspaceId, providerId, command }) {
72
+ const response = await checkedApiRequest(discoverCustomModelProviderModelsResponseSchema, `/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}/discover-models`, {
66
73
  method: 'POST',
67
- body
74
+ body: toDiscoverModelsBySlugBody(command)
68
75
  });
76
+ return response.models.map((model)=>({
77
+ id: model.id,
78
+ label: model.label
79
+ }));
69
80
  }
70
81
  export async function deleteModelProviderConfig({ workspaceId, providerId }) {
71
- return await apiRequest(`/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {
82
+ return await checkedApiRequest(emptyResponseSchema, `/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {
72
83
  method: 'DELETE'
73
84
  });
74
85
  }
75
- export async function updateModelProviderDefaultModel({ workspaceId, providerId, body }) {
76
- return await apiRequest(`/workspaces/${workspaceId}/agent/model-providers/${providerId}/default-model`, {
86
+ export async function updateModelProviderDefaultModel({ workspaceId, providerId, defaultModel }) {
87
+ return toProviderConfig(await checkedApiRequest(modelProviderConfigDtoSchema, `/workspaces/${workspaceId}/agent/model-providers/${providerId}/default-model`, {
77
88
  method: 'PUT',
78
- body
79
- });
89
+ body: toDefaultModelBody(defaultModel)
90
+ }));
80
91
  }
81
- export async function setDefaultModelProvider({ workspaceId, body }) {
82
- return await apiRequest(`/workspaces/${workspaceId}/agent/default-model-provider`, {
92
+ export async function setDefaultModelProvider({ workspaceId, providerId }) {
93
+ return toDefaultModelProviderSelection(await checkedApiRequest(setDefaultModelProviderResponseSchema, `/workspaces/${workspaceId}/agent/default-model-provider`, {
83
94
  method: 'PUT',
84
- body
85
- });
95
+ body: toDefaultProviderBody(providerId)
96
+ }));
86
97
  }
87
- export async function setDefaultHarness({ workspaceId, body }) {
88
- return await apiRequest(`/workspaces/${workspaceId}/agent/default-harness`, {
98
+ export async function setDefaultHarness({ workspaceId, harnessId }) {
99
+ return toDefaultHarnessSelection(await checkedApiRequest(setDefaultHarnessResponseSchema, `/workspaces/${workspaceId}/agent/default-harness`, {
89
100
  method: 'PUT',
90
- body
91
- });
101
+ body: toDefaultHarnessBody(harnessId)
102
+ }));
92
103
  }
93
104
  export function useModelProviderCatalogQuery() {
94
- return useQuery({
105
+ return useQuery(modelProviderCatalogQueryOptions());
106
+ }
107
+ export function modelProviderCatalogQueryOptions() {
108
+ return queryOptions({
95
109
  queryKey: modelProviderQueryKeys.catalog(),
96
110
  queryFn: ({ signal })=>getModelProviderCatalog({
97
111
  signal
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/api/model-providers.ts"],"sourcesContent":["import type {\n CreateCustomModelProviderBodyDto,\n CustomModelProviderConfigDto,\n DiscoverCustomModelProviderModelsBodyDto,\n DiscoverCustomModelProviderModelsBySlugBodyDto,\n DiscoverCustomModelProviderModelsResponseDto,\n ListModelProviderConfigsResponseDto,\n ModelProviderCatalogResponseDto,\n ModelProviderConfigDto,\n ModelProviderRef,\n SetDefaultHarnessBodyDto,\n SetDefaultHarnessResponseDto,\n SetDefaultModelProviderBodyDto,\n SetDefaultModelProviderResponseDto,\n SupportedModelProviderId,\n UpdateCustomModelProviderBodyDto,\n UpdateModelProviderConfigBodyDto,\n UpdateModelProviderDefaultModelBodyDto,\n} from '@shipfox/api-agent-dto';\nimport {apiRequest} from '@shipfox/client-api';\nimport {\n type FetchQueryOptions,\n queryOptions,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\n\nexport const modelProviderQueryKeys = {\n all: ['model-providers'] as const,\n catalog: () => [...modelProviderQueryKeys.all, 'catalog'] as const,\n configs: (workspaceId: string) =>\n [...modelProviderQueryKeys.all, 'configs', workspaceId] as const,\n};\n\ntype ModelProviderConfigsQueryKey =\n | ReturnType<typeof modelProviderQueryKeys.configs>\n | readonly ['model-providers', 'configs'];\n\ntype ModelProviderConfigsQueryOptions = FetchQueryOptions<\n ListModelProviderConfigsResponseDto,\n Error,\n ListModelProviderConfigsResponseDto,\n ModelProviderConfigsQueryKey\n>;\n\nexport async function getModelProviderCatalog({signal}: {signal?: AbortSignal} = {}) {\n return await apiRequest<ModelProviderCatalogResponseDto>('/agent/model-provider-catalog', {\n signal,\n });\n}\n\nexport async function listModelProviderConfigs({\n workspaceId,\n signal,\n}: {\n workspaceId: string;\n signal?: AbortSignal;\n}) {\n return await apiRequest<ListModelProviderConfigsResponseDto>(\n `/workspaces/${workspaceId}/agent/model-providers`,\n {signal},\n );\n}\n\nexport function modelProviderConfigsQueryOptions(\n workspaceId: string | undefined,\n): ModelProviderConfigsQueryOptions {\n return queryOptions({\n queryKey: workspaceId\n ? modelProviderQueryKeys.configs(workspaceId)\n : ([...modelProviderQueryKeys.all, 'configs'] as const),\n enabled: Boolean(workspaceId),\n queryFn: ({signal}) => listModelProviderConfigs({workspaceId: workspaceId ?? '', signal}),\n });\n}\n\nexport async function upsertModelProviderConfig({\n workspaceId,\n providerId,\n body,\n}: {\n workspaceId: string;\n providerId: SupportedModelProviderId;\n body: UpdateModelProviderConfigBodyDto;\n}) {\n return await apiRequest<ModelProviderConfigDto>(\n `/workspaces/${workspaceId}/agent/model-providers/${providerId}`,\n {method: 'PUT', body},\n );\n}\n\nexport async function createCustomModelProviderConfig({\n workspaceId,\n body,\n}: {\n workspaceId: string;\n body: CreateCustomModelProviderBodyDto;\n}) {\n return await apiRequest<CustomModelProviderConfigDto>(\n `/workspaces/${workspaceId}/agent/custom-model-providers`,\n {method: 'POST', body},\n );\n}\n\nexport async function updateCustomModelProviderConfig({\n workspaceId,\n providerId,\n body,\n}: {\n workspaceId: string;\n providerId: ModelProviderRef;\n body: UpdateCustomModelProviderBodyDto;\n}) {\n return await apiRequest<CustomModelProviderConfigDto>(\n `/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}`,\n {method: 'PUT', body},\n );\n}\n\nexport async function discoverCustomModelProviderModels({\n workspaceId,\n body,\n}: {\n workspaceId: string;\n body: DiscoverCustomModelProviderModelsBodyDto;\n}) {\n return await apiRequest<DiscoverCustomModelProviderModelsResponseDto>(\n `/workspaces/${workspaceId}/agent/custom-model-providers/discover-models`,\n {method: 'POST', body},\n );\n}\n\nexport async function discoverCustomModelProviderModelsBySlug({\n workspaceId,\n providerId,\n body,\n}: {\n workspaceId: string;\n providerId: ModelProviderRef;\n body: DiscoverCustomModelProviderModelsBySlugBodyDto;\n}) {\n return await apiRequest<DiscoverCustomModelProviderModelsResponseDto>(\n `/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}/discover-models`,\n {method: 'POST', body},\n );\n}\n\nexport async function deleteModelProviderConfig({\n workspaceId,\n providerId,\n}: {\n workspaceId: string;\n providerId: ModelProviderRef;\n}) {\n return await apiRequest<void>(`/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {\n method: 'DELETE',\n });\n}\n\nexport async function updateModelProviderDefaultModel({\n workspaceId,\n providerId,\n body,\n}: {\n workspaceId: string;\n providerId: SupportedModelProviderId;\n body: UpdateModelProviderDefaultModelBodyDto;\n}) {\n return await apiRequest<ModelProviderConfigDto>(\n `/workspaces/${workspaceId}/agent/model-providers/${providerId}/default-model`,\n {method: 'PUT', body},\n );\n}\n\nexport async function setDefaultModelProvider({\n workspaceId,\n body,\n}: {\n workspaceId: string;\n body: SetDefaultModelProviderBodyDto;\n}) {\n return await apiRequest<SetDefaultModelProviderResponseDto>(\n `/workspaces/${workspaceId}/agent/default-model-provider`,\n {method: 'PUT', body},\n );\n}\n\nexport async function setDefaultHarness({\n workspaceId,\n body,\n}: {\n workspaceId: string;\n body: SetDefaultHarnessBodyDto;\n}) {\n return await apiRequest<SetDefaultHarnessResponseDto>(\n `/workspaces/${workspaceId}/agent/default-harness`,\n {method: 'PUT', body},\n );\n}\n\nexport function useModelProviderCatalogQuery() {\n return useQuery({\n queryKey: modelProviderQueryKeys.catalog(),\n queryFn: ({signal}) => getModelProviderCatalog({signal}),\n staleTime: 1000 * 60 * 60,\n });\n}\n\nexport function useModelProviderConfigsQuery(workspaceId: string | undefined) {\n return useQuery(modelProviderConfigsQueryOptions(workspaceId));\n}\n\nexport function useUpsertModelProviderConfigMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: upsertModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useCreateCustomModelProviderMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: createCustomModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useUpdateCustomModelProviderMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: updateCustomModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useDiscoverCustomModelProviderModelsMutation() {\n return useMutation({mutationFn: discoverCustomModelProviderModels});\n}\n\nexport function useDiscoverCustomModelProviderModelsBySlugMutation() {\n return useMutation({mutationFn: discoverCustomModelProviderModelsBySlug});\n}\n\nexport function useDeleteModelProviderConfigMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: deleteModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useUpdateModelProviderDefaultModelMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: updateModelProviderDefaultModel,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useSetDefaultModelProviderMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: setDefaultModelProvider,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useSetDefaultHarnessMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: setDefaultHarness,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n"],"names":["apiRequest","queryOptions","useMutation","useQuery","useQueryClient","modelProviderQueryKeys","all","catalog","configs","workspaceId","getModelProviderCatalog","signal","listModelProviderConfigs","modelProviderConfigsQueryOptions","queryKey","enabled","Boolean","queryFn","upsertModelProviderConfig","providerId","body","method","createCustomModelProviderConfig","updateCustomModelProviderConfig","discoverCustomModelProviderModels","discoverCustomModelProviderModelsBySlug","deleteModelProviderConfig","updateModelProviderDefaultModel","setDefaultModelProvider","setDefaultHarness","useModelProviderCatalogQuery","staleTime","useModelProviderConfigsQuery","useUpsertModelProviderConfigMutation","queryClient","mutationFn","onSuccess","_config","variables","invalidateQueries","useCreateCustomModelProviderMutation","useUpdateCustomModelProviderMutation","useDiscoverCustomModelProviderModelsMutation","useDiscoverCustomModelProviderModelsBySlugMutation","useDeleteModelProviderConfigMutation","useUpdateModelProviderDefaultModelMutation","useSetDefaultModelProviderMutation","useSetDefaultHarnessMutation"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/hooks/api/model-providers.ts"],"sourcesContent":["import {\n customModelProviderConfigDtoSchema,\n discoverCustomModelProviderModelsResponseSchema,\n listModelProviderConfigsResponseSchema,\n type ModelProviderRef,\n modelProviderCatalogResponseSchema,\n modelProviderConfigDtoSchema,\n setDefaultHarnessResponseSchema,\n setDefaultModelProviderResponseSchema,\n} from '@shipfox/api-agent-dto';\nimport {checkedApiRequest, emptyResponseSchema} from '@shipfox/client-api';\nimport {\n type FetchQueryOptions,\n queryOptions,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\nimport type {\n AgentModel,\n CreateCustomProviderCommand,\n DefaultHarnessSelection,\n DefaultModelProviderSelection,\n DiscoverProviderModelsCommand,\n HarnessId,\n ProviderCatalog,\n ProviderConfig,\n ProviderConfiguration,\n ProviderCredentialsCommand,\n UpdateCustomProviderCommand,\n} from '#core/models.js';\nimport {\n toCreateCustomProviderBody,\n toDefaultHarnessBody,\n toDefaultModelBody,\n toDefaultProviderBody,\n toDiscoverModelsBody,\n toDiscoverModelsBySlugBody,\n toProviderCredentialsBody,\n toUpdateCustomProviderBody,\n} from './model-provider-command-mapper.js';\nimport {\n toDefaultHarnessSelection,\n toDefaultModelProviderSelection,\n toProviderCatalog,\n toProviderConfig,\n toProviderConfiguration,\n} from './model-provider-mapper.js';\n\nexport const modelProviderQueryKeys = {\n all: ['model-providers'] as const,\n catalog: () => [...modelProviderQueryKeys.all, 'catalog'] as const,\n configs: (workspaceId: string) =>\n [...modelProviderQueryKeys.all, 'configs', workspaceId] as const,\n};\n\ntype ModelProviderConfigsQueryKey =\n | ReturnType<typeof modelProviderQueryKeys.configs>\n | readonly ['model-providers', 'configs'];\n\ntype ModelProviderConfigsQueryOptions = FetchQueryOptions<\n ProviderConfiguration,\n Error,\n ProviderConfiguration,\n ModelProviderConfigsQueryKey\n>;\n\ntype ModelProviderCatalogQueryOptions = FetchQueryOptions<\n ProviderCatalog,\n Error,\n ProviderCatalog,\n ReturnType<typeof modelProviderQueryKeys.catalog>\n>;\n\nexport async function getModelProviderCatalog({\n signal,\n}: {\n signal?: AbortSignal;\n} = {}): Promise<ProviderCatalog> {\n return toProviderCatalog(\n await checkedApiRequest(modelProviderCatalogResponseSchema, '/agent/model-provider-catalog', {\n signal,\n }),\n );\n}\n\nexport async function listModelProviderConfigs({\n workspaceId,\n signal,\n}: {\n workspaceId: string;\n signal?: AbortSignal;\n}): Promise<ProviderConfiguration> {\n return toProviderConfiguration(\n await checkedApiRequest(\n listModelProviderConfigsResponseSchema,\n `/workspaces/${workspaceId}/agent/model-providers`,\n {signal},\n ),\n );\n}\n\nexport function modelProviderConfigsQueryOptions(\n workspaceId: string | undefined,\n): ModelProviderConfigsQueryOptions {\n return queryOptions({\n queryKey: workspaceId\n ? modelProviderQueryKeys.configs(workspaceId)\n : ([...modelProviderQueryKeys.all, 'configs'] as const),\n enabled: Boolean(workspaceId),\n queryFn: ({signal}) => listModelProviderConfigs({workspaceId: workspaceId ?? '', signal}),\n });\n}\n\nexport async function upsertModelProviderConfig({\n workspaceId,\n providerId,\n command,\n}: {\n workspaceId: string;\n providerId: string;\n command: ProviderCredentialsCommand;\n}): Promise<ProviderConfig> {\n return toProviderConfig(\n await checkedApiRequest(\n modelProviderConfigDtoSchema,\n `/workspaces/${workspaceId}/agent/model-providers/${providerId}`,\n {method: 'PUT', body: toProviderCredentialsBody(command)},\n ),\n );\n}\n\nexport async function createCustomModelProviderConfig({\n workspaceId,\n command,\n}: {\n workspaceId: string;\n command: CreateCustomProviderCommand;\n}): Promise<ProviderConfig> {\n return toProviderConfig(\n await checkedApiRequest(\n customModelProviderConfigDtoSchema,\n `/workspaces/${workspaceId}/agent/custom-model-providers`,\n {method: 'POST', body: toCreateCustomProviderBody(command)},\n ),\n );\n}\n\nexport async function updateCustomModelProviderConfig({\n workspaceId,\n providerId,\n command,\n}: {\n workspaceId: string;\n providerId: ModelProviderRef;\n command: UpdateCustomProviderCommand;\n}): Promise<ProviderConfig> {\n return toProviderConfig(\n await checkedApiRequest(\n customModelProviderConfigDtoSchema,\n `/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}`,\n {method: 'PUT', body: toUpdateCustomProviderBody(command)},\n ),\n );\n}\n\nexport async function discoverCustomModelProviderModels({\n workspaceId,\n command,\n}: {\n workspaceId: string;\n command: DiscoverProviderModelsCommand;\n}): Promise<readonly AgentModel[]> {\n const response = await checkedApiRequest(\n discoverCustomModelProviderModelsResponseSchema,\n `/workspaces/${workspaceId}/agent/custom-model-providers/discover-models`,\n {method: 'POST', body: toDiscoverModelsBody(command)},\n );\n return response.models.map((model) => ({id: model.id, label: model.label}));\n}\n\nexport async function discoverCustomModelProviderModelsBySlug({\n workspaceId,\n providerId,\n command,\n}: {\n workspaceId: string;\n providerId: ModelProviderRef;\n command: DiscoverProviderModelsCommand;\n}): Promise<readonly AgentModel[]> {\n const response = await checkedApiRequest(\n discoverCustomModelProviderModelsResponseSchema,\n `/workspaces/${workspaceId}/agent/custom-model-providers/${providerId}/discover-models`,\n {method: 'POST', body: toDiscoverModelsBySlugBody(command)},\n );\n return response.models.map((model) => ({id: model.id, label: model.label}));\n}\n\nexport async function deleteModelProviderConfig({\n workspaceId,\n providerId,\n}: {\n workspaceId: string;\n providerId: ModelProviderRef;\n}) {\n return await checkedApiRequest(\n emptyResponseSchema,\n `/workspaces/${workspaceId}/agent/model-providers/${providerId}`,\n {method: 'DELETE'},\n );\n}\n\nexport async function updateModelProviderDefaultModel({\n workspaceId,\n providerId,\n defaultModel,\n}: {\n workspaceId: string;\n providerId: string;\n defaultModel: string | null;\n}): Promise<ProviderConfig> {\n return toProviderConfig(\n await checkedApiRequest(\n modelProviderConfigDtoSchema,\n `/workspaces/${workspaceId}/agent/model-providers/${providerId}/default-model`,\n {method: 'PUT', body: toDefaultModelBody(defaultModel)},\n ),\n );\n}\n\nexport async function setDefaultModelProvider({\n workspaceId,\n providerId,\n}: {\n workspaceId: string;\n providerId: string;\n}): Promise<DefaultModelProviderSelection> {\n return toDefaultModelProviderSelection(\n await checkedApiRequest(\n setDefaultModelProviderResponseSchema,\n `/workspaces/${workspaceId}/agent/default-model-provider`,\n {method: 'PUT', body: toDefaultProviderBody(providerId)},\n ),\n );\n}\n\nexport async function setDefaultHarness({\n workspaceId,\n harnessId,\n}: {\n workspaceId: string;\n harnessId: HarnessId;\n}): Promise<DefaultHarnessSelection> {\n return toDefaultHarnessSelection(\n await checkedApiRequest(\n setDefaultHarnessResponseSchema,\n `/workspaces/${workspaceId}/agent/default-harness`,\n {method: 'PUT', body: toDefaultHarnessBody(harnessId)},\n ),\n );\n}\n\nexport function useModelProviderCatalogQuery() {\n return useQuery(modelProviderCatalogQueryOptions());\n}\n\nexport function modelProviderCatalogQueryOptions(): ModelProviderCatalogQueryOptions {\n return queryOptions({\n queryKey: modelProviderQueryKeys.catalog(),\n queryFn: ({signal}) => getModelProviderCatalog({signal}),\n staleTime: 1000 * 60 * 60,\n });\n}\n\nexport function useModelProviderConfigsQuery(workspaceId: string | undefined) {\n return useQuery(modelProviderConfigsQueryOptions(workspaceId));\n}\n\nexport function useUpsertModelProviderConfigMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: upsertModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useCreateCustomModelProviderMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: createCustomModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useUpdateCustomModelProviderMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: updateCustomModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useDiscoverCustomModelProviderModelsMutation() {\n return useMutation({mutationFn: discoverCustomModelProviderModels});\n}\n\nexport function useDiscoverCustomModelProviderModelsBySlugMutation() {\n return useMutation({mutationFn: discoverCustomModelProviderModelsBySlug});\n}\n\nexport function useDeleteModelProviderConfigMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: deleteModelProviderConfig,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useUpdateModelProviderDefaultModelMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: updateModelProviderDefaultModel,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useSetDefaultModelProviderMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: setDefaultModelProvider,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n\nexport function useSetDefaultHarnessMutation() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: setDefaultHarness,\n onSuccess: async (_config, variables) => {\n await queryClient.invalidateQueries({\n queryKey: modelProviderQueryKeys.configs(variables.workspaceId),\n });\n },\n });\n}\n"],"names":["customModelProviderConfigDtoSchema","discoverCustomModelProviderModelsResponseSchema","listModelProviderConfigsResponseSchema","modelProviderCatalogResponseSchema","modelProviderConfigDtoSchema","setDefaultHarnessResponseSchema","setDefaultModelProviderResponseSchema","checkedApiRequest","emptyResponseSchema","queryOptions","useMutation","useQuery","useQueryClient","toCreateCustomProviderBody","toDefaultHarnessBody","toDefaultModelBody","toDefaultProviderBody","toDiscoverModelsBody","toDiscoverModelsBySlugBody","toProviderCredentialsBody","toUpdateCustomProviderBody","toDefaultHarnessSelection","toDefaultModelProviderSelection","toProviderCatalog","toProviderConfig","toProviderConfiguration","modelProviderQueryKeys","all","catalog","configs","workspaceId","getModelProviderCatalog","signal","listModelProviderConfigs","modelProviderConfigsQueryOptions","queryKey","enabled","Boolean","queryFn","upsertModelProviderConfig","providerId","command","method","body","createCustomModelProviderConfig","updateCustomModelProviderConfig","discoverCustomModelProviderModels","response","models","map","model","id","label","discoverCustomModelProviderModelsBySlug","deleteModelProviderConfig","updateModelProviderDefaultModel","defaultModel","setDefaultModelProvider","setDefaultHarness","harnessId","useModelProviderCatalogQuery","modelProviderCatalogQueryOptions","staleTime","useModelProviderConfigsQuery","useUpsertModelProviderConfigMutation","queryClient","mutationFn","onSuccess","_config","variables","invalidateQueries","useCreateCustomModelProviderMutation","useUpdateCustomModelProviderMutation","useDiscoverCustomModelProviderModelsMutation","useDiscoverCustomModelProviderModelsBySlugMutation","useDeleteModelProviderConfigMutation","useUpdateModelProviderDefaultModelMutation","useSetDefaultModelProviderMutation","useSetDefaultHarnessMutation"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-provider-onboarding-page.d.ts","sourceRoot":"","sources":["../../src/pages/model-provider-onboarding-page.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,2BAA2B,CAAC,EAC1C,WAAW,EACX,MAAM,EACN,YAAY,GACb,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,+BAqKA"}
1
+ {"version":3,"file":"model-provider-onboarding-page.d.ts","sourceRoot":"","sources":["../../src/pages/model-provider-onboarding-page.tsx"],"names":[],"mappings":"AA2BA,wBAAgB,2BAA2B,CAAC,EAC1C,WAAW,EACX,MAAM,EACN,YAAY,GACb,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,+BA+KA"}