@shipfox/client-agent 5.0.0 → 6.0.2
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 +57 -0
- package/dist/components/available-provider-card.d.ts +2 -2
- package/dist/components/available-provider-card.d.ts.map +1 -1
- package/dist/components/available-provider-card.js.map +1 -1
- package/dist/components/available-providers-grid.d.ts +2 -2
- package/dist/components/available-providers-grid.d.ts.map +1 -1
- package/dist/components/available-providers-grid.js +1 -1
- package/dist/components/available-providers-grid.js.map +1 -1
- package/dist/components/change-default-model-form.d.ts +3 -4
- package/dist/components/change-default-model-form.d.ts.map +1 -1
- package/dist/components/change-default-model-form.js +2 -4
- package/dist/components/change-default-model-form.js.map +1 -1
- package/dist/components/custom-model-provider-api-options.d.ts +3 -3
- package/dist/components/custom-model-provider-api-options.d.ts.map +1 -1
- package/dist/components/custom-model-provider-api-options.js.map +1 -1
- package/dist/components/custom-model-provider-form.d.ts +2 -2
- package/dist/components/custom-model-provider-form.d.ts.map +1 -1
- package/dist/components/custom-model-provider-form.js +12 -10
- package/dist/components/custom-model-provider-form.js.map +1 -1
- package/dist/components/custom-model-provider-form.stories.d.ts.map +1 -1
- package/dist/components/custom-model-provider-form.stories.js +11 -11
- package/dist/components/custom-model-provider-form.stories.js.map +1 -1
- package/dist/components/custom-model-provider-payload.d.ts +9 -9
- package/dist/components/custom-model-provider-payload.d.ts.map +1 -1
- package/dist/components/custom-model-provider-payload.js +42 -26
- package/dist/components/custom-model-provider-payload.js.map +1 -1
- package/dist/components/custom-model-provider-slug.d.ts +1 -1
- package/dist/components/custom-model-provider-slug.d.ts.map +1 -1
- package/dist/components/custom-model-provider-slug.js +3 -3
- package/dist/components/custom-model-provider-slug.js.map +1 -1
- package/dist/components/default-model-field.d.ts +2 -2
- package/dist/components/default-model-field.d.ts.map +1 -1
- package/dist/components/default-model-field.js +1 -1
- package/dist/components/default-model-field.js.map +1 -1
- package/dist/components/harness-availability.d.ts +4 -7
- package/dist/components/harness-availability.d.ts.map +1 -1
- package/dist/components/harness-availability.js +2 -11
- package/dist/components/harness-availability.js.map +1 -1
- package/dist/components/harnesses-section.d.ts.map +1 -1
- package/dist/components/harnesses-section.js +4 -6
- package/dist/components/harnesses-section.js.map +1 -1
- package/dist/components/model-provider-usage-modal.d.ts +2 -2
- package/dist/components/model-provider-usage-modal.d.ts.map +1 -1
- package/dist/components/model-provider-usage-modal.js +4 -4
- package/dist/components/model-provider-usage-modal.js.map +1 -1
- package/dist/components/model-provider-usage-modal.stories.d.ts.map +1 -1
- package/dist/components/model-provider-usage-modal.stories.js +14 -16
- package/dist/components/model-provider-usage-modal.stories.js.map +1 -1
- package/dist/components/model-provider-usage-target.d.ts +5 -5
- package/dist/components/model-provider-usage-target.d.ts.map +1 -1
- package/dist/components/model-provider-usage-target.js +10 -8
- package/dist/components/model-provider-usage-target.js.map +1 -1
- package/dist/components/model-providers-section.d.ts.map +1 -1
- package/dist/components/model-providers-section.js +112 -94
- package/dist/components/model-providers-section.js.map +1 -1
- package/dist/components/model-providers-section.stories.js +8 -4
- package/dist/components/model-providers-section.stories.js.map +1 -1
- package/dist/components/test-and-save-form.d.ts +3 -3
- package/dist/components/test-and-save-form.d.ts.map +1 -1
- package/dist/components/test-and-save-form.js +7 -7
- package/dist/components/test-and-save-form.js.map +1 -1
- package/dist/core/harness-policy.d.ts +11 -0
- package/dist/core/harness-policy.d.ts.map +1 -0
- package/dist/core/harness-policy.js +71 -0
- package/dist/core/harness-policy.js.map +1 -0
- package/dist/core/model-provider-management-reducer.d.ts +51 -0
- package/dist/core/model-provider-management-reducer.d.ts.map +1 -0
- package/dist/core/model-provider-management-reducer.js +43 -0
- package/dist/core/model-provider-management-reducer.js.map +1 -0
- package/dist/core/models.d.ts +120 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/models.js +3 -0
- package/dist/core/models.js.map +1 -0
- package/dist/core/onboarding-reducer.d.ts +36 -0
- package/dist/core/onboarding-reducer.d.ts.map +1 -0
- package/dist/core/onboarding-reducer.js +54 -0
- package/dist/core/onboarding-reducer.js.map +1 -0
- package/dist/core/provider-policy.d.ts +9 -0
- package/dist/core/provider-policy.d.ts.map +1 -0
- package/dist/core/provider-policy.js +37 -0
- package/dist/core/provider-policy.js.map +1 -0
- package/dist/feature.d.ts +7 -0
- package/dist/feature.d.ts.map +1 -1
- package/dist/feature.js +10 -9
- package/dist/feature.js.map +1 -1
- package/dist/hooks/api/model-provider-command-mapper.d.ts +11 -0
- package/dist/hooks/api/model-provider-command-mapper.d.ts.map +1 -0
- package/dist/hooks/api/model-provider-command-mapper.js +144 -0
- package/dist/hooks/api/model-provider-command-mapper.js.map +1 -0
- package/dist/hooks/api/model-provider-mapper.d.ts +11 -0
- package/dist/hooks/api/model-provider-mapper.d.ts.map +1 -0
- package/dist/hooks/api/model-provider-mapper.js +94 -0
- package/dist/hooks/api/model-provider-mapper.js.map +1 -0
- package/dist/hooks/api/model-providers.d.ts +60 -295
- package/dist/hooks/api/model-providers.d.ts.map +1 -1
- package/dist/hooks/api/model-providers.js +51 -37
- package/dist/hooks/api/model-providers.js.map +1 -1
- package/dist/pages/model-provider-onboarding-page.d.ts.map +1 -1
- package/dist/pages/model-provider-onboarding-page.js +57 -45
- package/dist/pages/model-provider-onboarding-page.js.map +1 -1
- package/dist/routes/inputs.d.ts +4 -0
- package/dist/routes/inputs.d.ts.map +1 -0
- package/dist/routes/inputs.js +12 -0
- package/dist/routes/inputs.js.map +1 -0
- package/dist/routes/model-provider.d.ts.map +1 -1
- package/dist/routes/model-provider.js +4 -5
- package/dist/routes/model-provider.js.map +1 -1
- package/dist/state/model-provider-onboarding.d.ts.map +1 -1
- package/dist/state/model-provider-onboarding.js +9 -18
- package/dist/state/model-provider-onboarding.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +9 -10
- package/src/components/available-provider-card.tsx +2 -2
- package/src/components/available-providers-grid.tsx +3 -3
- package/src/components/change-default-model-form.tsx +5 -6
- package/src/components/custom-model-provider-api-options.ts +3 -3
- package/src/components/custom-model-provider-form.stories.tsx +13 -13
- package/src/components/custom-model-provider-form.tsx +19 -12
- package/src/components/custom-model-provider-payload.test.ts +22 -22
- package/src/components/custom-model-provider-payload.ts +69 -54
- package/src/components/custom-model-provider-slug.test.ts +1 -1
- package/src/components/custom-model-provider-slug.ts +6 -3
- package/src/components/default-model-field.tsx +5 -5
- package/src/components/harness-availability.test.ts +13 -10
- package/src/components/harness-availability.ts +4 -28
- package/src/components/harnesses-section.tsx +7 -11
- package/src/components/model-provider-usage-modal.stories.tsx +18 -23
- package/src/components/model-provider-usage-modal.test.tsx +35 -7
- package/src/components/model-provider-usage-modal.tsx +12 -16
- package/src/components/model-provider-usage-target.ts +15 -18
- package/src/components/model-providers-section.stories.tsx +4 -1
- package/src/components/model-providers-section.tsx +112 -125
- package/src/components/test-and-save-form.tsx +13 -17
- package/src/core/harness-policy.test.ts +15 -0
- package/src/core/harness-policy.ts +83 -0
- package/src/core/model-provider-management-reducer.test.ts +59 -0
- package/src/core/model-provider-management-reducer.ts +72 -0
- package/src/core/models.ts +143 -0
- package/src/core/onboarding-reducer.test.ts +44 -0
- package/src/core/onboarding-reducer.ts +64 -0
- package/src/core/provider-policy.ts +53 -0
- package/src/feature.ts +12 -10
- package/src/hooks/api/model-provider-command-mapper.ts +122 -0
- package/src/hooks/api/model-provider-mapper.test.ts +27 -0
- package/src/hooks/api/model-provider-mapper.ts +120 -0
- package/src/hooks/api/model-providers.test.ts +15 -15
- package/src/hooks/api/model-providers.ts +146 -81
- package/src/pages/model-provider-onboarding-page.tsx +62 -56
- package/src/routes/inputs.test.ts +11 -0
- package/src/routes/inputs.ts +9 -0
- package/src/routes/model-provider.tsx +4 -3
- package/src/state/model-provider-onboarding.test.ts +4 -4
- package/src/state/model-provider-onboarding.ts +13 -23
- package/test/fixtures/model-providers.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/vercel.json +5 -0
- package/dist/components/provider-search.d.ts +0 -4
- package/dist/components/provider-search.d.ts.map +0 -1
- package/dist/components/provider-search.js +0 -13
- package/dist/components/provider-search.js.map +0 -1
- package/dist/components/supported-model-provider-catalog-entry.d.ts +0 -8
- package/dist/components/supported-model-provider-catalog-entry.d.ts.map +0 -1
- package/dist/components/supported-model-provider-catalog-entry.js +0 -9
- package/dist/components/supported-model-provider-catalog-entry.js.map +0 -1
- package/src/components/provider-search.test.ts +0 -45
- package/src/components/provider-search.ts +0 -18
- package/src/components/supported-model-provider-catalog-entry.ts +0 -19
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { HarnessId, SupportedProvider } from './models.js';
|
|
2
|
+
export type OnboardingState = {
|
|
3
|
+
readonly step: 'choose-harness';
|
|
4
|
+
} | {
|
|
5
|
+
readonly step: 'choose-provider';
|
|
6
|
+
readonly harnessId: HarnessId;
|
|
7
|
+
} | {
|
|
8
|
+
readonly step: 'configure-provider';
|
|
9
|
+
readonly harnessId: HarnessId;
|
|
10
|
+
readonly provider: SupportedProvider;
|
|
11
|
+
readonly error?: string | undefined;
|
|
12
|
+
} | {
|
|
13
|
+
readonly step: 'saving-default-harness';
|
|
14
|
+
readonly harnessId: HarnessId;
|
|
15
|
+
readonly provider: SupportedProvider;
|
|
16
|
+
readonly error?: string | undefined;
|
|
17
|
+
};
|
|
18
|
+
export type OnboardingAction = {
|
|
19
|
+
readonly type: 'harness-selected';
|
|
20
|
+
readonly harnessId: HarnessId;
|
|
21
|
+
} | {
|
|
22
|
+
readonly type: 'back';
|
|
23
|
+
} | {
|
|
24
|
+
readonly type: 'provider-selected';
|
|
25
|
+
readonly provider: SupportedProvider;
|
|
26
|
+
} | {
|
|
27
|
+
readonly type: 'provider-saved';
|
|
28
|
+
} | {
|
|
29
|
+
readonly type: 'default-harness-failed';
|
|
30
|
+
readonly message: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly type: 'default-harness-saved';
|
|
33
|
+
};
|
|
34
|
+
export declare const initialOnboardingState: OnboardingState;
|
|
35
|
+
export declare function onboardingReducer(state: OnboardingState, action: OnboardingAction): OnboardingState;
|
|
36
|
+
//# sourceMappingURL=onboarding-reducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-reducer.d.ts","sourceRoot":"","sources":["../../src/core/onboarding-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAE9D,MAAM,MAAM,eAAe,GACvB;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAC,GACjC;IAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAC,GACjE;IACE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEN,MAAM,MAAM,gBAAgB,GACxB;IAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAC,GAClE;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GACvB;IAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAC,GAC1E;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAC,GACjC;IAAC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GACnE;IAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAA;CAAC,CAAC;AAE7C,eAAO,MAAM,sBAAsB,EAAE,eAA0C,CAAC;AAehF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gBAAgB,GACvB,eAAe,CAmBjB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export const initialOnboardingState = {
|
|
2
|
+
step: 'choose-harness'
|
|
3
|
+
};
|
|
4
|
+
function goBack(state) {
|
|
5
|
+
switch(state.step){
|
|
6
|
+
case 'choose-harness':
|
|
7
|
+
return state;
|
|
8
|
+
case 'choose-provider':
|
|
9
|
+
return initialOnboardingState;
|
|
10
|
+
case 'configure-provider':
|
|
11
|
+
return {
|
|
12
|
+
step: 'choose-provider',
|
|
13
|
+
harnessId: state.harnessId
|
|
14
|
+
};
|
|
15
|
+
case 'saving-default-harness':
|
|
16
|
+
return {
|
|
17
|
+
step: 'configure-provider',
|
|
18
|
+
harnessId: state.harnessId,
|
|
19
|
+
provider: state.provider
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function onboardingReducer(state, action) {
|
|
24
|
+
switch(action.type){
|
|
25
|
+
case 'harness-selected':
|
|
26
|
+
return {
|
|
27
|
+
step: 'choose-provider',
|
|
28
|
+
harnessId: action.harnessId
|
|
29
|
+
};
|
|
30
|
+
case 'back':
|
|
31
|
+
return goBack(state);
|
|
32
|
+
case 'provider-selected':
|
|
33
|
+
return state.step === 'choose-provider' ? {
|
|
34
|
+
step: 'configure-provider',
|
|
35
|
+
harnessId: state.harnessId,
|
|
36
|
+
provider: action.provider
|
|
37
|
+
} : state;
|
|
38
|
+
case 'provider-saved':
|
|
39
|
+
return state.step === 'configure-provider' ? {
|
|
40
|
+
step: 'saving-default-harness',
|
|
41
|
+
harnessId: state.harnessId,
|
|
42
|
+
provider: state.provider
|
|
43
|
+
} : state;
|
|
44
|
+
case 'default-harness-failed':
|
|
45
|
+
return state.step === 'saving-default-harness' ? {
|
|
46
|
+
...state,
|
|
47
|
+
error: action.message
|
|
48
|
+
} : state;
|
|
49
|
+
case 'default-harness-saved':
|
|
50
|
+
return initialOnboardingState;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=onboarding-reducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/onboarding-reducer.ts"],"sourcesContent":["import type {HarnessId, SupportedProvider} from './models.js';\n\nexport type OnboardingState =\n | {readonly step: 'choose-harness'}\n | {readonly step: 'choose-provider'; readonly harnessId: HarnessId}\n | {\n readonly step: 'configure-provider';\n readonly harnessId: HarnessId;\n readonly provider: SupportedProvider;\n readonly error?: string | undefined;\n }\n | {\n readonly step: 'saving-default-harness';\n readonly harnessId: HarnessId;\n readonly provider: SupportedProvider;\n readonly error?: string | undefined;\n };\n\nexport type OnboardingAction =\n | {readonly type: 'harness-selected'; readonly harnessId: HarnessId}\n | {readonly type: 'back'}\n | {readonly type: 'provider-selected'; readonly provider: SupportedProvider}\n | {readonly type: 'provider-saved'}\n | {readonly type: 'default-harness-failed'; readonly message: string}\n | {readonly type: 'default-harness-saved'};\n\nexport const initialOnboardingState: OnboardingState = {step: 'choose-harness'};\n\nfunction goBack(state: OnboardingState): OnboardingState {\n switch (state.step) {\n case 'choose-harness':\n return state;\n case 'choose-provider':\n return initialOnboardingState;\n case 'configure-provider':\n return {step: 'choose-provider', harnessId: state.harnessId};\n case 'saving-default-harness':\n return {step: 'configure-provider', harnessId: state.harnessId, provider: state.provider};\n }\n}\n\nexport function onboardingReducer(\n state: OnboardingState,\n action: OnboardingAction,\n): OnboardingState {\n switch (action.type) {\n case 'harness-selected':\n return {step: 'choose-provider', harnessId: action.harnessId};\n case 'back':\n return goBack(state);\n case 'provider-selected':\n return state.step === 'choose-provider'\n ? {step: 'configure-provider', harnessId: state.harnessId, provider: action.provider}\n : state;\n case 'provider-saved':\n return state.step === 'configure-provider'\n ? {step: 'saving-default-harness', harnessId: state.harnessId, provider: state.provider}\n : state;\n case 'default-harness-failed':\n return state.step === 'saving-default-harness' ? {...state, error: action.message} : state;\n case 'default-harness-saved':\n return initialOnboardingState;\n }\n}\n"],"names":["initialOnboardingState","step","goBack","state","harnessId","provider","onboardingReducer","action","type","error","message"],"mappings":"AA0BA,OAAO,MAAMA,yBAA0C;IAACC,MAAM;AAAgB,EAAE;AAEhF,SAASC,OAAOC,KAAsB;IACpC,OAAQA,MAAMF,IAAI;QAChB,KAAK;YACH,OAAOE;QACT,KAAK;YACH,OAAOH;QACT,KAAK;YACH,OAAO;gBAACC,MAAM;gBAAmBG,WAAWD,MAAMC,SAAS;YAAA;QAC7D,KAAK;YACH,OAAO;gBAACH,MAAM;gBAAsBG,WAAWD,MAAMC,SAAS;gBAAEC,UAAUF,MAAME,QAAQ;YAAA;IAC5F;AACF;AAEA,OAAO,SAASC,kBACdH,KAAsB,EACtBI,MAAwB;IAExB,OAAQA,OAAOC,IAAI;QACjB,KAAK;YACH,OAAO;gBAACP,MAAM;gBAAmBG,WAAWG,OAAOH,SAAS;YAAA;QAC9D,KAAK;YACH,OAAOF,OAAOC;QAChB,KAAK;YACH,OAAOA,MAAMF,IAAI,KAAK,oBAClB;gBAACA,MAAM;gBAAsBG,WAAWD,MAAMC,SAAS;gBAAEC,UAAUE,OAAOF,QAAQ;YAAA,IAClFF;QACN,KAAK;YACH,OAAOA,MAAMF,IAAI,KAAK,uBAClB;gBAACA,MAAM;gBAA0BG,WAAWD,MAAMC,SAAS;gBAAEC,UAAUF,MAAME,QAAQ;YAAA,IACrFF;QACN,KAAK;YACH,OAAOA,MAAMF,IAAI,KAAK,2BAA2B;gBAAC,GAAGE,KAAK;gBAAEM,OAAOF,OAAOG,OAAO;YAAA,IAAIP;QACvF,KAAK;YACH,OAAOH;IACX;AACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HarnessDescriptor, ProviderCatalogEntry, ProviderConfig, SupportedProvider } from './models.js';
|
|
2
|
+
export declare function isSupportedProvider(entry: ProviderCatalogEntry): entry is SupportedProvider;
|
|
3
|
+
export declare function supportsProvider(harness: HarnessDescriptor, providerId: string): boolean;
|
|
4
|
+
export declare function availableProviders(catalog: readonly ProviderCatalogEntry[], configs: readonly ProviderConfig[]): SupportedProvider[];
|
|
5
|
+
export declare function providerMatchesSearch(entry: SupportedProvider, query: string): boolean;
|
|
6
|
+
export declare function customProviderCardMatchesSearch(query: string): boolean;
|
|
7
|
+
export declare function deriveProviderSlug(displayName: string): string;
|
|
8
|
+
export declare function isProviderSlugValid(slug: string): boolean;
|
|
9
|
+
//# sourceMappingURL=provider-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-policy.d.ts","sourceRoot":"","sources":["../../src/core/provider-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,IAAI,iBAAiB,CAE3F;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAExF;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,OAAO,EAAE,SAAS,cAAc,EAAE,GACjC,iBAAiB,EAAE,CAGrB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAStF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAItE;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM9D;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function isSupportedProvider(entry) {
|
|
2
|
+
return entry.kind === 'supported';
|
|
3
|
+
}
|
|
4
|
+
export function supportsProvider(harness, providerId) {
|
|
5
|
+
return harness.supportedProviderIds.includes(providerId);
|
|
6
|
+
}
|
|
7
|
+
export function availableProviders(catalog, configs) {
|
|
8
|
+
const configuredIds = new Set(configs.map((config)=>config.providerId));
|
|
9
|
+
return catalog.filter(isSupportedProvider).filter((provider)=>!configuredIds.has(provider.id));
|
|
10
|
+
}
|
|
11
|
+
export function providerMatchesSearch(entry, query) {
|
|
12
|
+
const needle = query.trim().toLocaleLowerCase();
|
|
13
|
+
if (!needle) return true;
|
|
14
|
+
const terms = [
|
|
15
|
+
entry.id,
|
|
16
|
+
entry.label,
|
|
17
|
+
...entry.models.flatMap((model)=>[
|
|
18
|
+
model.id,
|
|
19
|
+
model.label
|
|
20
|
+
])
|
|
21
|
+
];
|
|
22
|
+
return terms.some((term)=>term.toLocaleLowerCase().includes(needle));
|
|
23
|
+
}
|
|
24
|
+
export function customProviderCardMatchesSearch(query) {
|
|
25
|
+
const needle = query.trim().toLocaleLowerCase();
|
|
26
|
+
if (!needle) return true;
|
|
27
|
+
return 'custom provider openai anthropic google endpoint https public'.includes(needle);
|
|
28
|
+
}
|
|
29
|
+
export function deriveProviderSlug(displayName) {
|
|
30
|
+
return displayName.trim().toLocaleLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
|
|
31
|
+
}
|
|
32
|
+
const PROVIDER_SLUG_RE = /^[a-z][a-z0-9-]{1,62}$/;
|
|
33
|
+
export function isProviderSlugValid(slug) {
|
|
34
|
+
return PROVIDER_SLUG_RE.test(slug);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=provider-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/provider-policy.ts"],"sourcesContent":["import type {\n HarnessDescriptor,\n ProviderCatalogEntry,\n ProviderConfig,\n SupportedProvider,\n} from './models.js';\n\nexport function isSupportedProvider(entry: ProviderCatalogEntry): entry is SupportedProvider {\n return entry.kind === 'supported';\n}\n\nexport function supportsProvider(harness: HarnessDescriptor, providerId: string): boolean {\n return harness.supportedProviderIds.includes(providerId);\n}\n\nexport function availableProviders(\n catalog: readonly ProviderCatalogEntry[],\n configs: readonly ProviderConfig[],\n): SupportedProvider[] {\n const configuredIds = new Set(configs.map((config) => config.providerId));\n return catalog.filter(isSupportedProvider).filter((provider) => !configuredIds.has(provider.id));\n}\n\nexport function providerMatchesSearch(entry: SupportedProvider, query: string): boolean {\n const needle = query.trim().toLocaleLowerCase();\n if (!needle) return true;\n const terms = [\n entry.id,\n entry.label,\n ...entry.models.flatMap((model) => [model.id, model.label]),\n ];\n return terms.some((term) => term.toLocaleLowerCase().includes(needle));\n}\n\nexport function customProviderCardMatchesSearch(query: string): boolean {\n const needle = query.trim().toLocaleLowerCase();\n if (!needle) return true;\n return 'custom provider openai anthropic google endpoint https public'.includes(needle);\n}\n\nexport function deriveProviderSlug(displayName: string): string {\n return displayName\n .trim()\n .toLocaleLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nconst PROVIDER_SLUG_RE = /^[a-z][a-z0-9-]{1,62}$/;\n\nexport function isProviderSlugValid(slug: string): boolean {\n return PROVIDER_SLUG_RE.test(slug);\n}\n"],"names":["isSupportedProvider","entry","kind","supportsProvider","harness","providerId","supportedProviderIds","includes","availableProviders","catalog","configs","configuredIds","Set","map","config","filter","provider","has","id","providerMatchesSearch","query","needle","trim","toLocaleLowerCase","terms","label","models","flatMap","model","some","term","customProviderCardMatchesSearch","deriveProviderSlug","displayName","replace","PROVIDER_SLUG_RE","isProviderSlugValid","slug","test"],"mappings":"AAOA,OAAO,SAASA,oBAAoBC,KAA2B;IAC7D,OAAOA,MAAMC,IAAI,KAAK;AACxB;AAEA,OAAO,SAASC,iBAAiBC,OAA0B,EAAEC,UAAkB;IAC7E,OAAOD,QAAQE,oBAAoB,CAACC,QAAQ,CAACF;AAC/C;AAEA,OAAO,SAASG,mBACdC,OAAwC,EACxCC,OAAkC;IAElC,MAAMC,gBAAgB,IAAIC,IAAIF,QAAQG,GAAG,CAAC,CAACC,SAAWA,OAAOT,UAAU;IACvE,OAAOI,QAAQM,MAAM,CAACf,qBAAqBe,MAAM,CAAC,CAACC,WAAa,CAACL,cAAcM,GAAG,CAACD,SAASE,EAAE;AAChG;AAEA,OAAO,SAASC,sBAAsBlB,KAAwB,EAAEmB,KAAa;IAC3E,MAAMC,SAASD,MAAME,IAAI,GAAGC,iBAAiB;IAC7C,IAAI,CAACF,QAAQ,OAAO;IACpB,MAAMG,QAAQ;QACZvB,MAAMiB,EAAE;QACRjB,MAAMwB,KAAK;WACRxB,MAAMyB,MAAM,CAACC,OAAO,CAAC,CAACC,QAAU;gBAACA,MAAMV,EAAE;gBAAEU,MAAMH,KAAK;aAAC;KAC3D;IACD,OAAOD,MAAMK,IAAI,CAAC,CAACC,OAASA,KAAKP,iBAAiB,GAAGhB,QAAQ,CAACc;AAChE;AAEA,OAAO,SAASU,gCAAgCX,KAAa;IAC3D,MAAMC,SAASD,MAAME,IAAI,GAAGC,iBAAiB;IAC7C,IAAI,CAACF,QAAQ,OAAO;IACpB,OAAO,gEAAgEd,QAAQ,CAACc;AAClF;AAEA,OAAO,SAASW,mBAAmBC,WAAmB;IACpD,OAAOA,YACJX,IAAI,GACJC,iBAAiB,GACjBW,OAAO,CAAC,eAAe,KACvBA,OAAO,CAAC,YAAY;AACzB;AAEA,MAAMC,mBAAmB;AAEzB,OAAO,SAASC,oBAAoBC,IAAY;IAC9C,OAAOF,iBAAiBG,IAAI,CAACD;AAC/B"}
|
package/dist/feature.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
export declare const agentSettingsSections: readonly [{
|
|
2
|
+
readonly id: "settings.agents";
|
|
3
|
+
readonly pathSegment: "agents";
|
|
4
|
+
readonly label: "Agents";
|
|
5
|
+
readonly icon: "robot2Line";
|
|
6
|
+
readonly order: 400;
|
|
7
|
+
}];
|
|
1
8
|
export declare const agentFeature: {
|
|
2
9
|
readonly id: "shipfox.agent";
|
|
3
10
|
readonly routes: readonly [{
|
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,qBAAqB;;;;;;EAQkB,CAAC;AAErD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CAevB,CAAC"}
|
package/dist/feature.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { defineClientFeature } from '@shipfox/client-shell';
|
|
2
|
+
export const agentSettingsSections = [
|
|
3
|
+
{
|
|
4
|
+
id: 'settings.agents',
|
|
5
|
+
pathSegment: 'agents',
|
|
6
|
+
label: 'Agents',
|
|
7
|
+
icon: 'robot2Line',
|
|
8
|
+
order: 400
|
|
9
|
+
}
|
|
10
|
+
];
|
|
2
11
|
export const agentFeature = defineClientFeature({
|
|
3
12
|
id: 'shipfox.agent',
|
|
4
13
|
routes: [
|
|
@@ -13,15 +22,7 @@ export const agentFeature = defineClientFeature({
|
|
|
13
22
|
impl: '@shipfox/client-agent/routes/agents-settings'
|
|
14
23
|
}
|
|
15
24
|
],
|
|
16
|
-
settingsSections:
|
|
17
|
-
{
|
|
18
|
-
id: 'settings.agents',
|
|
19
|
-
pathSegment: 'agents',
|
|
20
|
-
label: 'Agents',
|
|
21
|
-
icon: 'robot2Line',
|
|
22
|
-
order: 400
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
+
settingsSections: agentSettingsSections
|
|
25
26
|
});
|
|
26
27
|
|
|
27
28
|
//# sourceMappingURL=feature.js.map
|
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 path: '/workspaces/$wid/settings/agents',\n parent: 'workspaceSettings',\n impl: '@shipfox/client-agent/routes/agents-settings',\n },\n ],\n settingsSections:
|
|
1
|
+
{"version":3,"sources":["../src/feature.ts"],"sourcesContent":["import {defineClientFeature, type SettingsSectionEntry} from '@shipfox/client-shell';\n\nexport const agentSettingsSections = [\n {\n id: 'settings.agents',\n pathSegment: 'agents',\n label: 'Agents',\n icon: 'robot2Line',\n order: 400,\n },\n] as const satisfies readonly SettingsSectionEntry[];\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: agentSettingsSections,\n});\n"],"names":["defineClientFeature","agentSettingsSections","id","pathSegment","label","icon","order","agentFeature","routes","path","parent","impl","settingsSections"],"mappings":"AAAA,SAAQA,mBAAmB,QAAkC,wBAAwB;AAErF,OAAO,MAAMC,wBAAwB;IACnC;QACEC,IAAI;QACJC,aAAa;QACbC,OAAO;QACPC,MAAM;QACNC,OAAO;IACT;CACD,CAAoD;AAErD,OAAO,MAAMC,eAAeP,oBAAoB;IAC9CE,IAAI;IACJM,QAAQ;QACN;YACEC,MAAM;YACNC,QAAQ;YACRC,MAAM;QACR;QACA;YACEF,MAAM;YACNC,QAAQ;YACRC,MAAM;QACR;KACD;IACDC,kBAAkBX;AACpB,GAAG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CreateCustomModelProviderBodyDto, DiscoverCustomModelProviderModelsBodyDto, DiscoverCustomModelProviderModelsBySlugBodyDto, SetDefaultHarnessBodyDto, SetDefaultModelProviderBodyDto, UpdateCustomModelProviderBodyDto, UpdateModelProviderConfigBodyDto, UpdateModelProviderDefaultModelBodyDto } from '@shipfox/api-agent-dto';
|
|
2
|
+
import type { CreateCustomProviderCommand, DiscoverProviderModelsCommand, ProviderCredentialsCommand, UpdateCustomProviderCommand } from '#core/models.js';
|
|
3
|
+
export declare function toProviderCredentialsBody(command: ProviderCredentialsCommand): UpdateModelProviderConfigBodyDto;
|
|
4
|
+
export declare function toDefaultModelBody(defaultModel: string | null): UpdateModelProviderDefaultModelBodyDto;
|
|
5
|
+
export declare function toDefaultProviderBody(providerId: string): SetDefaultModelProviderBodyDto;
|
|
6
|
+
export declare function toDefaultHarnessBody(harnessId: 'pi' | 'claude'): SetDefaultHarnessBodyDto;
|
|
7
|
+
export declare function toCreateCustomProviderBody(command: CreateCustomProviderCommand): CreateCustomModelProviderBodyDto;
|
|
8
|
+
export declare function toUpdateCustomProviderBody(command: UpdateCustomProviderCommand): UpdateCustomModelProviderBodyDto;
|
|
9
|
+
export declare function toDiscoverModelsBody(command: DiscoverProviderModelsCommand): DiscoverCustomModelProviderModelsBodyDto;
|
|
10
|
+
export declare function toDiscoverModelsBySlugBody(command: DiscoverProviderModelsCommand): DiscoverCustomModelProviderModelsBySlugBodyDto;
|
|
11
|
+
//# sourceMappingURL=model-provider-command-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-provider-command-mapper.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/model-provider-command-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,wCAAwC,EACxC,8CAA8C,EAC9C,wBAAwB,EACxB,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,sCAAsC,EACvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,2BAA2B,EAG3B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,gCAAgC,CAMlC;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,sCAAsC,CAExC;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,8BAA8B,CAExF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,IAAI,GAAG,QAAQ,GAAG,wBAAwB,CAEzF;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,gCAAgC,CAWlC;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,gCAAgC,CAUlC;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,6BAA6B,GACrC,wCAAwC,CAY1C;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,6BAA6B,GACrC,8CAA8C,CAOhD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
export function toProviderCredentialsBody(command) {
|
|
2
|
+
return {
|
|
3
|
+
...command.defaultModel === undefined ? {} : {
|
|
4
|
+
default_model: command.defaultModel
|
|
5
|
+
},
|
|
6
|
+
credentials: command.credentials,
|
|
7
|
+
...command.setAsDefault ? {
|
|
8
|
+
set_as_default: true
|
|
9
|
+
} : {}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function toDefaultModelBody(defaultModel) {
|
|
13
|
+
return {
|
|
14
|
+
default_model: defaultModel
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function toDefaultProviderBody(providerId) {
|
|
18
|
+
return {
|
|
19
|
+
provider_id: providerId
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function toDefaultHarnessBody(harnessId) {
|
|
23
|
+
return {
|
|
24
|
+
harness_id: harnessId
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function toCreateCustomProviderBody(command) {
|
|
28
|
+
return {
|
|
29
|
+
slug: command.slug,
|
|
30
|
+
display_name: command.displayName,
|
|
31
|
+
api: command.api,
|
|
32
|
+
base_url: command.baseUrl,
|
|
33
|
+
...command.apiKey ? {
|
|
34
|
+
api_key: command.apiKey
|
|
35
|
+
} : {},
|
|
36
|
+
...command.headers?.length ? {
|
|
37
|
+
headers: command.headers.map(toCreateHeader)
|
|
38
|
+
} : {},
|
|
39
|
+
models: command.models.map(toModel),
|
|
40
|
+
...command.defaultModel ? {
|
|
41
|
+
default_model: command.defaultModel
|
|
42
|
+
} : {}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function toUpdateCustomProviderBody(command) {
|
|
46
|
+
return {
|
|
47
|
+
...command.displayName === undefined ? {} : {
|
|
48
|
+
display_name: command.displayName
|
|
49
|
+
},
|
|
50
|
+
...command.api === undefined ? {} : {
|
|
51
|
+
api: command.api
|
|
52
|
+
},
|
|
53
|
+
...command.baseUrl === undefined ? {} : {
|
|
54
|
+
base_url: command.baseUrl
|
|
55
|
+
},
|
|
56
|
+
...command.apiKey === undefined ? {} : {
|
|
57
|
+
api_key: command.apiKey
|
|
58
|
+
},
|
|
59
|
+
...command.headers === undefined ? {} : {
|
|
60
|
+
headers: command.headers.map(toUpdateHeader)
|
|
61
|
+
},
|
|
62
|
+
...command.models === undefined ? {} : {
|
|
63
|
+
models: command.models.map(toModel)
|
|
64
|
+
},
|
|
65
|
+
...command.defaultModel === undefined ? {} : {
|
|
66
|
+
default_model: command.defaultModel
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export function toDiscoverModelsBody(command) {
|
|
71
|
+
if (command.api === undefined || command.baseUrl === undefined) {
|
|
72
|
+
throw new Error('Model discovery requires an API and base URL.');
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
api: command.api,
|
|
76
|
+
base_url: command.baseUrl,
|
|
77
|
+
...command.apiKey ? {
|
|
78
|
+
api_key: command.apiKey
|
|
79
|
+
} : {},
|
|
80
|
+
...command.headers?.length ? {
|
|
81
|
+
headers: command.headers.flatMap(({ name, value })=>value ? [
|
|
82
|
+
{
|
|
83
|
+
name,
|
|
84
|
+
value
|
|
85
|
+
}
|
|
86
|
+
] : [])
|
|
87
|
+
} : {}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function toDiscoverModelsBySlugBody(command) {
|
|
91
|
+
return {
|
|
92
|
+
...command.api === undefined ? {} : {
|
|
93
|
+
api: command.api
|
|
94
|
+
},
|
|
95
|
+
...command.baseUrl === undefined ? {} : {
|
|
96
|
+
base_url: command.baseUrl
|
|
97
|
+
},
|
|
98
|
+
...command.apiKey === undefined ? {} : {
|
|
99
|
+
api_key: command.apiKey
|
|
100
|
+
},
|
|
101
|
+
...command.headers === undefined ? {} : {
|
|
102
|
+
headers: command.headers.map(toUpdateHeader)
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function toCreateHeader(header) {
|
|
107
|
+
return {
|
|
108
|
+
name: header.name,
|
|
109
|
+
value: header.value ?? '',
|
|
110
|
+
secret: header.secret
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function toUpdateHeader(header) {
|
|
114
|
+
return {
|
|
115
|
+
name: header.name,
|
|
116
|
+
...header.value === undefined ? {} : {
|
|
117
|
+
value: header.value
|
|
118
|
+
},
|
|
119
|
+
secret: header.secret,
|
|
120
|
+
...header.keep ? {
|
|
121
|
+
keep: true
|
|
122
|
+
} : {}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function toModel(model) {
|
|
126
|
+
return {
|
|
127
|
+
id: model.id,
|
|
128
|
+
label: model.label,
|
|
129
|
+
...model.contextWindow === undefined ? {} : {
|
|
130
|
+
context_window: model.contextWindow
|
|
131
|
+
},
|
|
132
|
+
...model.maxOutputTokens === undefined ? {} : {
|
|
133
|
+
max_output_tokens: model.maxOutputTokens
|
|
134
|
+
},
|
|
135
|
+
...model.inputImage ? {
|
|
136
|
+
input_image: true
|
|
137
|
+
} : {},
|
|
138
|
+
...model.reasoning ? {
|
|
139
|
+
reasoning: true
|
|
140
|
+
} : {}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
//# sourceMappingURL=model-provider-command-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/api/model-provider-command-mapper.ts"],"sourcesContent":["import type {\n CreateCustomModelProviderBodyDto,\n DiscoverCustomModelProviderModelsBodyDto,\n DiscoverCustomModelProviderModelsBySlugBodyDto,\n SetDefaultHarnessBodyDto,\n SetDefaultModelProviderBodyDto,\n UpdateCustomModelProviderBodyDto,\n UpdateModelProviderConfigBodyDto,\n UpdateModelProviderDefaultModelBodyDto,\n} from '@shipfox/api-agent-dto';\nimport type {\n CreateCustomProviderCommand,\n CustomProviderHeaderCommand,\n CustomProviderModelCommand,\n DiscoverProviderModelsCommand,\n ProviderCredentialsCommand,\n UpdateCustomProviderCommand,\n} from '#core/models.js';\n\nexport function toProviderCredentialsBody(\n command: ProviderCredentialsCommand,\n): UpdateModelProviderConfigBodyDto {\n return {\n ...(command.defaultModel === undefined ? {} : {default_model: command.defaultModel}),\n credentials: command.credentials,\n ...(command.setAsDefault ? {set_as_default: true} : {}),\n };\n}\n\nexport function toDefaultModelBody(\n defaultModel: string | null,\n): UpdateModelProviderDefaultModelBodyDto {\n return {default_model: defaultModel};\n}\n\nexport function toDefaultProviderBody(providerId: string): SetDefaultModelProviderBodyDto {\n return {provider_id: providerId};\n}\n\nexport function toDefaultHarnessBody(harnessId: 'pi' | 'claude'): SetDefaultHarnessBodyDto {\n return {harness_id: harnessId};\n}\n\nexport function toCreateCustomProviderBody(\n command: CreateCustomProviderCommand,\n): CreateCustomModelProviderBodyDto {\n return {\n slug: command.slug,\n display_name: command.displayName,\n api: command.api,\n base_url: command.baseUrl,\n ...(command.apiKey ? {api_key: command.apiKey} : {}),\n ...(command.headers?.length ? {headers: command.headers.map(toCreateHeader)} : {}),\n models: command.models.map(toModel),\n ...(command.defaultModel ? {default_model: command.defaultModel} : {}),\n };\n}\n\nexport function toUpdateCustomProviderBody(\n command: UpdateCustomProviderCommand,\n): UpdateCustomModelProviderBodyDto {\n return {\n ...(command.displayName === undefined ? {} : {display_name: command.displayName}),\n ...(command.api === undefined ? {} : {api: command.api}),\n ...(command.baseUrl === undefined ? {} : {base_url: command.baseUrl}),\n ...(command.apiKey === undefined ? {} : {api_key: command.apiKey}),\n ...(command.headers === undefined ? {} : {headers: command.headers.map(toUpdateHeader)}),\n ...(command.models === undefined ? {} : {models: command.models.map(toModel)}),\n ...(command.defaultModel === undefined ? {} : {default_model: command.defaultModel}),\n };\n}\n\nexport function toDiscoverModelsBody(\n command: DiscoverProviderModelsCommand,\n): DiscoverCustomModelProviderModelsBodyDto {\n if (command.api === undefined || command.baseUrl === undefined) {\n throw new Error('Model discovery requires an API and base URL.');\n }\n return {\n api: command.api,\n base_url: command.baseUrl,\n ...(command.apiKey ? {api_key: command.apiKey} : {}),\n ...(command.headers?.length\n ? {headers: command.headers.flatMap(({name, value}) => (value ? [{name, value}] : []))}\n : {}),\n };\n}\n\nexport function toDiscoverModelsBySlugBody(\n command: DiscoverProviderModelsCommand,\n): DiscoverCustomModelProviderModelsBySlugBodyDto {\n return {\n ...(command.api === undefined ? {} : {api: command.api}),\n ...(command.baseUrl === undefined ? {} : {base_url: command.baseUrl}),\n ...(command.apiKey === undefined ? {} : {api_key: command.apiKey}),\n ...(command.headers === undefined ? {} : {headers: command.headers.map(toUpdateHeader)}),\n };\n}\n\nfunction toCreateHeader(header: CustomProviderHeaderCommand) {\n return {name: header.name, value: header.value ?? '', secret: header.secret};\n}\n\nfunction toUpdateHeader(header: CustomProviderHeaderCommand) {\n return {\n name: header.name,\n ...(header.value === undefined ? {} : {value: header.value}),\n secret: header.secret,\n ...(header.keep ? {keep: true} : {}),\n };\n}\n\nfunction toModel(model: CustomProviderModelCommand) {\n return {\n id: model.id,\n label: model.label,\n ...(model.contextWindow === undefined ? {} : {context_window: model.contextWindow}),\n ...(model.maxOutputTokens === undefined ? {} : {max_output_tokens: model.maxOutputTokens}),\n ...(model.inputImage ? {input_image: true} : {}),\n ...(model.reasoning ? {reasoning: true} : {}),\n };\n}\n"],"names":["toProviderCredentialsBody","command","defaultModel","undefined","default_model","credentials","setAsDefault","set_as_default","toDefaultModelBody","toDefaultProviderBody","providerId","provider_id","toDefaultHarnessBody","harnessId","harness_id","toCreateCustomProviderBody","slug","display_name","displayName","api","base_url","baseUrl","apiKey","api_key","headers","length","map","toCreateHeader","models","toModel","toUpdateCustomProviderBody","toUpdateHeader","toDiscoverModelsBody","Error","flatMap","name","value","toDiscoverModelsBySlugBody","header","secret","keep","model","id","label","contextWindow","context_window","maxOutputTokens","max_output_tokens","inputImage","input_image","reasoning"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CustomModelProviderConfigDto, ListModelProviderConfigsResponseDto, ModelProviderCatalogEntryDto, ModelProviderCatalogResponseDto, ModelProviderConfigDto, ModelProviderConfigResponseDto, SetDefaultHarnessResponseDto, SetDefaultModelProviderResponseDto } from '@shipfox/api-agent-dto';
|
|
2
|
+
import type { BuiltinProviderConfig, CustomProviderConfig, DefaultHarnessSelection, DefaultModelProviderSelection, ProviderCatalog, ProviderCatalogEntry, ProviderConfig, ProviderConfiguration } from '#core/models.js';
|
|
3
|
+
export declare function toProviderCatalog(response: ModelProviderCatalogResponseDto): ProviderCatalog;
|
|
4
|
+
export declare function toProviderCatalogEntry(entry: ModelProviderCatalogEntryDto): ProviderCatalogEntry;
|
|
5
|
+
export declare function toProviderConfiguration(response: ListModelProviderConfigsResponseDto): ProviderConfiguration;
|
|
6
|
+
export declare function toDefaultModelProviderSelection(response: SetDefaultModelProviderResponseDto): DefaultModelProviderSelection;
|
|
7
|
+
export declare function toDefaultHarnessSelection(response: SetDefaultHarnessResponseDto): DefaultHarnessSelection;
|
|
8
|
+
export declare function toProviderConfig(config: ModelProviderConfigResponseDto): ProviderConfig;
|
|
9
|
+
export declare function toBuiltinProviderConfig(config: ModelProviderConfigDto): BuiltinProviderConfig;
|
|
10
|
+
export declare function toCustomProviderConfig(config: CustomModelProviderConfigDto): CustomProviderConfig;
|
|
11
|
+
//# sourceMappingURL=model-provider-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-provider-mapper.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/model-provider-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,mCAAmC,EACnC,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,kCAAkC,EACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAEV,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC7B,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,+BAA+B,GAAG,eAAe,CAE5F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,4BAA4B,GAAG,oBAAoB,CAqBhG;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,mCAAmC,GAC5C,qBAAqB,CAMvB;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,kCAAkC,GAC3C,6BAA6B,CAE/B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,4BAA4B,GACrC,uBAAuB,CAEzB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,8BAA8B,GAAG,cAAc,CAIvF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG,qBAAqB,CAQ7F;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,GAAG,oBAAoB,CAcjG"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export function toProviderCatalog(response) {
|
|
2
|
+
return {
|
|
3
|
+
providers: response.providers.map(toProviderCatalogEntry)
|
|
4
|
+
};
|
|
5
|
+
}
|
|
6
|
+
export function toProviderCatalogEntry(entry) {
|
|
7
|
+
if (entry.support_status === 'unsupported') {
|
|
8
|
+
return {
|
|
9
|
+
kind: 'unsupported',
|
|
10
|
+
id: entry.id,
|
|
11
|
+
label: entry.label,
|
|
12
|
+
unsupportedReason: entry.unsupported_reason ?? 'Unsupported provider'
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
kind: 'supported',
|
|
17
|
+
id: entry.id,
|
|
18
|
+
label: entry.label,
|
|
19
|
+
defaultModel: entry.default_model,
|
|
20
|
+
credentialFields: entry.credential_fields.map((field)=>({
|
|
21
|
+
key: field.key,
|
|
22
|
+
label: field.label,
|
|
23
|
+
secret: field.secret
|
|
24
|
+
})),
|
|
25
|
+
models: entry.models.map(toAgentModel)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function toProviderConfiguration(response) {
|
|
29
|
+
return {
|
|
30
|
+
configs: response.configs.map(toProviderConfig),
|
|
31
|
+
defaultHarnessId: response.default_harness_id,
|
|
32
|
+
defaultProviderId: response.default_provider_id
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function toDefaultModelProviderSelection(response) {
|
|
36
|
+
return {
|
|
37
|
+
defaultProviderId: response.default_provider_id
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function toDefaultHarnessSelection(response) {
|
|
41
|
+
return {
|
|
42
|
+
defaultHarnessId: response.default_harness_id
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function toProviderConfig(config) {
|
|
46
|
+
return config.kind === 'builtin' ? toBuiltinProviderConfig(config) : toCustomProviderConfig(config);
|
|
47
|
+
}
|
|
48
|
+
export function toBuiltinProviderConfig(config) {
|
|
49
|
+
return {
|
|
50
|
+
kind: 'builtin',
|
|
51
|
+
providerId: config.provider_id,
|
|
52
|
+
defaultModel: config.default_model,
|
|
53
|
+
createdAt: config.created_at,
|
|
54
|
+
updatedAt: config.updated_at
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function toCustomProviderConfig(config) {
|
|
58
|
+
return {
|
|
59
|
+
kind: 'custom',
|
|
60
|
+
providerId: config.provider_id,
|
|
61
|
+
displayName: config.display_name,
|
|
62
|
+
api: config.api,
|
|
63
|
+
baseUrl: config.base_url,
|
|
64
|
+
headers: config.headers.map((header)=>({
|
|
65
|
+
name: header.name,
|
|
66
|
+
value: header.value
|
|
67
|
+
})),
|
|
68
|
+
secretHeaderNames: config.secret_header_names,
|
|
69
|
+
models: config.models.map(toAgentModel),
|
|
70
|
+
defaultModel: config.default_model,
|
|
71
|
+
createdAt: config.created_at,
|
|
72
|
+
updatedAt: config.updated_at
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function toAgentModel(model) {
|
|
76
|
+
return {
|
|
77
|
+
id: model.id,
|
|
78
|
+
label: model.label,
|
|
79
|
+
...model.context_window === undefined ? {} : {
|
|
80
|
+
contextWindow: model.context_window
|
|
81
|
+
},
|
|
82
|
+
...model.max_output_tokens === undefined ? {} : {
|
|
83
|
+
maxOutputTokens: model.max_output_tokens
|
|
84
|
+
},
|
|
85
|
+
...model.input_image === undefined ? {} : {
|
|
86
|
+
inputImage: model.input_image
|
|
87
|
+
},
|
|
88
|
+
...model.reasoning === undefined ? {} : {
|
|
89
|
+
reasoning: model.reasoning
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=model-provider-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/api/model-provider-mapper.ts"],"sourcesContent":["import type {\n CustomModelProviderConfigDto,\n ListModelProviderConfigsResponseDto,\n ModelProviderCatalogEntryDto,\n ModelProviderCatalogResponseDto,\n ModelProviderConfigDto,\n ModelProviderConfigResponseDto,\n SetDefaultHarnessResponseDto,\n SetDefaultModelProviderResponseDto,\n} from '@shipfox/api-agent-dto';\nimport type {\n AgentModel,\n BuiltinProviderConfig,\n CustomProviderConfig,\n DefaultHarnessSelection,\n DefaultModelProviderSelection,\n ProviderCatalog,\n ProviderCatalogEntry,\n ProviderConfig,\n ProviderConfiguration,\n} from '#core/models.js';\n\nexport function toProviderCatalog(response: ModelProviderCatalogResponseDto): ProviderCatalog {\n return {providers: response.providers.map(toProviderCatalogEntry)};\n}\n\nexport function toProviderCatalogEntry(entry: ModelProviderCatalogEntryDto): ProviderCatalogEntry {\n if (entry.support_status === 'unsupported') {\n return {\n kind: 'unsupported',\n id: entry.id,\n label: entry.label,\n unsupportedReason: entry.unsupported_reason ?? 'Unsupported provider',\n };\n }\n return {\n kind: 'supported',\n id: entry.id,\n label: entry.label,\n defaultModel: entry.default_model,\n credentialFields: entry.credential_fields.map((field) => ({\n key: field.key,\n label: field.label,\n secret: field.secret,\n })),\n models: entry.models.map(toAgentModel),\n };\n}\n\nexport function toProviderConfiguration(\n response: ListModelProviderConfigsResponseDto,\n): ProviderConfiguration {\n return {\n configs: response.configs.map(toProviderConfig),\n defaultHarnessId: response.default_harness_id,\n defaultProviderId: response.default_provider_id,\n };\n}\n\nexport function toDefaultModelProviderSelection(\n response: SetDefaultModelProviderResponseDto,\n): DefaultModelProviderSelection {\n return {defaultProviderId: response.default_provider_id};\n}\n\nexport function toDefaultHarnessSelection(\n response: SetDefaultHarnessResponseDto,\n): DefaultHarnessSelection {\n return {defaultHarnessId: response.default_harness_id};\n}\n\nexport function toProviderConfig(config: ModelProviderConfigResponseDto): ProviderConfig {\n return config.kind === 'builtin'\n ? toBuiltinProviderConfig(config)\n : toCustomProviderConfig(config);\n}\n\nexport function toBuiltinProviderConfig(config: ModelProviderConfigDto): BuiltinProviderConfig {\n return {\n kind: 'builtin',\n providerId: config.provider_id,\n defaultModel: config.default_model,\n createdAt: config.created_at,\n updatedAt: config.updated_at,\n };\n}\n\nexport function toCustomProviderConfig(config: CustomModelProviderConfigDto): CustomProviderConfig {\n return {\n kind: 'custom',\n providerId: config.provider_id,\n displayName: config.display_name,\n api: config.api,\n baseUrl: config.base_url,\n headers: config.headers.map((header) => ({name: header.name, value: header.value})),\n secretHeaderNames: config.secret_header_names,\n models: config.models.map(toAgentModel),\n defaultModel: config.default_model,\n createdAt: config.created_at,\n updatedAt: config.updated_at,\n };\n}\n\nfunction toAgentModel(model: {\n id: string;\n label: string;\n context_window?: number | undefined;\n max_output_tokens?: number | undefined;\n input_image?: boolean | undefined;\n reasoning?: boolean | undefined;\n}): AgentModel {\n return {\n id: model.id,\n label: model.label,\n ...(model.context_window === undefined ? {} : {contextWindow: model.context_window}),\n ...(model.max_output_tokens === undefined ? {} : {maxOutputTokens: model.max_output_tokens}),\n ...(model.input_image === undefined ? {} : {inputImage: model.input_image}),\n ...(model.reasoning === undefined ? {} : {reasoning: model.reasoning}),\n };\n}\n"],"names":["toProviderCatalog","response","providers","map","toProviderCatalogEntry","entry","support_status","kind","id","label","unsupportedReason","unsupported_reason","defaultModel","default_model","credentialFields","credential_fields","field","key","secret","models","toAgentModel","toProviderConfiguration","configs","toProviderConfig","defaultHarnessId","default_harness_id","defaultProviderId","default_provider_id","toDefaultModelProviderSelection","toDefaultHarnessSelection","config","toBuiltinProviderConfig","toCustomProviderConfig","providerId","provider_id","createdAt","created_at","updatedAt","updated_at","displayName","display_name","api","baseUrl","base_url","headers","header","name","value","secretHeaderNames","secret_header_names","model","context_window","undefined","contextWindow","max_output_tokens","maxOutputTokens","input_image","inputImage","reasoning"],"mappings":"AAsBA,OAAO,SAASA,kBAAkBC,QAAyC;IACzE,OAAO;QAACC,WAAWD,SAASC,SAAS,CAACC,GAAG,CAACC;IAAuB;AACnE;AAEA,OAAO,SAASA,uBAAuBC,KAAmC;IACxE,IAAIA,MAAMC,cAAc,KAAK,eAAe;QAC1C,OAAO;YACLC,MAAM;YACNC,IAAIH,MAAMG,EAAE;YACZC,OAAOJ,MAAMI,KAAK;YAClBC,mBAAmBL,MAAMM,kBAAkB,IAAI;QACjD;IACF;IACA,OAAO;QACLJ,MAAM;QACNC,IAAIH,MAAMG,EAAE;QACZC,OAAOJ,MAAMI,KAAK;QAClBG,cAAcP,MAAMQ,aAAa;QACjCC,kBAAkBT,MAAMU,iBAAiB,CAACZ,GAAG,CAAC,CAACa,QAAW,CAAA;gBACxDC,KAAKD,MAAMC,GAAG;gBACdR,OAAOO,MAAMP,KAAK;gBAClBS,QAAQF,MAAME,MAAM;YACtB,CAAA;QACAC,QAAQd,MAAMc,MAAM,CAAChB,GAAG,CAACiB;IAC3B;AACF;AAEA,OAAO,SAASC,wBACdpB,QAA6C;IAE7C,OAAO;QACLqB,SAASrB,SAASqB,OAAO,CAACnB,GAAG,CAACoB;QAC9BC,kBAAkBvB,SAASwB,kBAAkB;QAC7CC,mBAAmBzB,SAAS0B,mBAAmB;IACjD;AACF;AAEA,OAAO,SAASC,gCACd3B,QAA4C;IAE5C,OAAO;QAACyB,mBAAmBzB,SAAS0B,mBAAmB;IAAA;AACzD;AAEA,OAAO,SAASE,0BACd5B,QAAsC;IAEtC,OAAO;QAACuB,kBAAkBvB,SAASwB,kBAAkB;IAAA;AACvD;AAEA,OAAO,SAASF,iBAAiBO,MAAsC;IACrE,OAAOA,OAAOvB,IAAI,KAAK,YACnBwB,wBAAwBD,UACxBE,uBAAuBF;AAC7B;AAEA,OAAO,SAASC,wBAAwBD,MAA8B;IACpE,OAAO;QACLvB,MAAM;QACN0B,YAAYH,OAAOI,WAAW;QAC9BtB,cAAckB,OAAOjB,aAAa;QAClCsB,WAAWL,OAAOM,UAAU;QAC5BC,WAAWP,OAAOQ,UAAU;IAC9B;AACF;AAEA,OAAO,SAASN,uBAAuBF,MAAoC;IACzE,OAAO;QACLvB,MAAM;QACN0B,YAAYH,OAAOI,WAAW;QAC9BK,aAAaT,OAAOU,YAAY;QAChCC,KAAKX,OAAOW,GAAG;QACfC,SAASZ,OAAOa,QAAQ;QACxBC,SAASd,OAAOc,OAAO,CAACzC,GAAG,CAAC,CAAC0C,SAAY,CAAA;gBAACC,MAAMD,OAAOC,IAAI;gBAAEC,OAAOF,OAAOE,KAAK;YAAA,CAAA;QAChFC,mBAAmBlB,OAAOmB,mBAAmB;QAC7C9B,QAAQW,OAAOX,MAAM,CAAChB,GAAG,CAACiB;QAC1BR,cAAckB,OAAOjB,aAAa;QAClCsB,WAAWL,OAAOM,UAAU;QAC5BC,WAAWP,OAAOQ,UAAU;IAC9B;AACF;AAEA,SAASlB,aAAa8B,KAOrB;IACC,OAAO;QACL1C,IAAI0C,MAAM1C,EAAE;QACZC,OAAOyC,MAAMzC,KAAK;QAClB,GAAIyC,MAAMC,cAAc,KAAKC,YAAY,CAAC,IAAI;YAACC,eAAeH,MAAMC,cAAc;QAAA,CAAC;QACnF,GAAID,MAAMI,iBAAiB,KAAKF,YAAY,CAAC,IAAI;YAACG,iBAAiBL,MAAMI,iBAAiB;QAAA,CAAC;QAC3F,GAAIJ,MAAMM,WAAW,KAAKJ,YAAY,CAAC,IAAI;YAACK,YAAYP,MAAMM,WAAW;QAAA,CAAC;QAC1E,GAAIN,MAAMQ,SAAS,KAAKN,YAAY,CAAC,IAAI;YAACM,WAAWR,MAAMQ,SAAS;QAAA,CAAC;IACvE;AACF"}
|