@shipfox/client-agent 4.0.0 → 6.0.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 (168) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +59 -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 +18 -0
  84. package/dist/feature.d.ts.map +1 -1
  85. package/dist/feature.js +16 -1
  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 +64 -294
  96. package/dist/hooks/api/model-providers.d.ts.map +1 -1
  97. package/dist/hooks/api/model-providers.js +65 -48
  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/agents-settings.d.ts +5 -0
  103. package/dist/routes/agents-settings.d.ts.map +1 -0
  104. package/dist/routes/agents-settings.js +21 -0
  105. package/dist/routes/agents-settings.js.map +1 -0
  106. package/dist/routes/inputs.d.ts +4 -0
  107. package/dist/routes/inputs.d.ts.map +1 -0
  108. package/dist/routes/inputs.js +12 -0
  109. package/dist/routes/inputs.js.map +1 -0
  110. package/dist/routes/model-provider.d.ts.map +1 -1
  111. package/dist/routes/model-provider.js +4 -5
  112. package/dist/routes/model-provider.js.map +1 -1
  113. package/dist/tsconfig.test.tsbuildinfo +1 -1
  114. package/package.json +9 -10
  115. package/src/components/available-provider-card.tsx +2 -2
  116. package/src/components/available-providers-grid.tsx +3 -3
  117. package/src/components/change-default-model-form.tsx +5 -6
  118. package/src/components/custom-model-provider-api-options.ts +3 -3
  119. package/src/components/custom-model-provider-form.stories.tsx +13 -13
  120. package/src/components/custom-model-provider-form.tsx +19 -12
  121. package/src/components/custom-model-provider-payload.test.ts +22 -22
  122. package/src/components/custom-model-provider-payload.ts +69 -54
  123. package/src/components/custom-model-provider-slug.test.ts +1 -1
  124. package/src/components/custom-model-provider-slug.ts +6 -3
  125. package/src/components/default-model-field.tsx +5 -5
  126. package/src/components/harness-availability.test.ts +13 -10
  127. package/src/components/harness-availability.ts +4 -28
  128. package/src/components/harnesses-section.tsx +7 -11
  129. package/src/components/model-provider-usage-modal.stories.tsx +18 -23
  130. package/src/components/model-provider-usage-modal.test.tsx +35 -7
  131. package/src/components/model-provider-usage-modal.tsx +12 -16
  132. package/src/components/model-provider-usage-target.ts +15 -18
  133. package/src/components/model-providers-section.stories.tsx +4 -1
  134. package/src/components/model-providers-section.tsx +112 -125
  135. package/src/components/test-and-save-form.tsx +13 -17
  136. package/src/core/harness-policy.test.ts +15 -0
  137. package/src/core/harness-policy.ts +83 -0
  138. package/src/core/model-provider-management-reducer.test.ts +59 -0
  139. package/src/core/model-provider-management-reducer.ts +72 -0
  140. package/src/core/models.ts +143 -0
  141. package/src/core/onboarding-reducer.test.ts +44 -0
  142. package/src/core/onboarding-reducer.ts +64 -0
  143. package/src/core/provider-policy.ts +53 -0
  144. package/src/feature.ts +17 -1
  145. package/src/hooks/api/model-provider-command-mapper.ts +122 -0
  146. package/src/hooks/api/model-provider-mapper.test.ts +27 -0
  147. package/src/hooks/api/model-provider-mapper.ts +120 -0
  148. package/src/hooks/api/model-providers.test.ts +15 -15
  149. package/src/hooks/api/model-providers.ts +175 -87
  150. package/src/pages/model-provider-onboarding-page.tsx +62 -56
  151. package/src/routes/agents-settings.tsx +14 -0
  152. package/src/routes/inputs.test.ts +11 -0
  153. package/src/routes/inputs.ts +9 -0
  154. package/src/routes/model-provider.tsx +4 -3
  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,334 +1,104 @@
1
- import type { CreateCustomModelProviderBodyDto, DiscoverCustomModelProviderModelsBodyDto, DiscoverCustomModelProviderModelsBySlugBodyDto, ModelProviderRef, SetDefaultHarnessBodyDto, SetDefaultModelProviderBodyDto, SupportedModelProviderId, UpdateCustomModelProviderBodyDto, UpdateModelProviderConfigBodyDto, UpdateModelProviderDefaultModelBodyDto } from '@shipfox/api-agent-dto';
1
+ import { type ModelProviderRef } from '@shipfox/api-agent-dto';
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';
2
4
  export declare const modelProviderQueryKeys: {
3
5
  all: readonly ["model-providers"];
4
6
  catalog: () => readonly ["model-providers", "catalog"];
5
7
  configs: (workspaceId: string) => readonly ["model-providers", "configs", string];
6
8
  };
7
- export declare function getModelProviderCatalog({ signal }?: {
9
+ type ModelProviderConfigsQueryKey = ReturnType<typeof modelProviderQueryKeys.configs> | readonly ['model-providers', 'configs'];
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, }?: {
8
13
  signal?: AbortSignal;
9
- }): Promise<{
10
- providers: {
11
- 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";
12
- label: string;
13
- support_status: "supported" | "unsupported";
14
- default_model: string | null;
15
- credential_fields: {
16
- key: string;
17
- label: string;
18
- secret: boolean;
19
- }[];
20
- unsupported_reason: string | null;
21
- models: {
22
- id: string;
23
- label: string;
24
- }[];
25
- }[];
26
- }>;
14
+ }): Promise<ProviderCatalog>;
27
15
  export declare function listModelProviderConfigs({ workspaceId, signal, }: {
28
16
  workspaceId: string;
29
17
  signal?: AbortSignal;
30
- }): Promise<{
31
- configs: ({
32
- kind: "builtin";
33
- provider_id: string;
34
- default_model: string | null;
35
- created_at: string;
36
- updated_at: string;
37
- } | {
38
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
39
- base_url: string;
40
- headers: {
41
- name: string;
42
- value: string;
43
- }[];
44
- secret_header_names: string[];
45
- models: {
46
- id: string;
47
- label: string;
48
- context_window?: number | undefined;
49
- max_output_tokens?: number | undefined;
50
- input_image?: boolean | undefined;
51
- reasoning?: boolean | undefined;
52
- }[];
53
- kind: "custom";
54
- provider_id: string;
55
- display_name: string;
56
- default_model: string | null;
57
- created_at: string;
58
- updated_at: string;
59
- })[];
60
- default_provider_id: string | null;
61
- default_harness_id: "pi" | "claude" | null;
62
- }>;
63
- export declare function upsertModelProviderConfig({ workspaceId, providerId, body, }: {
18
+ }): Promise<ProviderConfiguration>;
19
+ export declare function modelProviderConfigsQueryOptions(workspaceId: string | undefined): ModelProviderConfigsQueryOptions;
20
+ export declare function upsertModelProviderConfig({ workspaceId, providerId, command, }: {
64
21
  workspaceId: string;
65
- providerId: SupportedModelProviderId;
66
- body: UpdateModelProviderConfigBodyDto;
67
- }): Promise<{
68
- kind: "builtin";
69
- provider_id: string;
70
- default_model: string | null;
71
- created_at: string;
72
- updated_at: string;
73
- }>;
74
- export declare function createCustomModelProviderConfig({ workspaceId, body, }: {
22
+ providerId: string;
23
+ command: ProviderCredentialsCommand;
24
+ }): Promise<ProviderConfig>;
25
+ export declare function createCustomModelProviderConfig({ workspaceId, command, }: {
75
26
  workspaceId: string;
76
- body: CreateCustomModelProviderBodyDto;
77
- }): Promise<{
78
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
79
- base_url: string;
80
- headers: {
81
- name: string;
82
- value: string;
83
- }[];
84
- secret_header_names: string[];
85
- models: {
86
- id: string;
87
- label: string;
88
- context_window?: number | undefined;
89
- max_output_tokens?: number | undefined;
90
- input_image?: boolean | undefined;
91
- reasoning?: boolean | undefined;
92
- }[];
93
- kind: "custom";
94
- provider_id: string;
95
- display_name: string;
96
- default_model: string | null;
97
- created_at: string;
98
- updated_at: string;
99
- }>;
100
- export declare function updateCustomModelProviderConfig({ workspaceId, providerId, body, }: {
27
+ command: CreateCustomProviderCommand;
28
+ }): Promise<ProviderConfig>;
29
+ export declare function updateCustomModelProviderConfig({ workspaceId, providerId, command, }: {
101
30
  workspaceId: string;
102
31
  providerId: ModelProviderRef;
103
- body: UpdateCustomModelProviderBodyDto;
104
- }): Promise<{
105
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
106
- base_url: string;
107
- headers: {
108
- name: string;
109
- value: string;
110
- }[];
111
- secret_header_names: string[];
112
- models: {
113
- id: string;
114
- label: string;
115
- context_window?: number | undefined;
116
- max_output_tokens?: number | undefined;
117
- input_image?: boolean | undefined;
118
- reasoning?: boolean | undefined;
119
- }[];
120
- kind: "custom";
121
- provider_id: string;
122
- display_name: string;
123
- default_model: string | null;
124
- created_at: string;
125
- updated_at: string;
126
- }>;
127
- export declare function discoverCustomModelProviderModels({ workspaceId, body, }: {
32
+ command: UpdateCustomProviderCommand;
33
+ }): Promise<ProviderConfig>;
34
+ export declare function discoverCustomModelProviderModels({ workspaceId, command, }: {
128
35
  workspaceId: string;
129
- body: DiscoverCustomModelProviderModelsBodyDto;
130
- }): Promise<{
131
- models: {
132
- id: string;
133
- label: string;
134
- }[];
135
- }>;
136
- export declare function discoverCustomModelProviderModelsBySlug({ workspaceId, providerId, body, }: {
36
+ command: DiscoverProviderModelsCommand;
37
+ }): Promise<readonly AgentModel[]>;
38
+ export declare function discoverCustomModelProviderModelsBySlug({ workspaceId, providerId, command, }: {
137
39
  workspaceId: string;
138
40
  providerId: ModelProviderRef;
139
- body: DiscoverCustomModelProviderModelsBySlugBodyDto;
140
- }): Promise<{
141
- models: {
142
- id: string;
143
- label: string;
144
- }[];
145
- }>;
41
+ command: DiscoverProviderModelsCommand;
42
+ }): Promise<readonly AgentModel[]>;
146
43
  export declare function deleteModelProviderConfig({ workspaceId, providerId, }: {
147
44
  workspaceId: string;
148
45
  providerId: ModelProviderRef;
149
- }): Promise<void>;
150
- export declare function updateModelProviderDefaultModel({ workspaceId, providerId, body, }: {
151
- workspaceId: string;
152
- providerId: SupportedModelProviderId;
153
- body: UpdateModelProviderDefaultModelBodyDto;
154
- }): Promise<{
155
- kind: "builtin";
156
- provider_id: string;
157
- default_model: string | null;
158
- created_at: string;
159
- updated_at: string;
160
- }>;
161
- export declare function setDefaultModelProvider({ workspaceId, body, }: {
162
- workspaceId: string;
163
- body: SetDefaultModelProviderBodyDto;
164
- }): Promise<{
165
- default_provider_id: string | null;
166
- }>;
167
- export declare function setDefaultHarness({ workspaceId, body, }: {
168
- workspaceId: string;
169
- body: SetDefaultHarnessBodyDto;
170
- }): Promise<{
171
- default_harness_id: "pi" | "claude";
172
- }>;
173
- export declare function useModelProviderCatalogQuery(): import("@tanstack/react-query").UseQueryResult<NoInfer<{
174
- providers: {
175
- 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";
176
- label: string;
177
- support_status: "supported" | "unsupported";
178
- default_model: string | null;
179
- credential_fields: {
180
- key: string;
181
- label: string;
182
- secret: boolean;
183
- }[];
184
- unsupported_reason: string | null;
185
- models: {
186
- id: string;
187
- label: string;
188
- }[];
189
- }[];
190
- }>, Error>;
191
- export declare function useModelProviderConfigsQuery(workspaceId: string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<{
192
- configs: ({
193
- kind: "builtin";
194
- provider_id: string;
195
- default_model: string | null;
196
- created_at: string;
197
- updated_at: string;
198
- } | {
199
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
200
- base_url: string;
201
- headers: {
202
- name: string;
203
- value: string;
204
- }[];
205
- secret_header_names: string[];
206
- models: {
207
- id: string;
208
- label: string;
209
- context_window?: number | undefined;
210
- max_output_tokens?: number | undefined;
211
- input_image?: boolean | undefined;
212
- reasoning?: boolean | undefined;
213
- }[];
214
- kind: "custom";
215
- provider_id: string;
216
- display_name: string;
217
- default_model: string | null;
218
- created_at: string;
219
- updated_at: string;
220
- })[];
221
- default_provider_id: string | null;
222
- default_harness_id: "pi" | "claude" | null;
223
- }>, Error>;
224
- export declare function useUpsertModelProviderConfigMutation(): import("@tanstack/react-query").UseMutationResult<{
225
- kind: "builtin";
226
- provider_id: string;
227
- default_model: string | null;
228
- created_at: string;
229
- updated_at: string;
230
- }, Error, {
231
- workspaceId: string;
232
- providerId: SupportedModelProviderId;
233
- 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;
234
67
  }, unknown>;
235
- export declare function useCreateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<{
236
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
237
- base_url: string;
238
- headers: {
239
- name: string;
240
- value: string;
241
- }[];
242
- secret_header_names: string[];
243
- models: {
244
- id: string;
245
- label: string;
246
- context_window?: number | undefined;
247
- max_output_tokens?: number | undefined;
248
- input_image?: boolean | undefined;
249
- reasoning?: boolean | undefined;
250
- }[];
251
- kind: "custom";
252
- provider_id: string;
253
- display_name: string;
254
- default_model: string | null;
255
- created_at: string;
256
- updated_at: string;
257
- }, Error, {
68
+ export declare function useCreateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<ProviderConfig, Error, {
258
69
  workspaceId: string;
259
- body: CreateCustomModelProviderBodyDto;
70
+ command: CreateCustomProviderCommand;
260
71
  }, unknown>;
261
- export declare function useUpdateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<{
262
- api: "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai";
263
- base_url: string;
264
- headers: {
265
- name: string;
266
- value: string;
267
- }[];
268
- secret_header_names: string[];
269
- models: {
270
- id: string;
271
- label: string;
272
- context_window?: number | undefined;
273
- max_output_tokens?: number | undefined;
274
- input_image?: boolean | undefined;
275
- reasoning?: boolean | undefined;
276
- }[];
277
- kind: "custom";
278
- provider_id: string;
279
- display_name: string;
280
- default_model: string | null;
281
- created_at: string;
282
- updated_at: string;
283
- }, Error, {
72
+ export declare function useUpdateCustomModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<ProviderConfig, Error, {
284
73
  workspaceId: string;
285
74
  providerId: ModelProviderRef;
286
- body: UpdateCustomModelProviderBodyDto;
75
+ command: UpdateCustomProviderCommand;
287
76
  }, unknown>;
288
- export declare function useDiscoverCustomModelProviderModelsMutation(): import("@tanstack/react-query").UseMutationResult<{
289
- models: {
290
- id: string;
291
- label: string;
292
- }[];
293
- }, Error, {
77
+ export declare function useDiscoverCustomModelProviderModelsMutation(): import("@tanstack/react-query").UseMutationResult<readonly AgentModel[], Error, {
294
78
  workspaceId: string;
295
- body: DiscoverCustomModelProviderModelsBodyDto;
79
+ command: DiscoverProviderModelsCommand;
296
80
  }, unknown>;
297
- export declare function useDiscoverCustomModelProviderModelsBySlugMutation(): import("@tanstack/react-query").UseMutationResult<{
298
- models: {
299
- id: string;
300
- label: string;
301
- }[];
302
- }, Error, {
81
+ export declare function useDiscoverCustomModelProviderModelsBySlugMutation(): import("@tanstack/react-query").UseMutationResult<readonly AgentModel[], Error, {
303
82
  workspaceId: string;
304
83
  providerId: ModelProviderRef;
305
- body: DiscoverCustomModelProviderModelsBySlugBodyDto;
84
+ command: DiscoverProviderModelsCommand;
306
85
  }, unknown>;
307
- export declare function useDeleteModelProviderConfigMutation(): import("@tanstack/react-query").UseMutationResult<void, Error, {
86
+ export declare function useDeleteModelProviderConfigMutation(): import("@tanstack/react-query").UseMutationResult<undefined, Error, {
308
87
  workspaceId: string;
309
88
  providerId: ModelProviderRef;
310
89
  }, unknown>;
311
- export declare function useUpdateModelProviderDefaultModelMutation(): import("@tanstack/react-query").UseMutationResult<{
312
- kind: "builtin";
313
- provider_id: string;
314
- default_model: string | null;
315
- created_at: string;
316
- updated_at: string;
317
- }, Error, {
90
+ export declare function useUpdateModelProviderDefaultModelMutation(): import("@tanstack/react-query").UseMutationResult<ProviderConfig, Error, {
318
91
  workspaceId: string;
319
- providerId: SupportedModelProviderId;
320
- body: UpdateModelProviderDefaultModelBodyDto;
92
+ providerId: string;
93
+ defaultModel: string | null;
321
94
  }, unknown>;
322
- export declare function useSetDefaultModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<{
323
- default_provider_id: string | null;
324
- }, Error, {
95
+ export declare function useSetDefaultModelProviderMutation(): import("@tanstack/react-query").UseMutationResult<DefaultModelProviderSelection, Error, {
325
96
  workspaceId: string;
326
- body: SetDefaultModelProviderBodyDto;
97
+ providerId: string;
327
98
  }, unknown>;
328
- export declare function useSetDefaultHarnessMutation(): import("@tanstack/react-query").UseMutationResult<{
329
- default_harness_id: "pi" | "claude";
330
- }, Error, {
99
+ export declare function useSetDefaultHarnessMutation(): import("@tanstack/react-query").UseMutationResult<DefaultHarnessSelection, Error, {
331
100
  workspaceId: string;
332
- body: SetDefaultHarnessBodyDto;
101
+ harnessId: HarnessId;
333
102
  }, unknown>;
103
+ export {};
334
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":"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"}
@@ -1,5 +1,8 @@
1
- import { apiRequest } from '@shipfox/client-api';
2
- import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
1
+ import { customModelProviderConfigDtoSchema, discoverCustomModelProviderModelsResponseSchema, listModelProviderConfigsResponseSchema, modelProviderCatalogResponseSchema, modelProviderConfigDtoSchema, setDefaultHarnessResponseSchema, setDefaultModelProviderResponseSchema } from '@shipfox/api-agent-dto';
2
+ import { checkedApiRequest, emptyResponseSchema } from '@shipfox/client-api';
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,70 +18,94 @@ 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
28
+ }));
29
+ }
30
+ export function modelProviderConfigsQueryOptions(workspaceId) {
31
+ return queryOptions({
32
+ queryKey: workspaceId ? modelProviderQueryKeys.configs(workspaceId) : [
33
+ ...modelProviderQueryKeys.all,
34
+ 'configs'
35
+ ],
36
+ enabled: Boolean(workspaceId),
37
+ queryFn: ({ signal })=>listModelProviderConfigs({
38
+ workspaceId: workspaceId ?? '',
39
+ signal
40
+ })
25
41
  });
26
42
  }
27
- export async function upsertModelProviderConfig({ workspaceId, providerId, body }) {
28
- 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}`, {
29
45
  method: 'PUT',
30
- body
31
- });
46
+ body: toProviderCredentialsBody(command)
47
+ }));
32
48
  }
33
- export async function createCustomModelProviderConfig({ workspaceId, body }) {
34
- 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`, {
35
51
  method: 'POST',
36
- body
37
- });
52
+ body: toCreateCustomProviderBody(command)
53
+ }));
38
54
  }
39
- export async function updateCustomModelProviderConfig({ workspaceId, providerId, body }) {
40
- 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}`, {
41
57
  method: 'PUT',
42
- body
43
- });
58
+ body: toUpdateCustomProviderBody(command)
59
+ }));
44
60
  }
45
- export async function discoverCustomModelProviderModels({ workspaceId, body }) {
46
- 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`, {
47
63
  method: 'POST',
48
- body
64
+ body: toDiscoverModelsBody(command)
49
65
  });
66
+ return response.models.map((model)=>({
67
+ id: model.id,
68
+ label: model.label
69
+ }));
50
70
  }
51
- export async function discoverCustomModelProviderModelsBySlug({ workspaceId, providerId, body }) {
52
- 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`, {
53
73
  method: 'POST',
54
- body
74
+ body: toDiscoverModelsBySlugBody(command)
55
75
  });
76
+ return response.models.map((model)=>({
77
+ id: model.id,
78
+ label: model.label
79
+ }));
56
80
  }
57
81
  export async function deleteModelProviderConfig({ workspaceId, providerId }) {
58
- return await apiRequest(`/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {
82
+ return await checkedApiRequest(emptyResponseSchema, `/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {
59
83
  method: 'DELETE'
60
84
  });
61
85
  }
62
- export async function updateModelProviderDefaultModel({ workspaceId, providerId, body }) {
63
- 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`, {
64
88
  method: 'PUT',
65
- body
66
- });
89
+ body: toDefaultModelBody(defaultModel)
90
+ }));
67
91
  }
68
- export async function setDefaultModelProvider({ workspaceId, body }) {
69
- 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`, {
70
94
  method: 'PUT',
71
- body
72
- });
95
+ body: toDefaultProviderBody(providerId)
96
+ }));
73
97
  }
74
- export async function setDefaultHarness({ workspaceId, body }) {
75
- 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`, {
76
100
  method: 'PUT',
77
- body
78
- });
101
+ body: toDefaultHarnessBody(harnessId)
102
+ }));
79
103
  }
80
104
  export function useModelProviderCatalogQuery() {
81
- return useQuery({
105
+ return useQuery(modelProviderCatalogQueryOptions());
106
+ }
107
+ export function modelProviderCatalogQueryOptions() {
108
+ return queryOptions({
82
109
  queryKey: modelProviderQueryKeys.catalog(),
83
110
  queryFn: ({ signal })=>getModelProviderCatalog({
84
111
  signal
@@ -87,17 +114,7 @@ export function useModelProviderCatalogQuery() {
87
114
  });
88
115
  }
89
116
  export function useModelProviderConfigsQuery(workspaceId) {
90
- return useQuery({
91
- queryKey: workspaceId ? modelProviderQueryKeys.configs(workspaceId) : [
92
- ...modelProviderQueryKeys.all,
93
- 'configs'
94
- ],
95
- enabled: Boolean(workspaceId),
96
- queryFn: ({ signal })=>listModelProviderConfigs({
97
- workspaceId: workspaceId ?? '',
98
- signal
99
- })
100
- });
117
+ return useQuery(modelProviderConfigsQueryOptions(workspaceId));
101
118
  }
102
119
  export function useUpsertModelProviderConfigMutation() {
103
120
  const queryClient = useQueryClient();