@shipfox/client-agent 0.2.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 (182) hide show
  1. package/.storybook/main.ts +1 -0
  2. package/.storybook/preview.css +4 -0
  3. package/.storybook/preview.tsx +56 -0
  4. package/.turbo/turbo-build.log +2 -0
  5. package/.turbo/turbo-type$colon$emit.log +1 -0
  6. package/.turbo/turbo-type.log +1 -0
  7. package/CHANGELOG.md +93 -0
  8. package/LICENSE +21 -0
  9. package/dist/components/add-custom-provider-card.d.ts +4 -0
  10. package/dist/components/add-custom-provider-card.d.ts.map +1 -0
  11. package/dist/components/add-custom-provider-card.js +41 -0
  12. package/dist/components/add-custom-provider-card.js.map +1 -0
  13. package/dist/components/agent-workflow-example.d.ts +11 -0
  14. package/dist/components/agent-workflow-example.d.ts.map +1 -0
  15. package/dist/components/agent-workflow-example.js +38 -0
  16. package/dist/components/agent-workflow-example.js.map +1 -0
  17. package/dist/components/available-provider-card.d.ts +6 -0
  18. package/dist/components/available-provider-card.d.ts.map +1 -0
  19. package/dist/components/available-provider-card.js +41 -0
  20. package/dist/components/available-provider-card.js.map +1 -0
  21. package/dist/components/available-providers-grid.d.ts +10 -0
  22. package/dist/components/available-providers-grid.d.ts.map +1 -0
  23. package/dist/components/available-providers-grid.js +89 -0
  24. package/dist/components/available-providers-grid.js.map +1 -0
  25. package/dist/components/change-default-model-form.d.ts +9 -0
  26. package/dist/components/change-default-model-form.d.ts.map +1 -0
  27. package/dist/components/change-default-model-form.js +98 -0
  28. package/dist/components/change-default-model-form.js.map +1 -0
  29. package/dist/components/custom-model-provider-api-options.d.ts +7 -0
  30. package/dist/components/custom-model-provider-api-options.d.ts.map +1 -0
  31. package/dist/components/custom-model-provider-api-options.js +23 -0
  32. package/dist/components/custom-model-provider-api-options.js.map +1 -0
  33. package/dist/components/custom-model-provider-form.d.ts +8 -0
  34. package/dist/components/custom-model-provider-form.d.ts.map +1 -0
  35. package/dist/components/custom-model-provider-form.js +667 -0
  36. package/dist/components/custom-model-provider-form.js.map +1 -0
  37. package/dist/components/custom-model-provider-form.stories.d.ts +20 -0
  38. package/dist/components/custom-model-provider-form.stories.d.ts.map +1 -0
  39. package/dist/components/custom-model-provider-form.stories.js +104 -0
  40. package/dist/components/custom-model-provider-form.stories.js.map +1 -0
  41. package/dist/components/custom-model-provider-payload.d.ts +39 -0
  42. package/dist/components/custom-model-provider-payload.d.ts.map +1 -0
  43. package/dist/components/custom-model-provider-payload.js +203 -0
  44. package/dist/components/custom-model-provider-payload.js.map +1 -0
  45. package/dist/components/custom-model-provider-slug.d.ts +3 -0
  46. package/dist/components/custom-model-provider-slug.d.ts.map +1 -0
  47. package/dist/components/custom-model-provider-slug.js +14 -0
  48. package/dist/components/custom-model-provider-slug.js.map +1 -0
  49. package/dist/components/default-model-field.d.ts +16 -0
  50. package/dist/components/default-model-field.d.ts.map +1 -0
  51. package/dist/components/default-model-field.js +60 -0
  52. package/dist/components/default-model-field.js.map +1 -0
  53. package/dist/components/form-errors.d.ts +11 -0
  54. package/dist/components/form-errors.d.ts.map +1 -0
  55. package/dist/components/form-errors.js +101 -0
  56. package/dist/components/form-errors.js.map +1 -0
  57. package/dist/components/harness-availability.d.ts +8 -0
  58. package/dist/components/harness-availability.d.ts.map +1 -0
  59. package/dist/components/harness-availability.js +16 -0
  60. package/dist/components/harness-availability.js.map +1 -0
  61. package/dist/components/harnesses-section.d.ts +4 -0
  62. package/dist/components/harnesses-section.d.ts.map +1 -0
  63. package/dist/components/harnesses-section.js +249 -0
  64. package/dist/components/harnesses-section.js.map +1 -0
  65. package/dist/components/harnesses-section.stories.d.ts +25 -0
  66. package/dist/components/harnesses-section.stories.d.ts.map +1 -0
  67. package/dist/components/harnesses-section.stories.js +138 -0
  68. package/dist/components/harnesses-section.stories.js.map +1 -0
  69. package/dist/components/model-provider-usage-modal.d.ts +11 -0
  70. package/dist/components/model-provider-usage-modal.d.ts.map +1 -0
  71. package/dist/components/model-provider-usage-modal.js +349 -0
  72. package/dist/components/model-provider-usage-modal.js.map +1 -0
  73. package/dist/components/model-provider-usage-modal.stories.d.ts +21 -0
  74. package/dist/components/model-provider-usage-modal.stories.d.ts.map +1 -0
  75. package/dist/components/model-provider-usage-modal.stories.js +115 -0
  76. package/dist/components/model-provider-usage-modal.stories.js.map +1 -0
  77. package/dist/components/model-provider-usage-target.d.ts +14 -0
  78. package/dist/components/model-provider-usage-target.d.ts.map +1 -0
  79. package/dist/components/model-provider-usage-target.js +20 -0
  80. package/dist/components/model-provider-usage-target.js.map +1 -0
  81. package/dist/components/model-providers-section.d.ts +4 -0
  82. package/dist/components/model-providers-section.d.ts.map +1 -0
  83. package/dist/components/model-providers-section.js +668 -0
  84. package/dist/components/model-providers-section.js.map +1 -0
  85. package/dist/components/model-providers-section.stories.d.ts +32 -0
  86. package/dist/components/model-providers-section.stories.d.ts.map +1 -0
  87. package/dist/components/model-providers-section.stories.js +442 -0
  88. package/dist/components/model-providers-section.stories.js.map +1 -0
  89. package/dist/components/provider-search.d.ts +4 -0
  90. package/dist/components/provider-search.d.ts.map +1 -0
  91. package/dist/components/provider-search.js +13 -0
  92. package/dist/components/provider-search.js.map +1 -0
  93. package/dist/components/supported-model-provider-catalog-entry.d.ts +8 -0
  94. package/dist/components/supported-model-provider-catalog-entry.d.ts.map +1 -0
  95. package/dist/components/supported-model-provider-catalog-entry.js +9 -0
  96. package/dist/components/supported-model-provider-catalog-entry.js.map +1 -0
  97. package/dist/components/test-and-save-form.d.ts +10 -0
  98. package/dist/components/test-and-save-form.d.ts.map +1 -0
  99. package/dist/components/test-and-save-form.js +138 -0
  100. package/dist/components/test-and-save-form.js.map +1 -0
  101. package/dist/feature.d.ts +9 -0
  102. package/dist/feature.d.ts.map +1 -0
  103. package/dist/feature.js +13 -0
  104. package/dist/feature.js.map +1 -0
  105. package/dist/hooks/api/model-providers.d.ts +334 -0
  106. package/dist/hooks/api/model-providers.d.ts.map +1 -0
  107. package/dist/hooks/api/model-providers.js +190 -0
  108. package/dist/hooks/api/model-providers.js.map +1 -0
  109. package/dist/index.d.ts +9 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +10 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/pages/model-provider-onboarding-page.d.ts +6 -0
  114. package/dist/pages/model-provider-onboarding-page.d.ts.map +1 -0
  115. package/dist/pages/model-provider-onboarding-page.js +295 -0
  116. package/dist/pages/model-provider-onboarding-page.js.map +1 -0
  117. package/dist/pages/model-provider-onboarding-page.stories.d.ts +27 -0
  118. package/dist/pages/model-provider-onboarding-page.stories.d.ts.map +1 -0
  119. package/dist/pages/model-provider-onboarding-page.stories.js +368 -0
  120. package/dist/pages/model-provider-onboarding-page.stories.js.map +1 -0
  121. package/dist/routes/model-provider.d.ts +5 -0
  122. package/dist/routes/model-provider.d.ts.map +1 -0
  123. package/dist/routes/model-provider.js +28 -0
  124. package/dist/routes/model-provider.js.map +1 -0
  125. package/dist/state/model-provider-onboarding.d.ts +3 -0
  126. package/dist/state/model-provider-onboarding.d.ts.map +1 -0
  127. package/dist/state/model-provider-onboarding.js +28 -0
  128. package/dist/state/model-provider-onboarding.js.map +1 -0
  129. package/dist/tsconfig.test.tsbuildinfo +1 -0
  130. package/package.json +114 -0
  131. package/src/components/add-custom-provider-card.tsx +32 -0
  132. package/src/components/agent-workflow-example.test.ts +74 -0
  133. package/src/components/agent-workflow-example.ts +55 -0
  134. package/src/components/available-provider-card.tsx +39 -0
  135. package/src/components/available-providers-grid.test.tsx +55 -0
  136. package/src/components/available-providers-grid.tsx +106 -0
  137. package/src/components/change-default-model-form.tsx +104 -0
  138. package/src/components/custom-model-provider-api-options.test.ts +18 -0
  139. package/src/components/custom-model-provider-api-options.ts +12 -0
  140. package/src/components/custom-model-provider-form.stories.tsx +91 -0
  141. package/src/components/custom-model-provider-form.tsx +710 -0
  142. package/src/components/custom-model-provider-payload.test.ts +170 -0
  143. package/src/components/custom-model-provider-payload.ts +264 -0
  144. package/src/components/custom-model-provider-slug.test.ts +40 -0
  145. package/src/components/custom-model-provider-slug.ts +23 -0
  146. package/src/components/default-model-field.tsx +85 -0
  147. package/src/components/form-errors.test.ts +159 -0
  148. package/src/components/form-errors.ts +102 -0
  149. package/src/components/harness-availability.test.ts +45 -0
  150. package/src/components/harness-availability.ts +35 -0
  151. package/src/components/harnesses-section.stories.tsx +129 -0
  152. package/src/components/harnesses-section.test.tsx +188 -0
  153. package/src/components/harnesses-section.tsx +245 -0
  154. package/src/components/model-provider-usage-modal.stories.tsx +106 -0
  155. package/src/components/model-provider-usage-modal.test.tsx +210 -0
  156. package/src/components/model-provider-usage-modal.tsx +326 -0
  157. package/src/components/model-provider-usage-target.ts +36 -0
  158. package/src/components/model-providers-section.stories.tsx +345 -0
  159. package/src/components/model-providers-section.test.tsx +831 -0
  160. package/src/components/model-providers-section.tsx +645 -0
  161. package/src/components/provider-search.test.ts +45 -0
  162. package/src/components/provider-search.ts +18 -0
  163. package/src/components/supported-model-provider-catalog-entry.ts +19 -0
  164. package/src/components/test-and-save-form.tsx +166 -0
  165. package/src/feature.ts +12 -0
  166. package/src/hooks/api/model-providers.test.ts +167 -0
  167. package/src/hooks/api/model-providers.ts +281 -0
  168. package/src/index.ts +8 -0
  169. package/src/pages/model-provider-onboarding-page.stories.tsx +284 -0
  170. package/src/pages/model-provider-onboarding-page.test.tsx +368 -0
  171. package/src/pages/model-provider-onboarding-page.tsx +290 -0
  172. package/src/routes/model-provider.tsx +20 -0
  173. package/src/state/model-provider-onboarding.test.ts +55 -0
  174. package/src/state/model-provider-onboarding.ts +34 -0
  175. package/test/fixtures/model-providers.ts +111 -0
  176. package/test/setup.ts +3 -0
  177. package/tsconfig.build.json +9 -0
  178. package/tsconfig.build.tsbuildinfo +1 -0
  179. package/tsconfig.json +3 -0
  180. package/tsconfig.test.json +8 -0
  181. package/vercel.json +8 -0
  182. package/vitest.config.ts +72 -0
@@ -0,0 +1,115 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { ModelProviderUsageModal } from './model-provider-usage-modal.js';
4
+ import { usageTargetFromCatalogEntry, usageTargetFromCustomConfig } from './model-provider-usage-target.js';
5
+ function ModelProviderUsageModalStory({ variant }) {
6
+ const [open, setOpen] = useState(true);
7
+ const entry = variant === 'long-list' ? longListEntry() : anthropicEntry();
8
+ const target = variant === 'custom' ? usageTargetFromCustomConfig(customProviderConfig()) : usageTargetFromCatalogEntry(entry);
9
+ return /*#__PURE__*/ _jsx("div", {
10
+ className: "min-h-screen bg-background-neutral-background p-24",
11
+ children: /*#__PURE__*/ _jsx(ModelProviderUsageModal, {
12
+ target: target,
13
+ initialModel: target.default_model,
14
+ workspaceDefaultHarnessId: "claude",
15
+ open: open,
16
+ onOpenChange: setOpen
17
+ })
18
+ });
19
+ }
20
+ const meta = {
21
+ title: 'Agent/ProviderUsageModal',
22
+ component: ModelProviderUsageModalStory,
23
+ parameters: {
24
+ layout: 'fullscreen'
25
+ },
26
+ args: {
27
+ variant: 'anthropic'
28
+ }
29
+ };
30
+ export default meta;
31
+ export const Playground = {};
32
+ export const LongModelList = {
33
+ args: {
34
+ variant: 'long-list'
35
+ }
36
+ };
37
+ export const CustomProvider = {
38
+ args: {
39
+ variant: 'custom'
40
+ }
41
+ };
42
+ function anthropicEntry() {
43
+ return {
44
+ id: 'anthropic',
45
+ label: 'Anthropic',
46
+ support_status: 'supported',
47
+ default_model: 'claude-opus-4-8',
48
+ credential_fields: [
49
+ {
50
+ key: 'api_key',
51
+ label: 'API key',
52
+ secret: true
53
+ }
54
+ ],
55
+ unsupported_reason: null,
56
+ models: [
57
+ {
58
+ id: 'claude-opus-4-8',
59
+ label: 'Claude Opus 4.8'
60
+ },
61
+ {
62
+ id: 'claude-sonnet-4-8',
63
+ label: 'Claude Sonnet 4.8'
64
+ },
65
+ {
66
+ id: 'claude-haiku-4-5',
67
+ label: 'Claude Haiku 4.5'
68
+ }
69
+ ]
70
+ };
71
+ }
72
+ function longListEntry() {
73
+ return {
74
+ id: 'cloudflare-workers-ai',
75
+ label: 'Cloudflare Workers AI',
76
+ support_status: 'supported',
77
+ default_model: '@cf/moonshotai/kimi-k2.7-code',
78
+ credential_fields: [
79
+ {
80
+ key: 'api_token',
81
+ label: 'API token',
82
+ secret: true
83
+ }
84
+ ],
85
+ unsupported_reason: null,
86
+ models: Array.from({
87
+ length: 56
88
+ }, (_, index)=>({
89
+ id: index === 0 ? '@cf/moonshotai/kimi-k2.7-code' : `provider/research-lab/model-family-${String(index).padStart(2, '0')}-large-context`,
90
+ label: index === 0 ? 'Kimi K2.7 Code' : `Research Model ${index}`
91
+ }))
92
+ };
93
+ }
94
+ function customProviderConfig() {
95
+ return {
96
+ kind: 'custom',
97
+ provider_id: 'local-vllm',
98
+ display_name: 'Local vLLM',
99
+ api: 'openai-completions',
100
+ base_url: 'http://localhost:8000/v1',
101
+ headers: [],
102
+ secret_header_names: [],
103
+ models: [
104
+ {
105
+ id: 'llama-3.1',
106
+ label: 'Llama 3.1'
107
+ }
108
+ ],
109
+ default_model: 'llama-3.1',
110
+ created_at: '2026-05-08T00:00:00.000Z',
111
+ updated_at: '2026-05-08T00:00:00.000Z'
112
+ };
113
+ }
114
+
115
+ //# sourceMappingURL=model-provider-usage-modal.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/model-provider-usage-modal.stories.tsx"],"sourcesContent":["import type {\n CustomModelProviderConfigDto,\n ModelProviderCatalogEntryDto,\n} from '@shipfox/api-agent-dto';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {useState} from 'react';\nimport {ModelProviderUsageModal} from './model-provider-usage-modal.js';\nimport {\n usageTargetFromCatalogEntry,\n usageTargetFromCustomConfig,\n} from './model-provider-usage-target.js';\n\ninterface ModelProviderUsageModalStoryProps {\n variant: 'anthropic' | 'custom' | 'long-list';\n}\n\nfunction ModelProviderUsageModalStory({variant}: ModelProviderUsageModalStoryProps) {\n const [open, setOpen] = useState(true);\n const entry = variant === 'long-list' ? longListEntry() : anthropicEntry();\n const target =\n variant === 'custom'\n ? usageTargetFromCustomConfig(customProviderConfig())\n : usageTargetFromCatalogEntry(entry);\n\n return (\n <div className=\"min-h-screen bg-background-neutral-background p-24\">\n <ModelProviderUsageModal\n target={target}\n initialModel={target.default_model}\n workspaceDefaultHarnessId=\"claude\"\n open={open}\n onOpenChange={setOpen}\n />\n </div>\n );\n}\n\nconst meta = {\n title: 'Agent/ProviderUsageModal',\n component: ModelProviderUsageModalStory,\n parameters: {layout: 'fullscreen'},\n args: {variant: 'anthropic'},\n} satisfies Meta<typeof ModelProviderUsageModalStory>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Playground: Story = {};\n\nexport const LongModelList: Story = {\n args: {variant: 'long-list'},\n};\n\nexport const CustomProvider: Story = {\n args: {variant: 'custom'},\n};\n\nfunction anthropicEntry(): ModelProviderCatalogEntryDto {\n return {\n id: 'anthropic',\n label: 'Anthropic',\n support_status: 'supported',\n default_model: 'claude-opus-4-8',\n credential_fields: [{key: 'api_key', label: 'API key', secret: true}],\n unsupported_reason: null,\n models: [\n {id: 'claude-opus-4-8', label: 'Claude Opus 4.8'},\n {id: 'claude-sonnet-4-8', label: 'Claude Sonnet 4.8'},\n {id: 'claude-haiku-4-5', label: 'Claude Haiku 4.5'},\n ],\n };\n}\n\nfunction longListEntry(): ModelProviderCatalogEntryDto {\n return {\n id: 'cloudflare-workers-ai',\n label: 'Cloudflare Workers AI',\n support_status: 'supported',\n default_model: '@cf/moonshotai/kimi-k2.7-code',\n credential_fields: [{key: 'api_token', label: 'API token', secret: true}],\n unsupported_reason: null,\n models: Array.from({length: 56}, (_, index) => ({\n id:\n index === 0\n ? '@cf/moonshotai/kimi-k2.7-code'\n : `provider/research-lab/model-family-${String(index).padStart(2, '0')}-large-context`,\n label: index === 0 ? 'Kimi K2.7 Code' : `Research Model ${index}`,\n })),\n };\n}\n\nfunction customProviderConfig(): CustomModelProviderConfigDto {\n return {\n kind: 'custom',\n provider_id: 'local-vllm',\n display_name: 'Local vLLM',\n api: 'openai-completions',\n base_url: 'http://localhost:8000/v1',\n headers: [],\n secret_header_names: [],\n models: [{id: 'llama-3.1', label: 'Llama 3.1'}],\n default_model: 'llama-3.1',\n created_at: '2026-05-08T00:00:00.000Z',\n updated_at: '2026-05-08T00:00:00.000Z',\n };\n}\n"],"names":["useState","ModelProviderUsageModal","usageTargetFromCatalogEntry","usageTargetFromCustomConfig","ModelProviderUsageModalStory","variant","open","setOpen","entry","longListEntry","anthropicEntry","target","customProviderConfig","div","className","initialModel","default_model","workspaceDefaultHarnessId","onOpenChange","meta","title","component","parameters","layout","args","Playground","LongModelList","CustomProvider","id","label","support_status","credential_fields","key","secret","unsupported_reason","models","Array","from","length","_","index","String","padStart","kind","provider_id","display_name","api","base_url","headers","secret_header_names","created_at","updated_at"],"mappings":";AAKA,SAAQA,QAAQ,QAAO,QAAQ;AAC/B,SAAQC,uBAAuB,QAAO,kCAAkC;AACxE,SACEC,2BAA2B,EAC3BC,2BAA2B,QACtB,mCAAmC;AAM1C,SAASC,6BAA6B,EAACC,OAAO,EAAoC;IAChF,MAAM,CAACC,MAAMC,QAAQ,GAAGP,SAAS;IACjC,MAAMQ,QAAQH,YAAY,cAAcI,kBAAkBC;IAC1D,MAAMC,SACJN,YAAY,WACRF,4BAA4BS,0BAC5BV,4BAA4BM;IAElC,qBACE,KAACK;QAAIC,WAAU;kBACb,cAAA,KAACb;YACCU,QAAQA;YACRI,cAAcJ,OAAOK,aAAa;YAClCC,2BAA0B;YAC1BX,MAAMA;YACNY,cAAcX;;;AAItB;AAEA,MAAMY,OAAO;IACXC,OAAO;IACPC,WAAWjB;IACXkB,YAAY;QAACC,QAAQ;IAAY;IACjCC,MAAM;QAACnB,SAAS;IAAW;AAC7B;AAEA,eAAec,KAAK;AAGpB,OAAO,MAAMM,aAAoB,CAAC,EAAE;AAEpC,OAAO,MAAMC,gBAAuB;IAClCF,MAAM;QAACnB,SAAS;IAAW;AAC7B,EAAE;AAEF,OAAO,MAAMsB,iBAAwB;IACnCH,MAAM;QAACnB,SAAS;IAAQ;AAC1B,EAAE;AAEF,SAASK;IACP,OAAO;QACLkB,IAAI;QACJC,OAAO;QACPC,gBAAgB;QAChBd,eAAe;QACfe,mBAAmB;YAAC;gBAACC,KAAK;gBAAWH,OAAO;gBAAWI,QAAQ;YAAI;SAAE;QACrEC,oBAAoB;QACpBC,QAAQ;YACN;gBAACP,IAAI;gBAAmBC,OAAO;YAAiB;YAChD;gBAACD,IAAI;gBAAqBC,OAAO;YAAmB;YACpD;gBAACD,IAAI;gBAAoBC,OAAO;YAAkB;SACnD;IACH;AACF;AAEA,SAASpB;IACP,OAAO;QACLmB,IAAI;QACJC,OAAO;QACPC,gBAAgB;QAChBd,eAAe;QACfe,mBAAmB;YAAC;gBAACC,KAAK;gBAAaH,OAAO;gBAAaI,QAAQ;YAAI;SAAE;QACzEC,oBAAoB;QACpBC,QAAQC,MAAMC,IAAI,CAAC;YAACC,QAAQ;QAAE,GAAG,CAACC,GAAGC,QAAW,CAAA;gBAC9CZ,IACEY,UAAU,IACN,kCACA,CAAC,mCAAmC,EAAEC,OAAOD,OAAOE,QAAQ,CAAC,GAAG,KAAK,cAAc,CAAC;gBAC1Fb,OAAOW,UAAU,IAAI,mBAAmB,CAAC,eAAe,EAAEA,OAAO;YACnE,CAAA;IACF;AACF;AAEA,SAAS5B;IACP,OAAO;QACL+B,MAAM;QACNC,aAAa;QACbC,cAAc;QACdC,KAAK;QACLC,UAAU;QACVC,SAAS,EAAE;QACXC,qBAAqB,EAAE;QACvBd,QAAQ;YAAC;gBAACP,IAAI;gBAAaC,OAAO;YAAW;SAAE;QAC/Cb,eAAe;QACfkC,YAAY;QACZC,YAAY;IACd;AACF"}
@@ -0,0 +1,14 @@
1
+ import type { CustomModelProviderConfigDto, ModelProviderCatalogEntryDto } from '@shipfox/api-agent-dto';
2
+ export interface ModelProviderUsageTarget {
3
+ id: string;
4
+ label: string;
5
+ isCustom: boolean;
6
+ models: Array<{
7
+ id: string;
8
+ label: string;
9
+ }>;
10
+ default_model: string | null;
11
+ }
12
+ export declare function usageTargetFromCatalogEntry(entry: ModelProviderCatalogEntryDto): ModelProviderUsageTarget;
13
+ export declare function usageTargetFromCustomConfig(config: CustomModelProviderConfigDto): ModelProviderUsageTarget;
14
+ //# sourceMappingURL=model-provider-usage-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-provider-usage-target.d.ts","sourceRoot":"","sources":["../../src/components/model-provider-usage-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC3C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,4BAA4B,GAClC,wBAAwB,CAQ1B;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,4BAA4B,GACnC,wBAAwB,CAQ1B"}
@@ -0,0 +1,20 @@
1
+ export function usageTargetFromCatalogEntry(entry) {
2
+ return {
3
+ id: entry.id,
4
+ label: entry.label,
5
+ isCustom: false,
6
+ models: entry.models,
7
+ default_model: entry.default_model
8
+ };
9
+ }
10
+ export function usageTargetFromCustomConfig(config) {
11
+ return {
12
+ id: config.provider_id,
13
+ label: config.display_name,
14
+ isCustom: true,
15
+ models: config.models,
16
+ default_model: config.default_model
17
+ };
18
+ }
19
+
20
+ //# sourceMappingURL=model-provider-usage-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/model-provider-usage-target.ts"],"sourcesContent":["import type {\n CustomModelProviderConfigDto,\n ModelProviderCatalogEntryDto,\n} from '@shipfox/api-agent-dto';\n\nexport interface ModelProviderUsageTarget {\n id: string;\n label: string;\n isCustom: boolean;\n models: Array<{id: string; label: string}>;\n default_model: string | null;\n}\n\nexport function usageTargetFromCatalogEntry(\n entry: ModelProviderCatalogEntryDto,\n): ModelProviderUsageTarget {\n return {\n id: entry.id,\n label: entry.label,\n isCustom: false,\n models: entry.models,\n default_model: entry.default_model,\n };\n}\n\nexport function usageTargetFromCustomConfig(\n config: CustomModelProviderConfigDto,\n): ModelProviderUsageTarget {\n return {\n id: config.provider_id,\n label: config.display_name,\n isCustom: true,\n models: config.models,\n default_model: config.default_model,\n };\n}\n"],"names":["usageTargetFromCatalogEntry","entry","id","label","isCustom","models","default_model","usageTargetFromCustomConfig","config","provider_id","display_name"],"mappings":"AAaA,OAAO,SAASA,4BACdC,KAAmC;IAEnC,OAAO;QACLC,IAAID,MAAMC,EAAE;QACZC,OAAOF,MAAME,KAAK;QAClBC,UAAU;QACVC,QAAQJ,MAAMI,MAAM;QACpBC,eAAeL,MAAMK,aAAa;IACpC;AACF;AAEA,OAAO,SAASC,4BACdC,MAAoC;IAEpC,OAAO;QACLN,IAAIM,OAAOC,WAAW;QACtBN,OAAOK,OAAOE,YAAY;QAC1BN,UAAU;QACVC,QAAQG,OAAOH,MAAM;QACrBC,eAAeE,OAAOF,aAAa;IACrC;AACF"}
@@ -0,0 +1,4 @@
1
+ export declare function WorkspaceModelProvidersSection({ workspaceId }: {
2
+ workspaceId: string;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=model-providers-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-providers-section.d.ts","sourceRoot":"","sources":["../../src/components/model-providers-section.tsx"],"names":[],"mappings":"AA0EA,wBAAgB,8BAA8B,CAAC,EAAC,WAAW,EAAC,EAAE;IAAC,WAAW,EAAE,MAAM,CAAA;CAAC,+BAgUlF"}