@shipfox/client-agent 17.0.0 → 22.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 +34 -0
- package/dist/components/add-custom-provider-card.d.ts.map +1 -1
- package/dist/components/add-custom-provider-card.js +11 -31
- package/dist/components/add-custom-provider-card.js.map +1 -1
- package/dist/components/available-provider-card.d.ts.map +1 -1
- package/dist/components/available-provider-card.js +11 -31
- package/dist/components/available-provider-card.js.map +1 -1
- package/dist/components/available-providers-grid.d.ts +0 -1
- package/dist/components/available-providers-grid.d.ts.map +1 -1
- package/dist/components/available-providers-grid.js +33 -27
- package/dist/components/available-providers-grid.js.map +1 -1
- package/dist/components/custom-model-provider-form.stories.js +1 -1
- package/dist/components/custom-model-provider-form.stories.js.map +1 -1
- package/dist/components/harnesses-section.d.ts.map +1 -1
- package/dist/components/harnesses-section.js +147 -134
- package/dist/components/harnesses-section.js.map +1 -1
- package/dist/components/harnesses-section.stories.js +1 -1
- package/dist/components/harnesses-section.stories.js.map +1 -1
- package/dist/components/model-provider-grid-skeleton.d.ts +4 -0
- package/dist/components/model-provider-grid-skeleton.d.ts.map +1 -0
- package/dist/components/model-provider-grid-skeleton.js +34 -0
- package/dist/components/model-provider-grid-skeleton.js.map +1 -0
- package/dist/components/model-provider-usage-modal.stories.js +1 -1
- package/dist/components/model-provider-usage-modal.stories.js.map +1 -1
- package/dist/components/model-providers-section.d.ts.map +1 -1
- package/dist/components/model-providers-section.js +253 -245
- package/dist/components/model-providers-section.js.map +1 -1
- package/dist/components/model-providers-section.stories.js +1 -1
- package/dist/components/model-providers-section.stories.js.map +1 -1
- package/dist/pages/model-provider-onboarding-page.d.ts.map +1 -1
- package/dist/pages/model-provider-onboarding-page.js +32 -64
- package/dist/pages/model-provider-onboarding-page.js.map +1 -1
- package/dist/pages/model-provider-onboarding-page.stories.js +1 -1
- package/dist/pages/model-provider-onboarding-page.stories.js.map +1 -1
- package/dist/routes/agents-settings.d.ts +3 -0
- package/dist/routes/agents-settings.js +3 -0
- package/dist/routes/agents-settings.js.map +1 -1
- package/dist/routes/model-provider.d.ts +3 -0
- package/dist/routes/model-provider.js +3 -0
- package/dist/routes/model-provider.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/components/add-custom-provider-card.tsx +9 -23
- package/src/components/available-provider-card.tsx +9 -23
- package/src/components/available-providers-grid.tsx +36 -29
- package/src/components/custom-model-provider-form.stories.tsx +1 -1
- package/src/components/harnesses-section.stories.tsx +1 -1
- package/src/components/harnesses-section.tsx +116 -106
- package/src/components/model-provider-grid-skeleton.tsx +21 -0
- package/src/components/model-provider-usage-modal.stories.tsx +1 -1
- package/src/components/model-providers-section.stories.tsx +1 -1
- package/src/components/model-providers-section.tsx +208 -191
- package/src/pages/model-provider-onboarding-page.stories.tsx +1 -1
- package/src/pages/model-provider-onboarding-page.tsx +26 -54
- package/src/routes/agents-settings.tsx +1 -0
- package/src/routes/model-provider.tsx +1 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/pages/model-provider-onboarding-page.stories.tsx"],"sourcesContent":["import type {ModelProviderCatalogEntryDto, ModelProviderConfigDto} from '@shipfox/api-agent-dto';\nimport {configureApiClient} from '@shipfox/client-api';\nimport {Toaster} from '@shipfox/react-ui/toast';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query';\nimport {useMemo} from 'react';\nimport {screen, userEvent, within} from 'storybook/test';\nimport {ModelProviderOnboardingPage} from './model-provider-onboarding-page.js';\n\nconst WORKSPACE_ID = '11111111-1111-4111-8111-111111111111';\n\ntype Scenario = 'available' | 'loading' | 'catalog-error' | 'no-providers' | 'long-names';\n\ninterface ModelProviderOnboardingStoryProps {\n scenario: Scenario;\n}\n\nconst CATALOG: ModelProviderCatalogEntryDto[] = [\n providerEntry({\n id: 'anthropic',\n label: 'Anthropic',\n default_model: 'claude-opus-4-8',\n models: [\n {id: 'claude-opus-4-8', label: 'Claude Opus 4.8'},\n {id: 'claude-haiku-4-5', label: 'Claude Haiku 4.5'},\n ],\n }),\n providerEntry({\n id: 'openai',\n label: 'OpenAI',\n default_model: 'gpt-5.5-pro',\n models: [\n {id: 'gpt-5.5-pro', label: 'GPT-5.5 Pro'},\n {id: 'gpt-5-mini', label: 'GPT-5 Mini'},\n ],\n }),\n providerEntry({\n id: 'xai',\n label: 'xAI',\n default_model: 'grok-code-fast-1',\n models: [{id: 'grok-code-fast-1', label: 'Grok Code Fast 1'}],\n }),\n providerEntry({\n id: 'openrouter',\n label: 'OpenRouter',\n default_model: 'openrouter/auto',\n models: [{id: 'openrouter/auto', label: 'OpenRouter Auto'}],\n }),\n providerEntry({\n id: 'google',\n label: 'Google Gemini',\n default_model: 'gemini-3-pro',\n models: [{id: 'gemini-3-pro', label: 'Gemini 3 Pro'}],\n }),\n providerEntry({\n id: 'mistral',\n label: 'Mistral AI',\n default_model: 'codestral-latest',\n models: [{id: 'codestral-latest', label: 'Codestral Latest'}],\n }),\n providerEntry({\n id: 'groq',\n label: 'Groq',\n default_model: 'llama-4-fast',\n models: [{id: 'llama-4-fast', label: 'Llama 4 Fast'}],\n }),\n providerEntry({\n id: 'deepseek',\n label: 'DeepSeek',\n default_model: 'deepseek-coder',\n models: [{id: 'deepseek-coder', label: 'DeepSeek Coder'}],\n }),\n providerEntry({\n id: 'moonshotai',\n label: 'Moonshot AI',\n default_model: 'kimi-k2',\n models: [{id: 'kimi-k2', label: 'Kimi K2'}],\n }),\n providerEntry({\n id: 'azure-openai-responses',\n label: 'Azure OpenAI Responses',\n default_model: 'gpt-5.5-pro',\n models: [{id: 'gpt-5.5-pro', label: 'GPT-5.5 Pro'}],\n }),\n providerEntry({\n id: 'amazon-bedrock',\n label: 'Amazon Bedrock',\n support_status: 'unsupported',\n credential_fields: [],\n unsupported_reason: 'AWS cloud credentials are not supported yet.',\n models: [],\n }),\n];\n\nfunction ModelProviderOnboardingStory({scenario}: ModelProviderOnboardingStoryProps) {\n configureApiClient({\n baseUrl: 'https://api.example.test',\n fetchImpl: fetchForScenario(scenario),\n });\n\n const queryClient = useMemo(\n () => new QueryClient({defaultOptions: {queries: {retry: false}}}),\n [],\n );\n\n return (\n <QueryClientProvider client={queryClient}>\n <div className=\"bg-background-neutral-background px-24 py-32\">\n <ModelProviderOnboardingPage\n workspaceId={WORKSPACE_ID}\n onSkip={() => undefined}\n onConfigured={() => undefined}\n />\n </div>\n <Toaster />\n </QueryClientProvider>\n );\n}\n\nconst meta = {\n title: 'Agent/ProviderOnboarding',\n component: ModelProviderOnboardingStory,\n parameters: {layout: 'fullscreen'},\n args: {scenario: 'available'},\n} satisfies Meta<typeof ModelProviderOnboardingStory>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Playground: Story = {};\n\nexport const Loading: Story = {\n args: {scenario: 'loading'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const CatalogError: Story = {\n args: {scenario: 'catalog-error'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const NoProvidersAvailable: Story = {\n args: {scenario: 'no-providers'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const LongNames: Story = {\n args: {scenario: 'long-names'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const FilteredProviders: Story = {\n args: {scenario: 'available'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n await userEvent.type(\n await canvas.findByRole('searchbox', {name: 'Search providers'}),\n 'openrouter',\n );\n await canvas.findByRole('button', {name: 'Configure OpenRouter'});\n },\n};\n\nexport const NoMatchingProviders: Story = {\n args: {scenario: 'available'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n await userEvent.type(\n await canvas.findByRole('searchbox', {name: 'Search providers'}),\n 'not-a-provider',\n );\n await canvas.findByRole('button', {name: 'Clear search'});\n },\n};\n\nexport const ConfigureModalOpen: Story = {\n args: {scenario: 'available'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n await userEvent.click(await canvas.findByRole('button', {name: 'Configure Anthropic'}));\n await screen.findByLabelText('API key');\n },\n};\n\nfunction fetchForScenario(scenario: Scenario): typeof fetch {\n return (input) => {\n const url = requestUrl(input);\n const request = input instanceof Request ? input : undefined;\n if (scenario === 'loading') return new Promise<Response>(() => undefined);\n if (url.pathname.endsWith('/agent/model-provider-catalog')) {\n if (scenario === 'catalog-error') return Promise.resolve(errorResponse());\n return Promise.resolve(jsonResponse({providers: catalogForScenario(scenario)}));\n }\n if (request?.method === 'PUT' && url.pathname.includes('/agent/model-providers/')) {\n return Promise.resolve(\n jsonResponse(\n providerConfig({\n provider_id: url.pathname.endsWith('/openai') ? 'openai' : 'anthropic',\n }),\n ),\n );\n }\n return Promise.resolve(jsonResponse({}, {status: 404}));\n };\n}\n\nfunction catalogForScenario(scenario: Scenario): ModelProviderCatalogEntryDto[] {\n if (scenario === 'no-providers') return [];\n if (scenario !== 'long-names') return CATALOG;\n return [\n providerEntry({\n id: 'anthropic',\n label: 'Anthropic Enterprise Production Claude Provider With Long Label',\n default_model: 'claude-opus-4-8',\n }),\n providerEntry({\n id: 'openai',\n label: 'OpenAI Platform Shared Workspace Credentials With Long Label',\n default_model: 'gpt-5.5-pro',\n models: [{id: 'gpt-5.5-pro', label: 'GPT-5.5 Pro'}],\n }),\n ];\n}\n\nfunction providerEntry(\n overrides: Partial<ModelProviderCatalogEntryDto> = {},\n): ModelProviderCatalogEntryDto {\n return {\n id: 'anthropic',\n label: 'Anthropic',\n support_status: 'supported',\n default_model: null,\n credential_fields: [{key: 'api_key', label: 'API key', secret: true}],\n unsupported_reason: null,\n models: [{id: 'claude-opus-4-8', label: 'Claude Opus 4.8'}],\n ...overrides,\n };\n}\n\nfunction providerConfig(\n overrides: Partial<Omit<ModelProviderConfigDto, 'kind'>> = {},\n): ModelProviderConfigDto {\n return {\n kind: 'builtin',\n provider_id: 'anthropic',\n default_model: null,\n created_at: '2026-05-08T00:00:00.000Z',\n updated_at: '2026-05-08T00:00:00.000Z',\n ...overrides,\n };\n}\n\nfunction requestUrl(input: RequestInfo | URL): URL {\n if (typeof input === 'string') return new URL(input);\n if (input instanceof URL) return input;\n return new URL(input.url);\n}\n\nfunction jsonResponse(body: unknown, init: ResponseInit = {}) {\n return new Response(JSON.stringify(body), {\n status: 200,\n headers: {'content-type': 'application/json'},\n ...init,\n });\n}\n\nfunction errorResponse() {\n return jsonResponse({code: 'server-error'}, {status: 500, statusText: 'Server error'});\n}\n"],"names":["configureApiClient","Toaster","QueryClient","QueryClientProvider","useMemo","screen","userEvent","within","ModelProviderOnboardingPage","WORKSPACE_ID","CATALOG","providerEntry","id","label","default_model","models","support_status","credential_fields","unsupported_reason","ModelProviderOnboardingStory","scenario","baseUrl","fetchImpl","fetchForScenario","queryClient","defaultOptions","queries","retry","client","div","className","workspaceId","onSkip","undefined","onConfigured","meta","title","component","parameters","layout","args","Playground","Loading","play","canvasElement","canvas","click","getByRole","name","CatalogError","NoProvidersAvailable","LongNames","FilteredProviders","type","findByRole","NoMatchingProviders","ConfigureModalOpen","findByLabelText","input","url","requestUrl","request","Request","Promise","pathname","endsWith","resolve","errorResponse","jsonResponse","providers","catalogForScenario","method","includes","providerConfig","provider_id","status","overrides","key","secret","kind","created_at","updated_at","URL","body","init","Response","JSON","stringify","headers","code","statusText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/pages/model-provider-onboarding-page.stories.tsx"],"sourcesContent":["import type {ModelProviderCatalogEntryDto, ModelProviderConfigDto} from '@shipfox/api-agent-dto';\nimport {configureApiClient} from '@shipfox/client-api';\nimport {Toaster} from '@shipfox/react-ui/toast';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query';\nimport {useMemo} from 'react';\nimport {screen, userEvent, within} from 'storybook/test';\nimport {ModelProviderOnboardingPage} from './model-provider-onboarding-page.js';\n\nconst WORKSPACE_ID = '11111111-1111-4111-8111-111111111111';\n\ntype Scenario = 'available' | 'loading' | 'catalog-error' | 'no-providers' | 'long-names';\n\ninterface ModelProviderOnboardingStoryProps {\n scenario: Scenario;\n}\n\nconst CATALOG: ModelProviderCatalogEntryDto[] = [\n providerEntry({\n id: 'anthropic',\n label: 'Anthropic',\n default_model: 'claude-opus-4-8',\n models: [\n {id: 'claude-opus-4-8', label: 'Claude Opus 4.8'},\n {id: 'claude-haiku-4-5', label: 'Claude Haiku 4.5'},\n ],\n }),\n providerEntry({\n id: 'openai',\n label: 'OpenAI',\n default_model: 'gpt-5.5-pro',\n models: [\n {id: 'gpt-5.5-pro', label: 'GPT-5.5 Pro'},\n {id: 'gpt-5-mini', label: 'GPT-5 Mini'},\n ],\n }),\n providerEntry({\n id: 'xai',\n label: 'xAI',\n default_model: 'grok-code-fast-1',\n models: [{id: 'grok-code-fast-1', label: 'Grok Code Fast 1'}],\n }),\n providerEntry({\n id: 'openrouter',\n label: 'OpenRouter',\n default_model: 'openrouter/auto',\n models: [{id: 'openrouter/auto', label: 'OpenRouter Auto'}],\n }),\n providerEntry({\n id: 'google',\n label: 'Google Gemini',\n default_model: 'gemini-3-pro',\n models: [{id: 'gemini-3-pro', label: 'Gemini 3 Pro'}],\n }),\n providerEntry({\n id: 'mistral',\n label: 'Mistral AI',\n default_model: 'codestral-latest',\n models: [{id: 'codestral-latest', label: 'Codestral Latest'}],\n }),\n providerEntry({\n id: 'groq',\n label: 'Groq',\n default_model: 'llama-4-fast',\n models: [{id: 'llama-4-fast', label: 'Llama 4 Fast'}],\n }),\n providerEntry({\n id: 'deepseek',\n label: 'DeepSeek',\n default_model: 'deepseek-coder',\n models: [{id: 'deepseek-coder', label: 'DeepSeek Coder'}],\n }),\n providerEntry({\n id: 'moonshotai',\n label: 'Moonshot AI',\n default_model: 'kimi-k2',\n models: [{id: 'kimi-k2', label: 'Kimi K2'}],\n }),\n providerEntry({\n id: 'azure-openai-responses',\n label: 'Azure OpenAI Responses',\n default_model: 'gpt-5.5-pro',\n models: [{id: 'gpt-5.5-pro', label: 'GPT-5.5 Pro'}],\n }),\n providerEntry({\n id: 'amazon-bedrock',\n label: 'Amazon Bedrock',\n support_status: 'unsupported',\n credential_fields: [],\n unsupported_reason: 'AWS cloud credentials are not supported yet.',\n models: [],\n }),\n];\n\nfunction ModelProviderOnboardingStory({scenario}: ModelProviderOnboardingStoryProps) {\n configureApiClient({\n baseUrl: 'https://api.example.test',\n fetchImpl: fetchForScenario(scenario),\n });\n\n const queryClient = useMemo(\n () => new QueryClient({defaultOptions: {queries: {retry: false}}}),\n [],\n );\n\n return (\n <QueryClientProvider client={queryClient}>\n <div className=\"bg-background-subtle-base px-24 py-32\">\n <ModelProviderOnboardingPage\n workspaceId={WORKSPACE_ID}\n onSkip={() => undefined}\n onConfigured={() => undefined}\n />\n </div>\n <Toaster />\n </QueryClientProvider>\n );\n}\n\nconst meta = {\n title: 'Agent/ProviderOnboarding',\n component: ModelProviderOnboardingStory,\n parameters: {layout: 'fullscreen'},\n args: {scenario: 'available'},\n} satisfies Meta<typeof ModelProviderOnboardingStory>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Playground: Story = {};\n\nexport const Loading: Story = {\n args: {scenario: 'loading'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const CatalogError: Story = {\n args: {scenario: 'catalog-error'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const NoProvidersAvailable: Story = {\n args: {scenario: 'no-providers'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const LongNames: Story = {\n args: {scenario: 'long-names'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n },\n};\n\nexport const FilteredProviders: Story = {\n args: {scenario: 'available'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n await userEvent.type(\n await canvas.findByRole('searchbox', {name: 'Search providers'}),\n 'openrouter',\n );\n await canvas.findByRole('button', {name: 'Configure OpenRouter'});\n },\n};\n\nexport const NoMatchingProviders: Story = {\n args: {scenario: 'available'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n await userEvent.type(\n await canvas.findByRole('searchbox', {name: 'Search providers'}),\n 'not-a-provider',\n );\n await canvas.findByRole('button', {name: 'Clear search'});\n },\n};\n\nexport const ConfigureModalOpen: Story = {\n args: {scenario: 'available'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await userEvent.click(canvas.getByRole('button', {name: 'Choose pi'}));\n await userEvent.click(await canvas.findByRole('button', {name: 'Configure Anthropic'}));\n await screen.findByLabelText('API key');\n },\n};\n\nfunction fetchForScenario(scenario: Scenario): typeof fetch {\n return (input) => {\n const url = requestUrl(input);\n const request = input instanceof Request ? input : undefined;\n if (scenario === 'loading') return new Promise<Response>(() => undefined);\n if (url.pathname.endsWith('/agent/model-provider-catalog')) {\n if (scenario === 'catalog-error') return Promise.resolve(errorResponse());\n return Promise.resolve(jsonResponse({providers: catalogForScenario(scenario)}));\n }\n if (request?.method === 'PUT' && url.pathname.includes('/agent/model-providers/')) {\n return Promise.resolve(\n jsonResponse(\n providerConfig({\n provider_id: url.pathname.endsWith('/openai') ? 'openai' : 'anthropic',\n }),\n ),\n );\n }\n return Promise.resolve(jsonResponse({}, {status: 404}));\n };\n}\n\nfunction catalogForScenario(scenario: Scenario): ModelProviderCatalogEntryDto[] {\n if (scenario === 'no-providers') return [];\n if (scenario !== 'long-names') return CATALOG;\n return [\n providerEntry({\n id: 'anthropic',\n label: 'Anthropic Enterprise Production Claude Provider With Long Label',\n default_model: 'claude-opus-4-8',\n }),\n providerEntry({\n id: 'openai',\n label: 'OpenAI Platform Shared Workspace Credentials With Long Label',\n default_model: 'gpt-5.5-pro',\n models: [{id: 'gpt-5.5-pro', label: 'GPT-5.5 Pro'}],\n }),\n ];\n}\n\nfunction providerEntry(\n overrides: Partial<ModelProviderCatalogEntryDto> = {},\n): ModelProviderCatalogEntryDto {\n return {\n id: 'anthropic',\n label: 'Anthropic',\n support_status: 'supported',\n default_model: null,\n credential_fields: [{key: 'api_key', label: 'API key', secret: true}],\n unsupported_reason: null,\n models: [{id: 'claude-opus-4-8', label: 'Claude Opus 4.8'}],\n ...overrides,\n };\n}\n\nfunction providerConfig(\n overrides: Partial<Omit<ModelProviderConfigDto, 'kind'>> = {},\n): ModelProviderConfigDto {\n return {\n kind: 'builtin',\n provider_id: 'anthropic',\n default_model: null,\n created_at: '2026-05-08T00:00:00.000Z',\n updated_at: '2026-05-08T00:00:00.000Z',\n ...overrides,\n };\n}\n\nfunction requestUrl(input: RequestInfo | URL): URL {\n if (typeof input === 'string') return new URL(input);\n if (input instanceof URL) return input;\n return new URL(input.url);\n}\n\nfunction jsonResponse(body: unknown, init: ResponseInit = {}) {\n return new Response(JSON.stringify(body), {\n status: 200,\n headers: {'content-type': 'application/json'},\n ...init,\n });\n}\n\nfunction errorResponse() {\n return jsonResponse({code: 'server-error'}, {status: 500, statusText: 'Server error'});\n}\n"],"names":["configureApiClient","Toaster","QueryClient","QueryClientProvider","useMemo","screen","userEvent","within","ModelProviderOnboardingPage","WORKSPACE_ID","CATALOG","providerEntry","id","label","default_model","models","support_status","credential_fields","unsupported_reason","ModelProviderOnboardingStory","scenario","baseUrl","fetchImpl","fetchForScenario","queryClient","defaultOptions","queries","retry","client","div","className","workspaceId","onSkip","undefined","onConfigured","meta","title","component","parameters","layout","args","Playground","Loading","play","canvasElement","canvas","click","getByRole","name","CatalogError","NoProvidersAvailable","LongNames","FilteredProviders","type","findByRole","NoMatchingProviders","ConfigureModalOpen","findByLabelText","input","url","requestUrl","request","Request","Promise","pathname","endsWith","resolve","errorResponse","jsonResponse","providers","catalogForScenario","method","includes","providerConfig","provider_id","status","overrides","key","secret","kind","created_at","updated_at","URL","body","init","Response","JSON","stringify","headers","code","statusText"],"mappings":"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"}
|
|
@@ -2,6 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { defineRoute, useActiveWorkspace } from '@shipfox/client-shell/runtime';
|
|
3
3
|
import { WorkspaceHarnessesSection, WorkspaceModelProvidersSection } from '#index.js';
|
|
4
4
|
export default defineRoute({
|
|
5
|
+
staticData: {
|
|
6
|
+
frame: 'content'
|
|
7
|
+
},
|
|
5
8
|
component: ()=>{
|
|
6
9
|
const workspace = useActiveWorkspace();
|
|
7
10
|
return /*#__PURE__*/ _jsxs("div", {
|
|
@@ -1 +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-region\">\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,
|
|
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 staticData: {frame: 'content'},\n component: () => {\n const workspace = useActiveWorkspace();\n return (\n <div className=\"flex flex-col gap-region\">\n <WorkspaceHarnessesSection workspaceId={workspace.id} />\n <WorkspaceModelProvidersSection workspaceId={workspace.id} />\n </div>\n );\n },\n});\n"],"names":["defineRoute","useActiveWorkspace","WorkspaceHarnessesSection","WorkspaceModelProvidersSection","staticData","frame","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,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAW;QACT,MAAMC,YAAYN;QAClB,qBACE,MAACO;YAAIC,WAAU;;8BACb,KAACP;oBAA0BQ,aAAaH,UAAUI,EAAE;;8BACpD,KAACR;oBAA+BO,aAAaH,UAAUI,EAAE;;;;IAG/D;AACF,GAAG"}
|
|
@@ -4,6 +4,9 @@ import { useNavigate } from '@tanstack/react-router';
|
|
|
4
4
|
import { ModelProviderOnboardingPage } from '#pages/model-provider-onboarding-page.js';
|
|
5
5
|
import { modelProviderRouteParams } from './inputs.js';
|
|
6
6
|
export default defineRoute({
|
|
7
|
+
staticData: {
|
|
8
|
+
frame: 'focused'
|
|
9
|
+
},
|
|
7
10
|
component: ()=>{
|
|
8
11
|
const { workspaceSlug } = useRouteParams(modelProviderRouteParams);
|
|
9
12
|
const workspace = useActiveWorkspace();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/model-provider.tsx"],"sourcesContent":["import {defineRoute, useActiveWorkspace, useRouteParams} from '@shipfox/client-shell/runtime';\nimport {useNavigate} from '@tanstack/react-router';\nimport {ModelProviderOnboardingPage} from '#pages/model-provider-onboarding-page.js';\nimport {modelProviderRouteParams} from './inputs.js';\n\nexport default defineRoute({\n component: () => {\n const {workspaceSlug} = useRouteParams(modelProviderRouteParams);\n const workspace = useActiveWorkspace();\n const navigate = useNavigate();\n const goToProjectCreation = () => {\n void navigate({to: '/w/$workspaceSlug/projects/new', params: {workspaceSlug}, replace: true});\n };\n return (\n <ModelProviderOnboardingPage\n workspaceId={workspace.id}\n onSkip={goToProjectCreation}\n onConfigured={goToProjectCreation}\n />\n );\n },\n});\n"],"names":["defineRoute","useActiveWorkspace","useRouteParams","useNavigate","ModelProviderOnboardingPage","modelProviderRouteParams","component","workspaceSlug","workspace","navigate","goToProjectCreation","to","params","replace","workspaceId","id","onSkip","onConfigured"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,kBAAkB,EAAEC,cAAc,QAAO,gCAAgC;AAC9F,SAAQC,WAAW,QAAO,yBAAyB;AACnD,SAAQC,2BAA2B,QAAO,2CAA2C;AACrF,SAAQC,wBAAwB,QAAO,cAAc;AAErD,eAAeL,YAAY;IACzBM,WAAW;QACT,MAAM,EAACC,aAAa,EAAC,
|
|
1
|
+
{"version":3,"sources":["../../src/routes/model-provider.tsx"],"sourcesContent":["import {defineRoute, useActiveWorkspace, useRouteParams} from '@shipfox/client-shell/runtime';\nimport {useNavigate} from '@tanstack/react-router';\nimport {ModelProviderOnboardingPage} from '#pages/model-provider-onboarding-page.js';\nimport {modelProviderRouteParams} from './inputs.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: () => {\n const {workspaceSlug} = useRouteParams(modelProviderRouteParams);\n const workspace = useActiveWorkspace();\n const navigate = useNavigate();\n const goToProjectCreation = () => {\n void navigate({to: '/w/$workspaceSlug/projects/new', params: {workspaceSlug}, replace: true});\n };\n return (\n <ModelProviderOnboardingPage\n workspaceId={workspace.id}\n onSkip={goToProjectCreation}\n onConfigured={goToProjectCreation}\n />\n );\n },\n});\n"],"names":["defineRoute","useActiveWorkspace","useRouteParams","useNavigate","ModelProviderOnboardingPage","modelProviderRouteParams","staticData","frame","component","workspaceSlug","workspace","navigate","goToProjectCreation","to","params","replace","workspaceId","id","onSkip","onConfigured"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,kBAAkB,EAAEC,cAAc,QAAO,gCAAgC;AAC9F,SAAQC,WAAW,QAAO,yBAAyB;AACnD,SAAQC,2BAA2B,QAAO,2CAA2C;AACrF,SAAQC,wBAAwB,QAAO,cAAc;AAErD,eAAeL,YAAY;IACzBM,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAW;QACT,MAAM,EAACC,aAAa,EAAC,GAAGP,eAAeG;QACvC,MAAMK,YAAYT;QAClB,MAAMU,WAAWR;QACjB,MAAMS,sBAAsB;YAC1B,KAAKD,SAAS;gBAACE,IAAI;gBAAkCC,QAAQ;oBAACL;gBAAa;gBAAGM,SAAS;YAAI;QAC7F;QACA,qBACE,KAACX;YACCY,aAAaN,UAAUO,EAAE;YACzBC,QAAQN;YACRO,cAAcP;;IAGpB;AACF,GAAG"}
|