@shipfox/client-projects 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.
Files changed (46) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +39 -0
  3. package/dist/components/model-provider-reminder-banner.d.ts.map +1 -1
  4. package/dist/components/model-provider-reminder-banner.js +11 -15
  5. package/dist/components/model-provider-reminder-banner.js.map +1 -1
  6. package/dist/feature.d.ts +0 -10
  7. package/dist/feature.d.ts.map +1 -1
  8. package/dist/feature.js +0 -12
  9. package/dist/feature.js.map +1 -1
  10. package/dist/hooks/api/projects.d.ts +5 -1
  11. package/dist/hooks/api/projects.d.ts.map +1 -1
  12. package/dist/hooks/api/projects.js +12 -1
  13. package/dist/hooks/api/projects.js.map +1 -1
  14. package/dist/index.d.ts +1 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/pages/create-project-page.stories.d.ts.map +1 -1
  19. package/dist/pages/create-project-page.stories.js +1 -4
  20. package/dist/pages/create-project-page.stories.js.map +1 -1
  21. package/dist/tsconfig.test.tsbuildinfo +1 -1
  22. package/package.json +9 -43
  23. package/src/components/model-provider-reminder-banner.tsx +11 -18
  24. package/src/feature.ts +0 -12
  25. package/src/hooks/api/projects.ts +23 -1
  26. package/src/index.ts +1 -6
  27. package/src/pages/create-project-page.stories.tsx +1 -4
  28. package/test/pages.tsx +2 -17
  29. package/tsconfig.build.tsbuildinfo +1 -1
  30. package/dist/components/workspace-setup-guard.d.ts +0 -9
  31. package/dist/components/workspace-setup-guard.d.ts.map +0 -1
  32. package/dist/components/workspace-setup-guard.js +0 -160
  33. package/dist/components/workspace-setup-guard.js.map +0 -1
  34. package/dist/pages/project-workflows-page.d.ts +0 -4
  35. package/dist/pages/project-workflows-page.d.ts.map +0 -1
  36. package/dist/pages/project-workflows-page.js +0 -481
  37. package/dist/pages/project-workflows-page.js.map +0 -1
  38. package/dist/routes/workflows.d.ts +0 -5
  39. package/dist/routes/workflows.d.ts.map +0 -1
  40. package/dist/routes/workflows.js +0 -16
  41. package/dist/routes/workflows.js.map +0 -1
  42. package/src/components/workspace-setup-guard.test.tsx +0 -534
  43. package/src/components/workspace-setup-guard.tsx +0 -185
  44. package/src/pages/project-workflows-page.test.tsx +0 -258
  45. package/src/pages/project-workflows-page.tsx +0 -445
  46. package/src/routes/workflows.tsx +0 -10
@@ -1,9 +0,0 @@
1
- import { type WorkspaceSetupState } from '@shipfox/client-shell/runtime';
2
- import type { QueryClient } from '@tanstack/react-query';
3
- export interface WorkspaceSetupRouteOptions {
4
- queryClient: QueryClient;
5
- workspaceId: string;
6
- pathname: string;
7
- }
8
- export declare function loadWorkspaceSetupRoute({ queryClient, workspaceId, pathname, }: WorkspaceSetupRouteOptions): Promise<WorkspaceSetupState>;
9
- //# sourceMappingURL=workspace-setup-guard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-setup-guard.d.ts","sourceRoot":"","sources":["../../src/components/workspace-setup-guard.tsx"],"names":[],"mappings":"AAQA,OAAO,EAA0B,KAAK,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAChG,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAQvD,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,uBAAuB,CAAC,EAC5C,WAAW,EACX,WAAW,EACX,QAAQ,GACT,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA0D3D"}
@@ -1,160 +0,0 @@
1
- import { isModelProviderOnboardingDismissed, listModelProviderConfigs, modelProviderQueryKeys } from '@shipfox/client-agent';
2
- import { integrationsQueryKeys, listSourceConnections } from '@shipfox/client-integrations';
3
- import { WorkspaceSetupLoadError } from '@shipfox/client-shell/runtime';
4
- import { redirect } from '@tanstack/react-router';
5
- import { listProjects, projectsQueryKeys } from '#hooks/api/projects.js';
6
- const TRAILING_SLASHES_RE = /\/+$/u;
7
- const PROJECT_EXISTENCE_STALE_TIME_MS = 30_000;
8
- export async function loadWorkspaceSetupRoute({ queryClient, workspaceId, pathname }) {
9
- const projects = await fetchWorkspaceProjectExistence(queryClient, workspaceId);
10
- const normalizedPathname = normalizePath(pathname);
11
- const hasProject = projects.projects.length > 0;
12
- if (hasProject) {
13
- if (isIntegrationsIndexPath(normalizedPathname, workspaceId)) {
14
- throw redirect({
15
- to: '/workspaces/$wid/settings/integrations',
16
- params: {
17
- wid: workspaceId
18
- },
19
- replace: true
20
- });
21
- }
22
- return {
23
- hideProjectNavigation: false
24
- };
25
- }
26
- const sourceConnections = await fetchWorkspaceSourceConnections(queryClient, workspaceId);
27
- const hasSourceConnection = sourceConnections.connections.length > 0;
28
- if (!hasSourceConnection) {
29
- if (isIntegrationSetupPath(normalizedPathname, workspaceId)) {
30
- return {
31
- hideProjectNavigation: true
32
- };
33
- }
34
- throw redirect({
35
- to: '/workspaces/$wid/integrations',
36
- params: {
37
- wid: workspaceId
38
- },
39
- replace: true
40
- });
41
- }
42
- if (isAgentSettingsPath(normalizedPathname, workspaceId)) {
43
- return {
44
- hideProjectNavigation: true
45
- };
46
- }
47
- const providerHandled = await hasHandledModelProviderOnboarding(queryClient, workspaceId);
48
- if (!providerHandled) {
49
- if (isModelProviderOnboardingPath(normalizedPathname, workspaceId)) {
50
- return {
51
- hideProjectNavigation: true
52
- };
53
- }
54
- throw redirect({
55
- to: '/workspaces/$wid/model-provider',
56
- params: {
57
- wid: workspaceId
58
- },
59
- replace: true
60
- });
61
- }
62
- if (isProjectCreationPath(normalizedPathname, workspaceId)) {
63
- return {
64
- hideProjectNavigation: true
65
- };
66
- }
67
- throw redirect({
68
- to: '/workspaces/$wid/projects/new',
69
- params: {
70
- wid: workspaceId
71
- },
72
- replace: true
73
- });
74
- }
75
- async function fetchWorkspaceProjectExistence(queryClient, workspaceId) {
76
- const queryKey = projectsQueryKeys.exists(workspaceId);
77
- try {
78
- return await queryClient.fetchQuery({
79
- queryKey,
80
- queryFn: ({ signal })=>listProjects({
81
- workspaceId,
82
- limit: 1,
83
- signal
84
- }),
85
- // beforeLoad runs for every in-workspace navigation. Use a short
86
- // freshness window to avoid hot-path refetches while still detecting
87
- // project creation from another tab or actor.
88
- staleTime: PROJECT_EXISTENCE_STALE_TIME_MS
89
- });
90
- } catch (error) {
91
- const cached = queryClient.getQueryData(queryKey);
92
- if (cached !== undefined) return cached;
93
- throw new WorkspaceSetupLoadError(error);
94
- }
95
- }
96
- async function fetchWorkspaceSourceConnections(queryClient, workspaceId) {
97
- const queryKey = integrationsQueryKeys.sourceConnections(workspaceId);
98
- try {
99
- // Onboarding-only path: kept fresh (no staleTime) because some install
100
- // flows connect a source without invalidating this key, and a stale
101
- // "no connection" read would trap the user in the onboarding redirect.
102
- return await queryClient.fetchQuery({
103
- queryKey,
104
- queryFn: ({ signal })=>listSourceConnections({
105
- workspaceId,
106
- signal
107
- })
108
- });
109
- } catch (error) {
110
- const cached = queryClient.getQueryData(queryKey);
111
- if (cached !== undefined) return cached;
112
- throw new WorkspaceSetupLoadError(error);
113
- }
114
- }
115
- async function hasHandledModelProviderOnboarding(queryClient, workspaceId) {
116
- if (isModelProviderOnboardingDismissed(workspaceId)) return true;
117
- const configs = await fetchWorkspaceModelProviderConfigs(queryClient, workspaceId);
118
- return configs === null || configs.configs.length > 0;
119
- }
120
- async function fetchWorkspaceModelProviderConfigs(queryClient, workspaceId) {
121
- const queryKey = modelProviderQueryKeys.configs(workspaceId);
122
- try {
123
- return await queryClient.fetchQuery({
124
- queryKey,
125
- queryFn: ({ signal })=>listModelProviderConfigs({
126
- workspaceId,
127
- signal
128
- })
129
- });
130
- } catch {
131
- const cached = queryClient.getQueryData(queryKey);
132
- if (cached !== undefined) return cached;
133
- return null;
134
- }
135
- }
136
- function normalizePath(pathname) {
137
- if (pathname === '/') return pathname;
138
- return pathname.replace(TRAILING_SLASHES_RE, '');
139
- }
140
- function workspacePath(workspaceId, suffix) {
141
- return `/workspaces/${workspaceId}${suffix}`;
142
- }
143
- function isIntegrationsIndexPath(pathname, workspaceId) {
144
- return pathname === workspacePath(workspaceId, '/integrations');
145
- }
146
- function isIntegrationSetupPath(pathname, workspaceId) {
147
- const basePath = workspacePath(workspaceId, '/integrations');
148
- return pathname === basePath || pathname.startsWith(`${basePath}/`) || pathname === workspacePath(workspaceId, '/settings/integrations');
149
- }
150
- function isProjectCreationPath(pathname, workspaceId) {
151
- return pathname === workspacePath(workspaceId, '/projects/new');
152
- }
153
- function isModelProviderOnboardingPath(pathname, workspaceId) {
154
- return pathname === workspacePath(workspaceId, '/model-provider');
155
- }
156
- function isAgentSettingsPath(pathname, workspaceId) {
157
- return pathname === workspacePath(workspaceId, '/settings/agents');
158
- }
159
-
160
- //# sourceMappingURL=workspace-setup-guard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/workspace-setup-guard.tsx"],"sourcesContent":["import type {ListIntegrationConnectionsResponseDto} from '@shipfox/api-integration-core-dto';\nimport type {ListProjectsResponseDto} from '@shipfox/api-projects-dto';\nimport {\n isModelProviderOnboardingDismissed,\n listModelProviderConfigs,\n modelProviderQueryKeys,\n} from '@shipfox/client-agent';\nimport {integrationsQueryKeys, listSourceConnections} from '@shipfox/client-integrations';\nimport {WorkspaceSetupLoadError, type WorkspaceSetupState} from '@shipfox/client-shell/runtime';\nimport type {QueryClient} from '@tanstack/react-query';\nimport {redirect} from '@tanstack/react-router';\nimport {listProjects, projectsQueryKeys} from '#hooks/api/projects.js';\n\nconst TRAILING_SLASHES_RE = /\\/+$/u;\nconst PROJECT_EXISTENCE_STALE_TIME_MS = 30_000;\ntype ListModelProviderConfigsResponseDto = Awaited<ReturnType<typeof listModelProviderConfigs>>;\n\nexport interface WorkspaceSetupRouteOptions {\n queryClient: QueryClient;\n workspaceId: string;\n pathname: string;\n}\n\nexport async function loadWorkspaceSetupRoute({\n queryClient,\n workspaceId,\n pathname,\n}: WorkspaceSetupRouteOptions): Promise<WorkspaceSetupState> {\n const projects = await fetchWorkspaceProjectExistence(queryClient, workspaceId);\n const normalizedPathname = normalizePath(pathname);\n const hasProject = projects.projects.length > 0;\n\n if (hasProject) {\n if (isIntegrationsIndexPath(normalizedPathname, workspaceId)) {\n throw redirect({\n to: '/workspaces/$wid/settings/integrations',\n params: {wid: workspaceId},\n replace: true,\n });\n }\n\n return {hideProjectNavigation: false};\n }\n\n const sourceConnections = await fetchWorkspaceSourceConnections(queryClient, workspaceId);\n const hasSourceConnection = sourceConnections.connections.length > 0;\n\n if (!hasSourceConnection) {\n if (isIntegrationSetupPath(normalizedPathname, workspaceId)) {\n return {hideProjectNavigation: true};\n }\n\n throw redirect({\n to: '/workspaces/$wid/integrations',\n params: {wid: workspaceId},\n replace: true,\n });\n }\n\n if (isAgentSettingsPath(normalizedPathname, workspaceId)) {\n return {hideProjectNavigation: true};\n }\n\n const providerHandled = await hasHandledModelProviderOnboarding(queryClient, workspaceId);\n if (!providerHandled) {\n if (isModelProviderOnboardingPath(normalizedPathname, workspaceId)) {\n return {hideProjectNavigation: true};\n }\n\n throw redirect({\n to: '/workspaces/$wid/model-provider',\n params: {wid: workspaceId},\n replace: true,\n });\n }\n\n if (isProjectCreationPath(normalizedPathname, workspaceId)) {\n return {hideProjectNavigation: true};\n }\n\n throw redirect({\n to: '/workspaces/$wid/projects/new',\n params: {wid: workspaceId},\n replace: true,\n });\n}\n\nasync function fetchWorkspaceProjectExistence(queryClient: QueryClient, workspaceId: string) {\n const queryKey = projectsQueryKeys.exists(workspaceId);\n\n try {\n return await queryClient.fetchQuery({\n queryKey,\n queryFn: ({signal}) => listProjects({workspaceId, limit: 1, signal}),\n // beforeLoad runs for every in-workspace navigation. Use a short\n // freshness window to avoid hot-path refetches while still detecting\n // project creation from another tab or actor.\n staleTime: PROJECT_EXISTENCE_STALE_TIME_MS,\n });\n } catch (error) {\n const cached = queryClient.getQueryData<ListProjectsResponseDto>(queryKey);\n if (cached !== undefined) return cached;\n throw new WorkspaceSetupLoadError(error);\n }\n}\n\nasync function fetchWorkspaceSourceConnections(queryClient: QueryClient, workspaceId: string) {\n const queryKey = integrationsQueryKeys.sourceConnections(workspaceId);\n\n try {\n // Onboarding-only path: kept fresh (no staleTime) because some install\n // flows connect a source without invalidating this key, and a stale\n // \"no connection\" read would trap the user in the onboarding redirect.\n return await queryClient.fetchQuery({\n queryKey,\n queryFn: ({signal}) => listSourceConnections({workspaceId, signal}),\n });\n } catch (error) {\n const cached = queryClient.getQueryData<ListIntegrationConnectionsResponseDto>(queryKey);\n if (cached !== undefined) return cached;\n throw new WorkspaceSetupLoadError(error);\n }\n}\n\nasync function hasHandledModelProviderOnboarding(\n queryClient: QueryClient,\n workspaceId: string,\n): Promise<boolean> {\n if (isModelProviderOnboardingDismissed(workspaceId)) return true;\n\n const configs = await fetchWorkspaceModelProviderConfigs(queryClient, workspaceId);\n return configs === null || configs.configs.length > 0;\n}\n\nasync function fetchWorkspaceModelProviderConfigs(\n queryClient: QueryClient,\n workspaceId: string,\n): Promise<ListModelProviderConfigsResponseDto | null> {\n const queryKey = modelProviderQueryKeys.configs(workspaceId);\n\n try {\n return await queryClient.fetchQuery({\n queryKey,\n queryFn: ({signal}) => listModelProviderConfigs({workspaceId, signal}),\n });\n } catch {\n const cached = queryClient.getQueryData<ListModelProviderConfigsResponseDto>(queryKey);\n if (cached !== undefined) return cached;\n return null;\n }\n}\n\nfunction normalizePath(pathname: string) {\n if (pathname === '/') return pathname;\n return pathname.replace(TRAILING_SLASHES_RE, '');\n}\n\nfunction workspacePath(workspaceId: string, suffix: string) {\n return `/workspaces/${workspaceId}${suffix}`;\n}\n\nfunction isIntegrationsIndexPath(pathname: string, workspaceId: string) {\n return pathname === workspacePath(workspaceId, '/integrations');\n}\n\nfunction isIntegrationSetupPath(pathname: string, workspaceId: string) {\n const basePath = workspacePath(workspaceId, '/integrations');\n return (\n pathname === basePath ||\n pathname.startsWith(`${basePath}/`) ||\n pathname === workspacePath(workspaceId, '/settings/integrations')\n );\n}\n\nfunction isProjectCreationPath(pathname: string, workspaceId: string) {\n return pathname === workspacePath(workspaceId, '/projects/new');\n}\n\nfunction isModelProviderOnboardingPath(pathname: string, workspaceId: string) {\n return pathname === workspacePath(workspaceId, '/model-provider');\n}\n\nfunction isAgentSettingsPath(pathname: string, workspaceId: string) {\n return pathname === workspacePath(workspaceId, '/settings/agents');\n}\n"],"names":["isModelProviderOnboardingDismissed","listModelProviderConfigs","modelProviderQueryKeys","integrationsQueryKeys","listSourceConnections","WorkspaceSetupLoadError","redirect","listProjects","projectsQueryKeys","TRAILING_SLASHES_RE","PROJECT_EXISTENCE_STALE_TIME_MS","loadWorkspaceSetupRoute","queryClient","workspaceId","pathname","projects","fetchWorkspaceProjectExistence","normalizedPathname","normalizePath","hasProject","length","isIntegrationsIndexPath","to","params","wid","replace","hideProjectNavigation","sourceConnections","fetchWorkspaceSourceConnections","hasSourceConnection","connections","isIntegrationSetupPath","isAgentSettingsPath","providerHandled","hasHandledModelProviderOnboarding","isModelProviderOnboardingPath","isProjectCreationPath","queryKey","exists","fetchQuery","queryFn","signal","limit","staleTime","error","cached","getQueryData","undefined","configs","fetchWorkspaceModelProviderConfigs","workspacePath","suffix","basePath","startsWith"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export declare function ProjectWorkflowsPage({ projectId }: {
2
- projectId: string;
3
- }): import("react").JSX.Element;
4
- //# sourceMappingURL=project-workflows-page.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-workflows-page.d.ts","sourceRoot":"","sources":["../../src/pages/project-workflows-page.tsx"],"names":[],"mappings":"AAkCA,wBAAgB,oBAAoB,CAAC,EAAC,SAAS,EAAC,EAAE;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,+BAMpE"}