@shipfox/client-agent 3.0.1 → 5.0.0
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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +27 -0
- package/dist/feature.d.ts +11 -0
- package/dist/feature.d.ts.map +1 -1
- package/dist/feature.js +14 -0
- package/dist/feature.js.map +1 -1
- package/dist/hooks/api/model-providers.d.ts +6 -1
- package/dist/hooks/api/model-providers.d.ts.map +1 -1
- package/dist/hooks/api/model-providers.js +15 -12
- package/dist/hooks/api/model-providers.js.map +1 -1
- package/dist/routes/agents-settings.d.ts +5 -0
- package/dist/routes/agents-settings.d.ts.map +1 -0
- package/dist/routes/agents-settings.js +21 -0
- package/dist/routes/agents-settings.js.map +1 -0
- package/dist/state/model-provider-onboarding.d.ts.map +1 -1
- package/dist/state/model-provider-onboarding.js +17 -13
- package/dist/state/model-provider-onboarding.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +5 -38
- package/src/feature.ts +14 -0
- package/src/hooks/api/model-providers.ts +31 -8
- package/src/routes/agents-settings.tsx +14 -0
- package/src/state/model-provider-onboarding.ts +18 -15
- package/tsconfig.build.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
$ shipfox-swc
|
|
2
|
-
Successfully compiled:
|
|
2
|
+
Successfully compiled: 31 files with swc (457.97ms)
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @shipfox/client-agent
|
|
2
2
|
|
|
3
|
+
## 5.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8d8cdef: Extracts workspace onboarding into a dedicated coordinator and shares its feature query policies.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- f1d6465: Moves workspace-settings and project-workflow route ownership from centralized packages into each feature's own route module, so a feature package declares and ships its own settings pages.
|
|
12
|
+
- Updated dependencies [de559bb]
|
|
13
|
+
- Updated dependencies [ffd727b]
|
|
14
|
+
- @shipfox/api-agent-dto@8.0.0
|
|
15
|
+
- @shipfox/client-shell@5.0.0
|
|
16
|
+
|
|
17
|
+
## 4.0.0
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- 2e5b718: Adds safe browser persistence and bounded callback deduplication across client flows.
|
|
22
|
+
- Updated dependencies [2e5b718]
|
|
23
|
+
- Updated dependencies [6b4a575]
|
|
24
|
+
- Updated dependencies [11b10f7]
|
|
25
|
+
- Updated dependencies [781a45b]
|
|
26
|
+
- @shipfox/client-ui@4.0.0
|
|
27
|
+
- @shipfox/client-shell@4.0.0
|
|
28
|
+
- @shipfox/client-api@4.0.0
|
|
29
|
+
|
|
3
30
|
## 3.0.1
|
|
4
31
|
|
|
5
32
|
### Patch Changes
|
package/dist/feature.d.ts
CHANGED
|
@@ -4,6 +4,17 @@ export declare const agentFeature: {
|
|
|
4
4
|
readonly path: "/workspaces/$wid/model-provider";
|
|
5
5
|
readonly parent: "workspaceLayout";
|
|
6
6
|
readonly impl: "@shipfox/client-agent/routes/model-provider";
|
|
7
|
+
}, {
|
|
8
|
+
readonly path: "/workspaces/$wid/settings/agents";
|
|
9
|
+
readonly parent: "workspaceSettings";
|
|
10
|
+
readonly impl: "@shipfox/client-agent/routes/agents-settings";
|
|
11
|
+
}];
|
|
12
|
+
readonly settingsSections: readonly [{
|
|
13
|
+
readonly id: "settings.agents";
|
|
14
|
+
readonly pathSegment: "agents";
|
|
15
|
+
readonly label: "Agents";
|
|
16
|
+
readonly icon: "robot2Line";
|
|
17
|
+
readonly order: 400;
|
|
7
18
|
}];
|
|
8
19
|
};
|
|
9
20
|
//# sourceMappingURL=feature.d.ts.map
|
package/dist/feature.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CAuBvB,CAAC"}
|
package/dist/feature.js
CHANGED
|
@@ -6,6 +6,20 @@ export const agentFeature = defineClientFeature({
|
|
|
6
6
|
path: '/workspaces/$wid/model-provider',
|
|
7
7
|
parent: 'workspaceLayout',
|
|
8
8
|
impl: '@shipfox/client-agent/routes/model-provider'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
path: '/workspaces/$wid/settings/agents',
|
|
12
|
+
parent: 'workspaceSettings',
|
|
13
|
+
impl: '@shipfox/client-agent/routes/agents-settings'
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
settingsSections: [
|
|
17
|
+
{
|
|
18
|
+
id: 'settings.agents',
|
|
19
|
+
pathSegment: 'agents',
|
|
20
|
+
label: 'Agents',
|
|
21
|
+
icon: 'robot2Line',
|
|
22
|
+
order: 400
|
|
9
23
|
}
|
|
10
24
|
]
|
|
11
25
|
});
|
package/dist/feature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/feature.ts"],"sourcesContent":["import {defineClientFeature} from '@shipfox/client-shell';\n\nexport const agentFeature = defineClientFeature({\n id: 'shipfox.agent',\n routes: [\n {\n path: '/workspaces/$wid/model-provider',\n parent: 'workspaceLayout',\n impl: '@shipfox/client-agent/routes/model-provider',\n },\n ],\n});\n"],"names":["defineClientFeature","agentFeature","id","routes","path","parent","impl"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,wBAAwB;AAE1D,OAAO,MAAMC,eAAeD,oBAAoB;IAC9CE,IAAI;IACJC,QAAQ;QACN;YACEC,MAAM;YACNC,QAAQ;YACRC,MAAM;QACR;KACD;AACH,GAAG"}
|
|
1
|
+
{"version":3,"sources":["../src/feature.ts"],"sourcesContent":["import {defineClientFeature} from '@shipfox/client-shell';\n\nexport const agentFeature = defineClientFeature({\n id: 'shipfox.agent',\n routes: [\n {\n path: '/workspaces/$wid/model-provider',\n parent: 'workspaceLayout',\n impl: '@shipfox/client-agent/routes/model-provider',\n },\n {\n path: '/workspaces/$wid/settings/agents',\n parent: 'workspaceSettings',\n impl: '@shipfox/client-agent/routes/agents-settings',\n },\n ],\n settingsSections: [\n {\n id: 'settings.agents',\n pathSegment: 'agents',\n label: 'Agents',\n icon: 'robot2Line',\n order: 400,\n },\n ],\n});\n"],"names":["defineClientFeature","agentFeature","id","routes","path","parent","impl","settingsSections","pathSegment","label","icon","order"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,wBAAwB;AAE1D,OAAO,MAAMC,eAAeD,oBAAoB;IAC9CE,IAAI;IACJC,QAAQ;QACN;YACEC,MAAM;YACNC,QAAQ;YACRC,MAAM;QACR;QACA;YACEF,MAAM;YACNC,QAAQ;YACRC,MAAM;QACR;KACD;IACDC,kBAAkB;QAChB;YACEL,IAAI;YACJM,aAAa;YACbC,OAAO;YACPC,MAAM;YACNC,OAAO;QACT;KACD;AACH,GAAG"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import type { CreateCustomModelProviderBodyDto, DiscoverCustomModelProviderModelsBodyDto, DiscoverCustomModelProviderModelsBySlugBodyDto, ModelProviderRef, SetDefaultHarnessBodyDto, SetDefaultModelProviderBodyDto, SupportedModelProviderId, UpdateCustomModelProviderBodyDto, UpdateModelProviderConfigBodyDto, UpdateModelProviderDefaultModelBodyDto } from '@shipfox/api-agent-dto';
|
|
1
|
+
import type { CreateCustomModelProviderBodyDto, DiscoverCustomModelProviderModelsBodyDto, DiscoverCustomModelProviderModelsBySlugBodyDto, ListModelProviderConfigsResponseDto, ModelProviderRef, SetDefaultHarnessBodyDto, SetDefaultModelProviderBodyDto, SupportedModelProviderId, UpdateCustomModelProviderBodyDto, UpdateModelProviderConfigBodyDto, UpdateModelProviderDefaultModelBodyDto } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { type FetchQueryOptions } from '@tanstack/react-query';
|
|
2
3
|
export declare const modelProviderQueryKeys: {
|
|
3
4
|
all: readonly ["model-providers"];
|
|
4
5
|
catalog: () => readonly ["model-providers", "catalog"];
|
|
5
6
|
configs: (workspaceId: string) => readonly ["model-providers", "configs", string];
|
|
6
7
|
};
|
|
8
|
+
type ModelProviderConfigsQueryKey = ReturnType<typeof modelProviderQueryKeys.configs> | readonly ['model-providers', 'configs'];
|
|
9
|
+
type ModelProviderConfigsQueryOptions = FetchQueryOptions<ListModelProviderConfigsResponseDto, Error, ListModelProviderConfigsResponseDto, ModelProviderConfigsQueryKey>;
|
|
7
10
|
export declare function getModelProviderCatalog({ signal }?: {
|
|
8
11
|
signal?: AbortSignal;
|
|
9
12
|
}): Promise<{
|
|
@@ -60,6 +63,7 @@ export declare function listModelProviderConfigs({ workspaceId, signal, }: {
|
|
|
60
63
|
default_provider_id: string | null;
|
|
61
64
|
default_harness_id: "pi" | "claude" | null;
|
|
62
65
|
}>;
|
|
66
|
+
export declare function modelProviderConfigsQueryOptions(workspaceId: string | undefined): ModelProviderConfigsQueryOptions;
|
|
63
67
|
export declare function upsertModelProviderConfig({ workspaceId, providerId, body, }: {
|
|
64
68
|
workspaceId: string;
|
|
65
69
|
providerId: SupportedModelProviderId;
|
|
@@ -331,4 +335,5 @@ export declare function useSetDefaultHarnessMutation(): import("@tanstack/react-
|
|
|
331
335
|
workspaceId: string;
|
|
332
336
|
body: SetDefaultHarnessBodyDto;
|
|
333
337
|
}, unknown>;
|
|
338
|
+
export {};
|
|
334
339
|
//# 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":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAEhC,wCAAwC,EACxC,8CAA8C,
|
|
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,5 @@
|
|
|
1
1
|
import { apiRequest } from '@shipfox/client-api';
|
|
2
|
-
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { queryOptions, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
|
3
3
|
export const modelProviderQueryKeys = {
|
|
4
4
|
all: [
|
|
5
5
|
'model-providers'
|
|
@@ -24,6 +24,19 @@ export async function listModelProviderConfigs({ workspaceId, signal }) {
|
|
|
24
24
|
signal
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
+
export function modelProviderConfigsQueryOptions(workspaceId) {
|
|
28
|
+
return queryOptions({
|
|
29
|
+
queryKey: workspaceId ? modelProviderQueryKeys.configs(workspaceId) : [
|
|
30
|
+
...modelProviderQueryKeys.all,
|
|
31
|
+
'configs'
|
|
32
|
+
],
|
|
33
|
+
enabled: Boolean(workspaceId),
|
|
34
|
+
queryFn: ({ signal })=>listModelProviderConfigs({
|
|
35
|
+
workspaceId: workspaceId ?? '',
|
|
36
|
+
signal
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
}
|
|
27
40
|
export async function upsertModelProviderConfig({ workspaceId, providerId, body }) {
|
|
28
41
|
return await apiRequest(`/workspaces/${workspaceId}/agent/model-providers/${providerId}`, {
|
|
29
42
|
method: 'PUT',
|
|
@@ -87,17 +100,7 @@ export function useModelProviderCatalogQuery() {
|
|
|
87
100
|
});
|
|
88
101
|
}
|
|
89
102
|
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
|
-
});
|
|
103
|
+
return useQuery(modelProviderConfigsQueryOptions(workspaceId));
|
|
101
104
|
}
|
|
102
105
|
export function useUpsertModelProviderConfigMutation() {
|
|
103
106
|
const queryClient = useQueryClient();
|
|
@@ -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 {useMutation, useQuery, useQueryClient} 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\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 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({\n queryKey: workspaceId\n ? modelProviderQueryKeys.configs(workspaceId)\n : [...modelProviderQueryKeys.all, 'configs'],\n enabled: Boolean(workspaceId),\n queryFn: ({signal}) => listModelProviderConfigs({workspaceId: workspaceId ?? '', signal}),\n });\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","useMutation","useQuery","useQueryClient","modelProviderQueryKeys","all","catalog","configs","workspaceId","getModelProviderCatalog","signal","listModelProviderConfigs","upsertModelProviderConfig","providerId","body","method","createCustomModelProviderConfig","updateCustomModelProviderConfig","discoverCustomModelProviderModels","discoverCustomModelProviderModelsBySlug","deleteModelProviderConfig","updateModelProviderDefaultModel","setDefaultModelProvider","setDefaultHarness","useModelProviderCatalogQuery","queryKey","queryFn","staleTime","useModelProviderConfigsQuery","enabled","Boolean","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 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":"AAmBA,SAAQA,UAAU,QAAO,sBAAsB;AAC/C,SAEEC,YAAY,EACZC,WAAW,EACXC,QAAQ,EACRC,cAAc,QACT,wBAAwB;AAE/B,OAAO,MAAMC,yBAAyB;IACpCC,KAAK;QAAC;KAAkB;IACxBC,SAAS,IAAM;eAAIF,uBAAuBC,GAAG;YAAE;SAAU;IACzDE,SAAS,CAACC,cACR;eAAIJ,uBAAuBC,GAAG;YAAE;YAAWG;SAAY;AAC3D,EAAE;AAaF,OAAO,eAAeC,wBAAwB,EAACC,MAAM,EAAyB,GAAG,CAAC,CAAC;IACjF,OAAO,MAAMX,WAA4C,iCAAiC;QACxFW;IACF;AACF;AAEA,OAAO,eAAeC,yBAAyB,EAC7CH,WAAW,EACXE,MAAM,EAIP;IACC,OAAO,MAAMX,WACX,CAAC,YAAY,EAAES,YAAY,sBAAsB,CAAC,EAClD;QAACE;IAAM;AAEX;AAEA,OAAO,SAASE,iCACdJ,WAA+B;IAE/B,OAAOR,aAAa;QAClBa,UAAUL,cACNJ,uBAAuBG,OAAO,CAACC,eAC9B;eAAIJ,uBAAuBC,GAAG;YAAE;SAAU;QAC/CS,SAASC,QAAQP;QACjBQ,SAAS,CAAC,EAACN,MAAM,EAAC,GAAKC,yBAAyB;gBAACH,aAAaA,eAAe;gBAAIE;YAAM;IACzF;AACF;AAEA,OAAO,eAAeO,0BAA0B,EAC9CT,WAAW,EACXU,UAAU,EACVC,IAAI,EAKL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,uBAAuB,EAAEU,YAAY,EAChE;QAACE,QAAQ;QAAOD;IAAI;AAExB;AAEA,OAAO,eAAeE,gCAAgC,EACpDb,WAAW,EACXW,IAAI,EAIL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,6BAA6B,CAAC,EACzD;QAACY,QAAQ;QAAQD;IAAI;AAEzB;AAEA,OAAO,eAAeG,gCAAgC,EACpDd,WAAW,EACXU,UAAU,EACVC,IAAI,EAKL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,8BAA8B,EAAEU,YAAY,EACvE;QAACE,QAAQ;QAAOD;IAAI;AAExB;AAEA,OAAO,eAAeI,kCAAkC,EACtDf,WAAW,EACXW,IAAI,EAIL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,6CAA6C,CAAC,EACzE;QAACY,QAAQ;QAAQD;IAAI;AAEzB;AAEA,OAAO,eAAeK,wCAAwC,EAC5DhB,WAAW,EACXU,UAAU,EACVC,IAAI,EAKL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,8BAA8B,EAAEU,WAAW,gBAAgB,CAAC,EACvF;QAACE,QAAQ;QAAQD;IAAI;AAEzB;AAEA,OAAO,eAAeM,0BAA0B,EAC9CjB,WAAW,EACXU,UAAU,EAIX;IACC,OAAO,MAAMnB,WAAiB,CAAC,YAAY,EAAES,YAAY,uBAAuB,EAAEU,YAAY,EAAE;QAC9FE,QAAQ;IACV;AACF;AAEA,OAAO,eAAeM,gCAAgC,EACpDlB,WAAW,EACXU,UAAU,EACVC,IAAI,EAKL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,uBAAuB,EAAEU,WAAW,cAAc,CAAC,EAC9E;QAACE,QAAQ;QAAOD;IAAI;AAExB;AAEA,OAAO,eAAeQ,wBAAwB,EAC5CnB,WAAW,EACXW,IAAI,EAIL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,6BAA6B,CAAC,EACzD;QAACY,QAAQ;QAAOD;IAAI;AAExB;AAEA,OAAO,eAAeS,kBAAkB,EACtCpB,WAAW,EACXW,IAAI,EAIL;IACC,OAAO,MAAMpB,WACX,CAAC,YAAY,EAAES,YAAY,sBAAsB,CAAC,EAClD;QAACY,QAAQ;QAAOD;IAAI;AAExB;AAEA,OAAO,SAASU;IACd,OAAO3B,SAAS;QACdW,UAAUT,uBAAuBE,OAAO;QACxCU,SAAS,CAAC,EAACN,MAAM,EAAC,GAAKD,wBAAwB;gBAACC;YAAM;QACtDoB,WAAW,OAAO,KAAK;IACzB;AACF;AAEA,OAAO,SAASC,6BAA6BvB,WAA+B;IAC1E,OAAON,SAASU,iCAAiCJ;AACnD;AAEA,OAAO,SAASwB;IACd,MAAMC,cAAc9B;IACpB,OAAOF,YAAY;QACjBiC,YAAYjB;QACZkB,WAAW,OAAOC,SAASC;YACzB,MAAMJ,YAAYK,iBAAiB,CAAC;gBAClCzB,UAAUT,uBAAuBG,OAAO,CAAC8B,UAAU7B,WAAW;YAChE;QACF;IACF;AACF;AAEA,OAAO,SAAS+B;IACd,MAAMN,cAAc9B;IACpB,OAAOF,YAAY;QACjBiC,YAAYb;QACZc,WAAW,OAAOC,SAASC;YACzB,MAAMJ,YAAYK,iBAAiB,CAAC;gBAClCzB,UAAUT,uBAAuBG,OAAO,CAAC8B,UAAU7B,WAAW;YAChE;QACF;IACF;AACF;AAEA,OAAO,SAASgC;IACd,MAAMP,cAAc9B;IACpB,OAAOF,YAAY;QACjBiC,YAAYZ;QACZa,WAAW,OAAOC,SAASC;YACzB,MAAMJ,YAAYK,iBAAiB,CAAC;gBAClCzB,UAAUT,uBAAuBG,OAAO,CAAC8B,UAAU7B,WAAW;YAChE;QACF;IACF;AACF;AAEA,OAAO,SAASiC;IACd,OAAOxC,YAAY;QAACiC,YAAYX;IAAiC;AACnE;AAEA,OAAO,SAASmB;IACd,OAAOzC,YAAY;QAACiC,YAAYV;IAAuC;AACzE;AAEA,OAAO,SAASmB;IACd,MAAMV,cAAc9B;IACpB,OAAOF,YAAY;QACjBiC,YAAYT;QACZU,WAAW,OAAOC,SAASC;YACzB,MAAMJ,YAAYK,iBAAiB,CAAC;gBAClCzB,UAAUT,uBAAuBG,OAAO,CAAC8B,UAAU7B,WAAW;YAChE;QACF;IACF;AACF;AAEA,OAAO,SAASoC;IACd,MAAMX,cAAc9B;IACpB,OAAOF,YAAY;QACjBiC,YAAYR;QACZS,WAAW,OAAOC,SAASC;YACzB,MAAMJ,YAAYK,iBAAiB,CAAC;gBAClCzB,UAAUT,uBAAuBG,OAAO,CAAC8B,UAAU7B,WAAW;YAChE;QACF;IACF;AACF;AAEA,OAAO,SAASqC;IACd,MAAMZ,cAAc9B;IACpB,OAAOF,YAAY;QACjBiC,YAAYP;QACZQ,WAAW,OAAOC,SAASC;YACzB,MAAMJ,YAAYK,iBAAiB,CAAC;gBAClCzB,UAAUT,uBAAuBG,OAAO,CAAC8B,UAAU7B,WAAW;YAChE;QACF;IACF;AACF;AAEA,OAAO,SAASsC;IACd,MAAMb,cAAc9B;IACpB,OAAOF,YAAY;QACjBiC,YAAYN;QACZO,WAAW,OAAOC,SAASC;YACzB,MAAMJ,YAAYK,iBAAiB,CAAC;gBAClCzB,UAAUT,uBAAuBG,OAAO,CAAC8B,UAAU7B,WAAW;YAChE;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-settings.d.ts","sourceRoot":"","sources":["../../src/routes/agents-settings.tsx"],"names":[],"mappings":";;;AAGA,wBAUG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { defineRoute, useActiveWorkspace } from '@shipfox/client-shell/runtime';
|
|
3
|
+
import { WorkspaceHarnessesSection, WorkspaceModelProvidersSection } from '#index.js';
|
|
4
|
+
export default defineRoute({
|
|
5
|
+
component: ()=>{
|
|
6
|
+
const workspace = useActiveWorkspace();
|
|
7
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
8
|
+
className: "flex flex-col gap-32",
|
|
9
|
+
children: [
|
|
10
|
+
/*#__PURE__*/ _jsx(WorkspaceHarnessesSection, {
|
|
11
|
+
workspaceId: workspace.id
|
|
12
|
+
}),
|
|
13
|
+
/*#__PURE__*/ _jsx(WorkspaceModelProvidersSection, {
|
|
14
|
+
workspaceId: workspace.id
|
|
15
|
+
})
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=agents-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/routes/agents-settings.tsx"],"sourcesContent":["import {defineRoute, useActiveWorkspace} from '@shipfox/client-shell/runtime';\nimport {WorkspaceHarnessesSection, WorkspaceModelProvidersSection} from '#index.js';\n\nexport default defineRoute({\n component: () => {\n const workspace = useActiveWorkspace();\n return (\n <div className=\"flex flex-col gap-32\">\n <WorkspaceHarnessesSection workspaceId={workspace.id} />\n <WorkspaceModelProvidersSection workspaceId={workspace.id} />\n </div>\n );\n },\n});\n"],"names":["defineRoute","useActiveWorkspace","WorkspaceHarnessesSection","WorkspaceModelProvidersSection","component","workspace","div","className","workspaceId","id"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,kBAAkB,QAAO,gCAAgC;AAC9E,SAAQC,yBAAyB,EAAEC,8BAA8B,QAAO,YAAY;AAEpF,eAAeH,YAAY;IACzBI,WAAW;QACT,MAAMC,YAAYJ;QAClB,qBACE,MAACK;YAAIC,WAAU;;8BACb,KAACL;oBAA0BM,aAAaH,UAAUI,EAAE;;8BACpD,KAACN;oBAA+BK,aAAaH,UAAUI,EAAE;;;;IAG/D;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-provider-onboarding.d.ts","sourceRoot":"","sources":["../../src/state/model-provider-onboarding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-provider-onboarding.d.ts","sourceRoot":"","sources":["../../src/state/model-provider-onboarding.ts"],"names":[],"mappings":"AAmBA,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAIxE"}
|
|
@@ -1,24 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
import { createTypedBrowserStorage, localStorageOrUndefined } from '@shipfox/client-ui';
|
|
2
|
+
const dismissedStorage = createTypedBrowserStorage(localStorageOrUndefined, {
|
|
3
|
+
key: 'shipfox.modelProviderOnboardingDismissed',
|
|
4
|
+
lifetime: 'persistent',
|
|
5
|
+
principalScope: 'workspace',
|
|
6
|
+
serialize: (dismissed)=>JSON.stringify(dismissed),
|
|
7
|
+
parse: (raw)=>{
|
|
8
|
+
try {
|
|
9
|
+
const parsed = JSON.parse(raw);
|
|
10
|
+
return isDismissedMap(parsed) ? parsed : undefined;
|
|
11
|
+
} catch {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
2
16
|
export function isModelProviderOnboardingDismissed(workspaceId) {
|
|
3
17
|
return Boolean(readDismissedMap()[workspaceId]);
|
|
4
18
|
}
|
|
5
19
|
export function dismissModelProviderOnboarding(workspaceId) {
|
|
6
|
-
if (typeof window === 'undefined') return;
|
|
7
20
|
const dismissed = readDismissedMap();
|
|
8
21
|
dismissed[workspaceId] = true;
|
|
9
|
-
|
|
22
|
+
dismissedStorage.write(dismissed);
|
|
10
23
|
}
|
|
11
24
|
function readDismissedMap() {
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
const raw = window.localStorage.getItem(MODEL_PROVIDER_ONBOARDING_STORAGE_KEY);
|
|
15
|
-
if (!raw) return {};
|
|
16
|
-
const parsed = JSON.parse(raw);
|
|
17
|
-
if (!isDismissedMap(parsed)) return {};
|
|
18
|
-
return parsed;
|
|
19
|
-
} catch {
|
|
20
|
-
return {};
|
|
21
|
-
}
|
|
25
|
+
return dismissedStorage.read() ?? {};
|
|
22
26
|
}
|
|
23
27
|
function isDismissedMap(value) {
|
|
24
28
|
if (typeof value !== 'object' || value === null || Array.isArray(value)) return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/model-provider-onboarding.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/state/model-provider-onboarding.ts"],"sourcesContent":["import {createTypedBrowserStorage, localStorageOrUndefined} from '@shipfox/client-ui';\n\ntype DismissedMap = Record<string, true>;\n\nconst dismissedStorage = createTypedBrowserStorage(localStorageOrUndefined, {\n key: 'shipfox.modelProviderOnboardingDismissed',\n lifetime: 'persistent',\n principalScope: 'workspace',\n serialize: (dismissed: DismissedMap) => JSON.stringify(dismissed),\n parse: (raw) => {\n try {\n const parsed: unknown = JSON.parse(raw);\n return isDismissedMap(parsed) ? parsed : undefined;\n } catch {\n return undefined;\n }\n },\n});\n\nexport function isModelProviderOnboardingDismissed(workspaceId: string): boolean {\n return Boolean(readDismissedMap()[workspaceId]);\n}\n\nexport function dismissModelProviderOnboarding(workspaceId: string): void {\n const dismissed = readDismissedMap();\n dismissed[workspaceId] = true;\n dismissedStorage.write(dismissed);\n}\n\nfunction readDismissedMap(): DismissedMap {\n return dismissedStorage.read() ?? {};\n}\n\nfunction isDismissedMap(value: unknown): value is DismissedMap {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false;\n return Object.values(value).every((entry) => entry === true);\n}\n"],"names":["createTypedBrowserStorage","localStorageOrUndefined","dismissedStorage","key","lifetime","principalScope","serialize","dismissed","JSON","stringify","parse","raw","parsed","isDismissedMap","undefined","isModelProviderOnboardingDismissed","workspaceId","Boolean","readDismissedMap","dismissModelProviderOnboarding","write","read","value","Array","isArray","Object","values","every","entry"],"mappings":"AAAA,SAAQA,yBAAyB,EAAEC,uBAAuB,QAAO,qBAAqB;AAItF,MAAMC,mBAAmBF,0BAA0BC,yBAAyB;IAC1EE,KAAK;IACLC,UAAU;IACVC,gBAAgB;IAChBC,WAAW,CAACC,YAA4BC,KAAKC,SAAS,CAACF;IACvDG,OAAO,CAACC;QACN,IAAI;YACF,MAAMC,SAAkBJ,KAAKE,KAAK,CAACC;YACnC,OAAOE,eAAeD,UAAUA,SAASE;QAC3C,EAAE,OAAM;YACN,OAAOA;QACT;IACF;AACF;AAEA,OAAO,SAASC,mCAAmCC,WAAmB;IACpE,OAAOC,QAAQC,kBAAkB,CAACF,YAAY;AAChD;AAEA,OAAO,SAASG,+BAA+BH,WAAmB;IAChE,MAAMT,YAAYW;IAClBX,SAAS,CAACS,YAAY,GAAG;IACzBd,iBAAiBkB,KAAK,CAACb;AACzB;AAEA,SAASW;IACP,OAAOhB,iBAAiBmB,IAAI,MAAM,CAAC;AACrC;AAEA,SAASR,eAAeS,KAAc;IACpC,IAAI,OAAOA,UAAU,YAAYA,UAAU,QAAQC,MAAMC,OAAO,CAACF,QAAQ,OAAO;IAChF,OAAOG,OAAOC,MAAM,CAACJ,OAAOK,KAAK,CAAC,CAACC,QAAUA,UAAU;AACzD"}
|