@webiny/ai-powerups 6.3.0 → 6.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AiPowerups.js +8 -9
- package/AiPowerups.js.map +1 -1
- package/admin/Extension.js +28 -26
- package/admin/Extension.js.map +1 -1
- package/admin/domain/errors.d.ts +12 -0
- package/admin/domain/errors.js +21 -0
- package/admin/domain/errors.js.map +1 -0
- package/admin/features/feature.js +13 -12
- package/admin/features/feature.js.map +1 -1
- package/admin/features/generatePageContent/GeneratePageContentGateway.js +35 -16
- package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -1
- package/admin/features/generatePageContent/GeneratePageContentUseCase.js +13 -10
- package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -1
- package/admin/features/generatePageContent/abstractions.d.ts +4 -0
- package/admin/features/generatePageContent/abstractions.js +3 -2
- package/admin/features/generatePageContent/abstractions.js.map +1 -1
- package/admin/features/generatePageContent/feature.js +7 -6
- package/admin/features/generatePageContent/feature.js.map +1 -1
- package/admin/features/generatePageContent/index.js +1 -3
- package/admin/features/listModels/ListModelsGateway.js +17 -14
- package/admin/features/listModels/ListModelsGateway.js.map +1 -1
- package/admin/features/listModels/ListModelsRepository.js +21 -18
- package/admin/features/listModels/ListModelsRepository.js.map +1 -1
- package/admin/features/listModels/ListModelsUseCase.js +13 -10
- package/admin/features/listModels/ListModelsUseCase.js.map +1 -1
- package/admin/features/listModels/abstractions.js +4 -3
- package/admin/features/listModels/abstractions.js.map +1 -1
- package/admin/features/listModels/feature.js +15 -14
- package/admin/features/listModels/feature.js.map +1 -1
- package/admin/features/listModels/index.js +1 -3
- package/admin/features/settings/getSettings/GetSettingsGateway.js +17 -14
- package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -1
- package/admin/features/settings/getSettings/GetSettingsRepository.js +23 -23
- package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -1
- package/admin/features/settings/getSettings/GetSettingsUseCase.js +13 -10
- package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -1
- package/admin/features/settings/getSettings/abstractions.js +4 -3
- package/admin/features/settings/getSettings/abstractions.js.map +1 -1
- package/admin/features/settings/getSettings/feature.js +15 -14
- package/admin/features/settings/getSettings/feature.js.map +1 -1
- package/admin/features/settings/getSettings/index.js +1 -3
- package/admin/features/settings/shared/SettingsCache.js +14 -13
- package/admin/features/settings/shared/SettingsCache.js.map +1 -1
- package/admin/features/settings/shared/abstractions.d.ts +32 -0
- package/admin/features/settings/shared/abstractions.js +2 -18
- package/admin/features/settings/shared/abstractions.js.map +1 -1
- package/admin/features/settings/shared/feature.js +11 -10
- package/admin/features/settings/shared/feature.js.map +1 -1
- package/admin/features/settings/shared/index.js +0 -2
- package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +34 -18
- package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -1
- package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +17 -13
- package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -1
- package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +13 -10
- package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -1
- package/admin/features/settings/updateSettings/abstractions.js +4 -3
- package/admin/features/settings/updateSettings/abstractions.js.map +1 -1
- package/admin/features/settings/updateSettings/feature.js +15 -14
- package/admin/features/settings/updateSettings/feature.js.map +1 -1
- package/admin/features/settings/updateSettings/index.js +1 -3
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +50 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +2 -1
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +133 -129
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -1
- package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +2 -1
- package/admin/presentation/AiPowerUpsSettings/abstractions.js +2 -1
- package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -1
- package/admin/presentation/AiPowerUpsSettings/feature.js +20 -16
- package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -1
- package/admin/presentation/AiPowerUpsSettings/index.d.ts +0 -3
- package/admin/presentation/AiPowerUpsSettings/index.js +0 -5
- package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +2 -1
- package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -1
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +19 -20
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -1
- package/admin/presentation/{PersonasSettings.d.ts → ProjectsSettings.d.ts} +2 -2
- package/admin/presentation/ProjectsSettings.js +56 -0
- package/admin/presentation/ProjectsSettings.js.map +1 -0
- package/admin/presentation/ProvidersSettings.js +39 -33
- package/admin/presentation/ProvidersSettings.js.map +1 -1
- package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
- package/admin/presentation/ReaderPersonasSettings.js +37 -0
- package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
- package/admin/presentation/WbContentGeneration/Extension.js +15 -16
- package/admin/presentation/WbContentGeneration/Extension.js.map +1 -1
- package/admin/presentation/WbContentGeneration/GenerateContentButton.js +12 -17
- package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -1
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +94 -127
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -1
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +19 -5
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +214 -77
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -1
- package/admin/presentation/WbContentGeneration/abstractions.d.ts +4 -2
- package/admin/presentation/WbContentGeneration/abstractions.js +2 -1
- package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -1
- package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +10 -11
- package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -1
- package/admin/presentation/WbContentGeneration/feature.js +11 -10
- package/admin/presentation/WbContentGeneration/feature.js.map +1 -1
- package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
- package/admin/presentation/WriterPersonasSettings.js +37 -0
- package/admin/presentation/WriterPersonasSettings.js.map +1 -0
- package/admin/routes.d.ts +4 -0
- package/admin/routes.js +10 -0
- package/admin/routes.js.map +1 -0
- package/api/Extension.js +28 -11
- package/api/Extension.js.map +1 -1
- package/api/constants.js +2 -1
- package/api/constants.js.map +1 -1
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +27 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +34 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +140 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
- package/api/features/AiImageEnrichment/feature.d.ts +4 -0
- package/api/features/AiImageEnrichment/feature.js +13 -0
- package/api/features/AiImageEnrichment/feature.js.map +1 -0
- package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +12 -0
- package/api/features/AiPromptContext/AiPromptContextBuilder.js +103 -0
- package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
- package/api/features/AiPromptContext/ProjectFileAssembler.d.ts +22 -0
- package/api/features/AiPromptContext/ProjectFileAssembler.js +76 -0
- package/api/features/AiPromptContext/ProjectFileAssembler.js.map +1 -0
- package/api/features/AiPromptContext/ProjectFileCache.d.ts +16 -0
- package/api/features/AiPromptContext/ProjectFileCache.js +61 -0
- package/api/features/AiPromptContext/ProjectFileCache.js.map +1 -0
- package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
- package/api/features/AiPromptContext/ProjectSection.js +35 -0
- package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
- package/api/features/AiPromptContext/ReadProjectFileTool.d.ts +3 -0
- package/api/features/AiPromptContext/ReadProjectFileTool.js +36 -0
- package/api/features/AiPromptContext/ReadProjectFileTool.js.map +1 -0
- package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
- package/api/features/AiPromptContext/ReaderPersonaSection.js +10 -0
- package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
- package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
- package/api/features/AiPromptContext/WriterPersonaSection.js +10 -0
- package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
- package/api/features/AiPromptContext/abstractions.d.ts +68 -0
- package/api/features/AiPromptContext/abstractions.js +7 -0
- package/api/features/AiPromptContext/abstractions.js.map +1 -0
- package/api/features/AiPromptContext/feature.d.ts +4 -0
- package/api/features/AiPromptContext/feature.js +15 -0
- package/api/features/AiPromptContext/feature.js.map +1 -0
- package/api/features/AiPromptContext/index.d.ts +1 -0
- package/api/features/AiPromptContext/index.js +1 -0
- package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.d.ts +11 -0
- package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js +34 -0
- package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js.map +1 -0
- package/api/features/ExtractFrontmatter/feature.d.ts +4 -0
- package/api/features/ExtractFrontmatter/feature.js +11 -0
- package/api/features/ExtractFrontmatter/feature.js.map +1 -0
- package/api/features/GetSettings/GetSettingsRepository.d.ts +3 -2
- package/api/features/GetSettings/GetSettingsRepository.js +29 -26
- package/api/features/GetSettings/GetSettingsRepository.js.map +1 -1
- package/api/features/GetSettings/GetSettingsUseCase.js +13 -10
- package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -1
- package/api/features/GetSettings/abstractions.js +3 -2
- package/api/features/GetSettings/abstractions.js.map +1 -1
- package/api/features/GetSettings/feature.js +7 -6
- package/api/features/GetSettings/feature.js.map +1 -1
- package/api/features/GetSettings/index.js +0 -2
- package/api/features/Projects/ProjectsHandler.d.ts +31 -0
- package/api/features/Projects/ProjectsHandler.js +103 -0
- package/api/features/Projects/ProjectsHandler.js.map +1 -0
- package/api/features/Projects/feature.d.ts +4 -0
- package/api/features/Projects/feature.js +11 -0
- package/api/features/Projects/feature.js.map +1 -0
- package/api/features/Projects/types.d.ts +50 -0
- package/api/features/Projects/types.js +0 -0
- package/api/features/Providers/ProvidersGraphQLMapper.js +33 -30
- package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -1
- package/api/features/Providers/ProvidersHandler.js +67 -64
- package/api/features/Providers/ProvidersHandler.js.map +1 -1
- package/api/features/Providers/feature.js +7 -6
- package/api/features/Providers/feature.js.map +1 -1
- package/api/features/Providers/index.js +0 -3
- package/api/features/Providers/types.js +0 -3
- package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
- package/api/features/ReaderPersonas/ReaderPersonasHandler.js +43 -0
- package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
- package/api/features/ReaderPersonas/feature.d.ts +4 -0
- package/api/features/ReaderPersonas/feature.js +11 -0
- package/api/features/ReaderPersonas/feature.js.map +1 -0
- package/api/features/ReaderPersonas/index.d.ts +2 -0
- package/api/features/ReaderPersonas/index.js +1 -0
- package/api/features/ReaderPersonas/types.d.ts +24 -0
- package/api/features/ReaderPersonas/types.js +0 -0
- package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +3 -2
- package/api/features/UpdateSettings/UpdateSettingsRepository.js +59 -62
- package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -1
- package/api/features/UpdateSettings/UpdateSettingsUseCase.js +23 -21
- package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
- package/api/features/UpdateSettings/abstractions.js +5 -7
- package/api/features/UpdateSettings/abstractions.js.map +1 -1
- package/api/features/UpdateSettings/errors.d.ts +10 -0
- package/api/features/UpdateSettings/errors.js +14 -0
- package/api/features/UpdateSettings/errors.js.map +1 -0
- package/api/features/UpdateSettings/events.js +16 -11
- package/api/features/UpdateSettings/events.js.map +1 -1
- package/api/features/UpdateSettings/feature.js +7 -6
- package/api/features/UpdateSettings/feature.js.map +1 -1
- package/api/features/UpdateSettings/index.js +1 -3
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +4 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +63 -60
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -1
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +5 -3
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +92 -53
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
- package/api/features/WbGeneratePageContent/abstractions.d.ts +15 -1
- package/api/features/WbGeneratePageContent/abstractions.js +2 -1
- package/api/features/WbGeneratePageContent/abstractions.js.map +1 -1
- package/api/features/WbGeneratePageContent/buildPrompt.d.ts +1 -1
- package/api/features/WbGeneratePageContent/buildPrompt.js +11 -10
- package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -1
- package/api/features/WbGeneratePageContent/feature.js +7 -6
- package/api/features/WbGeneratePageContent/feature.js.map +1 -1
- package/api/features/WbGeneratePageContent/index.js +0 -2
- package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
- package/api/features/WriterPersonas/WriterPersonasHandler.js +43 -0
- package/api/features/WriterPersonas/WriterPersonasHandler.js.map +1 -0
- package/api/features/WriterPersonas/feature.d.ts +4 -0
- package/api/features/WriterPersonas/feature.js +11 -0
- package/api/features/WriterPersonas/feature.js.map +1 -0
- package/api/features/WriterPersonas/index.d.ts +2 -0
- package/api/features/WriterPersonas/index.js +1 -0
- package/api/features/WriterPersonas/types.d.ts +24 -0
- package/api/features/WriterPersonas/types.js +0 -0
- package/api/features/shared/SettingsCache.d.ts +12 -0
- package/api/features/shared/SettingsCache.js +22 -0
- package/api/features/shared/SettingsCache.js.map +1 -0
- package/api/features/shared/abstractions.d.ts +13 -0
- package/api/features/shared/abstractions.js +4 -2
- package/api/features/shared/abstractions.js.map +1 -1
- package/api/features/shared/index.d.ts +3 -1
- package/api/features/shared/index.js +1 -3
- package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +35 -26
- package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -1
- package/api/graphql/BaseGraphQLSchema.js +98 -81
- package/api/graphql/BaseGraphQLSchema.js.map +1 -1
- package/api/graphql/abstractions.js +2 -1
- package/api/graphql/abstractions.js.map +1 -1
- package/api/types.d.ts +1 -0
- package/api/types.js +1 -4
- package/index.js +0 -2
- package/package.json +26 -24
- package/admin/features/generatePageContent/index.js.map +0 -1
- package/admin/features/listModels/index.js.map +0 -1
- package/admin/features/settings/getSettings/index.js.map +0 -1
- package/admin/features/settings/shared/index.js.map +0 -1
- package/admin/features/settings/updateSettings/index.js.map +0 -1
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.d.ts +0 -2
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js +0 -11
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js.map +0 -1
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.d.ts +0 -5
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js +0 -58
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js.map +0 -1
- package/admin/presentation/AiPowerUpsSettings/index.js.map +0 -1
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.d.ts +0 -1
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js +0 -12
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js.map +0 -1
- package/admin/presentation/PersonasSettings.js +0 -29
- package/admin/presentation/PersonasSettings.js.map +0 -1
- package/api/features/GetSettings/index.js.map +0 -1
- package/api/features/Providers/index.js.map +0 -1
- package/api/features/Providers/types.js.map +0 -1
- package/api/features/UpdateSettings/index.js.map +0 -1
- package/api/features/WbGeneratePageContent/index.js.map +0 -1
- package/api/features/shared/index.js.map +0 -1
- package/api/types.js.map +0 -1
- package/index.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FileBeforeCreateEventHandler } from "@webiny/api-file-manager/features/file/CreateFile/events.js";
|
|
2
|
+
import { GetFileContentsByKeyUseCase } from "@webiny/api-file-manager/features/file/GetFileContentsByKey/index.js";
|
|
3
|
+
declare class ExtractFrontmatterBeforeCreateHandlerImpl implements FileBeforeCreateEventHandler.Interface {
|
|
4
|
+
private getFileContentsByKey;
|
|
5
|
+
constructor(getFileContentsByKey: GetFileContentsByKeyUseCase.Interface);
|
|
6
|
+
handle(event: FileBeforeCreateEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const ExtractFrontmatterBeforeCreateHandler: typeof ExtractFrontmatterBeforeCreateHandlerImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-file-manager/features/file/CreateFile/events.js").FileBeforeCreateEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import front_matter from "front-matter";
|
|
2
|
+
import { FileBeforeCreateEventHandler } from "@webiny/api-file-manager/features/file/CreateFile/events.js";
|
|
3
|
+
import { GetFileContentsByKeyUseCase } from "@webiny/api-file-manager/features/file/GetFileContentsByKey/index.js";
|
|
4
|
+
function isMarkdownFile(name) {
|
|
5
|
+
return name.endsWith(".md") || name.endsWith(".mdx");
|
|
6
|
+
}
|
|
7
|
+
class ExtractFrontmatterBeforeCreateHandlerImpl {
|
|
8
|
+
constructor(getFileContentsByKey){
|
|
9
|
+
this.getFileContentsByKey = getFileContentsByKey;
|
|
10
|
+
}
|
|
11
|
+
async handle(event) {
|
|
12
|
+
const { file } = event.payload;
|
|
13
|
+
if (!isMarkdownFile(file.name)) return;
|
|
14
|
+
if (file.description) return;
|
|
15
|
+
const result = await this.getFileContentsByKey.execute(file.key);
|
|
16
|
+
if (result.isFail()) return;
|
|
17
|
+
const content = result.value.buffer.toString("utf-8");
|
|
18
|
+
try {
|
|
19
|
+
const parsed = front_matter(content);
|
|
20
|
+
if (parsed.attributes.description) file.description = parsed.attributes.description;
|
|
21
|
+
else if (parsed.attributes.title) file.description = parsed.attributes.title;
|
|
22
|
+
if (parsed.attributes.tags) file.tags = parsed.attributes.tags;
|
|
23
|
+
} catch {}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const ExtractFrontmatterBeforeCreateHandler = FileBeforeCreateEventHandler.createImplementation({
|
|
27
|
+
implementation: ExtractFrontmatterBeforeCreateHandlerImpl,
|
|
28
|
+
dependencies: [
|
|
29
|
+
GetFileContentsByKeyUseCase
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
export { ExtractFrontmatterBeforeCreateHandler };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=ExtractFrontmatterBeforeCreateHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js","sources":["../../../../src/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.ts"],"sourcesContent":["import frontmatter from \"front-matter\";\nimport { FileBeforeCreateEventHandler } from \"@webiny/api-file-manager/features/file/CreateFile/events.js\";\nimport { GetFileContentsByKeyUseCase } from \"@webiny/api-file-manager/features/file/GetFileContentsByKey/index.js\";\n\nfunction isMarkdownFile(name: string): boolean {\n return name.endsWith(\".md\") || name.endsWith(\".mdx\");\n}\n\ntype Frontmatter = { description?: string; title?: string; tags?: string[] };\n\nclass ExtractFrontmatterBeforeCreateHandlerImpl implements FileBeforeCreateEventHandler.Interface {\n constructor(private getFileContentsByKey: GetFileContentsByKeyUseCase.Interface) {}\n\n async handle(event: FileBeforeCreateEventHandler.Event): Promise<void> {\n const { file } = event.payload;\n\n if (!isMarkdownFile(file.name)) {\n return;\n }\n\n if (file.description) {\n return;\n }\n\n const result = await this.getFileContentsByKey.execute(file.key);\n if (result.isFail()) {\n return;\n }\n\n const content = result.value.buffer.toString(\"utf-8\");\n\n try {\n const parsed = frontmatter<Frontmatter>(content);\n // Description takes precedence over title.\n if (parsed.attributes.description) {\n file.description = parsed.attributes.description;\n } else if (parsed.attributes.title) {\n file.description = parsed.attributes.title;\n }\n\n if (parsed.attributes.tags) {\n file.tags = parsed.attributes.tags;\n }\n } catch {\n // Malformed frontmatter — skip silently.\n }\n }\n}\n\nexport const ExtractFrontmatterBeforeCreateHandler =\n FileBeforeCreateEventHandler.createImplementation({\n implementation: ExtractFrontmatterBeforeCreateHandlerImpl,\n dependencies: [GetFileContentsByKeyUseCase]\n });\n"],"names":["isMarkdownFile","name","ExtractFrontmatterBeforeCreateHandlerImpl","getFileContentsByKey","event","file","result","content","parsed","frontmatter","ExtractFrontmatterBeforeCreateHandler","FileBeforeCreateEventHandler","GetFileContentsByKeyUseCase"],"mappings":";;;AAIA,SAASA,eAAeC,IAAY;IAChC,OAAOA,KAAK,QAAQ,CAAC,UAAUA,KAAK,QAAQ,CAAC;AACjD;AAIA,MAAMC;IACF,YAAoBC,oBAA2D,CAAE;aAA7DA,oBAAoB,GAApBA;IAA8D;IAElF,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,IAAI,CAACJ,eAAeK,KAAK,IAAI,GACzB;QAGJ,IAAIA,KAAK,WAAW,EAChB;QAGJ,MAAMC,SAAS,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAACD,KAAK,GAAG;QAC/D,IAAIC,OAAO,MAAM,IACb;QAGJ,MAAMC,UAAUD,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE7C,IAAI;YACA,MAAME,SAASC,aAAyBF;YAExC,IAAIC,OAAO,UAAU,CAAC,WAAW,EAC7BH,KAAK,WAAW,GAAGG,OAAO,UAAU,CAAC,WAAW;iBAC7C,IAAIA,OAAO,UAAU,CAAC,KAAK,EAC9BH,KAAK,WAAW,GAAGG,OAAO,UAAU,CAAC,KAAK;YAG9C,IAAIA,OAAO,UAAU,CAAC,IAAI,EACtBH,KAAK,IAAI,GAAGG,OAAO,UAAU,CAAC,IAAI;QAE1C,EAAE,OAAM,CAER;IACJ;AACJ;AAEO,MAAME,wCACTC,6BAA6B,oBAAoB,CAAC;IAC9C,gBAAgBT;IAChB,cAAc;QAACU;KAA4B;AAC/C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { ExtractFrontmatterBeforeCreateHandler } from "./ExtractFrontmatterBeforeCreateHandler.js";
|
|
3
|
+
const ExtractFrontmatterFeature = createFeature({
|
|
4
|
+
name: "AiPowerUps/ExtractFrontmatter",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(ExtractFrontmatterBeforeCreateHandler);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { ExtractFrontmatterFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ExtractFrontmatter/feature.js","sources":["../../../../src/api/features/ExtractFrontmatter/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ExtractFrontmatterBeforeCreateHandler } from \"./ExtractFrontmatterBeforeCreateHandler.js\";\n\nexport const ExtractFrontmatterFeature = createFeature({\n name: \"AiPowerUps/ExtractFrontmatter\",\n register(container) {\n container.register(ExtractFrontmatterBeforeCreateHandler);\n }\n});\n"],"names":["ExtractFrontmatterFeature","createFeature","container","ExtractFrontmatterBeforeCreateHandler"],"mappings":";;AAGO,MAAMA,4BAA4BC,cAAc;IACnD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
3
|
-
import { AiPowerUpsSettingsGroupHandler } from "../../../api/features/shared/index.js";
|
|
3
|
+
import { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsCache } from "../../../api/features/shared/index.js";
|
|
4
4
|
import { GetSettingsRepository } from "./abstractions.js";
|
|
5
5
|
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
6
6
|
declare class GetSettingsRepositoryImpl implements GetSettingsRepository.Interface {
|
|
7
7
|
private keyValueStore;
|
|
8
8
|
private handlers;
|
|
9
|
-
|
|
9
|
+
private cache;
|
|
10
|
+
constructor(keyValueStore: KeyValueStore.Interface, handlers: AiPowerUpsSettingsGroupHandler.Interface[], cache: AiPowerUpsSettingsCache.Interface);
|
|
10
11
|
get(): Promise<Result<IAiPowerUpsSettings>>;
|
|
11
12
|
}
|
|
12
13
|
export declare const GetSettingsRepositoryImplementation: typeof GetSettingsRepositoryImpl & {
|
|
@@ -1,37 +1,40 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
3
|
-
import { AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
|
|
3
|
+
import { AiPowerUpsSettingsCache, AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
|
|
4
4
|
import { GetSettingsRepository } from "./abstractions.js";
|
|
5
5
|
import { AI_POWER_UPS_SETTINGS } from "../../constants.js";
|
|
6
6
|
class GetSettingsRepositoryImpl {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
async get() {
|
|
12
|
-
const storeResult = await this.keyValueStore.get(AI_POWER_UPS_SETTINGS);
|
|
13
|
-
const raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};
|
|
14
|
-
const result = {};
|
|
15
|
-
|
|
16
|
-
// Run each handler's mapFromStorage for its section.
|
|
17
|
-
for (const handler of this.handlers) {
|
|
18
|
-
result[handler.name] = handler.mapFromStorage(raw[handler.name]);
|
|
7
|
+
constructor(keyValueStore, handlers, cache){
|
|
8
|
+
this.keyValueStore = keyValueStore;
|
|
9
|
+
this.handlers = handlers;
|
|
10
|
+
this.cache = cache;
|
|
19
11
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
async get() {
|
|
13
|
+
const cached = this.cache.get();
|
|
14
|
+
if (cached) return Result.ok(cached.mapped);
|
|
15
|
+
const storeResult = await this.keyValueStore.get(AI_POWER_UPS_SETTINGS);
|
|
16
|
+
const raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const handler of this.handlers)result[handler.name] = handler.mapFromStorage(raw[handler.name]);
|
|
19
|
+
for (const key of Object.keys(raw))if (!(key in result)) result[key] = raw[key];
|
|
20
|
+
const mapped = result;
|
|
21
|
+
this.cache.set(raw, mapped);
|
|
22
|
+
return Result.ok(mapped);
|
|
26
23
|
}
|
|
27
|
-
return Result.ok(result);
|
|
28
|
-
}
|
|
29
24
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplementation({
|
|
26
|
+
implementation: GetSettingsRepositoryImpl,
|
|
27
|
+
dependencies: [
|
|
28
|
+
KeyValueStore,
|
|
29
|
+
[
|
|
30
|
+
AiPowerUpsSettingsGroupHandler,
|
|
31
|
+
{
|
|
32
|
+
multiple: true
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
AiPowerUpsSettingsCache
|
|
36
|
+
]
|
|
35
37
|
});
|
|
38
|
+
export { GetSettingsRepositoryImplementation };
|
|
36
39
|
|
|
37
40
|
//# sourceMappingURL=GetSettingsRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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]);\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 const GetSettingsRepositoryImplementation = 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","GetSettingsRepositoryImplementation","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;QAGnE,KAAK,MAAMC,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;AAEO,MAAMC,sCAAsCC,sBAAsB,oBAAoB,CAAC;IAC1F,gBAAgBf;IAChB,cAAc;QACVgB;QACA;YAACC;YAAgC;gBAAE,UAAU;YAAK;SAAE;QACpDC;KACH;AACL"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GetSettingsRepository, GetSettingsUseCase } from "./abstractions.js";
|
|
2
2
|
class GetSettingsUseCaseImpl {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
constructor(repository){
|
|
4
|
+
this.repository = repository;
|
|
5
|
+
}
|
|
6
|
+
execute() {
|
|
7
|
+
return this.repository.get();
|
|
8
|
+
}
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const GetSettingsUseCaseImplementation = GetSettingsUseCase.createImplementation({
|
|
11
|
+
implementation: GetSettingsUseCaseImpl,
|
|
12
|
+
dependencies: [
|
|
13
|
+
GetSettingsRepository
|
|
14
|
+
]
|
|
13
15
|
});
|
|
16
|
+
export { GetSettingsUseCaseImplementation };
|
|
14
17
|
|
|
15
18
|
//# sourceMappingURL=GetSettingsUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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 }\n}\n\nexport const GetSettingsUseCaseImplementation = GetSettingsUseCase.createImplementation({\n implementation: GetSettingsUseCaseImpl,\n dependencies: [GetSettingsRepository]\n});\n"],"names":["GetSettingsUseCaseImpl","repository","GetSettingsUseCaseImplementation","GetSettingsUseCase","GetSettingsRepository"],"mappings":";AAEA,MAAMA;IACF,YAAoBC,UAA2C,CAAE;aAA7CA,UAAU,GAAVA;IAA8C;IAElE,UAAU;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG;IAC9B;AACJ;AAEO,MAAMC,mCAAmCC,mBAAmB,oBAAoB,CAAC;IACpF,gBAAgBH;IAChB,cAAc;QAACI;KAAsB;AACzC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
const GetSettingsRepository = createAbstraction("AiPowerUpsGetSettingsRepository");
|
|
3
|
+
const GetSettingsUseCase = createAbstraction("AiPowerUpsGetSettingsUseCase");
|
|
4
|
+
export { GetSettingsRepository, GetSettingsUseCase };
|
|
4
5
|
|
|
5
6
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,12 +1,13 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { GetSettingsRepositoryImplementation } from "./GetSettingsRepository.js";
|
|
3
3
|
import { GetSettingsUseCaseImplementation } from "./GetSettingsUseCase.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
const GetSettingsFeature = createFeature({
|
|
5
|
+
name: "AiPowerUpsGetSettings",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(GetSettingsRepositoryImplementation).inSingletonScope();
|
|
8
|
+
container.register(GetSettingsUseCaseImplementation);
|
|
9
|
+
}
|
|
10
10
|
});
|
|
11
|
+
export { GetSettingsFeature };
|
|
11
12
|
|
|
12
13
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"api/features/GetSettings/feature.js","sources":["../../../../src/api/features/GetSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetSettingsRepositoryImplementation } from \"./GetSettingsRepository.js\";\nimport { GetSettingsUseCaseImplementation } from \"./GetSettingsUseCase.js\";\n\nexport const GetSettingsFeature = createFeature({\n name: \"AiPowerUpsGetSettings\",\n register(container) {\n container.register(GetSettingsRepositoryImplementation).inSingletonScope();\n container.register(GetSettingsUseCaseImplementation);\n }\n});\n"],"names":["GetSettingsFeature","createFeature","container","GetSettingsRepositoryImplementation","GetSettingsUseCaseImplementation"],"mappings":";;;AAIO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,qCAAqC,gBAAgB;QACxED,UAAU,QAAQ,CAACE;IACvB;AACJ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AiPowerUpsSettingsGroupHandler } from "../../../api/features/shared/index.js";
|
|
3
|
+
import type { PersistedProjects, ProjectsSettings } from "./types.js";
|
|
4
|
+
declare class ProjectsHandlerImpl implements AiPowerUpsSettingsGroupHandler.Interface {
|
|
5
|
+
readonly name = "projects";
|
|
6
|
+
readonly inputSchema: z.ZodObject<{
|
|
7
|
+
presets: z.ZodArray<z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
11
|
+
instructions: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
12
|
+
defaultReaderPersonaId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
13
|
+
defaultWriterPersonaId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
14
|
+
files: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
15
|
+
id: z.ZodString;
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
size: z.ZodNumber;
|
|
18
|
+
mimeType: z.ZodString;
|
|
19
|
+
src: z.ZodString;
|
|
20
|
+
}, z.core.$strip>>>>>;
|
|
21
|
+
version: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
mapFromStorage(persisted: unknown): ProjectsSettings;
|
|
25
|
+
mapToStorage(internal: unknown, existing: unknown | null): Promise<PersistedProjects>;
|
|
26
|
+
private projectChanged;
|
|
27
|
+
}
|
|
28
|
+
declare const _default: typeof ProjectsHandlerImpl & {
|
|
29
|
+
__abstraction: import("@webiny/di").Abstraction<import("../shared/abstractions.js").IAiPowerUpsSettingsGroupHandler>;
|
|
30
|
+
};
|
|
31
|
+
export default _default;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
|
|
3
|
+
const fileItemSchema = z.object({
|
|
4
|
+
id: z.string().min(1),
|
|
5
|
+
name: z.string().min(1),
|
|
6
|
+
size: z.number(),
|
|
7
|
+
mimeType: z.string().min(1),
|
|
8
|
+
src: z.string().min(1)
|
|
9
|
+
});
|
|
10
|
+
const TOKEN_BUDGET = 150000;
|
|
11
|
+
const CHARS_PER_TOKEN = 4;
|
|
12
|
+
const MAX_CONTEXT_BYTES = TOKEN_BUDGET * CHARS_PER_TOKEN;
|
|
13
|
+
const presetSchema = z.object({
|
|
14
|
+
id: z.string().min(1),
|
|
15
|
+
name: z.string().min(1),
|
|
16
|
+
description: z.string().nullish().optional(),
|
|
17
|
+
instructions: z.string().nullish().optional(),
|
|
18
|
+
defaultReaderPersonaId: z.string().nullish().optional(),
|
|
19
|
+
defaultWriterPersonaId: z.string().nullish().optional(),
|
|
20
|
+
files: z.array(fileItemSchema).nullish().optional(),
|
|
21
|
+
version: z.number().optional()
|
|
22
|
+
}).superRefine((preset, ctx)=>{
|
|
23
|
+
const instructionsBytes = preset.instructions?.length ?? 0;
|
|
24
|
+
const files = preset.files ?? [];
|
|
25
|
+
const totalFileBytes = files.reduce((sum, f)=>sum + f.size, 0);
|
|
26
|
+
const totalBytes = instructionsBytes + totalFileBytes;
|
|
27
|
+
if (totalBytes <= MAX_CONTEXT_BYTES) return;
|
|
28
|
+
const estimatedTokens = Math.ceil(totalBytes / CHARS_PER_TOKEN);
|
|
29
|
+
const sorted = [
|
|
30
|
+
...files
|
|
31
|
+
].sort((a, b)=>b.size - a.size);
|
|
32
|
+
const top = sorted.slice(0, 3).map((f)=>`${f.name} (~${Math.ceil(f.size / CHARS_PER_TOKEN).toLocaleString()} tokens)`);
|
|
33
|
+
ctx.addIssue({
|
|
34
|
+
code: z.ZodIssueCode.custom,
|
|
35
|
+
path: [
|
|
36
|
+
"files"
|
|
37
|
+
],
|
|
38
|
+
message: `Project "${preset.name}" exceeds the ${TOKEN_BUDGET.toLocaleString()} token budget (~${estimatedTokens.toLocaleString()} tokens). Largest files: ${top.join(", ")}.`
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
const inputSchema = z.object({
|
|
42
|
+
presets: z.array(presetSchema)
|
|
43
|
+
});
|
|
44
|
+
class ProjectsHandlerImpl {
|
|
45
|
+
mapFromStorage(persisted) {
|
|
46
|
+
if (!persisted || "object" != typeof persisted) return {
|
|
47
|
+
presets: []
|
|
48
|
+
};
|
|
49
|
+
const data = persisted;
|
|
50
|
+
return {
|
|
51
|
+
presets: data.presets ?? []
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async mapToStorage(internal, existing) {
|
|
55
|
+
const input = internal;
|
|
56
|
+
const prev = existing;
|
|
57
|
+
const prevById = new Map((prev?.presets ?? []).map((p)=>[
|
|
58
|
+
p.id,
|
|
59
|
+
p
|
|
60
|
+
]));
|
|
61
|
+
return {
|
|
62
|
+
presets: input.presets.map((p)=>{
|
|
63
|
+
const prevProject = prevById.get(p.id);
|
|
64
|
+
const prevVersion = prevProject?.version ?? 0;
|
|
65
|
+
const changed = this.projectChanged(p, prevProject);
|
|
66
|
+
return {
|
|
67
|
+
id: p.id,
|
|
68
|
+
name: p.name,
|
|
69
|
+
description: p.description,
|
|
70
|
+
instructions: p.instructions,
|
|
71
|
+
defaultReaderPersonaId: p.defaultReaderPersonaId,
|
|
72
|
+
defaultWriterPersonaId: p.defaultWriterPersonaId,
|
|
73
|
+
files: (p.files ?? []).map((f)=>({
|
|
74
|
+
id: f.id,
|
|
75
|
+
name: f.name,
|
|
76
|
+
size: f.size,
|
|
77
|
+
mimeType: f.mimeType,
|
|
78
|
+
src: f.src
|
|
79
|
+
})),
|
|
80
|
+
version: changed ? prevVersion + 1 : prevVersion
|
|
81
|
+
};
|
|
82
|
+
})
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
projectChanged(current, prev) {
|
|
86
|
+
if (!prev) return true;
|
|
87
|
+
if (current.instructions !== prev.instructions) return true;
|
|
88
|
+
const currentFileIds = (current.files ?? []).map((f)=>f.id).join(",");
|
|
89
|
+
const prevFileIds = (prev.files ?? []).map((f)=>f.id).join(",");
|
|
90
|
+
return currentFileIds !== prevFileIds;
|
|
91
|
+
}
|
|
92
|
+
constructor(){
|
|
93
|
+
this.name = "projects";
|
|
94
|
+
this.inputSchema = inputSchema;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const ProjectsHandler = AiPowerUpsSettingsGroupHandler.createImplementation({
|
|
98
|
+
implementation: ProjectsHandlerImpl,
|
|
99
|
+
dependencies: []
|
|
100
|
+
});
|
|
101
|
+
export default ProjectsHandler;
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=ProjectsHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/Projects/ProjectsHandler.js","sources":["../../../../src/api/features/Projects/ProjectsHandler.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { AiPowerUpsSettingsGroupHandler } from \"~/api/features/shared/index.js\";\nimport type {\n PersistedProjectPreset,\n PersistedProjects,\n ProjectPreset,\n ProjectsSettings\n} from \"./types.js\";\n\nconst fileItemSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n size: z.number(),\n mimeType: z.string().min(1),\n src: z.string().min(1)\n});\n\nconst TOKEN_BUDGET = 150_000;\nconst CHARS_PER_TOKEN = 4;\nconst MAX_CONTEXT_BYTES = TOKEN_BUDGET * CHARS_PER_TOKEN;\n\nconst presetSchema = z\n .object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullish().optional(),\n instructions: z.string().nullish().optional(),\n defaultReaderPersonaId: z.string().nullish().optional(),\n defaultWriterPersonaId: z.string().nullish().optional(),\n files: z.array(fileItemSchema).nullish().optional(),\n version: z.number().optional()\n })\n .superRefine((preset, ctx) => {\n const instructionsBytes = preset.instructions?.length ?? 0;\n const files = preset.files ?? [];\n const totalFileBytes = files.reduce((sum, f) => sum + f.size, 0);\n const totalBytes = instructionsBytes + totalFileBytes;\n\n if (totalBytes <= MAX_CONTEXT_BYTES) {\n return;\n }\n\n const estimatedTokens = Math.ceil(totalBytes / CHARS_PER_TOKEN);\n const sorted = [...files].sort((a, b) => b.size - a.size);\n const top = sorted\n .slice(0, 3)\n .map(\n f => `${f.name} (~${Math.ceil(f.size / CHARS_PER_TOKEN).toLocaleString()} tokens)`\n );\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"files\"],\n message: `Project \"${preset.name}\" exceeds the ${TOKEN_BUDGET.toLocaleString()} token budget (~${estimatedTokens.toLocaleString()} tokens). Largest files: ${top.join(\", \")}.`\n });\n });\n\nconst inputSchema = z.object({\n presets: z.array(presetSchema)\n});\n\nclass ProjectsHandlerImpl implements AiPowerUpsSettingsGroupHandler.Interface {\n readonly name = \"projects\";\n readonly inputSchema = inputSchema;\n\n mapFromStorage(persisted: unknown): ProjectsSettings {\n if (!persisted || typeof persisted !== \"object\") {\n return { presets: [] };\n }\n\n const data = persisted as PersistedProjects;\n return { presets: data.presets ?? [] };\n }\n\n async mapToStorage(internal: unknown, existing: unknown | null): Promise<PersistedProjects> {\n const input = internal as ProjectsSettings;\n const prev = existing as PersistedProjects | null;\n const prevById = new Map((prev?.presets ?? []).map(p => [p.id, p]));\n\n return {\n presets: input.presets.map(p => {\n const prevProject = prevById.get(p.id);\n const prevVersion = prevProject?.version ?? 0;\n const changed = this.projectChanged(p, prevProject);\n\n return {\n id: p.id,\n name: p.name,\n description: p.description,\n instructions: p.instructions,\n defaultReaderPersonaId: p.defaultReaderPersonaId,\n defaultWriterPersonaId: p.defaultWriterPersonaId,\n files: (p.files ?? []).map(f => ({\n id: f.id,\n name: f.name,\n size: f.size,\n mimeType: f.mimeType,\n src: f.src\n })),\n version: changed ? prevVersion + 1 : prevVersion\n };\n })\n };\n }\n\n private projectChanged(\n current: ProjectPreset,\n prev: PersistedProjectPreset | undefined\n ): boolean {\n if (!prev) {\n return true;\n }\n if (current.instructions !== prev.instructions) {\n return true;\n }\n const currentFileIds = (current.files ?? []).map(f => f.id).join(\",\");\n const prevFileIds = (prev.files ?? []).map(f => f.id).join(\",\");\n return currentFileIds !== prevFileIds;\n }\n}\n\nexport default AiPowerUpsSettingsGroupHandler.createImplementation({\n implementation: ProjectsHandlerImpl,\n dependencies: []\n});\n"],"names":["fileItemSchema","z","TOKEN_BUDGET","CHARS_PER_TOKEN","MAX_CONTEXT_BYTES","presetSchema","preset","ctx","instructionsBytes","files","totalFileBytes","sum","f","totalBytes","estimatedTokens","Math","sorted","a","b","top","inputSchema","ProjectsHandlerImpl","persisted","data","internal","existing","input","prev","prevById","Map","p","prevProject","prevVersion","changed","current","currentFileIds","prevFileIds","AiPowerUpsSettingsGroupHandler"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import ProjectsHandler from "./ProjectsHandler.js";
|
|
3
|
+
const ProjectsFeature = createFeature({
|
|
4
|
+
name: "AiPowerUpsProjects",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(ProjectsHandler);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { ProjectsFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/Projects/feature.js","sources":["../../../../src/api/features/Projects/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport ProjectsHandler from \"./ProjectsHandler.js\";\n\nexport const ProjectsFeature = createFeature({\n name: \"AiPowerUpsProjects\",\n register(container) {\n container.register(ProjectsHandler);\n }\n});\n"],"names":["ProjectsFeature","createFeature","container","ProjectsHandler"],"mappings":";;AAGO,MAAMA,kBAAkBC,cAAc;IACzC,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
2
|
+
export interface ProjectFileItem {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
size: number;
|
|
6
|
+
mimeType: string;
|
|
7
|
+
src: string;
|
|
8
|
+
width?: number;
|
|
9
|
+
height?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ProjectPreset {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
instructions?: string;
|
|
16
|
+
defaultReaderPersonaId?: string;
|
|
17
|
+
defaultWriterPersonaId?: string;
|
|
18
|
+
files?: ProjectFileItem[];
|
|
19
|
+
version: number;
|
|
20
|
+
}
|
|
21
|
+
declare module "~/api/types.js" {
|
|
22
|
+
interface IAiPowerUpsSettings {
|
|
23
|
+
projects: {
|
|
24
|
+
presets: ProjectPreset[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export type ProjectsSettings = IAiPowerUpsSettings["projects"];
|
|
29
|
+
export interface PersistedProjectFileItem {
|
|
30
|
+
id: string;
|
|
31
|
+
name: string;
|
|
32
|
+
size: number;
|
|
33
|
+
mimeType: string;
|
|
34
|
+
src: string;
|
|
35
|
+
width?: number;
|
|
36
|
+
height?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface PersistedProjectPreset {
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
instructions?: string;
|
|
43
|
+
defaultReaderPersonaId?: string;
|
|
44
|
+
defaultWriterPersonaId?: string;
|
|
45
|
+
files?: PersistedProjectFileItem[];
|
|
46
|
+
version: number;
|
|
47
|
+
}
|
|
48
|
+
export interface PersistedProjects {
|
|
49
|
+
presets: PersistedProjectPreset[];
|
|
50
|
+
}
|
|
File without changes
|
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
import { AiPowerUpsSettingsGroupGraphQLMapper } from "../shared/index.js";
|
|
2
2
|
class ProvidersGraphQLMapperImpl {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
3
|
+
toApi(internal) {
|
|
4
|
+
const data = internal;
|
|
5
|
+
return {
|
|
6
|
+
presets: data.presets.map((p)=>({
|
|
7
|
+
id: p.id,
|
|
8
|
+
name: p.name,
|
|
9
|
+
description: p.description,
|
|
10
|
+
model: p.model,
|
|
11
|
+
apiKey: p.apiKeyMasked ?? null
|
|
12
|
+
}))
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
fromApi(api) {
|
|
16
|
+
const data = api;
|
|
17
|
+
return {
|
|
18
|
+
presets: data.presets.map((p)=>({
|
|
19
|
+
id: p.id,
|
|
20
|
+
name: p.name,
|
|
21
|
+
description: p.description,
|
|
22
|
+
model: p.model,
|
|
23
|
+
apiKey: p.apiKey,
|
|
24
|
+
apiKeyMasked: "",
|
|
25
|
+
apiKeyEncrypted: ""
|
|
26
|
+
}))
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
constructor(){
|
|
30
|
+
this.name = "providers";
|
|
31
|
+
}
|
|
30
32
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
const ProvidersGraphQLMapper = AiPowerUpsSettingsGroupGraphQLMapper.createImplementation({
|
|
34
|
+
implementation: ProvidersGraphQLMapperImpl,
|
|
35
|
+
dependencies: []
|
|
34
36
|
});
|
|
37
|
+
export default ProvidersGraphQLMapper;
|
|
35
38
|
|
|
36
39
|
//# sourceMappingURL=ProvidersGraphQLMapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|