@webiny/ai-powerups 6.3.0-beta.2 → 6.3.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js +2 -2
  2. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js.map +1 -1
  3. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +17 -13
  4. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -1
  5. package/admin/presentation/AiPowerUpsSettings/settingsGroup.d.ts +3 -4
  6. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -1
  7. package/admin/presentation/PersonasSettings.js +2 -1
  8. package/admin/presentation/PersonasSettings.js.map +1 -1
  9. package/admin/presentation/ProvidersSettings.js +6 -3
  10. package/admin/presentation/ProvidersSettings.js.map +1 -1
  11. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +36 -0
  12. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -1
  13. package/api/Extension.js +4 -0
  14. package/api/Extension.js.map +1 -1
  15. package/api/features/GetSettings/GetSettingsRepository.d.ts +5 -5
  16. package/api/features/GetSettings/GetSettingsRepository.js +20 -22
  17. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -1
  18. package/api/features/GetSettings/GetSettingsUseCase.d.ts +1 -1
  19. package/api/features/GetSettings/abstractions.d.ts +3 -3
  20. package/api/features/GetSettings/abstractions.js.map +1 -1
  21. package/api/features/Providers/ProvidersGraphQLMapper.d.ts +21 -0
  22. package/api/features/Providers/ProvidersGraphQLMapper.js +36 -0
  23. package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -0
  24. package/api/features/Providers/ProvidersHandler.d.ts +26 -0
  25. package/api/features/Providers/ProvidersHandler.js +76 -0
  26. package/api/features/Providers/ProvidersHandler.js.map +1 -0
  27. package/api/features/Providers/feature.d.ts +4 -0
  28. package/api/features/Providers/feature.js +12 -0
  29. package/api/features/Providers/feature.js.map +1 -0
  30. package/api/features/Providers/index.d.ts +1 -0
  31. package/api/features/Providers/index.js +3 -0
  32. package/api/features/Providers/index.js.map +1 -0
  33. package/api/features/Providers/types.d.ts +29 -0
  34. package/api/features/Providers/types.js +3 -0
  35. package/api/features/Providers/types.js.map +1 -0
  36. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +6 -6
  37. package/api/features/UpdateSettings/UpdateSettingsRepository.js +56 -18
  38. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -1
  39. package/api/features/UpdateSettings/UpdateSettingsUseCase.d.ts +4 -5
  40. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +2 -14
  41. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
  42. package/api/features/UpdateSettings/abstractions.d.ts +8 -15
  43. package/api/features/UpdateSettings/abstractions.js.map +1 -1
  44. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +3 -1
  45. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +8 -3
  46. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
  47. package/api/features/shared/abstractions.d.ts +20 -0
  48. package/api/features/shared/abstractions.js +5 -0
  49. package/api/features/shared/abstractions.js.map +1 -0
  50. package/api/features/shared/index.d.ts +1 -0
  51. package/api/features/shared/index.js +3 -0
  52. package/api/features/shared/index.js.map +1 -0
  53. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.d.ts +13 -0
  54. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +35 -0
  55. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -0
  56. package/api/graphql/BaseGraphQLSchema.d.ts +1 -1
  57. package/api/graphql/BaseGraphQLSchema.js +15 -9
  58. package/api/graphql/BaseGraphQLSchema.js.map +1 -1
  59. package/api/graphql/abstractions.d.ts +9 -0
  60. package/api/graphql/abstractions.js +4 -0
  61. package/api/graphql/abstractions.js.map +1 -0
  62. package/api/types.d.ts +2 -10
  63. package/api/types.js +3 -0
  64. package/api/types.js.map +1 -1
  65. package/package.json +26 -23
  66. package/api/features/UpdateSettings/validation.d.ts +0 -11
  67. package/api/features/UpdateSettings/validation.js +0 -16
  68. package/api/features/UpdateSettings/validation.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["stepCountIs","Result","Ai","AiSdkTools","GetSettingsUseCase","WbGeneratePageContentUseCase","buildSystemPrompt","stripCodeFence","text","replace","trim","WbGeneratePageContentUseCaseImpl","constructor","getSettings","ai","aiSdkTools","execute","params","settingsResult","isFail","fail","Error","settings","value","firstProvider","providers","presets","sdkTools","getToolSet","system","components","tools","aiResult","generateText","model","connection","sdkName","split","apiKey","toolChoice","prompt","Object","keys","length","stopWhen","steps","filter","step","pop","output","ok","error","message","String","WbGeneratePageContentUseCaseImplementation","createImplementation","implementation","dependencies"],"sources":["WbGeneratePageContentUseCase.ts"],"sourcesContent":["import { stepCountIs } from \"ai\";\nimport { Result } from \"@webiny/feature/api\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { AiSdkTools } from \"@webiny/api-core/features/ai/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport { WbGeneratePageContentUseCase } from \"./abstractions.js\";\nimport type { WbGeneratePageContentParams } from \"./abstractions.js\";\nimport { buildSystemPrompt } from \"./buildPrompt.js\";\n\nfunction stripCodeFence(text: string): string {\n return text\n .replace(/^```(?:json)?\\s*\\n?/, \"\")\n .replace(/\\n?```\\s*$/, \"\")\n .trim();\n}\n\nclass WbGeneratePageContentUseCaseImpl implements WbGeneratePageContentUseCase.Interface {\n constructor(\n private getSettings: GetSettingsUseCase.Interface,\n private ai: Ai.Interface,\n private aiSdkTools: AiSdkTools.Interface\n ) {}\n\n async execute(params: WbGeneratePageContentParams): Promise<Result<string, Error>> {\n const settingsResult = await this.getSettings.execute();\n if (settingsResult.isFail()) {\n return Result.fail(new Error(\"Failed to load AI PowerUps settings.\"));\n }\n\n const settings = settingsResult.value;\n const firstProvider = settings.providers.presets[0];\n\n if (!firstProvider) {\n return Result.fail(\n new Error(\"No AI provider configured. Add a provider in AI Power Ups settings.\")\n );\n }\n\n // TODO: configure this in `ai` as default behavior.\n const sdkTools = this.aiSdkTools.getToolSet();\n\n const system = buildSystemPrompt(params.components, params.tools);\n\n try {\n const aiResult = await this.ai.generateText({\n model: firstProvider.model,\n connection: {\n sdkName: firstProvider.model.split(\"/\")[0],\n apiKey: firstProvider.apiKey\n },\n system,\n toolChoice: \"auto\",\n prompt: params.prompt,\n ...(Object.keys(sdkTools).length > 0\n ? { tools: sdkTools, stopWhen: stepCountIs(10) }\n : {})\n });\n\n // result.text might be empty if the last step was a tool call.\n // Find the last step that has text content:\n const text =\n aiResult.text ||\n (aiResult.steps.filter(step => step.text.length > 0).pop()?.text ?? \"\");\n\n const output = stripCodeFence(text);\n\n return Result.ok(output);\n } catch (error) {\n return Result.fail(\n new Error(\n `AI generation failed: ${error instanceof Error ? error.message : String(error)}`\n )\n );\n }\n }\n}\n\nexport const WbGeneratePageContentUseCaseImplementation =\n WbGeneratePageContentUseCase.createImplementation({\n implementation: WbGeneratePageContentUseCaseImpl,\n dependencies: [GetSettingsUseCase, Ai, AiSdkTools]\n });\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,IAAI;AAChC,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,EAAE,QAAQ,uCAAuC;AAC1D,SAASC,UAAU,QAAQ,uCAAuC;AAClE,SAASC,kBAAkB;AAC3B,SAASC,4BAA4B;AAErC,SAASC,iBAAiB;AAE1B,SAASC,cAAcA,CAACC,IAAY,EAAU;EAC1C,OAAOA,IAAI,CACNC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAClCA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CACzBC,IAAI,CAAC,CAAC;AACf;AAEA,MAAMC,gCAAgC,CAAmD;EACrFC,WAAWA,CACCC,WAAyC,EACzCC,EAAgB,EAChBC,UAAgC,EAC1C;IAAA,KAHUF,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,EAAgB,GAAhBA,EAAgB;IAAA,KAChBC,UAAgC,GAAhCA,UAAgC;EACzC;EAEH,MAAMC,OAAOA,CAACC,MAAmC,EAAkC;IAC/E,MAAMC,cAAc,GAAG,MAAM,IAAI,CAACL,WAAW,CAACG,OAAO,CAAC,CAAC;IACvD,IAAIE,cAAc,CAACC,MAAM,CAAC,CAAC,EAAE;MACzB,OAAOlB,MAAM,CAACmB,IAAI,CAAC,IAAIC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzE;IAEA,MAAMC,QAAQ,GAAGJ,cAAc,CAACK,KAAK;IACrC,MAAMC,aAAa,GAAGF,QAAQ,CAACG,SAAS,CAACC,OAAO,CAAC,CAAC,CAAC;IAEnD,IAAI,CAACF,aAAa,EAAE;MAChB,OAAOvB,MAAM,CAACmB,IAAI,CACd,IAAIC,KAAK,CAAC,qEAAqE,CACnF,CAAC;IACL;;IAEA;IACA,MAAMM,QAAQ,GAAG,IAAI,CAACZ,UAAU,CAACa,UAAU,CAAC,CAAC;IAE7C,MAAMC,MAAM,GAAGvB,iBAAiB,CAACW,MAAM,CAACa,UAAU,EAAEb,MAAM,CAACc,KAAK,CAAC;IAEjE,IAAI;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAAClB,EAAE,CAACmB,YAAY,CAAC;QACxCC,KAAK,EAAEV,aAAa,CAACU,KAAK;QAC1BC,UAAU,EAAE;UACRC,OAAO,EAAEZ,aAAa,CAACU,KAAK,CAACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC1CC,MAAM,EAAEd,aAAa,CAACc;QAC1B,CAAC;QACDT,MAAM;QACNU,UAAU,EAAE,MAAM;QAClBC,MAAM,EAAEvB,MAAM,CAACuB,MAAM;QACrB,IAAIC,MAAM,CAACC,IAAI,CAACf,QAAQ,CAAC,CAACgB,MAAM,GAAG,CAAC,GAC9B;UAAEZ,KAAK,EAAEJ,QAAQ;UAAEiB,QAAQ,EAAE5C,WAAW,CAAC,EAAE;QAAE,CAAC,GAC9C,CAAC,CAAC;MACZ,CAAC,CAAC;;MAEF;MACA;MACA,MAAMQ,IAAI,GACNwB,QAAQ,CAACxB,IAAI,KACZwB,QAAQ,CAACa,KAAK,CAACC,MAAM,CAACC,IAAI,IAAIA,IAAI,CAACvC,IAAI,CAACmC,MAAM,GAAG,CAAC,CAAC,CAACK,GAAG,CAAC,CAAC,EAAExC,IAAI,IAAI,EAAE,CAAC;MAE3E,MAAMyC,MAAM,GAAG1C,cAAc,CAACC,IAAI,CAAC;MAEnC,OAAOP,MAAM,CAACiD,EAAE,CAACD,MAAM,CAAC;IAC5B,CAAC,CAAC,OAAOE,KAAK,EAAE;MACZ,OAAOlD,MAAM,CAACmB,IAAI,CACd,IAAIC,KAAK,CACL,yBAAyB8B,KAAK,YAAY9B,KAAK,GAAG8B,KAAK,CAACC,OAAO,GAAGC,MAAM,CAACF,KAAK,CAAC,EACnF,CACJ,CAAC;IACL;EACJ;AACJ;AAEA,OAAO,MAAMG,0CAA0C,GACnDjD,4BAA4B,CAACkD,oBAAoB,CAAC;EAC9CC,cAAc,EAAE7C,gCAAgC;EAChD8C,YAAY,EAAE,CAACrD,kBAAkB,EAAEF,EAAE,EAAEC,UAAU;AACrD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["stepCountIs","Result","Ai","AiSdkTools","Encryption","GetSettingsUseCase","WbGeneratePageContentUseCase","buildSystemPrompt","stripCodeFence","text","replace","trim","WbGeneratePageContentUseCaseImpl","constructor","getSettings","ai","aiSdkTools","encryption","execute","params","settingsResult","isFail","fail","Error","settings","value","firstProvider","providers","presets","apiKey","decrypt","apiKeyEncrypted","sdkTools","getToolSet","system","components","tools","aiResult","generateText","model","connection","sdkName","split","toolChoice","prompt","Object","keys","length","stopWhen","steps","filter","step","pop","output","ok","error","message","String","WbGeneratePageContentUseCaseImplementation","createImplementation","implementation","dependencies"],"sources":["WbGeneratePageContentUseCase.ts"],"sourcesContent":["import { stepCountIs } from \"ai\";\nimport { Result } from \"@webiny/feature/api\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { AiSdkTools } from \"@webiny/api-core/features/ai/index.js\";\nimport { Encryption } from \"@webiny/api-core/features/encryption/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport { WbGeneratePageContentUseCase } from \"./abstractions.js\";\nimport type { WbGeneratePageContentParams } from \"./abstractions.js\";\nimport { buildSystemPrompt } from \"./buildPrompt.js\";\n\nfunction stripCodeFence(text: string): string {\n return text\n .replace(/^```(?:json)?\\s*\\n?/, \"\")\n .replace(/\\n?```\\s*$/, \"\")\n .trim();\n}\n\nclass WbGeneratePageContentUseCaseImpl implements WbGeneratePageContentUseCase.Interface {\n constructor(\n private getSettings: GetSettingsUseCase.Interface,\n private ai: Ai.Interface,\n private aiSdkTools: AiSdkTools.Interface,\n private encryption: Encryption.Interface\n ) {}\n\n async execute(params: WbGeneratePageContentParams): Promise<Result<string, Error>> {\n const settingsResult = await this.getSettings.execute();\n if (settingsResult.isFail()) {\n return Result.fail(new Error(\"Failed to load AI PowerUps settings.\"));\n }\n\n const settings = settingsResult.value;\n const firstProvider = settings.providers.presets[0];\n\n if (!firstProvider) {\n return Result.fail(\n new Error(\"No AI provider configured. Add a provider in AI Power Ups settings.\")\n );\n }\n\n // Decrypt at point of use.\n const apiKey = this.encryption.decrypt(firstProvider.apiKeyEncrypted);\n\n // TODO: configure this in `ai` as default behavior.\n const sdkTools = this.aiSdkTools.getToolSet();\n\n const system = buildSystemPrompt(params.components, params.tools);\n\n try {\n const aiResult = await this.ai.generateText({\n model: firstProvider.model,\n connection: {\n sdkName: firstProvider.model.split(\"/\")[0],\n apiKey\n },\n system,\n toolChoice: \"auto\",\n prompt: params.prompt,\n ...(Object.keys(sdkTools).length > 0\n ? { tools: sdkTools, stopWhen: stepCountIs(10) }\n : {})\n });\n\n // result.text might be empty if the last step was a tool call.\n // Find the last step that has text content:\n const text =\n aiResult.text ||\n (aiResult.steps.filter(step => step.text.length > 0).pop()?.text ?? \"\");\n\n const output = stripCodeFence(text);\n\n return Result.ok(output);\n } catch (error) {\n return Result.fail(\n new Error(\n `AI generation failed: ${error instanceof Error ? error.message : String(error)}`\n )\n );\n }\n }\n}\n\nexport const WbGeneratePageContentUseCaseImplementation =\n WbGeneratePageContentUseCase.createImplementation({\n implementation: WbGeneratePageContentUseCaseImpl,\n dependencies: [GetSettingsUseCase, Ai, AiSdkTools, Encryption]\n });\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import type { ZodType } from "zod";
2
+ export interface IAiPowerUpsSettingsGroupHandler {
3
+ readonly name: string;
4
+ readonly inputSchema: ZodType<unknown>;
5
+ mapFromStorage(persisted: unknown): unknown;
6
+ mapToStorage(internal: unknown, existing: unknown | null): Promise<unknown>;
7
+ }
8
+ export declare const AiPowerUpsSettingsGroupHandler: import("@webiny/di").Abstraction<IAiPowerUpsSettingsGroupHandler>;
9
+ export declare namespace AiPowerUpsSettingsGroupHandler {
10
+ type Interface = IAiPowerUpsSettingsGroupHandler;
11
+ }
12
+ export interface IAiPowerUpsSettingsGroupGraphQLMapper {
13
+ readonly name: string;
14
+ toApi(internal: unknown): unknown | Promise<unknown>;
15
+ fromApi(api: unknown, existing: unknown | null): unknown | Promise<unknown>;
16
+ }
17
+ export declare const AiPowerUpsSettingsGroupGraphQLMapper: import("@webiny/di").Abstraction<IAiPowerUpsSettingsGroupGraphQLMapper>;
18
+ export declare namespace AiPowerUpsSettingsGroupGraphQLMapper {
19
+ type Interface = IAiPowerUpsSettingsGroupGraphQLMapper;
20
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ export const AiPowerUpsSettingsGroupHandler = createAbstraction("AiPowerUpsSettingsGroupHandler");
3
+ export const AiPowerUpsSettingsGroupGraphQLMapper = createAbstraction("AiPowerUpsSettingsGroupGraphQLMapper");
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsGroupGraphQLMapper"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ZodType } from \"zod\";\n\nexport interface IAiPowerUpsSettingsGroupHandler {\n readonly name: string;\n readonly inputSchema: ZodType<unknown>;\n mapFromStorage(persisted: unknown): unknown;\n mapToStorage(internal: unknown, existing: unknown | null): Promise<unknown>;\n}\n\nexport const AiPowerUpsSettingsGroupHandler = createAbstraction<IAiPowerUpsSettingsGroupHandler>(\n \"AiPowerUpsSettingsGroupHandler\"\n);\n\nexport namespace AiPowerUpsSettingsGroupHandler {\n export type Interface = IAiPowerUpsSettingsGroupHandler;\n}\n\nexport interface IAiPowerUpsSettingsGroupGraphQLMapper {\n readonly name: string;\n toApi(internal: unknown): unknown | Promise<unknown>;\n fromApi(api: unknown, existing: unknown | null): unknown | Promise<unknown>;\n}\n\nexport const AiPowerUpsSettingsGroupGraphQLMapper =\n createAbstraction<IAiPowerUpsSettingsGroupGraphQLMapper>(\n \"AiPowerUpsSettingsGroupGraphQLMapper\"\n );\n\nexport namespace AiPowerUpsSettingsGroupGraphQLMapper {\n export type Interface = IAiPowerUpsSettingsGroupGraphQLMapper;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAUvD,OAAO,MAAMC,8BAA8B,GAAGD,iBAAiB,CAC3D,gCACJ,CAAC;AAYD,OAAO,MAAME,oCAAoC,GAC7CF,iBAAiB,CACb,sCACJ,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsGroupGraphQLMapper } from "./abstractions.js";
@@ -0,0 +1,3 @@
1
+ export { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsGroupGraphQLMapper } from "./abstractions.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsGroupGraphQLMapper"],"sources":["index.ts"],"sourcesContent":["export {\n AiPowerUpsSettingsGroupHandler,\n AiPowerUpsSettingsGroupGraphQLMapper\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,8BAA8B,EAC9BC,oCAAoC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { AiPowerUpsSettingsGroupGraphQLMapper } from "../../api/features/shared/index.js";
2
+ import { AiPowerUpsSettingsGraphQLMapper } from "./abstractions.js";
3
+ import type { IAiPowerUpsSettings } from "../../api/types.js";
4
+ declare class AiPowerUpsSettingsGraphQLMapperImpl implements AiPowerUpsSettingsGraphQLMapper.Interface {
5
+ private mapperLookup;
6
+ constructor(mappers: AiPowerUpsSettingsGroupGraphQLMapper.Interface[]);
7
+ toApi(settings: IAiPowerUpsSettings): Promise<Record<string, unknown>>;
8
+ fromApi(input: Record<string, unknown>, current: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;
9
+ }
10
+ declare const _default: typeof AiPowerUpsSettingsGraphQLMapperImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IAiPowerUpsSettingsGraphQLMapper>;
12
+ };
13
+ export default _default;
@@ -0,0 +1,35 @@
1
+ import { AiPowerUpsSettingsGroupGraphQLMapper } from "../features/shared/index.js";
2
+ import { AiPowerUpsSettingsGraphQLMapper } from "./abstractions.js";
3
+ class AiPowerUpsSettingsGraphQLMapperImpl {
4
+ constructor(mappers) {
5
+ this.mapperLookup = new Map(mappers.map(m => [m.name, m]));
6
+ }
7
+ async toApi(settings) {
8
+ const raw = settings;
9
+ const result = {};
10
+ for (const key of Object.keys(raw)) {
11
+ const mapper = this.mapperLookup.get(key);
12
+ result[key] = mapper ? await mapper.toApi(raw[key]) : raw[key];
13
+ }
14
+ return result;
15
+ }
16
+ async fromApi(input, current) {
17
+ const currentRaw = current;
18
+ const assembled = {
19
+ ...currentRaw
20
+ };
21
+ for (const key of Object.keys(input)) {
22
+ const mapper = this.mapperLookup.get(key);
23
+ assembled[key] = mapper ? await mapper.fromApi(input[key], currentRaw[key]) : input[key];
24
+ }
25
+ return assembled;
26
+ }
27
+ }
28
+ export default AiPowerUpsSettingsGraphQLMapper.createImplementation({
29
+ implementation: AiPowerUpsSettingsGraphQLMapperImpl,
30
+ dependencies: [[AiPowerUpsSettingsGroupGraphQLMapper, {
31
+ multiple: true
32
+ }]]
33
+ });
34
+
35
+ //# sourceMappingURL=AiPowerUpsSettingsGraphQLMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AiPowerUpsSettingsGroupGraphQLMapper","AiPowerUpsSettingsGraphQLMapper","AiPowerUpsSettingsGraphQLMapperImpl","constructor","mappers","mapperLookup","Map","map","m","name","toApi","settings","raw","result","key","Object","keys","mapper","get","fromApi","input","current","currentRaw","assembled","createImplementation","implementation","dependencies","multiple"],"sources":["AiPowerUpsSettingsGraphQLMapper.ts"],"sourcesContent":["import { AiPowerUpsSettingsGroupGraphQLMapper } from \"~/api/features/shared/index.js\";\nimport { AiPowerUpsSettingsGraphQLMapper } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nclass AiPowerUpsSettingsGraphQLMapperImpl implements AiPowerUpsSettingsGraphQLMapper.Interface {\n private mapperLookup: Map<string, AiPowerUpsSettingsGroupGraphQLMapper.Interface>;\n\n constructor(mappers: AiPowerUpsSettingsGroupGraphQLMapper.Interface[]) {\n this.mapperLookup = new Map(mappers.map(m => [m.name, m]));\n }\n\n async toApi(settings: IAiPowerUpsSettings): Promise<Record<string, unknown>> {\n const raw = settings as unknown as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n\n for (const key of Object.keys(raw)) {\n const mapper = this.mapperLookup.get(key);\n result[key] = mapper ? await mapper.toApi(raw[key]) : raw[key];\n }\n\n return result;\n }\n\n async fromApi(\n input: Record<string, unknown>,\n current: IAiPowerUpsSettings\n ): Promise<IAiPowerUpsSettings> {\n const currentRaw = current as unknown as Record<string, unknown>;\n const assembled: Record<string, unknown> = { ...currentRaw };\n\n for (const key of Object.keys(input)) {\n const mapper = this.mapperLookup.get(key);\n assembled[key] = mapper\n ? await mapper.fromApi(input[key], currentRaw[key])\n : input[key];\n }\n\n return assembled as unknown as IAiPowerUpsSettings;\n }\n}\n\nexport default AiPowerUpsSettingsGraphQLMapper.createImplementation({\n implementation: AiPowerUpsSettingsGraphQLMapperImpl,\n dependencies: [[AiPowerUpsSettingsGroupGraphQLMapper, { multiple: true }]]\n});\n"],"mappings":"AAAA,SAASA,oCAAoC;AAC7C,SAASC,+BAA+B;AAGxC,MAAMC,mCAAmC,CAAsD;EAG3FC,WAAWA,CAACC,OAAyD,EAAE;IACnE,IAAI,CAACC,YAAY,GAAG,IAAIC,GAAG,CAACF,OAAO,CAACG,GAAG,CAACC,CAAC,IAAI,CAACA,CAAC,CAACC,IAAI,EAAED,CAAC,CAAC,CAAC,CAAC;EAC9D;EAEA,MAAME,KAAKA,CAACC,QAA6B,EAAoC;IACzE,MAAMC,GAAG,GAAGD,QAA8C;IAC1D,MAAME,MAA+B,GAAG,CAAC,CAAC;IAE1C,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACJ,GAAG,CAAC,EAAE;MAChC,MAAMK,MAAM,GAAG,IAAI,CAACZ,YAAY,CAACa,GAAG,CAACJ,GAAG,CAAC;MACzCD,MAAM,CAACC,GAAG,CAAC,GAAGG,MAAM,GAAG,MAAMA,MAAM,CAACP,KAAK,CAACE,GAAG,CAACE,GAAG,CAAC,CAAC,GAAGF,GAAG,CAACE,GAAG,CAAC;IAClE;IAEA,OAAOD,MAAM;EACjB;EAEA,MAAMM,OAAOA,CACTC,KAA8B,EAC9BC,OAA4B,EACA;IAC5B,MAAMC,UAAU,GAAGD,OAA6C;IAChE,MAAME,SAAkC,GAAG;MAAE,GAAGD;IAAW,CAAC;IAE5D,KAAK,MAAMR,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACI,KAAK,CAAC,EAAE;MAClC,MAAMH,MAAM,GAAG,IAAI,CAACZ,YAAY,CAACa,GAAG,CAACJ,GAAG,CAAC;MACzCS,SAAS,CAACT,GAAG,CAAC,GAAGG,MAAM,GACjB,MAAMA,MAAM,CAACE,OAAO,CAACC,KAAK,CAACN,GAAG,CAAC,EAAEQ,UAAU,CAACR,GAAG,CAAC,CAAC,GACjDM,KAAK,CAACN,GAAG,CAAC;IACpB;IAEA,OAAOS,SAAS;EACpB;AACJ;AAEA,eAAetB,+BAA+B,CAACuB,oBAAoB,CAAC;EAChEC,cAAc,EAAEvB,mCAAmC;EACnDwB,YAAY,EAAE,CAAC,CAAC1B,oCAAoC,EAAE;IAAE2B,QAAQ,EAAE;EAAK,CAAC,CAAC;AAC7E,CAAC,CAAC","ignoreList":[]}
@@ -3,6 +3,6 @@ declare class BaseGraphQLSchemaImpl implements CoreGraphQLSchemaFactory.Interfac
3
3
  execute(builder: CoreGraphQLSchemaFactory.SchemaBuilder): Promise<CoreGraphQLSchemaFactory.SchemaBuilder>;
4
4
  }
5
5
  export declare const BaseGraphQLSchema: typeof BaseGraphQLSchemaImpl & {
6
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public").IGraphQLSchemaFactory>;
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
7
7
  };
8
8
  export {};
@@ -3,6 +3,7 @@ import { Ai } from "@webiny/api-core/features/ai/index.js";
3
3
  import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
4
4
  import { GetSettingsUseCase } from "../features/GetSettings/index.js";
5
5
  import { UpdateSettingsUseCase } from "../features/UpdateSettings/index.js";
6
+ import { AiPowerUpsSettingsGraphQLMapper } from "./abstractions.js";
6
7
  import { WB_GENERATE_PAGE_CONTENT_TASK_ID } from "../features/WbGeneratePageContent/WbGeneratePageContentTask.js";
7
8
  class BaseGraphQLSchemaImpl {
8
9
  async execute(builder) {
@@ -49,14 +50,14 @@ class BaseGraphQLSchemaImpl {
49
50
  });
50
51
  builder.addResolver({
51
52
  path: "AiPowerUpsQuery.getSettings",
52
- dependencies: [GetSettingsUseCase],
53
- resolver: useCase => {
53
+ dependencies: [GetSettingsUseCase, AiPowerUpsSettingsGraphQLMapper],
54
+ resolver: (useCase, mapper) => {
54
55
  return async () => {
55
56
  const result = await useCase.execute();
56
- if (result.isOk()) {
57
- return result.value;
57
+ if (result.isFail()) {
58
+ throw result.error;
58
59
  }
59
- throw result.error;
60
+ return mapper.toApi(result.value);
60
61
  };
61
62
  }
62
63
  });
@@ -86,16 +87,21 @@ class BaseGraphQLSchemaImpl {
86
87
  });
87
88
  builder.addResolver({
88
89
  path: "AiPowerUpsMutation.updateSettings",
89
- dependencies: [UpdateSettingsUseCase],
90
- resolver: useCase => {
90
+ dependencies: [GetSettingsUseCase, UpdateSettingsUseCase, AiPowerUpsSettingsGraphQLMapper],
91
+ resolver: (getSettings, updateSettings, mapper) => {
91
92
  return async ({
92
93
  args
93
94
  }) => {
94
- const result = await useCase.execute(args.input);
95
+ const currentResult = await getSettings.execute();
96
+ if (currentResult.isFail()) {
97
+ throw currentResult.error;
98
+ }
99
+ const assembled = await mapper.fromApi(args.input, currentResult.value);
100
+ const result = await updateSettings.execute(assembled);
95
101
  if (result.isFail()) {
96
102
  throw result.error;
97
103
  }
98
- return result.value;
104
+ return mapper.toApi(result.value);
99
105
  };
100
106
  }
101
107
  });
@@ -1 +1 @@
1
- {"version":3,"names":["CoreGraphQLSchemaFactory","Ai","TaskService","GetSettingsUseCase","UpdateSettingsUseCase","WB_GENERATE_PAGE_CONTENT_TASK_ID","BaseGraphQLSchemaImpl","execute","builder","addTypeDefs","addResolver","path","resolver","dependencies","ai","listModels","useCase","result","isOk","value","error","taskService","args","trigger","definition","input","prompt","components","tools","isFail","id","BaseGraphQLSchema","createImplementation","implementation"],"sources":["BaseGraphQLSchema.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.core.js\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport { UpdateSettingsUseCase } from \"~/api/features/UpdateSettings/index.js\";\nimport {\n WB_GENERATE_PAGE_CONTENT_TASK_ID,\n type IWbGeneratePageContentTaskInput\n} from \"~/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js\";\n\nclass BaseGraphQLSchemaImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): Promise<CoreGraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type AiModel {\n providerId: String!\n providerName: String!\n modelId: String!\n modelName: String!\n }\n\n type AiPowerUpsQuery {\n listModels: [AiModel!]!\n getSettings: JSON\n }\n\n type AiPowerUpsMutation {\n updateSettings(input: JSON!): JSON!\n generatePageContent(prompt: String!, components: JSON!, tools: JSON!): JSON!\n }\n\n extend type Query {\n aiPowerUps: AiPowerUpsQuery\n }\n\n extend type Mutation {\n aiPowerUps: AiPowerUpsMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.aiPowerUps\",\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"Mutation.aiPowerUps\",\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"AiPowerUpsQuery.listModels\",\n dependencies: [Ai],\n resolver: (ai: Ai.Interface) => {\n return async () => ai.listModels();\n }\n });\n\n builder.addResolver({\n path: \"AiPowerUpsQuery.getSettings\",\n dependencies: [GetSettingsUseCase],\n resolver: (useCase: GetSettingsUseCase.Interface) => {\n return async () => {\n const result = await useCase.execute();\n if (result.isOk()) {\n return result.value;\n }\n\n throw result.error;\n };\n }\n });\n\n builder.addResolver<IWbGeneratePageContentTaskInput>({\n path: \"AiPowerUpsMutation.generatePageContent\",\n dependencies: [TaskService],\n resolver: (taskService: TaskService.Interface) => {\n return async ({ args }) => {\n const result = await taskService.trigger<IWbGeneratePageContentTaskInput>({\n definition: WB_GENERATE_PAGE_CONTENT_TASK_ID,\n input: {\n prompt: args.prompt,\n components: args.components,\n tools: args.tools\n }\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return { id: result.value.id };\n };\n }\n });\n\n builder.addResolver<{ input: UpdateSettingsUseCase.Params }>({\n path: \"AiPowerUpsMutation.updateSettings\",\n dependencies: [UpdateSettingsUseCase],\n resolver: (useCase: UpdateSettingsUseCase.Interface) => {\n return async ({ args }) => {\n const result = await useCase.execute(args.input);\n\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const BaseGraphQLSchema = CoreGraphQLSchemaFactory.createImplementation({\n implementation: BaseGraphQLSchemaImpl,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,sDAAsD;AAC/F,SAASC,EAAE,QAAQ,uCAAuC;AAC1D,SAASC,WAAW,QAAQ,qDAAqD;AACjF,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;AAC9B,SACIC,gCAAgC;AAIpC,MAAMC,qBAAqB,CAA+C;EACtE,MAAMC,OAAOA,CACTC,OAA+C,EACA;IAC/CA,OAAO,CAACC,WAAW,CAAC,aAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IAEFD,OAAO,CAACE,WAAW,CAAC;MAChBC,IAAI,EAAE,kBAAkB;MACxBC,QAAQ,EAAEA,CAAA,KAAM,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEFJ,OAAO,CAACE,WAAW,CAAC;MAChBC,IAAI,EAAE,qBAAqB;MAC3BC,QAAQ,EAAEA,CAAA,KAAM,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEFJ,OAAO,CAACE,WAAW,CAAC;MAChBC,IAAI,EAAE,4BAA4B;MAClCE,YAAY,EAAE,CAACZ,EAAE,CAAC;MAClBW,QAAQ,EAAGE,EAAgB,IAAK;QAC5B,OAAO,YAAYA,EAAE,CAACC,UAAU,CAAC,CAAC;MACtC;IACJ,CAAC,CAAC;IAEFP,OAAO,CAACE,WAAW,CAAC;MAChBC,IAAI,EAAE,6BAA6B;MACnCE,YAAY,EAAE,CAACV,kBAAkB,CAAC;MAClCS,QAAQ,EAAGI,OAAqC,IAAK;QACjD,OAAO,YAAY;UACf,MAAMC,MAAM,GAAG,MAAMD,OAAO,CAACT,OAAO,CAAC,CAAC;UACtC,IAAIU,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;YACf,OAAOD,MAAM,CAACE,KAAK;UACvB;UAEA,MAAMF,MAAM,CAACG,KAAK;QACtB,CAAC;MACL;IACJ,CAAC,CAAC;IAEFZ,OAAO,CAACE,WAAW,CAAkC;MACjDC,IAAI,EAAE,wCAAwC;MAC9CE,YAAY,EAAE,CAACX,WAAW,CAAC;MAC3BU,QAAQ,EAAGS,WAAkC,IAAK;QAC9C,OAAO,OAAO;UAAEC;QAAK,CAAC,KAAK;UACvB,MAAML,MAAM,GAAG,MAAMI,WAAW,CAACE,OAAO,CAAkC;YACtEC,UAAU,EAAEnB,gCAAgC;YAC5CoB,KAAK,EAAE;cACHC,MAAM,EAAEJ,IAAI,CAACI,MAAM;cACnBC,UAAU,EAAEL,IAAI,CAACK,UAAU;cAC3BC,KAAK,EAAEN,IAAI,CAACM;YAChB;UACJ,CAAC,CAAC;UAEF,IAAIX,MAAM,CAACY,MAAM,CAAC,CAAC,EAAE;YACjB,MAAMZ,MAAM,CAACG,KAAK;UACtB;UAEA,OAAO;YAAEU,EAAE,EAAEb,MAAM,CAACE,KAAK,CAACW;UAAG,CAAC;QAClC,CAAC;MACL;IACJ,CAAC,CAAC;IAEFtB,OAAO,CAACE,WAAW,CAA0C;MACzDC,IAAI,EAAE,mCAAmC;MACzCE,YAAY,EAAE,CAACT,qBAAqB,CAAC;MACrCQ,QAAQ,EAAGI,OAAwC,IAAK;QACpD,OAAO,OAAO;UAAEM;QAAK,CAAC,KAAK;UACvB,MAAML,MAAM,GAAG,MAAMD,OAAO,CAACT,OAAO,CAACe,IAAI,CAACG,KAAK,CAAC;UAEhD,IAAIR,MAAM,CAACY,MAAM,CAAC,CAAC,EAAE;YACjB,MAAMZ,MAAM,CAACG,KAAK;UACtB;UACA,OAAOH,MAAM,CAACE,KAAK;QACvB,CAAC;MACL;IACJ,CAAC,CAAC;IAEF,OAAOX,OAAO;EAClB;AACJ;AAEA,OAAO,MAAMuB,iBAAiB,GAAG/B,wBAAwB,CAACgC,oBAAoB,CAAC;EAC3EC,cAAc,EAAE3B,qBAAqB;EACrCO,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["CoreGraphQLSchemaFactory","Ai","TaskService","GetSettingsUseCase","UpdateSettingsUseCase","AiPowerUpsSettingsGraphQLMapper","WB_GENERATE_PAGE_CONTENT_TASK_ID","BaseGraphQLSchemaImpl","execute","builder","addTypeDefs","addResolver","path","resolver","dependencies","ai","listModels","useCase","mapper","result","isFail","error","toApi","value","taskService","args","trigger","definition","input","prompt","components","tools","id","getSettings","updateSettings","currentResult","assembled","fromApi","BaseGraphQLSchema","createImplementation","implementation"],"sources":["BaseGraphQLSchema.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.core.js\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport { UpdateSettingsUseCase } from \"~/api/features/UpdateSettings/index.js\";\nimport { AiPowerUpsSettingsGraphQLMapper } from \"./abstractions.js\";\nimport {\n WB_GENERATE_PAGE_CONTENT_TASK_ID,\n type IWbGeneratePageContentTaskInput\n} from \"~/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js\";\n\nclass BaseGraphQLSchemaImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): Promise<CoreGraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type AiModel {\n providerId: String!\n providerName: String!\n modelId: String!\n modelName: String!\n }\n\n type AiPowerUpsQuery {\n listModels: [AiModel!]!\n getSettings: JSON\n }\n\n type AiPowerUpsMutation {\n updateSettings(input: JSON!): JSON!\n generatePageContent(prompt: String!, components: JSON!, tools: JSON!): JSON!\n }\n\n extend type Query {\n aiPowerUps: AiPowerUpsQuery\n }\n\n extend type Mutation {\n aiPowerUps: AiPowerUpsMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.aiPowerUps\",\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"Mutation.aiPowerUps\",\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"AiPowerUpsQuery.listModels\",\n dependencies: [Ai],\n resolver: (ai: Ai.Interface) => {\n return async () => ai.listModels();\n }\n });\n\n builder.addResolver({\n path: \"AiPowerUpsQuery.getSettings\",\n dependencies: [GetSettingsUseCase, AiPowerUpsSettingsGraphQLMapper],\n resolver: (\n useCase: GetSettingsUseCase.Interface,\n mapper: AiPowerUpsSettingsGraphQLMapper.Interface\n ) => {\n return async () => {\n const result = await useCase.execute();\n if (result.isFail()) {\n throw result.error;\n }\n\n return mapper.toApi(result.value);\n };\n }\n });\n\n builder.addResolver<IWbGeneratePageContentTaskInput>({\n path: \"AiPowerUpsMutation.generatePageContent\",\n dependencies: [TaskService],\n resolver: (taskService: TaskService.Interface) => {\n return async ({ args }) => {\n const result = await taskService.trigger<IWbGeneratePageContentTaskInput>({\n definition: WB_GENERATE_PAGE_CONTENT_TASK_ID,\n input: {\n prompt: args.prompt,\n components: args.components,\n tools: args.tools\n }\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return { id: result.value.id };\n };\n }\n });\n\n builder.addResolver<{ input: Record<string, unknown> }>({\n path: \"AiPowerUpsMutation.updateSettings\",\n dependencies: [\n GetSettingsUseCase,\n UpdateSettingsUseCase,\n AiPowerUpsSettingsGraphQLMapper\n ],\n resolver: (\n getSettings: GetSettingsUseCase.Interface,\n updateSettings: UpdateSettingsUseCase.Interface,\n mapper: AiPowerUpsSettingsGraphQLMapper.Interface\n ) => {\n return async ({ args }) => {\n const currentResult = await getSettings.execute();\n if (currentResult.isFail()) {\n throw currentResult.error;\n }\n\n const assembled = await mapper.fromApi(args.input, currentResult.value);\n const result = await updateSettings.execute(assembled);\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return mapper.toApi(result.value);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const BaseGraphQLSchema = CoreGraphQLSchemaFactory.createImplementation({\n implementation: BaseGraphQLSchemaImpl,\n dependencies: []\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import type { IAiPowerUpsSettings } from "../../api/types.js";
2
+ export interface IAiPowerUpsSettingsGraphQLMapper {
3
+ toApi(settings: IAiPowerUpsSettings): Promise<Record<string, unknown>>;
4
+ fromApi(input: Record<string, unknown>, current: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;
5
+ }
6
+ export declare const AiPowerUpsSettingsGraphQLMapper: import("@webiny/di").Abstraction<IAiPowerUpsSettingsGraphQLMapper>;
7
+ export declare namespace AiPowerUpsSettingsGraphQLMapper {
8
+ type Interface = IAiPowerUpsSettingsGraphQLMapper;
9
+ }
@@ -0,0 +1,4 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ export const AiPowerUpsSettingsGraphQLMapper = createAbstraction("AiPowerUpsSettingsGraphQLMapper");
3
+
4
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","AiPowerUpsSettingsGraphQLMapper"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nexport interface IAiPowerUpsSettingsGraphQLMapper {\n toApi(settings: IAiPowerUpsSettings): Promise<Record<string, unknown>>;\n fromApi(\n input: Record<string, unknown>,\n current: IAiPowerUpsSettings\n ): Promise<IAiPowerUpsSettings>;\n}\n\nexport const AiPowerUpsSettingsGraphQLMapper = createAbstraction<IAiPowerUpsSettingsGraphQLMapper>(\n \"AiPowerUpsSettingsGraphQLMapper\"\n);\n\nexport namespace AiPowerUpsSettingsGraphQLMapper {\n export type Interface = IAiPowerUpsSettingsGraphQLMapper;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAWvD,OAAO,MAAMC,+BAA+B,GAAGD,iBAAiB,CAC5D,iCACJ,CAAC","ignoreList":[]}
package/api/types.d.ts CHANGED
@@ -1,12 +1,4 @@
1
1
  import "@webiny/tasks/features/TaskController/augmentation.js";
2
- export interface AiProvider {
3
- name: string;
4
- description?: string;
5
- model: string;
6
- apiKey: string;
7
- }
8
- export interface AiPowerUpsSettings {
9
- providers: {
10
- presets: AiProvider[];
11
- };
2
+ import "~/api/features/Providers/types.js";
3
+ export interface IAiPowerUpsSettings {
12
4
  }
package/api/types.js CHANGED
@@ -1,3 +1,6 @@
1
1
  import "@webiny/tasks/features/TaskController/augmentation.js";
2
+ import "./features/Providers/types.js";
3
+
4
+ // Plugins augment via declaration merging.
2
5
 
3
6
  //# sourceMappingURL=types.js.map
package/api/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import \"@webiny/tasks/features/TaskController/augmentation.js\";\n\nexport interface AiProvider {\n name: string;\n description?: string;\n model: string;\n apiKey: string;\n}\n\nexport interface AiPowerUpsSettings {\n providers: {\n presets: AiProvider[];\n };\n}\n"],"mappings":"AAAA,OAAO,uDAAuD","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import \"@webiny/tasks/features/TaskController/augmentation.js\";\nimport \"~/api/features/Providers/types.js\";\n\n// Plugins augment via declaration merging.\nexport interface IAiPowerUpsSettings {}\n"],"mappings":"AAAA,OAAO,uDAAuD;AAC9D;;AAEA","ignoreList":[]}
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@webiny/ai-powerups",
3
- "version": "6.3.0-beta.2",
3
+ "version": "6.3.0-beta.4",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
- "main": "index.js",
6
+ "exports": {
7
+ ".": "./index.js",
8
+ "./*": "./*"
9
+ },
7
10
  "repository": {
8
11
  "type": "git",
9
12
  "url": "https://github.com/webiny/webiny-js.git"
@@ -15,33 +18,33 @@
15
18
  "author": "Webiny Ltd.",
16
19
  "license": "Webiny Enterprise",
17
20
  "dependencies": {
18
- "@webiny/admin-ui": "6.3.0-beta.2",
19
- "@webiny/api-core": "6.3.0-beta.2",
20
- "@webiny/api-websockets": "6.3.0-beta.2",
21
- "@webiny/app": "6.3.0-beta.2",
22
- "@webiny/app-admin": "6.3.0-beta.2",
23
- "@webiny/app-website-builder": "6.3.0-beta.2",
24
- "@webiny/app-websockets": "6.3.0-beta.2",
25
- "@webiny/feature": "6.3.0-beta.2",
26
- "@webiny/icons": "6.3.0-beta.2",
27
- "@webiny/project": "6.3.0-beta.2",
28
- "@webiny/project-aws": "6.3.0-beta.2",
29
- "@webiny/tasks": "6.3.0-beta.2",
30
- "@webiny/utils": "6.3.0-beta.2",
31
- "ai": "6.0.168",
21
+ "@webiny/admin-ui": "6.3.0-beta.4",
22
+ "@webiny/api-core": "6.3.0-beta.4",
23
+ "@webiny/api-websockets": "6.3.0-beta.4",
24
+ "@webiny/app": "6.3.0-beta.4",
25
+ "@webiny/app-admin": "6.3.0-beta.4",
26
+ "@webiny/app-website-builder": "6.3.0-beta.4",
27
+ "@webiny/app-websockets": "6.3.0-beta.4",
28
+ "@webiny/feature": "6.3.0-beta.4",
29
+ "@webiny/icons": "6.3.0-beta.4",
30
+ "@webiny/project": "6.3.0-beta.4",
31
+ "@webiny/project-aws": "6.3.0-beta.4",
32
+ "@webiny/tasks": "6.3.0-beta.4",
33
+ "@webiny/utils": "6.3.0-beta.4",
34
+ "ai": "6.0.175",
32
35
  "lodash": "4.18.1",
33
- "mobx": "6.15.0",
36
+ "mobx": "6.15.1",
34
37
  "mobx-react-lite": "4.1.1",
35
38
  "react": "18.3.1",
36
39
  "react-dom": "18.3.1",
37
40
  "zod": "4.3.6"
38
41
  },
39
42
  "devDependencies": {
40
- "@webiny/build-tools": "6.3.0-beta.2",
41
- "@webiny/handler-aws": "6.3.0-beta.2",
42
- "@webiny/handler-graphql": "6.3.0-beta.2",
43
- "@webiny/project-utils": "6.3.0-beta.2",
44
- "@webiny/wcp": "6.3.0-beta.2",
43
+ "@webiny/build-tools": "6.3.0-beta.4",
44
+ "@webiny/handler-aws": "6.3.0-beta.4",
45
+ "@webiny/handler-graphql": "6.3.0-beta.4",
46
+ "@webiny/project-utils": "6.3.0-beta.4",
47
+ "@webiny/wcp": "6.3.0-beta.4",
45
48
  "rimraf": "6.1.3",
46
49
  "typescript": "6.0.3",
47
50
  "vitest": "4.1.5"
@@ -50,5 +53,5 @@
50
53
  "access": "public",
51
54
  "directory": "dist"
52
55
  },
53
- "gitHead": "c5ae1dbcb99bf7457449ef67aef19c5b4b1ffc4c"
56
+ "gitHead": "7cefe15431dbd65504e1f58147dc9e55bcbfa693"
54
57
  }
@@ -1,11 +0,0 @@
1
- import { z } from "zod";
2
- export declare const updateValidation: z.ZodObject<{
3
- providers: z.ZodDefault<z.ZodObject<{
4
- presets: z.ZodArray<z.ZodObject<{
5
- name: z.ZodString;
6
- description: z.ZodOptional<z.ZodString>;
7
- model: z.ZodString;
8
- apiKey: z.ZodString;
9
- }, z.core.$strip>>;
10
- }, z.core.$strip>>;
11
- }, z.core.$strip>;
@@ -1,16 +0,0 @@
1
- import { z } from "zod";
2
- const provider = z.object({
3
- name: z.string().min(1).describe("Provider name"),
4
- description: z.string().optional().describe("Provider description"),
5
- model: z.string().min(1).describe("Model ID"),
6
- apiKey: z.string().min(1).describe("API key")
7
- });
8
- export const updateValidation = z.object({
9
- providers: z.object({
10
- presets: z.array(provider)
11
- }).default({
12
- presets: []
13
- })
14
- });
15
-
16
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["z","provider","object","name","string","min","describe","description","optional","model","apiKey","updateValidation","providers","presets","array","default"],"sources":["validation.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst provider = z.object({\n name: z.string().min(1).describe(\"Provider name\"),\n description: z.string().optional().describe(\"Provider description\"),\n model: z.string().min(1).describe(\"Model ID\"),\n apiKey: z.string().min(1).describe(\"API key\")\n});\n\nexport const updateValidation = z.object({\n providers: z\n .object({\n presets: z.array(provider)\n })\n .default({ presets: [] })\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AAEvB,MAAMC,QAAQ,GAAGD,CAAC,CAACE,MAAM,CAAC;EACtBC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,eAAe,CAAC;EACjDC,WAAW,EAAEP,CAAC,CAACI,MAAM,CAAC,CAAC,CAACI,QAAQ,CAAC,CAAC,CAACF,QAAQ,CAAC,sBAAsB,CAAC;EACnEG,KAAK,EAAET,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,UAAU,CAAC;EAC7CI,MAAM,EAAEV,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,SAAS;AAChD,CAAC,CAAC;AAEF,OAAO,MAAMK,gBAAgB,GAAGX,CAAC,CAACE,MAAM,CAAC;EACrCU,SAAS,EAAEZ,CAAC,CACPE,MAAM,CAAC;IACJW,OAAO,EAAEb,CAAC,CAACc,KAAK,CAACb,QAAQ;EAC7B,CAAC,CAAC,CACDc,OAAO,CAAC;IAAEF,OAAO,EAAE;EAAG,CAAC;AAChC,CAAC,CAAC","ignoreList":[]}