@webiny/ai-powerups 6.5.1 → 6.5.2-beta.1
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/admin/Extension.js +16 -2
- package/admin/Extension.js.map +1 -1
- package/admin/features/permissions/abstractions.d.ts +17 -0
- package/admin/features/permissions/abstractions.js +6 -0
- package/admin/features/permissions/abstractions.js.map +1 -0
- package/admin/features/permissions/feature.d.ts +14 -0
- package/admin/features/permissions/feature.js +7 -0
- package/admin/features/permissions/feature.js.map +1 -0
- package/admin/features/permissions/index.d.ts +2 -0
- package/admin/features/permissions/index.js +2 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.d.ts +2 -2
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js +2 -2
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js.map +1 -1
- package/admin/presentation/CmsCompareEntryRevisions/feature.js +2 -2
- package/admin/presentation/CmsCompareEntryRevisions/feature.js.map +1 -1
- package/admin/presentation/security/HasPermission.d.ts +10 -0
- package/admin/presentation/security/HasPermission.js +6 -0
- package/admin/presentation/security/HasPermission.js.map +1 -0
- package/api/Extension.js +6 -0
- package/api/Extension.js.map +1 -1
- package/api/features/Capabilities/ListAiCapabilitiesUseCase.d.ts +7 -4
- package/api/features/Capabilities/ListAiCapabilitiesUseCase.js +11 -5
- package/api/features/Capabilities/ListAiCapabilitiesUseCase.js.map +1 -1
- package/api/features/Capabilities/ResolveAiCapabilityUseCase.d.ts +4 -6
- package/api/features/Capabilities/ResolveAiCapabilityUseCase.js +12 -11
- package/api/features/Capabilities/ResolveAiCapabilityUseCase.js.map +1 -1
- package/api/features/Capabilities/abstractions.d.ts +1 -1
- package/api/features/Capabilities/abstractions.js.map +1 -1
- package/api/features/Capabilities/feature.js +4 -4
- package/api/features/Capabilities/feature.js.map +1 -1
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.d.ts +5 -3
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js +11 -6
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js.map +1 -1
- package/api/features/CmsCompareEntryRevisions/feature.js +2 -2
- package/api/features/CmsCompareEntryRevisions/feature.js.map +1 -1
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.d.ts +2 -2
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js +3 -3
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js.map +1 -1
- package/api/features/CmsGenerateEntryContent/QueueCmsGenerateEntryContentUseCase.d.ts +19 -0
- package/api/features/CmsGenerateEntryContent/QueueCmsGenerateEntryContentUseCase.js +61 -0
- package/api/features/CmsGenerateEntryContent/QueueCmsGenerateEntryContentUseCase.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/abstractions.d.ts +14 -0
- package/api/features/CmsGenerateEntryContent/abstractions.js +2 -1
- package/api/features/CmsGenerateEntryContent/abstractions.js.map +1 -1
- package/api/features/CmsGenerateEntryContent/feature.js +4 -2
- package/api/features/CmsGenerateEntryContent/feature.js.map +1 -1
- package/api/features/CmsGenerateEntryContent/index.d.ts +1 -1
- package/api/features/CmsGenerateEntryContent/index.js +1 -1
- package/api/features/Connections/ConnectionsGraphQLMapper.js +1 -1
- package/api/features/Connections/ConnectionsGraphQLMapper.js.map +1 -1
- package/api/features/GetDecryptedSettings/GetDecryptedSettingsUseCase.d.ts +17 -0
- package/api/features/GetDecryptedSettings/GetDecryptedSettingsUseCase.js +41 -0
- package/api/features/GetDecryptedSettings/GetDecryptedSettingsUseCase.js.map +1 -0
- package/api/features/GetDecryptedSettings/abstractions.d.ts +13 -0
- package/api/features/GetDecryptedSettings/abstractions.js +5 -0
- package/api/features/GetDecryptedSettings/abstractions.js.map +1 -0
- package/api/features/GetDecryptedSettings/feature.d.ts +4 -0
- package/api/features/GetDecryptedSettings/feature.js +11 -0
- package/api/features/GetDecryptedSettings/feature.js.map +1 -0
- package/api/features/GetDecryptedSettings/index.d.ts +2 -0
- package/api/features/GetDecryptedSettings/index.js +2 -0
- package/api/features/GetSettings/GetSettingsRepository.d.ts +2 -2
- package/api/features/GetSettings/GetSettingsRepository.js +2 -2
- package/api/features/GetSettings/GetSettingsRepository.js.map +1 -1
- package/api/features/GetSettings/GetSettingsUseCase.d.ts +15 -4
- package/api/features/GetSettings/GetSettingsUseCase.js +34 -5
- package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -1
- package/api/features/GetSettings/abstractions.d.ts +1 -1
- package/api/features/GetSettings/abstractions.js.map +1 -1
- package/api/features/GetSettings/feature.js +4 -4
- package/api/features/GetSettings/feature.js.map +1 -1
- package/api/features/ListModels/ListModelsUseCase.d.ts +15 -0
- package/api/features/ListModels/ListModelsUseCase.js +25 -0
- package/api/features/ListModels/ListModelsUseCase.js.map +1 -0
- package/api/features/ListModels/abstractions.d.ts +10 -0
- package/api/features/ListModels/abstractions.js +5 -0
- package/api/features/ListModels/abstractions.js.map +1 -0
- package/api/features/ListModels/feature.d.ts +4 -0
- package/api/features/ListModels/feature.js +11 -0
- package/api/features/ListModels/feature.js.map +1 -0
- package/api/features/ListModels/index.d.ts +1 -0
- package/api/features/ListModels/index.js +1 -0
- package/api/features/Providers/ProvidersGraphQLMapper.js +1 -1
- package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -1
- package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +2 -2
- package/api/features/UpdateSettings/UpdateSettingsRepository.js +2 -2
- package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -1
- package/api/features/UpdateSettings/UpdateSettingsUseCase.d.ts +5 -3
- package/api/features/UpdateSettings/UpdateSettingsUseCase.js +10 -3
- package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
- package/api/features/UpdateSettings/feature.js +4 -4
- package/api/features/UpdateSettings/feature.js.map +1 -1
- package/api/features/WbGeneratePageContent/QueueWbGeneratePageContentUseCase.d.ts +13 -0
- package/api/features/WbGeneratePageContent/QueueWbGeneratePageContentUseCase.js +42 -0
- package/api/features/WbGeneratePageContent/QueueWbGeneratePageContentUseCase.js.map +1 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +2 -2
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +2 -2
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
- package/api/features/WbGeneratePageContent/abstractions.d.ts +14 -0
- package/api/features/WbGeneratePageContent/abstractions.js +2 -1
- package/api/features/WbGeneratePageContent/abstractions.js.map +1 -1
- package/api/features/WbGeneratePageContent/feature.js +4 -2
- package/api/features/WbGeneratePageContent/feature.js.map +1 -1
- package/api/features/WbGeneratePageContent/index.d.ts +1 -1
- package/api/features/WbGeneratePageContent/index.js +1 -1
- package/api/features/permissions/abstractions.d.ts +15 -0
- package/api/features/permissions/abstractions.js +6 -0
- package/api/features/permissions/abstractions.js.map +1 -0
- package/api/features/permissions/feature.d.ts +4 -0
- package/api/features/permissions/feature.js +7 -0
- package/api/features/permissions/feature.js.map +1 -0
- package/api/features/permissions/index.d.ts +2 -0
- package/api/features/permissions/index.js +2 -0
- package/api/graphql/BaseGraphQLSchema.js +22 -45
- package/api/graphql/BaseGraphQLSchema.js.map +1 -1
- package/domain/LlmJsonResponse.js +2 -1
- package/domain/LlmJsonResponse.js.map +1 -1
- package/package.json +30 -28
- package/shared/permissionsSchema.d.ts +20 -0
- package/shared/permissionsSchema.js +17 -0
- package/shared/permissionsSchema.js.map +1 -0
|
@@ -10,7 +10,7 @@ declare class GetSettingsRepositoryImpl implements GetSettingsRepository.Interfa
|
|
|
10
10
|
constructor(keyValueStore: KeyValueStore.Interface, handlers: AiPowerUpsSettingsGroupHandler.Interface[], cache: AiPowerUpsSettingsCache.Interface);
|
|
11
11
|
get(): Promise<Result<IAiPowerUpsSettings>>;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
declare const _default: typeof GetSettingsRepositoryImpl & {
|
|
14
14
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetSettingsRepository>;
|
|
15
15
|
};
|
|
16
|
-
export
|
|
16
|
+
export default _default;
|
|
@@ -22,7 +22,7 @@ class GetSettingsRepositoryImpl {
|
|
|
22
22
|
return Result.ok(mapped);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
const
|
|
25
|
+
const GetSettings_GetSettingsRepository = GetSettingsRepository.createImplementation({
|
|
26
26
|
implementation: GetSettingsRepositoryImpl,
|
|
27
27
|
dependencies: [
|
|
28
28
|
KeyValueStore,
|
|
@@ -35,6 +35,6 @@ const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplemen
|
|
|
35
35
|
AiPowerUpsSettingsCache
|
|
36
36
|
]
|
|
37
37
|
});
|
|
38
|
-
export
|
|
38
|
+
export default GetSettings_GetSettingsRepository;
|
|
39
39
|
|
|
40
40
|
//# sourceMappingURL=GetSettingsRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/GetSettings/GetSettingsRepository.js","sources":["../../../../src/api/features/GetSettings/GetSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport {\n AiPowerUpsSettingsGroupHandler,\n AiPowerUpsSettingsCache\n} from \"~/api/features/shared/index.js\";\nimport { GetSettingsRepository } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport { AI_POWER_UPS_SETTINGS } from \"~/api/constants.js\";\n\nclass GetSettingsRepositoryImpl implements GetSettingsRepository.Interface {\n constructor(\n private keyValueStore: KeyValueStore.Interface,\n private handlers: AiPowerUpsSettingsGroupHandler.Interface[],\n private cache: AiPowerUpsSettingsCache.Interface\n ) {}\n\n async get(): Promise<Result<IAiPowerUpsSettings>> {\n const cached = this.cache.get();\n if (cached) {\n return Result.ok(cached.mapped);\n }\n\n const storeResult =\n await this.keyValueStore.get<Record<string, unknown>>(AI_POWER_UPS_SETTINGS);\n\n const raw: Record<string, unknown> =\n storeResult.isOk() && storeResult.value ? storeResult.value : {};\n\n const result: Record<string, unknown> = {};\n\n for (const handler of this.handlers) {\n result[handler.name] = handler.mapFromStorage(raw[handler.name], raw);\n }\n\n for (const key of Object.keys(raw)) {\n if (!(key in result)) {\n result[key] = raw[key];\n }\n }\n\n const mapped = result as unknown as IAiPowerUpsSettings;\n this.cache.set(raw, mapped);\n\n return Result.ok(mapped);\n }\n}\n\nexport
|
|
1
|
+
{"version":3,"file":"api/features/GetSettings/GetSettingsRepository.js","sources":["../../../../src/api/features/GetSettings/GetSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport {\n AiPowerUpsSettingsGroupHandler,\n AiPowerUpsSettingsCache\n} from \"~/api/features/shared/index.js\";\nimport { GetSettingsRepository } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport { AI_POWER_UPS_SETTINGS } from \"~/api/constants.js\";\n\nclass GetSettingsRepositoryImpl implements GetSettingsRepository.Interface {\n constructor(\n private keyValueStore: KeyValueStore.Interface,\n private handlers: AiPowerUpsSettingsGroupHandler.Interface[],\n private cache: AiPowerUpsSettingsCache.Interface\n ) {}\n\n async get(): Promise<Result<IAiPowerUpsSettings>> {\n const cached = this.cache.get();\n if (cached) {\n return Result.ok(cached.mapped);\n }\n\n const storeResult =\n await this.keyValueStore.get<Record<string, unknown>>(AI_POWER_UPS_SETTINGS);\n\n const raw: Record<string, unknown> =\n storeResult.isOk() && storeResult.value ? storeResult.value : {};\n\n const result: Record<string, unknown> = {};\n\n for (const handler of this.handlers) {\n result[handler.name] = handler.mapFromStorage(raw[handler.name], raw);\n }\n\n for (const key of Object.keys(raw)) {\n if (!(key in result)) {\n result[key] = raw[key];\n }\n }\n\n const mapped = result as unknown as IAiPowerUpsSettings;\n this.cache.set(raw, mapped);\n\n return Result.ok(mapped);\n }\n}\n\nexport default GetSettingsRepository.createImplementation({\n implementation: GetSettingsRepositoryImpl,\n dependencies: [\n KeyValueStore,\n [AiPowerUpsSettingsGroupHandler, { multiple: true }],\n AiPowerUpsSettingsCache\n ]\n});\n"],"names":["GetSettingsRepositoryImpl","keyValueStore","handlers","cache","cached","Result","storeResult","AI_POWER_UPS_SETTINGS","raw","result","handler","key","Object","mapped","GetSettingsRepository","KeyValueStore","AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsCache"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,aAAsC,EACtCC,QAAoD,EACpDC,KAAwC,CAClD;aAHUF,aAAa,GAAbA;aACAC,QAAQ,GAARA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,MAA4C;QAC9C,MAAMC,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAIA,QACA,OAAOC,OAAO,EAAE,CAACD,OAAO,MAAM;QAGlC,MAAME,cACF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAA0BC;QAE1D,MAAMC,MACFF,YAAY,IAAI,MAAMA,YAAY,KAAK,GAAGA,YAAY,KAAK,GAAG,CAAC;QAEnE,MAAMG,SAAkC,CAAC;QAEzC,KAAK,MAAMC,WAAW,IAAI,CAAC,QAAQ,CAC/BD,MAAM,CAACC,QAAQ,IAAI,CAAC,GAAGA,QAAQ,cAAc,CAACF,GAAG,CAACE,QAAQ,IAAI,CAAC,EAAEF;QAGrE,KAAK,MAAMG,OAAOC,OAAO,IAAI,CAACJ,KAC1B,IAAI,CAAEG,CAAAA,OAAOF,MAAK,GACdA,MAAM,CAACE,IAAI,GAAGH,GAAG,CAACG,IAAI;QAI9B,MAAME,SAASJ;QACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAACD,KAAKK;QAEpB,OAAOR,OAAO,EAAE,CAACQ;IACrB;AACJ;AAEA,0CAAeC,sBAAsB,oBAAoB,CAAC;IACtD,gBAAgBd;IAChB,cAAc;QACVe;QACA;YAACC;YAAgC;gBAAE,UAAU;YAAK;SAAE;QACpDC;KACH;AACL"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { AiPowerUpsPermissions } from "../../../api/features/permissions/index.js";
|
|
1
4
|
import { GetSettingsUseCase, GetSettingsRepository } from "./abstractions.js";
|
|
5
|
+
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Returns the settings without key material that the caller may not see:
|
|
8
|
+
* the encrypted keys never, and the masked keys only with the `aiPowerups.settings` permission.
|
|
9
|
+
* Internal code that needs the keys uses `GetDecryptedSettingsUseCase`.
|
|
10
|
+
*/
|
|
2
11
|
declare class GetSettingsUseCaseImpl implements GetSettingsUseCase.Interface {
|
|
12
|
+
private identityContext;
|
|
13
|
+
private permissions;
|
|
3
14
|
private repository;
|
|
4
|
-
constructor(repository: GetSettingsRepository.Interface);
|
|
5
|
-
execute(): Promise<
|
|
15
|
+
constructor(identityContext: IdentityContext.Interface, permissions: AiPowerUpsPermissions.Interface, repository: GetSettingsRepository.Interface);
|
|
16
|
+
execute(): Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
6
17
|
}
|
|
7
|
-
|
|
18
|
+
declare const _default: typeof GetSettingsUseCaseImpl & {
|
|
8
19
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetSettingsUseCase>;
|
|
9
20
|
};
|
|
10
|
-
export
|
|
21
|
+
export default _default;
|
|
@@ -1,18 +1,47 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/errors.js";
|
|
4
|
+
import { AiPowerUpsPermissions } from "../permissions/index.js";
|
|
1
5
|
import { GetSettingsRepository, GetSettingsUseCase } from "./abstractions.js";
|
|
2
6
|
class GetSettingsUseCaseImpl {
|
|
3
|
-
constructor(repository){
|
|
7
|
+
constructor(identityContext, permissions, repository){
|
|
8
|
+
this.identityContext = identityContext;
|
|
9
|
+
this.permissions = permissions;
|
|
4
10
|
this.repository = repository;
|
|
5
11
|
}
|
|
6
|
-
execute() {
|
|
7
|
-
|
|
12
|
+
async execute() {
|
|
13
|
+
if (this.identityContext.getIdentity().isAnonymous()) return Result.fail(new NotAuthorizedError());
|
|
14
|
+
const result = await this.repository.get();
|
|
15
|
+
if (result.isFail()) return result;
|
|
16
|
+
const canSeeMaskedKeys = await this.permissions.canAccess("settings");
|
|
17
|
+
const settings = result.value;
|
|
18
|
+
const stripKeys = (presets)=>(presets ?? []).map((preset)=>({
|
|
19
|
+
...preset,
|
|
20
|
+
apiKey: void 0,
|
|
21
|
+
apiKeyEncrypted: "",
|
|
22
|
+
apiKeyMasked: canSeeMaskedKeys ? preset.apiKeyMasked : ""
|
|
23
|
+
}));
|
|
24
|
+
return Result.ok({
|
|
25
|
+
...settings,
|
|
26
|
+
providers: {
|
|
27
|
+
...settings.providers,
|
|
28
|
+
presets: stripKeys(settings.providers?.presets)
|
|
29
|
+
},
|
|
30
|
+
connections: {
|
|
31
|
+
...settings.connections,
|
|
32
|
+
presets: stripKeys(settings.connections?.presets)
|
|
33
|
+
}
|
|
34
|
+
});
|
|
8
35
|
}
|
|
9
36
|
}
|
|
10
|
-
const
|
|
37
|
+
const GetSettings_GetSettingsUseCase = GetSettingsUseCase.createImplementation({
|
|
11
38
|
implementation: GetSettingsUseCaseImpl,
|
|
12
39
|
dependencies: [
|
|
40
|
+
IdentityContext,
|
|
41
|
+
AiPowerUpsPermissions,
|
|
13
42
|
GetSettingsRepository
|
|
14
43
|
]
|
|
15
44
|
});
|
|
16
|
-
export
|
|
45
|
+
export default GetSettings_GetSettingsUseCase;
|
|
17
46
|
|
|
18
47
|
//# sourceMappingURL=GetSettingsUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/GetSettings/GetSettingsUseCase.js","sources":["../../../../src/api/features/GetSettings/GetSettingsUseCase.ts"],"sourcesContent":["import { GetSettingsUseCase, GetSettingsRepository } from \"./abstractions.js\";\n\nclass GetSettingsUseCaseImpl implements GetSettingsUseCase.Interface {\n constructor(private repository: GetSettingsRepository.Interface) {}\n\n execute() {\n return this.repository.get();\n
|
|
1
|
+
{"version":3,"file":"api/features/GetSettings/GetSettingsUseCase.js","sources":["../../../../src/api/features/GetSettings/GetSettingsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { AiPowerUpsPermissions } from \"~/api/features/permissions/index.js\";\nimport { GetSettingsUseCase, GetSettingsRepository } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\ninterface KeyHolder {\n apiKey?: string;\n apiKeyMasked: string;\n apiKeyEncrypted: string;\n}\n\n/**\n * Returns the settings without key material that the caller may not see:\n * the encrypted keys never, and the masked keys only with the `aiPowerups.settings` permission.\n * Internal code that needs the keys uses `GetDecryptedSettingsUseCase`.\n */\nclass GetSettingsUseCaseImpl implements GetSettingsUseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private permissions: AiPowerUpsPermissions.Interface,\n private repository: GetSettingsRepository.Interface\n ) {}\n\n async execute(): Promise<Result<IAiPowerUpsSettings, Error>> {\n if (this.identityContext.getIdentity().isAnonymous()) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const result = await this.repository.get();\n if (result.isFail()) {\n return result;\n }\n\n const canSeeMaskedKeys = await this.permissions.canAccess(\"settings\");\n const settings = result.value;\n\n // The repository returns a cached object, so build new ones instead of mutating it.\n const stripKeys = <T extends KeyHolder>(presets: T[] | undefined): T[] => {\n return (presets ?? []).map(preset => ({\n ...preset,\n apiKey: undefined,\n apiKeyEncrypted: \"\",\n apiKeyMasked: canSeeMaskedKeys ? preset.apiKeyMasked : \"\"\n }));\n };\n\n return Result.ok({\n ...settings,\n providers: {\n ...settings.providers,\n presets: stripKeys(settings.providers?.presets)\n },\n connections: {\n ...settings.connections,\n presets: stripKeys(settings.connections?.presets)\n }\n });\n }\n}\n\nexport default GetSettingsUseCase.createImplementation({\n implementation: GetSettingsUseCaseImpl,\n dependencies: [IdentityContext, AiPowerUpsPermissions, GetSettingsRepository]\n});\n"],"names":["GetSettingsUseCaseImpl","identityContext","permissions","repository","Result","NotAuthorizedError","result","canSeeMaskedKeys","settings","stripKeys","presets","preset","undefined","GetSettingsUseCase","IdentityContext","AiPowerUpsPermissions","GetSettingsRepository"],"mappings":";;;;;AAkBA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,WAA4C,EAC5CC,UAA2C,CACrD;aAHUF,eAAe,GAAfA;aACAC,WAAW,GAAXA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,UAAuD;QACzD,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,WAAW,IAC9C,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG;QACxC,IAAIA,OAAO,MAAM,IACb,OAAOA;QAGX,MAAMC,mBAAmB,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAC1D,MAAMC,WAAWF,OAAO,KAAK;QAG7B,MAAMG,YAAY,CAAsBC,UAC5BA,AAAAA,CAAAA,WAAW,EAAC,EAAG,GAAG,CAACC,CAAAA,SAAW;oBAClC,GAAGA,MAAM;oBACT,QAAQC;oBACR,iBAAiB;oBACjB,cAAcL,mBAAmBI,OAAO,YAAY,GAAG;gBAC3D;QAGJ,OAAOP,OAAO,EAAE,CAAC;YACb,GAAGI,QAAQ;YACX,WAAW;gBACP,GAAGA,SAAS,SAAS;gBACrB,SAASC,UAAUD,SAAS,SAAS,EAAE;YAC3C;YACA,aAAa;gBACT,GAAGA,SAAS,WAAW;gBACvB,SAASC,UAAUD,SAAS,WAAW,EAAE;YAC7C;QACJ;IACJ;AACJ;AAEA,uCAAeK,mBAAmB,oBAAoB,CAAC;IACnD,gBAAgBb;IAChB,cAAc;QAACc;QAAiBC;QAAuBC;KAAsB;AACjF"}
|
|
@@ -8,7 +8,7 @@ export declare namespace GetSettingsRepository {
|
|
|
8
8
|
type Interface = IGetSettingsRepository;
|
|
9
9
|
}
|
|
10
10
|
export interface IGetSettingsUseCase {
|
|
11
|
-
execute(): Promise<Result<IAiPowerUpsSettings>>;
|
|
11
|
+
execute(): Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
12
12
|
}
|
|
13
13
|
export declare const GetSettingsUseCase: import("@webiny/di").Abstraction<IGetSettingsUseCase>;
|
|
14
14
|
export declare namespace GetSettingsUseCase {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/GetSettings/abstractions.js","sources":["../../../../src/api/features/GetSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nexport interface IGetSettingsRepository {\n get(): Promise<Result<IAiPowerUpsSettings>>;\n}\n\nexport const GetSettingsRepository = createAbstraction<IGetSettingsRepository>(\n \"AiPowerUpsGetSettingsRepository\"\n);\n\nexport namespace GetSettingsRepository {\n export type Interface = IGetSettingsRepository;\n}\n\nexport interface IGetSettingsUseCase {\n execute(): Promise<Result<IAiPowerUpsSettings>>;\n}\n\nexport const GetSettingsUseCase = createAbstraction<IGetSettingsUseCase>(\n \"AiPowerUpsGetSettingsUseCase\"\n);\n\nexport namespace GetSettingsUseCase {\n export type Interface = IGetSettingsUseCase;\n}\n"],"names":["GetSettingsRepository","createAbstraction","GetSettingsUseCase"],"mappings":";AAOO,MAAMA,wBAAwBC,kBACjC;AAWG,MAAMC,qBAAqBD,kBAC9B"}
|
|
1
|
+
{"version":3,"file":"api/features/GetSettings/abstractions.js","sources":["../../../../src/api/features/GetSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nexport interface IGetSettingsRepository {\n get(): Promise<Result<IAiPowerUpsSettings>>;\n}\n\nexport const GetSettingsRepository = createAbstraction<IGetSettingsRepository>(\n \"AiPowerUpsGetSettingsRepository\"\n);\n\nexport namespace GetSettingsRepository {\n export type Interface = IGetSettingsRepository;\n}\n\nexport interface IGetSettingsUseCase {\n execute(): Promise<Result<IAiPowerUpsSettings, Error>>;\n}\n\nexport const GetSettingsUseCase = createAbstraction<IGetSettingsUseCase>(\n \"AiPowerUpsGetSettingsUseCase\"\n);\n\nexport namespace GetSettingsUseCase {\n export type Interface = IGetSettingsUseCase;\n}\n"],"names":["GetSettingsRepository","createAbstraction","GetSettingsUseCase"],"mappings":";AAOO,MAAMA,wBAAwBC,kBACjC;AAWG,MAAMC,qBAAqBD,kBAC9B"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import GetSettingsRepository from "./GetSettingsRepository.js";
|
|
3
|
+
import GetSettingsUseCase from "./GetSettingsUseCase.js";
|
|
4
4
|
const GetSettingsFeature = createFeature({
|
|
5
5
|
name: "AiPowerUpsGetSettings",
|
|
6
6
|
register (container) {
|
|
7
|
-
container.register(
|
|
8
|
-
container.register(
|
|
7
|
+
container.register(GetSettingsRepository).inSingletonScope();
|
|
8
|
+
container.register(GetSettingsUseCase);
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
export { GetSettingsFeature };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/GetSettings/feature.js","sources":["../../../../src/api/features/GetSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport
|
|
1
|
+
{"version":3,"file":"api/features/GetSettings/feature.js","sources":["../../../../src/api/features/GetSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport GetSettingsRepository from \"./GetSettingsRepository.js\";\nimport GetSettingsUseCase from \"./GetSettingsUseCase.js\";\n\nexport const GetSettingsFeature = createFeature({\n name: \"AiPowerUpsGetSettings\",\n register(container) {\n container.register(GetSettingsRepository).inSingletonScope();\n container.register(GetSettingsUseCase);\n }\n});\n"],"names":["GetSettingsFeature","createFeature","container","GetSettingsRepository","GetSettingsUseCase"],"mappings":";;;AAIO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,uBAAuB,gBAAgB;QAC1DD,UAAU,QAAQ,CAACE;IACvB;AACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { AiModelRegistry } from "@webiny/api-core/features/ai/index.js";
|
|
3
|
+
import type { AiModel } from "@webiny/api-core/features/ai/index.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
5
|
+
import { ListModelsUseCase } from "./abstractions.js";
|
|
6
|
+
declare class ListModelsUseCaseImpl implements ListModelsUseCase.Interface {
|
|
7
|
+
private identityContext;
|
|
8
|
+
private registry;
|
|
9
|
+
constructor(identityContext: IdentityContext.Interface, registry: AiModelRegistry.Interface);
|
|
10
|
+
execute(): Promise<Result<AiModel[], Error>>;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: typeof ListModelsUseCaseImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IListModelsUseCase>;
|
|
14
|
+
};
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { AiModelRegistry } from "@webiny/api-core/features/ai/index.js";
|
|
3
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
4
|
+
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/errors.js";
|
|
5
|
+
import { ListModelsUseCase } from "./abstractions.js";
|
|
6
|
+
class ListModelsUseCaseImpl {
|
|
7
|
+
constructor(identityContext, registry){
|
|
8
|
+
this.identityContext = identityContext;
|
|
9
|
+
this.registry = registry;
|
|
10
|
+
}
|
|
11
|
+
async execute() {
|
|
12
|
+
if (this.identityContext.getIdentity().isAnonymous()) return Result.fail(new NotAuthorizedError());
|
|
13
|
+
return Result.ok(await this.registry.listModels());
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const ListModels_ListModelsUseCase = ListModelsUseCase.createImplementation({
|
|
17
|
+
implementation: ListModelsUseCaseImpl,
|
|
18
|
+
dependencies: [
|
|
19
|
+
IdentityContext,
|
|
20
|
+
AiModelRegistry
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
export default ListModels_ListModelsUseCase;
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=ListModelsUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ListModels/ListModelsUseCase.js","sources":["../../../../src/api/features/ListModels/ListModelsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { AiModelRegistry } from \"@webiny/api-core/features/ai/index.js\";\nimport type { AiModel } from \"@webiny/api-core/features/ai/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { ListModelsUseCase } from \"./abstractions.js\";\n\nclass ListModelsUseCaseImpl implements ListModelsUseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private registry: AiModelRegistry.Interface\n ) {}\n\n async execute(): Promise<Result<AiModel[], Error>> {\n if (this.identityContext.getIdentity().isAnonymous()) {\n return Result.fail(new NotAuthorizedError());\n }\n return Result.ok(await this.registry.listModels());\n }\n}\n\nexport default ListModelsUseCase.createImplementation({\n implementation: ListModelsUseCaseImpl,\n dependencies: [IdentityContext, AiModelRegistry]\n});\n"],"names":["ListModelsUseCaseImpl","identityContext","registry","Result","NotAuthorizedError","ListModelsUseCase","IdentityContext","AiModelRegistry"],"mappings":";;;;;AAOA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,QAAmC,CAC7C;aAFUD,eAAe,GAAfA;aACAC,QAAQ,GAARA;IACT;IAEH,MAAM,UAA6C;QAC/C,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,WAAW,IAC9C,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAE3B,OAAOD,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU;IACnD;AACJ;AAEA,qCAAeE,kBAAkB,oBAAoB,CAAC;IAClD,gBAAgBL;IAChB,cAAc;QAACM;QAAiBC;KAAgB;AACpD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import type { AiModel } from "@webiny/api-core/features/ai/index.js";
|
|
3
|
+
export interface IListModelsUseCase {
|
|
4
|
+
execute(): Promise<Result<AiModel[], Error>>;
|
|
5
|
+
}
|
|
6
|
+
/** Lists the AI models that can be used in AI Power-Ups provider presets. */
|
|
7
|
+
export declare const ListModelsUseCase: import("@webiny/di").Abstraction<IListModelsUseCase>;
|
|
8
|
+
export declare namespace ListModelsUseCase {
|
|
9
|
+
type Interface = IListModelsUseCase;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ListModels/abstractions.js","sources":["../../../../src/api/features/ListModels/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { AiModel } from \"@webiny/api-core/features/ai/index.js\";\n\nexport interface IListModelsUseCase {\n execute(): Promise<Result<AiModel[], Error>>;\n}\n\n/** Lists the AI models that can be used in AI Power-Ups provider presets. */\nexport const ListModelsUseCase = createAbstraction<IListModelsUseCase>(\n \"AiPowerUpsListModelsUseCase\"\n);\n\nexport namespace ListModelsUseCase {\n export type Interface = IListModelsUseCase;\n}\n"],"names":["ListModelsUseCase","createAbstraction"],"mappings":";AAQO,MAAMA,oBAAoBC,kBAC7B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import ListModelsUseCase from "./ListModelsUseCase.js";
|
|
3
|
+
const ListModelsFeature = createFeature({
|
|
4
|
+
name: "AiPowerUpsListModels",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(ListModelsUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { ListModelsFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ListModels/feature.js","sources":["../../../../src/api/features/ListModels/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport ListModelsUseCase from \"./ListModelsUseCase.js\";\n\nexport const ListModelsFeature = createFeature({\n name: \"AiPowerUpsListModels\",\n register(container) {\n container.register(ListModelsUseCase);\n }\n});\n"],"names":["ListModelsFeature","createFeature","container","ListModelsUseCase"],"mappings":";;AAGO,MAAMA,oBAAoBC,cAAc;IAC3C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ListModelsUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ListModelsUseCase } from "./abstractions.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/Providers/ProvidersGraphQLMapper.js","sources":["../../../../src/api/features/Providers/ProvidersGraphQLMapper.ts"],"sourcesContent":["import { AiPowerUpsSettingsGroupGraphQLMapper } from \"~/api/features/shared/index.js\";\nimport type { ProvidersSettings } from \"./types.js\";\n\ninterface ApiProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey: string | null;\n}\n\ninterface ApiProviders {\n presets: ApiProviderPreset[];\n}\n\ninterface ApiInputProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey?: string;\n}\n\ninterface ApiInputProviders {\n presets: ApiInputProviderPreset[];\n}\n\nclass ProvidersGraphQLMapperImpl implements AiPowerUpsSettingsGroupGraphQLMapper.Interface {\n readonly name = \"providers\";\n\n toApi(internal: unknown): ApiProviders {\n const data = internal as ProvidersSettings;\n return {\n presets: data.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n model: p.model,\n apiKey: p.apiKeyMasked
|
|
1
|
+
{"version":3,"file":"api/features/Providers/ProvidersGraphQLMapper.js","sources":["../../../../src/api/features/Providers/ProvidersGraphQLMapper.ts"],"sourcesContent":["import { AiPowerUpsSettingsGroupGraphQLMapper } from \"~/api/features/shared/index.js\";\nimport type { ProvidersSettings } from \"./types.js\";\n\ninterface ApiProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey: string | null;\n}\n\ninterface ApiProviders {\n presets: ApiProviderPreset[];\n}\n\ninterface ApiInputProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey?: string;\n}\n\ninterface ApiInputProviders {\n presets: ApiInputProviderPreset[];\n}\n\nclass ProvidersGraphQLMapperImpl implements AiPowerUpsSettingsGroupGraphQLMapper.Interface {\n readonly name = \"providers\";\n\n toApi(internal: unknown): ApiProviders {\n const data = internal as ProvidersSettings;\n return {\n presets: data.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n model: p.model,\n apiKey: p.apiKeyMasked || null\n }))\n };\n }\n\n fromApi(api: unknown): ProvidersSettings {\n const data = api as ApiInputProviders;\n return {\n presets: data.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n model: p.model,\n apiKey: p.apiKey,\n apiKeyMasked: \"\",\n apiKeyEncrypted: \"\"\n }))\n };\n }\n}\n\nexport default AiPowerUpsSettingsGroupGraphQLMapper.createImplementation({\n implementation: ProvidersGraphQLMapperImpl,\n dependencies: []\n});\n"],"names":["ProvidersGraphQLMapperImpl","internal","data","p","api","AiPowerUpsSettingsGroupGraphQLMapper"],"mappings":";AA2BA,MAAMA;IAGF,MAAMC,QAAiB,EAAgB;QACnC,MAAMC,OAAOD;QACb,OAAO;YACH,SAASC,KAAK,OAAO,CAAC,GAAG,CAACC,CAAAA,IAAM;oBAC5B,IAAIA,EAAE,EAAE;oBACR,MAAMA,EAAE,IAAI;oBACZ,aAAaA,EAAE,WAAW;oBAC1B,OAAOA,EAAE,KAAK;oBACd,QAAQA,EAAE,YAAY,IAAI;gBAC9B;QACJ;IACJ;IAEA,QAAQC,GAAY,EAAqB;QACrC,MAAMF,OAAOE;QACb,OAAO;YACH,SAASF,KAAK,OAAO,CAAC,GAAG,CAACC,CAAAA,IAAM;oBAC5B,IAAIA,EAAE,EAAE;oBACR,MAAMA,EAAE,IAAI;oBACZ,aAAaA,EAAE,WAAW;oBAC1B,OAAOA,EAAE,KAAK;oBACd,QAAQA,EAAE,MAAM;oBAChB,cAAc;oBACd,iBAAiB;gBACrB;QACJ;IACJ;;aA5BS,IAAI,GAAG;;AA6BpB;AAEA,+BAAeE,qCAAqC,oBAAoB,CAAC;IACrE,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -10,7 +10,7 @@ declare class UpdateSettingsRepositoryImpl implements UpdateSettingsRepository.I
|
|
|
10
10
|
constructor(keyValueStore: KeyValueStore.Interface, handlers: AiPowerUpsSettingsGroupHandler.Interface[], cache: AiPowerUpsSettingsCache.Interface);
|
|
11
11
|
execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
declare const _default: typeof UpdateSettingsRepositoryImpl & {
|
|
14
14
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IUpdateSettingsRepository>;
|
|
15
15
|
};
|
|
16
|
-
export
|
|
16
|
+
export default _default;
|
|
@@ -53,7 +53,7 @@ class UpdateSettingsRepositoryImpl {
|
|
|
53
53
|
return Result.ok(mapped);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
const
|
|
56
|
+
const UpdateSettings_UpdateSettingsRepository = UpdateSettingsRepository.createImplementation({
|
|
57
57
|
implementation: UpdateSettingsRepositoryImpl,
|
|
58
58
|
dependencies: [
|
|
59
59
|
KeyValueStore,
|
|
@@ -66,6 +66,6 @@ const UpdateSettingsRepositoryImplementation = UpdateSettingsRepository.createIm
|
|
|
66
66
|
AiPowerUpsSettingsCache
|
|
67
67
|
]
|
|
68
68
|
});
|
|
69
|
-
export
|
|
69
|
+
export default UpdateSettings_UpdateSettingsRepository;
|
|
70
70
|
|
|
71
71
|
//# sourceMappingURL=UpdateSettingsRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/UpdateSettings/UpdateSettingsRepository.js","sources":["../../../../src/api/features/UpdateSettings/UpdateSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport type { OutputErrors } from \"@webiny/utils/createZodError.js\";\nimport {\n AiPowerUpsSettingsGroupHandler,\n AiPowerUpsSettingsCache\n} from \"~/api/features/shared/index.js\";\nimport { UpdateSettingsRepository } from \"./abstractions.js\";\nimport { SettingsValidationError } from \"./errors.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport { AI_POWER_UPS_SETTINGS } from \"~/api/constants.js\";\n\nclass UpdateSettingsRepositoryImpl implements UpdateSettingsRepository.Interface {\n constructor(\n private keyValueStore: KeyValueStore.Interface,\n private handlers: AiPowerUpsSettingsGroupHandler.Interface[],\n private cache: AiPowerUpsSettingsCache.Interface\n ) {}\n\n async execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>> {\n const cached = this.cache.get();\n let raw: Record<string, unknown>;\n\n if (cached) {\n raw = cached.raw;\n } else {\n const storeResult =\n await this.keyValueStore.get<Record<string, unknown>>(AI_POWER_UPS_SETTINGS);\n raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};\n }\n\n const existingInternal: Record<string, unknown> = {};\n for (const handler of this.handlers) {\n /*\n * `raw` matters here as much as it does on read. `connections` derives itself from the\n * legacy `providers` section until it has one of its own, and this is what\n * `mapToStorage` diffs against to carry forward an encrypted key the form only ever saw\n * as a mask. Without it, the first save after an upgrade compares against an empty list\n * and silently drops every stored key.\n */\n existingInternal[handler.name] = handler.mapFromStorage(raw[handler.name], raw);\n }\n\n const newSettings = input as unknown as Record<string, unknown>;\n const invalidFields: OutputErrors = {};\n\n for (const handler of this.handlers) {\n const parseResult = await handler.inputSchema.safeParseAsync(newSettings[handler.name]);\n if (!parseResult.success) {\n for (const issue of parseResult.error.issues) {\n const fieldPath = [handler.name, ...issue.path.map(String)].join(\".\");\n invalidFields[fieldPath] = {\n code: issue.code,\n message: issue.message,\n data: { path: issue.path }\n };\n }\n }\n }\n\n if (Object.keys(invalidFields).length > 0) {\n return Result.fail(new SettingsValidationError(invalidFields));\n }\n\n const persisted: Record<string, unknown> = { ...raw };\n for (const handler of this.handlers) {\n persisted[handler.name] = await handler.mapToStorage(\n newSettings[handler.name],\n existingInternal[handler.name]\n );\n }\n\n const writeResult = await this.keyValueStore.set(AI_POWER_UPS_SETTINGS, persisted);\n if (writeResult.isFail()) {\n return Result.fail(new Error(String(writeResult.error)));\n }\n\n const result: Record<string, unknown> = {};\n for (const handler of this.handlers) {\n result[handler.name] = handler.mapFromStorage(persisted[handler.name], persisted);\n }\n\n for (const key of Object.keys(persisted)) {\n if (!(key in result)) {\n result[key] = persisted[key];\n }\n }\n\n const mapped = result as unknown as IAiPowerUpsSettings;\n this.cache.set(persisted, mapped);\n\n return Result.ok(mapped);\n }\n}\n\nexport
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/UpdateSettingsRepository.js","sources":["../../../../src/api/features/UpdateSettings/UpdateSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport type { OutputErrors } from \"@webiny/utils/createZodError.js\";\nimport {\n AiPowerUpsSettingsGroupHandler,\n AiPowerUpsSettingsCache\n} from \"~/api/features/shared/index.js\";\nimport { UpdateSettingsRepository } from \"./abstractions.js\";\nimport { SettingsValidationError } from \"./errors.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport { AI_POWER_UPS_SETTINGS } from \"~/api/constants.js\";\n\nclass UpdateSettingsRepositoryImpl implements UpdateSettingsRepository.Interface {\n constructor(\n private keyValueStore: KeyValueStore.Interface,\n private handlers: AiPowerUpsSettingsGroupHandler.Interface[],\n private cache: AiPowerUpsSettingsCache.Interface\n ) {}\n\n async execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>> {\n const cached = this.cache.get();\n let raw: Record<string, unknown>;\n\n if (cached) {\n raw = cached.raw;\n } else {\n const storeResult =\n await this.keyValueStore.get<Record<string, unknown>>(AI_POWER_UPS_SETTINGS);\n raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};\n }\n\n const existingInternal: Record<string, unknown> = {};\n for (const handler of this.handlers) {\n /*\n * `raw` matters here as much as it does on read. `connections` derives itself from the\n * legacy `providers` section until it has one of its own, and this is what\n * `mapToStorage` diffs against to carry forward an encrypted key the form only ever saw\n * as a mask. Without it, the first save after an upgrade compares against an empty list\n * and silently drops every stored key.\n */\n existingInternal[handler.name] = handler.mapFromStorage(raw[handler.name], raw);\n }\n\n const newSettings = input as unknown as Record<string, unknown>;\n const invalidFields: OutputErrors = {};\n\n for (const handler of this.handlers) {\n const parseResult = await handler.inputSchema.safeParseAsync(newSettings[handler.name]);\n if (!parseResult.success) {\n for (const issue of parseResult.error.issues) {\n const fieldPath = [handler.name, ...issue.path.map(String)].join(\".\");\n invalidFields[fieldPath] = {\n code: issue.code,\n message: issue.message,\n data: { path: issue.path }\n };\n }\n }\n }\n\n if (Object.keys(invalidFields).length > 0) {\n return Result.fail(new SettingsValidationError(invalidFields));\n }\n\n const persisted: Record<string, unknown> = { ...raw };\n for (const handler of this.handlers) {\n persisted[handler.name] = await handler.mapToStorage(\n newSettings[handler.name],\n existingInternal[handler.name]\n );\n }\n\n const writeResult = await this.keyValueStore.set(AI_POWER_UPS_SETTINGS, persisted);\n if (writeResult.isFail()) {\n return Result.fail(new Error(String(writeResult.error)));\n }\n\n const result: Record<string, unknown> = {};\n for (const handler of this.handlers) {\n result[handler.name] = handler.mapFromStorage(persisted[handler.name], persisted);\n }\n\n for (const key of Object.keys(persisted)) {\n if (!(key in result)) {\n result[key] = persisted[key];\n }\n }\n\n const mapped = result as unknown as IAiPowerUpsSettings;\n this.cache.set(persisted, mapped);\n\n return Result.ok(mapped);\n }\n}\n\nexport default UpdateSettingsRepository.createImplementation({\n implementation: UpdateSettingsRepositoryImpl,\n dependencies: [\n KeyValueStore,\n [AiPowerUpsSettingsGroupHandler, { multiple: true }],\n AiPowerUpsSettingsCache\n ]\n});\n"],"names":["UpdateSettingsRepositoryImpl","keyValueStore","handlers","cache","input","cached","raw","storeResult","AI_POWER_UPS_SETTINGS","existingInternal","handler","newSettings","invalidFields","parseResult","issue","fieldPath","String","Object","Result","SettingsValidationError","persisted","writeResult","Error","result","key","mapped","UpdateSettingsRepository","KeyValueStore","AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsCache"],"mappings":";;;;;;AAYA,MAAMA;IACF,YACYC,aAAsC,EACtCC,QAAoD,EACpDC,KAAwC,CAClD;aAHUF,aAAa,GAAbA;aACAC,QAAQ,GAARA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QAAQC,KAA0B,EAA+C;QACnF,MAAMC,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAIC;QAEJ,IAAID,QACAC,MAAMD,OAAO,GAAG;aACb;YACH,MAAME,cACF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAA0BC;YAC1DF,MAAMC,YAAY,IAAI,MAAMA,YAAY,KAAK,GAAGA,YAAY,KAAK,GAAG,CAAC;QACzE;QAEA,MAAME,mBAA4C,CAAC;QACnD,KAAK,MAAMC,WAAW,IAAI,CAAC,QAAQ,CAQ/BD,gBAAgB,CAACC,QAAQ,IAAI,CAAC,GAAGA,QAAQ,cAAc,CAACJ,GAAG,CAACI,QAAQ,IAAI,CAAC,EAAEJ;QAG/E,MAAMK,cAAcP;QACpB,MAAMQ,gBAA8B,CAAC;QAErC,KAAK,MAAMF,WAAW,IAAI,CAAC,QAAQ,CAAE;YACjC,MAAMG,cAAc,MAAMH,QAAQ,WAAW,CAAC,cAAc,CAACC,WAAW,CAACD,QAAQ,IAAI,CAAC;YACtF,IAAI,CAACG,YAAY,OAAO,EACpB,KAAK,MAAMC,SAASD,YAAY,KAAK,CAAC,MAAM,CAAE;gBAC1C,MAAME,YAAY;oBAACL,QAAQ,IAAI;uBAAKI,MAAM,IAAI,CAAC,GAAG,CAACE;iBAAQ,CAAC,IAAI,CAAC;gBACjEJ,aAAa,CAACG,UAAU,GAAG;oBACvB,MAAMD,MAAM,IAAI;oBAChB,SAASA,MAAM,OAAO;oBACtB,MAAM;wBAAE,MAAMA,MAAM,IAAI;oBAAC;gBAC7B;YACJ;QAER;QAEA,IAAIG,OAAO,IAAI,CAACL,eAAe,MAAM,GAAG,GACpC,OAAOM,OAAO,IAAI,CAAC,IAAIC,wBAAwBP;QAGnD,MAAMQ,YAAqC;YAAE,GAAGd,GAAG;QAAC;QACpD,KAAK,MAAMI,WAAW,IAAI,CAAC,QAAQ,CAC/BU,SAAS,CAACV,QAAQ,IAAI,CAAC,GAAG,MAAMA,QAAQ,YAAY,CAChDC,WAAW,CAACD,QAAQ,IAAI,CAAC,EACzBD,gBAAgB,CAACC,QAAQ,IAAI,CAAC;QAItC,MAAMW,cAAc,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAACb,uBAAuBY;QACxE,IAAIC,YAAY,MAAM,IAClB,OAAOH,OAAO,IAAI,CAAC,IAAII,MAAMN,OAAOK,YAAY,KAAK;QAGzD,MAAME,SAAkC,CAAC;QACzC,KAAK,MAAMb,WAAW,IAAI,CAAC,QAAQ,CAC/Ba,MAAM,CAACb,QAAQ,IAAI,CAAC,GAAGA,QAAQ,cAAc,CAACU,SAAS,CAACV,QAAQ,IAAI,CAAC,EAAEU;QAG3E,KAAK,MAAMI,OAAOP,OAAO,IAAI,CAACG,WAC1B,IAAI,CAAEI,CAAAA,OAAOD,MAAK,GACdA,MAAM,CAACC,IAAI,GAAGJ,SAAS,CAACI,IAAI;QAIpC,MAAMC,SAASF;QACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAACH,WAAWK;QAE1B,OAAOP,OAAO,EAAE,CAACO;IACrB;AACJ;AAEA,gDAAeC,yBAAyB,oBAAoB,CAAC;IACzD,gBAAgB1B;IAChB,cAAc;QACV2B;QACA;YAACC;YAAgC;gBAAE,UAAU;YAAK;SAAE;QACpDC;KACH;AACL"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { AiPowerUpsPermissions } from "../../../api/features/permissions/index.js";
|
|
2
3
|
import { UpdateSettingsUseCase, UpdateSettingsRepository } from "./abstractions.js";
|
|
3
4
|
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
4
5
|
declare class UpdateSettingsUseCaseImpl implements UpdateSettingsUseCase.Interface {
|
|
6
|
+
private permissions;
|
|
5
7
|
private eventPublisher;
|
|
6
8
|
private repository;
|
|
7
|
-
constructor(eventPublisher: EventPublisher.Interface, repository: UpdateSettingsRepository.Interface);
|
|
9
|
+
constructor(permissions: AiPowerUpsPermissions.Interface, eventPublisher: EventPublisher.Interface, repository: UpdateSettingsRepository.Interface);
|
|
8
10
|
execute(input: IAiPowerUpsSettings): UpdateSettingsUseCase.Return;
|
|
9
11
|
}
|
|
10
|
-
|
|
12
|
+
declare const _default: typeof UpdateSettingsUseCaseImpl & {
|
|
11
13
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IUpdateSettingsUseCase>;
|
|
12
14
|
};
|
|
13
|
-
export
|
|
15
|
+
export default _default;
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
1
2
|
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/errors.js";
|
|
4
|
+
import { AiPowerUpsPermissions } from "../permissions/index.js";
|
|
2
5
|
import { UpdateSettingsRepository, UpdateSettingsUseCase } from "./abstractions.js";
|
|
3
6
|
import { AiPowerUpsSettingsAfterUpdateEvent, AiPowerUpsSettingsBeforeUpdateEvent } from "./events.js";
|
|
4
7
|
class UpdateSettingsUseCaseImpl {
|
|
5
|
-
constructor(eventPublisher, repository){
|
|
8
|
+
constructor(permissions, eventPublisher, repository){
|
|
9
|
+
this.permissions = permissions;
|
|
6
10
|
this.eventPublisher = eventPublisher;
|
|
7
11
|
this.repository = repository;
|
|
8
12
|
}
|
|
9
13
|
async execute(input) {
|
|
14
|
+
const canManageSettings = await this.permissions.canAccess("settings");
|
|
15
|
+
if (!canManageSettings) return Result.fail(new NotAuthorizedError());
|
|
10
16
|
await this.eventPublisher.publish(new AiPowerUpsSettingsBeforeUpdateEvent({
|
|
11
17
|
input
|
|
12
18
|
}));
|
|
@@ -18,13 +24,14 @@ class UpdateSettingsUseCaseImpl {
|
|
|
18
24
|
return result;
|
|
19
25
|
}
|
|
20
26
|
}
|
|
21
|
-
const
|
|
27
|
+
const UpdateSettings_UpdateSettingsUseCase = UpdateSettingsUseCase.createImplementation({
|
|
22
28
|
implementation: UpdateSettingsUseCaseImpl,
|
|
23
29
|
dependencies: [
|
|
30
|
+
AiPowerUpsPermissions,
|
|
24
31
|
EventPublisher,
|
|
25
32
|
UpdateSettingsRepository
|
|
26
33
|
]
|
|
27
34
|
});
|
|
28
|
-
export
|
|
35
|
+
export default UpdateSettings_UpdateSettingsUseCase;
|
|
29
36
|
|
|
30
37
|
//# sourceMappingURL=UpdateSettingsUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/UpdateSettings/UpdateSettingsUseCase.js","sources":["../../../../src/api/features/UpdateSettings/UpdateSettingsUseCase.ts"],"sourcesContent":["import { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { UpdateSettingsUseCase, UpdateSettingsRepository } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport {\n AiPowerUpsSettingsBeforeUpdateEvent,\n AiPowerUpsSettingsAfterUpdateEvent\n} from \"./events.js\";\n\nclass UpdateSettingsUseCaseImpl implements UpdateSettingsUseCase.Interface {\n constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateSettingsRepository.Interface\n ) {}\n\n async execute(input: IAiPowerUpsSettings): UpdateSettingsUseCase.Return {\n await this.eventPublisher.publish(new AiPowerUpsSettingsBeforeUpdateEvent({ input }));\n\n const result = await this.repository.execute(input);\n\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new AiPowerUpsSettingsAfterUpdateEvent({ settings: result.value })\n );\n\n return result;\n }\n}\n\nexport
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/UpdateSettingsUseCase.js","sources":["../../../../src/api/features/UpdateSettings/UpdateSettingsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { AiPowerUpsPermissions } from \"~/api/features/permissions/index.js\";\nimport { UpdateSettingsUseCase, UpdateSettingsRepository } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport {\n AiPowerUpsSettingsBeforeUpdateEvent,\n AiPowerUpsSettingsAfterUpdateEvent\n} from \"./events.js\";\n\nclass UpdateSettingsUseCaseImpl implements UpdateSettingsUseCase.Interface {\n constructor(\n private permissions: AiPowerUpsPermissions.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateSettingsRepository.Interface\n ) {}\n\n async execute(input: IAiPowerUpsSettings): UpdateSettingsUseCase.Return {\n // The settings hold the AI provider API keys.\n const canManageSettings = await this.permissions.canAccess(\"settings\");\n if (!canManageSettings) {\n return Result.fail(new NotAuthorizedError());\n }\n\n await this.eventPublisher.publish(new AiPowerUpsSettingsBeforeUpdateEvent({ input }));\n\n const result = await this.repository.execute(input);\n\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new AiPowerUpsSettingsAfterUpdateEvent({ settings: result.value })\n );\n\n return result;\n }\n}\n\nexport default UpdateSettingsUseCase.createImplementation({\n implementation: UpdateSettingsUseCaseImpl,\n dependencies: [AiPowerUpsPermissions, EventPublisher, UpdateSettingsRepository]\n});\n"],"names":["UpdateSettingsUseCaseImpl","permissions","eventPublisher","repository","input","canManageSettings","Result","NotAuthorizedError","AiPowerUpsSettingsBeforeUpdateEvent","result","AiPowerUpsSettingsAfterUpdateEvent","UpdateSettingsUseCase","AiPowerUpsPermissions","EventPublisher","UpdateSettingsRepository"],"mappings":";;;;;;AAWA,MAAMA;IACF,YACYC,WAA4C,EAC5CC,cAAwC,EACxCC,UAA8C,CACxD;aAHUF,WAAW,GAAXA;aACAC,cAAc,GAAdA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,KAA0B,EAAgC;QAEpE,MAAMC,oBAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAC3D,IAAI,CAACA,mBACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIC,oCAAoC;YAAEJ;QAAM;QAElF,MAAMK,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACL;QAE7C,IAAIK,OAAO,MAAM,IACb,OAAOA;QAGX,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,mCAAmC;YAAE,UAAUD,OAAO,KAAK;QAAC;QAGpE,OAAOA;IACX;AACJ;AAEA,6CAAeE,sBAAsB,oBAAoB,CAAC;IACtD,gBAAgBX;IAChB,cAAc;QAACY;QAAuBC;QAAgBC;KAAyB;AACnF"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import UpdateSettingsRepository from "./UpdateSettingsRepository.js";
|
|
3
|
+
import UpdateSettingsUseCase from "./UpdateSettingsUseCase.js";
|
|
4
4
|
const UpdateSettingsFeature = createFeature({
|
|
5
5
|
name: "AiPowerUpsUpdateSettings",
|
|
6
6
|
register (container) {
|
|
7
|
-
container.register(
|
|
8
|
-
container.register(
|
|
7
|
+
container.register(UpdateSettingsRepository).inSingletonScope();
|
|
8
|
+
container.register(UpdateSettingsUseCase);
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
export { UpdateSettingsFeature };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/features/UpdateSettings/feature.js","sources":["../../../../src/api/features/UpdateSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/feature.js","sources":["../../../../src/api/features/UpdateSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport UpdateSettingsRepository from \"./UpdateSettingsRepository.js\";\nimport UpdateSettingsUseCase from \"./UpdateSettingsUseCase.js\";\n\nexport const UpdateSettingsFeature = createFeature({\n name: \"AiPowerUpsUpdateSettings\",\n register(container) {\n container.register(UpdateSettingsRepository).inSingletonScope();\n container.register(UpdateSettingsUseCase);\n }\n});\n"],"names":["UpdateSettingsFeature","createFeature","container","UpdateSettingsRepository","UpdateSettingsUseCase"],"mappings":";;;AAIO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,0BAA0B,gBAAgB;QAC7DD,UAAU,QAAQ,CAACE;IACvB;AACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { QueueWbGeneratePageContentUseCase } from "./abstractions.js";
|
|
4
|
+
declare class QueueWbGeneratePageContentUseCaseImpl implements QueueWbGeneratePageContentUseCase.Interface {
|
|
5
|
+
private identityContext;
|
|
6
|
+
private taskService;
|
|
7
|
+
constructor(identityContext: IdentityContext.Interface, taskService: TaskService.Interface);
|
|
8
|
+
execute(params: QueueWbGeneratePageContentUseCase.Params): QueueWbGeneratePageContentUseCase.Return;
|
|
9
|
+
}
|
|
10
|
+
declare const _default: typeof QueueWbGeneratePageContentUseCaseImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IQueueWbGeneratePageContentUseCase>;
|
|
12
|
+
};
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
3
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
4
|
+
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/errors.js";
|
|
5
|
+
import { QueueWbGeneratePageContentUseCase } from "./abstractions.js";
|
|
6
|
+
import { WB_GENERATE_PAGE_CONTENT_TASK_ID } from "./WbGeneratePageContentTask.js";
|
|
7
|
+
class QueueWbGeneratePageContentUseCaseImpl {
|
|
8
|
+
constructor(identityContext, taskService){
|
|
9
|
+
this.identityContext = identityContext;
|
|
10
|
+
this.taskService = taskService;
|
|
11
|
+
}
|
|
12
|
+
async execute(params) {
|
|
13
|
+
if (this.identityContext.getIdentity().isAnonymous()) return Result.fail(new NotAuthorizedError());
|
|
14
|
+
const result = await this.taskService.trigger({
|
|
15
|
+
definition: WB_GENERATE_PAGE_CONTENT_TASK_ID,
|
|
16
|
+
input: {
|
|
17
|
+
prompt: params.prompt,
|
|
18
|
+
components: params.components,
|
|
19
|
+
tools: params.tools,
|
|
20
|
+
projectId: params.projectId ?? null,
|
|
21
|
+
excludedFileIds: params.excludedFileIds ?? null,
|
|
22
|
+
readerPersonaId: params.readerPersonaId ?? null,
|
|
23
|
+
writerPersonaId: params.writerPersonaId ?? null,
|
|
24
|
+
additionalFileIds: params.additionalFileIds ?? null
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
if (result.isFail()) return Result.fail(result.error);
|
|
28
|
+
return Result.ok({
|
|
29
|
+
id: result.value.id
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const WbGeneratePageContent_QueueWbGeneratePageContentUseCase = QueueWbGeneratePageContentUseCase.createImplementation({
|
|
34
|
+
implementation: QueueWbGeneratePageContentUseCaseImpl,
|
|
35
|
+
dependencies: [
|
|
36
|
+
IdentityContext,
|
|
37
|
+
TaskService
|
|
38
|
+
]
|
|
39
|
+
});
|
|
40
|
+
export default WbGeneratePageContent_QueueWbGeneratePageContentUseCase;
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=QueueWbGeneratePageContentUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/WbGeneratePageContent/QueueWbGeneratePageContentUseCase.js","sources":["../../../../src/api/features/WbGeneratePageContent/QueueWbGeneratePageContentUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { QueueWbGeneratePageContentUseCase } from \"./abstractions.js\";\nimport {\n WB_GENERATE_PAGE_CONTENT_TASK_ID,\n type IWbGeneratePageContentTaskInput\n} from \"./WbGeneratePageContentTask.js\";\n\nclass QueueWbGeneratePageContentUseCaseImpl implements QueueWbGeneratePageContentUseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private taskService: TaskService.Interface\n ) {}\n\n async execute(\n params: QueueWbGeneratePageContentUseCase.Params\n ): QueueWbGeneratePageContentUseCase.Return {\n // The task calls the AI providers with the project's keys, so anonymous callers can't queue one.\n if (this.identityContext.getIdentity().isAnonymous()) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const result = await this.taskService.trigger<IWbGeneratePageContentTaskInput>({\n definition: WB_GENERATE_PAGE_CONTENT_TASK_ID,\n input: {\n prompt: params.prompt,\n components: params.components,\n tools: params.tools,\n projectId: params.projectId ?? null,\n excludedFileIds: params.excludedFileIds ?? null,\n readerPersonaId: params.readerPersonaId ?? null,\n writerPersonaId: params.writerPersonaId ?? null,\n additionalFileIds: params.additionalFileIds ?? null\n }\n });\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok({ id: result.value.id });\n }\n}\n\nexport default QueueWbGeneratePageContentUseCase.createImplementation({\n implementation: QueueWbGeneratePageContentUseCaseImpl,\n dependencies: [IdentityContext, TaskService]\n});\n"],"names":["QueueWbGeneratePageContentUseCaseImpl","identityContext","taskService","params","Result","NotAuthorizedError","result","WB_GENERATE_PAGE_CONTENT_TASK_ID","QueueWbGeneratePageContentUseCase","IdentityContext","TaskService"],"mappings":";;;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,WAAkC,CAC5C;aAFUD,eAAe,GAAfA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,QACFC,MAAgD,EACR;QAExC,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,WAAW,IAC9C,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAkC;YAC3E,YAAYC;YACZ,OAAO;gBACH,QAAQJ,OAAO,MAAM;gBACrB,YAAYA,OAAO,UAAU;gBAC7B,OAAOA,OAAO,KAAK;gBACnB,WAAWA,OAAO,SAAS,IAAI;gBAC/B,iBAAiBA,OAAO,eAAe,IAAI;gBAC3C,iBAAiBA,OAAO,eAAe,IAAI;gBAC3C,iBAAiBA,OAAO,eAAe,IAAI;gBAC3C,mBAAmBA,OAAO,iBAAiB,IAAI;YACnD;QACJ;QAEA,IAAIG,OAAO,MAAM,IACb,OAAOF,OAAO,IAAI,CAACE,OAAO,KAAK;QAGnC,OAAOF,OAAO,EAAE,CAAC;YAAE,IAAIE,OAAO,KAAK,CAAC,EAAE;QAAC;IAC3C;AACJ;AAEA,gEAAeE,kCAAkC,oBAAoB,CAAC;IAClE,gBAAgBR;IAChB,cAAc;QAACS;QAAiBC;KAAY;AAChD"}
|
|
@@ -15,7 +15,7 @@ declare class WbGeneratePageContentUseCaseImpl implements WbGeneratePageContentU
|
|
|
15
15
|
constructor(promptContextBuilder: AiPromptContextBuilder.Interface, resolveCapability: ResolveAiCapabilityUseCase.Interface, ai: Ai.Interface, aiSdkTools: AiSdkTools.Interface, listTags: ListTagsUseCase.Interface);
|
|
16
16
|
execute(params: WbGeneratePageContentParams): Promise<Result<GeneratePageContentResult, Error>>;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
declare const _default: typeof WbGeneratePageContentUseCaseImpl & {
|
|
19
19
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IWbGeneratePageContentUseCase>;
|
|
20
20
|
};
|
|
21
|
-
export
|
|
21
|
+
export default _default;
|
|
@@ -98,7 +98,7 @@ class WbGeneratePageContentUseCaseImpl {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
const
|
|
101
|
+
const WbGeneratePageContent_WbGeneratePageContentUseCase = WbGeneratePageContentUseCase.createImplementation({
|
|
102
102
|
implementation: WbGeneratePageContentUseCaseImpl,
|
|
103
103
|
dependencies: [
|
|
104
104
|
AiPromptContextBuilder,
|
|
@@ -108,6 +108,6 @@ const WbGeneratePageContentUseCaseImplementation = WbGeneratePageContentUseCase.
|
|
|
108
108
|
ListTagsUseCase
|
|
109
109
|
]
|
|
110
110
|
});
|
|
111
|
-
export
|
|
111
|
+
export default WbGeneratePageContent_WbGeneratePageContentUseCase;
|
|
112
112
|
|
|
113
113
|
//# sourceMappingURL=WbGeneratePageContentUseCase.js.map
|