@dxtmisha/scripts 0.11.8 → 1.1.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/CHANGELOG.md +77 -0
- package/ai-resources/componentMaterials.md +19 -0
- package/ai-resources/componentPrompt.md +381 -0
- package/ai-resources/componentWiki.md +13 -0
- package/bin/arguments.ts +168 -0
- package/bin/build-packages.ts +34 -3
- package/bin/build-publish-packages.ts +12 -2
- package/bin/design-component.ts +7 -1
- package/bin/design-constructor.ts +22 -3
- package/bin/design-figma.ts +26 -4
- package/bin/design-flags.ts +14 -2
- package/bin/design-library.ts +7 -1
- package/bin/design-package.ts +29 -5
- package/bin/design-prompt.ts +27 -3
- package/bin/design-screenshot.ts +12 -2
- package/bin/design-types-save.ts +32 -5
- package/bin/design-types.ts +32 -6
- package/bin/design-ui.ts +21 -3
- package/bin/design-wiki-storm.ts +11 -3
- package/dist/AiZAi-BiLAcdFy.js +232 -0
- package/dist/PropertiesConfig-BKZz_FWW.js +262 -0
- package/{src/config.ts → dist/config.d.ts} +185 -158
- package/dist/config.js +20 -0
- package/dist/figmaApiTypes-CArSsNW8.js +6 -0
- package/dist/library-ai.d.ts +482 -0
- package/dist/library-ai.js +2 -0
- package/dist/library-figma.d.ts +462 -0
- package/dist/library-figma.js +75 -0
- package/dist/library-ui.d.ts +586 -0
- package/dist/library-ui.js +3760 -0
- package/dist/library.d.ts +4910 -0
- package/dist/library.js +1568 -0
- package/dist/propertyTypes-C64u6rT3.js +236 -0
- package/package.json +76 -27
- package/bin/ai-doc.ts +0 -7
- package/bin/build-functional.ts +0 -5
- package/bin/design-component-wiki.ts +0 -11
- package/src/classes/Ai/AiAbstract.ts +0 -242
- package/src/classes/Ai/AiClaude.ts +0 -26
- package/src/classes/Ai/AiClaudeAgent.ts +0 -16
- package/src/classes/Ai/AiClaudeAgentLite.ts +0 -86
- package/src/classes/Ai/AiClaudeCli.ts +0 -24
- package/src/classes/Ai/AiClaudeCliLite.ts +0 -108
- package/src/classes/Ai/AiClaudeLite.ts +0 -112
- package/src/classes/Ai/AiDoc.ts +0 -81
- package/src/classes/Ai/AiDocItem.ts +0 -27
- package/src/classes/Ai/AiDocItemAbstract.ts +0 -209
- package/src/classes/Ai/AiDocItemClasses.ts +0 -27
- package/src/classes/Ai/AiDocItemComposables.ts +0 -20
- package/src/classes/Ai/AiDocType.ts +0 -45
- package/src/classes/Ai/AiGoogle.ts +0 -26
- package/src/classes/Ai/AiGoogleCli.ts +0 -24
- package/src/classes/Ai/AiGoogleCliLite.ts +0 -108
- package/src/classes/Ai/AiGoogleLite.ts +0 -78
- package/src/classes/Ai/AiOpenAi.ts +0 -26
- package/src/classes/Ai/AiOpenAiLite.ts +0 -107
- package/src/classes/Ai/AiZAi.ts +0 -17
- package/src/classes/Ai/AiZAiLite.ts +0 -77
- package/src/classes/Ai/ApiTmp.ts +0 -43
- package/src/classes/BrowserItem.ts +0 -408
- package/src/classes/Build/BuildFunctional.ts +0 -54
- package/src/classes/Build/BuildPackages.ts +0 -137
- package/src/classes/Build/BuildPublishPackages.ts +0 -105
- package/src/classes/BuildItem.ts +0 -187
- package/src/classes/Component/ComponentCreator.ts +0 -45
- package/src/classes/Component/ComponentItem.ts +0 -161
- package/src/classes/Component/ComponentWiki.ts +0 -258
- package/src/classes/Component/ComponentWikiFile.ts +0 -138
- package/src/classes/Design/DesignCommand.ts +0 -243
- package/src/classes/Design/DesignComponent.ts +0 -824
- package/src/classes/Design/DesignConstructor.ts +0 -222
- package/src/classes/Design/DesignConstructors.ts +0 -101
- package/src/classes/Design/DesignFigma.ts +0 -61
- package/src/classes/Design/DesignFlags.ts +0 -215
- package/src/classes/Design/DesignReplace.ts +0 -672
- package/src/classes/Design/DesignScreenshot.ts +0 -140
- package/src/classes/Design/DesignStructure.ts +0 -201
- package/src/classes/Design/DesignStructureClasses.ts +0 -105
- package/src/classes/Design/DesignStructureItemAbstract.ts +0 -52
- package/src/classes/Design/DesignStructureRead.ts +0 -349
- package/src/classes/Design/DesignStructureStyles.ts +0 -45
- package/src/classes/Design/DesignTypes.ts +0 -94
- package/src/classes/Design/DesignTypesAi.ts +0 -135
- package/src/classes/Design/DesignTypesDescription.ts +0 -121
- package/src/classes/Design/DesignTypesMake.ts +0 -460
- package/src/classes/Design/DesignTypesMcp.ts +0 -90
- package/src/classes/Design/DesignTypesPrompts.ts +0 -332
- package/src/classes/Design/DesignTypescript.ts +0 -244
- package/src/classes/Design/DesignUi.ts +0 -143
- package/src/classes/Design/DesignWiki.ts +0 -52
- package/src/classes/Design/DesignWikiStorm.ts +0 -95
- package/src/classes/Design/DesignWikiStormItem.ts +0 -316
- package/src/classes/FigmaApi.ts +0 -190
- package/src/classes/Git/GitRead.ts +0 -261
- package/src/classes/Library/LibraryAiMcpItem.ts +0 -67
- package/src/classes/Library/LibraryAiPrompt.ts +0 -268
- package/src/classes/Library/LibraryAiPromptItem.ts +0 -331
- package/src/classes/Library/LibraryAiWiki.ts +0 -127
- package/src/classes/Library/LibraryAiWikiItem.ts +0 -79
- package/src/classes/Library/LibraryExport.ts +0 -167
- package/src/classes/Library/LibraryFlags.ts +0 -62
- package/src/classes/Library/LibraryItems.ts +0 -138
- package/src/classes/Library/LibraryList.ts +0 -189
- package/src/classes/Library/LibraryMedia.ts +0 -139
- package/src/classes/Library/LibraryPlugin.ts +0 -73
- package/src/classes/Library/LibraryTypes.ts +0 -130
- package/src/classes/Package/PackageFile.ts +0 -154
- package/src/classes/Package/PackageInit.ts +0 -54
- package/src/classes/Package/PackageItem.ts +0 -329
- package/src/classes/Properties/Properties.ts +0 -175
- package/src/classes/Properties/PropertiesCache.ts +0 -248
- package/src/classes/Properties/PropertiesConfig.ts +0 -213
- package/src/classes/Properties/PropertiesConvector.ts +0 -52
- package/src/classes/Properties/PropertiesFile.ts +0 -522
- package/src/classes/Properties/PropertiesImport.ts +0 -182
- package/src/classes/Properties/PropertiesItems.ts +0 -605
- package/src/classes/Properties/PropertiesKeys.ts +0 -121
- package/src/classes/Properties/PropertiesMain.ts +0 -138
- package/src/classes/Properties/PropertiesPalette.ts +0 -149
- package/src/classes/Properties/PropertiesPath.ts +0 -193
- package/src/classes/Properties/PropertiesScss.ts +0 -261
- package/src/classes/Properties/PropertiesSeparator.ts +0 -118
- package/src/classes/Properties/PropertiesSettings.ts +0 -104
- package/src/classes/Properties/PropertiesStandard.ts +0 -180
- package/src/classes/Properties/PropertiesTool.ts +0 -80
- package/src/classes/Properties/PropertiesTypes.ts +0 -147
- package/src/classes/Properties/PropertiesValues.ts +0 -75
- package/src/classes/Properties/PropertiesWrap.ts +0 -187
- package/src/classes/Properties/convector/convectorColor.ts +0 -27
- package/src/classes/Properties/convector/convectorFontFamilies.ts +0 -18
- package/src/classes/Properties/convector/convectorShadow.ts +0 -61
- package/src/classes/Properties/convector/convectorTypography.ts +0 -19
- package/src/classes/Properties/to/PropertiesToAbstract.ts +0 -51
- package/src/classes/Properties/to/PropertiesToAnimate.ts +0 -59
- package/src/classes/Properties/to/PropertiesToClass.ts +0 -49
- package/src/classes/Properties/to/PropertiesToClone.ts +0 -114
- package/src/classes/Properties/to/PropertiesToComponent.ts +0 -52
- package/src/classes/Properties/to/PropertiesToDrag.ts +0 -231
- package/src/classes/Properties/to/PropertiesToDuplicate.ts +0 -165
- package/src/classes/Properties/to/PropertiesToFull.ts +0 -36
- package/src/classes/Properties/to/PropertiesToLink.ts +0 -259
- package/src/classes/Properties/to/PropertiesToMedia.ts +0 -187
- package/src/classes/Properties/to/PropertiesToMulti.ts +0 -101
- package/src/classes/Properties/to/PropertiesToNone.ts +0 -46
- package/src/classes/Properties/to/PropertiesToPalette.ts +0 -241
- package/src/classes/Properties/to/PropertiesToProperty.ts +0 -31
- package/src/classes/Properties/to/PropertiesToRemove.ts +0 -33
- package/src/classes/Properties/to/PropertiesToReplace.ts +0 -77
- package/src/classes/Properties/to/PropertiesToRoot.ts +0 -40
- package/src/classes/Properties/to/PropertiesToSimilar.ts +0 -128
- package/src/classes/Properties/to/PropertiesToSort.ts +0 -146
- package/src/classes/Properties/to/PropertiesToState.ts +0 -65
- package/src/classes/Properties/to/PropertiesToStyle.ts +0 -52
- package/src/classes/Properties/to/PropertiesToSub.ts +0 -95
- package/src/classes/Properties/to/PropertiesToSubclass.ts +0 -76
- package/src/classes/Properties/to/PropertiesToVar.ts +0 -194
- package/src/classes/Properties/to/PropertiesToVariable.ts +0 -176
- package/src/classes/Styles/Styles.ts +0 -247
- package/src/classes/Styles/StylesClasses.ts +0 -86
- package/src/classes/Styles/StylesProperties.ts +0 -197
- package/src/classes/Styles/StylesRoot.ts +0 -103
- package/src/classes/Styles/StylesTool.ts +0 -112
- package/src/classes/Styles/to/StylesToAbstract.ts +0 -93
- package/src/classes/Styles/to/StylesToAnimate.ts +0 -19
- package/src/classes/Styles/to/StylesToClass.ts +0 -25
- package/src/classes/Styles/to/StylesToClassFull.ts +0 -19
- package/src/classes/Styles/to/StylesToContainer.ts +0 -24
- package/src/classes/Styles/to/StylesToMedia.ts +0 -19
- package/src/classes/Styles/to/StylesToProperty.ts +0 -123
- package/src/classes/Styles/to/StylesToRoot.ts +0 -14
- package/src/classes/Styles/to/StylesToSelector.ts +0 -71
- package/src/classes/Styles/to/StylesToVar.ts +0 -105
- package/src/classes/Styles/to/StylesToVirtual.ts +0 -33
- package/src/composables/useAi.ts +0 -38
- package/src/demo/ai.ts +0 -10
- package/src/functions/getComponentPaths.ts +0 -13
- package/src/functions/getConfigAi.ts +0 -14
- package/src/functions/getConstructorProperties.ts +0 -54
- package/src/functions/getDirname.ts +0 -17
- package/src/functions/getNameDirByPaths.ts +0 -16
- package/src/functions/getPackageJson.ts +0 -19
- package/src/functions/hasNativeDirname.ts +0 -8
- package/src/functions/run.ts +0 -47
- package/src/functions/toPathStandardSep.ts +0 -14
- package/src/library-ai.ts +0 -10
- package/src/library.ts +0 -73
- package/src/media/ai/ai-doc-types.ts +0 -21
- package/src/media/properties/css.ts +0 -634
- package/src/media/properties/cssSelector.ts +0 -74
- package/src/media/properties/cssVirtual.ts +0 -12
- package/src/media/properties/listSort.ts +0 -113
- package/src/media/properties/style.ts +0 -81
- package/src/media/templates/component/DesignComponent.mdx +0 -30
- package/src/media/templates/component/DesignComponent.stories.ts +0 -34
- package/src/media/templates/component/DesignComponent.vue +0 -54
- package/src/media/templates/component/DesignComponentAiWiki.vue +0 -25
- package/src/media/templates/component/index.ts +0 -13
- package/src/media/templates/component/props.ts +0 -27
- package/src/media/templates/component/styleToken.scss +0 -17
- package/src/media/templates/component/wiki.ts +0 -13
- package/src/media/templates/component/wikiData.ts +0 -28
- package/src/media/templates/componentDoc/ComponentDoc.vue +0 -26
- package/src/media/templates/componentDoc/index.ts +0 -12
- package/src/media/templates/componentDoc/materials/README.md +0 -8
- package/src/media/templates/componentDoc/materials/prompt.md +0 -38
- package/src/media/templates/componentDoc/subcomponents/_.gitignore.txt +0 -0
- package/src/media/templates/componentDoc/types.ts +0 -15
- package/src/media/templates/componentDoc/wiki/ComponentDoc.mdx +0 -13
- package/src/media/templates/componentDoc/wiki/ComponentDoc.stories.ts +0 -24
- package/src/media/templates/componentDoc/wiki/prompt.md +0 -41
- package/src/media/templates/constructors/Constructors.ts +0 -33
- package/src/media/templates/constructors/ConstructorsDesign.tsx +0 -129
- package/src/media/templates/constructors/basicTypes.ts +0 -0
- package/src/media/templates/constructors/index.ts +0 -5
- package/src/media/templates/constructors/props.ts +0 -28
- package/src/media/templates/constructors/style.scss +0 -5
- package/src/media/templates/constructors/types.ts +0 -47
- package/src/media/templates/packages/figma/README.md +0 -1
- package/src/media/templates/packages/figma/_.gitignore.txt +0 -29
- package/src/media/templates/packages/figma/ai.sample.config.ts +0 -2
- package/src/media/templates/packages/figma/design.config.json +0 -3
- package/src/media/templates/packages/figma/index.html +0 -12
- package/src/media/templates/packages/figma/manifest.json +0 -25
- package/src/media/templates/packages/figma/package.json +0 -37
- package/src/media/templates/packages/figma/src/App.vue +0 -9
- package/src/media/templates/packages/figma/src/classes/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/code.ts +0 -16
- package/src/media/templates/packages/figma/src/components/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/composables/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/config.ts +0 -0
- package/src/media/templates/packages/figma/src/functions/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/library.ts +0 -0
- package/src/media/templates/packages/figma/src/main.ts +0 -4
- package/src/media/templates/packages/figma/src/media/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/storybook/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/types/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/vite-env.d.ts +0 -1
- package/src/media/templates/packages/figma/tsconfig.app.json +0 -12
- package/src/media/templates/packages/figma/tsconfig.json +0 -7
- package/src/media/templates/packages/figma/tsconfig.node.json +0 -8
- package/src/media/templates/packages/figma/vite.config.ts +0 -7
- package/src/media/templates/packages/library/README.md +0 -1
- package/src/media/templates/packages/library/_.gitignore.txt +0 -27
- package/src/media/templates/packages/library/ai-description.md +0 -15
- package/src/media/templates/packages/library/design.config.json +0 -3
- package/src/media/templates/packages/library/index.html +0 -12
- package/src/media/templates/packages/library/materials/README.md +0 -8
- package/src/media/templates/packages/library/materials/prompt.md +0 -45
- package/src/media/templates/packages/library/package.json +0 -46
- package/src/media/templates/packages/library/src/App.vue +0 -8
- package/src/media/templates/packages/library/src/classes/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/components/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/composables/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/functions/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/library.ts +0 -0
- package/src/media/templates/packages/library/src/main.ts +0 -6
- package/src/media/templates/packages/library/src/style.scss +0 -0
- package/src/media/templates/packages/library/src/types/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/vite-env.d.ts +0 -1
- package/src/media/templates/packages/library/tsconfig.app.json +0 -11
- package/src/media/templates/packages/library/tsconfig.json +0 -7
- package/src/media/templates/packages/library/tsconfig.node.json +0 -7
- package/src/media/templates/packages/library/vite.config.ts +0 -14
- package/src/media/templates/packages/nitro/README.md +0 -1
- package/src/media/templates/packages/nitro/_.gitignore.txt +0 -28
- package/src/media/templates/packages/nitro/index.html +0 -2
- package/src/media/templates/packages/nitro/package.json +0 -25
- package/src/media/templates/packages/nitro/server/plugins/ui-plugin.ts +0 -7
- package/src/media/templates/packages/nitro/server/routes/api/hello.ts +0 -13
- package/src/media/templates/packages/nitro/src/App.vue +0 -10
- package/src/media/templates/packages/nitro/src/assets/_.gitignore.txt +0 -0
- package/src/media/templates/packages/nitro/src/components/_.gitignore.txt +0 -0
- package/src/media/templates/packages/nitro/src/composables/_.gitignore.txt +0 -0
- package/src/media/templates/packages/nitro/src/entry-client.ts +0 -13
- package/src/media/templates/packages/nitro/src/entry-server.ts +0 -29
- package/src/media/templates/packages/nitro/src/main.ts +0 -14
- package/src/media/templates/packages/nitro/src/pages/HomePage.vue +0 -8
- package/src/media/templates/packages/nitro/src/router.ts +0 -11
- package/src/media/templates/packages/nitro/src/style.scss +0 -0
- package/src/media/templates/packages/nitro/src/templates/main.html +0 -21
- package/src/media/templates/packages/nitro/src/vite-env.d.ts +0 -11
- package/src/media/templates/packages/nitro/tsconfig.app.json +0 -14
- package/src/media/templates/packages/nitro/tsconfig.json +0 -7
- package/src/media/templates/packages/nitro/tsconfig.node.json +0 -12
- package/src/media/templates/packages/nitro/vite.config.ts +0 -17
- package/src/media/templates/packages/project/README.md +0 -1
- package/src/media/templates/packages/project/_.gitignore.txt +0 -28
- package/src/media/templates/packages/project/design.config.json +0 -3
- package/src/media/templates/packages/project/index.html +0 -12
- package/src/media/templates/packages/project/materials/README.md +0 -8
- package/src/media/templates/packages/project/materials/prompt.md +0 -41
- package/src/media/templates/packages/project/package.json +0 -13
- package/src/media/templates/packages/project/public/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/App.vue +0 -12
- package/src/media/templates/packages/project/src/assets/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/components/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/composables/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/main.ts +0 -6
- package/src/media/templates/packages/project/src/style.scss +0 -0
- package/src/media/templates/packages/project/src/vite-env.d.ts +0 -1
- package/src/media/templates/packages/project/tsconfig.app.json +0 -11
- package/src/media/templates/packages/project/tsconfig.json +0 -7
- package/src/media/templates/packages/project/tsconfig.node.json +0 -7
- package/src/media/templates/packages/project/vite.config.ts +0 -7
- package/src/media/templates/prompts/aiCodeGlobalPrompt.en.md +0 -22
- package/src/media/templates/prompts/aiCodeGlobalPrompt.ru.md +0 -21
- package/src/media/templates/prompts/aiCodeVuePrompt.en.md +0 -17
- package/src/media/templates/prompts/aiCodeVuePrompt.ru.md +0 -17
- package/src/media/templates/prompts/aiDocClassPrompt.en.txt +0 -63
- package/src/media/templates/prompts/aiDocClassPrompt.ru.txt +0 -63
- package/src/media/templates/prompts/aiDocComposablePrompt.en.txt +0 -67
- package/src/media/templates/prompts/aiDocComposablePrompt.ru.txt +0 -67
- package/src/media/templates/prompts/aiDocFunctionPrompt.en.txt +0 -57
- package/src/media/templates/prompts/aiDocFunctionPrompt.ru.txt +0 -57
- package/src/media/templates/prompts/componentPrompt.en.txt +0 -182
- package/src/media/templates/prompts/componentPrompt.ru.txt +0 -182
- package/src/media/templates/prompts/demoClassEn.mdx +0 -111
- package/src/media/templates/prompts/demoClassRu.mdx +0 -111
- package/src/media/templates/prompts/demoComponentEn.mdx +0 -282
- package/src/media/templates/prompts/demoComponentRu.mdx +0 -282
- package/src/media/templates/prompts/demoComposableEn.mdx +0 -103
- package/src/media/templates/prompts/demoComposableRu.mdx +0 -103
- package/src/media/templates/prompts/demoDocEn.mdx +0 -30
- package/src/media/templates/prompts/demoDocRu.mdx +0 -30
- package/src/media/templates/viteComponentTemplateConfig.ts +0 -14
- package/src/types/aiTypes.ts +0 -19
- package/src/types/configTypes.ts +0 -69
- package/src/types/designTypes.ts +0 -167
- package/src/types/figmaApiTypes.ts +0 -337
- package/src/types/gitTypes.ts +0 -59
- package/src/types/libraryTypes.ts +0 -49
- package/src/types/propertyTypes.ts +0 -586
- package/src/types/screenshotTypes.ts +0 -55
- package/src/types/webTypes.ts +0 -134
- package/src/vite-env.d.ts +0 -1
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { dirname } from 'node:path'
|
|
2
|
-
import { fileURLToPath } from 'node:url'
|
|
3
|
-
import { hasNativeDirname } from '../../functions/hasNativeDirname'
|
|
4
|
-
import { AiDocItemAbstract } from './AiDocItemAbstract'
|
|
5
|
-
|
|
6
|
-
const dirnamePath = hasNativeDirname()
|
|
7
|
-
? __dirname
|
|
8
|
-
: dirname(fileURLToPath(import.meta.url))
|
|
9
|
-
|
|
10
|
-
/** Sample prompt template path / Путь к шаблону промпта */
|
|
11
|
-
const FILE_PROMPT_SAMPLE = [dirnamePath, '..', '..', 'media', 'templates', 'prompts']
|
|
12
|
-
|
|
13
|
-
/** Sample prompt template path for functions / Путь к шаблону промпта для функций */
|
|
14
|
-
const FILE_PROMPT_SAMPLE_ITEM = [...FILE_PROMPT_SAMPLE, 'aiDocFunctionPrompt.en.txt']
|
|
15
|
-
|
|
16
|
-
/** Sample demo file path for functions / Путь к демо файлу для функций */
|
|
17
|
-
const FILE_DEMO_SAMPLE_ITEM = [...FILE_PROMPT_SAMPLE, 'demoDocEn.mdx']
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Class for generating documentation for Functions.
|
|
21
|
-
*
|
|
22
|
-
* Класс для генерации документации для Функций.
|
|
23
|
-
*/
|
|
24
|
-
export class AiDocItem extends AiDocItemAbstract {
|
|
25
|
-
protected pathDemo: string[] = FILE_DEMO_SAMPLE_ITEM
|
|
26
|
-
protected pathPrompt: string[] = FILE_PROMPT_SAMPLE_ITEM
|
|
27
|
-
}
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
import { Datetime, removeCommonPrefix } from '@dxtmisha/functional-basic'
|
|
2
|
-
import { useAi } from '../../composables/useAi'
|
|
3
|
-
|
|
4
|
-
import { PropertiesFile } from '../Properties/PropertiesFile'
|
|
5
|
-
import { PropertiesConfig } from '../Properties/PropertiesConfig'
|
|
6
|
-
import { GitRead } from '../Git/GitRead'
|
|
7
|
-
import { BuildItem } from '../BuildItem'
|
|
8
|
-
import { ComponentWikiFile } from '../Component/ComponentWikiFile'
|
|
9
|
-
|
|
10
|
-
import type { AiAbstract } from './AiAbstract'
|
|
11
|
-
import type { GitFileItem } from '../../types/gitTypes'
|
|
12
|
-
|
|
13
|
-
import { UI_DIR_IN, UI_FILE_PACKAGE } from '../../config'
|
|
14
|
-
|
|
15
|
-
export abstract class AiDocItemAbstract {
|
|
16
|
-
/** Demo file path / Путь к файлу демо */
|
|
17
|
-
protected abstract pathDemo: string[]
|
|
18
|
-
/** Prompt template path / Путь к шаблону промпта */
|
|
19
|
-
protected abstract pathPrompt: string[]
|
|
20
|
-
|
|
21
|
-
/** Build item / Элемент сборки */
|
|
22
|
-
protected readonly build: BuildItem
|
|
23
|
-
|
|
24
|
-
/** Markdown file / Файл в формате Markdown */
|
|
25
|
-
protected readonly mdFile: ComponentWikiFile
|
|
26
|
-
|
|
27
|
-
/** Code file / Файл с кодом */
|
|
28
|
-
protected readonly code: ComponentWikiFile
|
|
29
|
-
|
|
30
|
-
/** Property file data / Данные из файла свойств */
|
|
31
|
-
protected readonly projectName: string
|
|
32
|
-
|
|
33
|
-
/** AI instance / Экземпляр ИИ */
|
|
34
|
-
protected readonly ai?: AiAbstract
|
|
35
|
-
|
|
36
|
-
/** Description from AI / Описание от ИИ */
|
|
37
|
-
protected description?: string
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Constructor
|
|
41
|
-
* @param path source file path / путь к исходному файлу
|
|
42
|
-
* @param item git file item / элемент файла git
|
|
43
|
-
*/
|
|
44
|
-
constructor(
|
|
45
|
-
protected readonly path: string,
|
|
46
|
-
protected readonly item: GitFileItem
|
|
47
|
-
) {
|
|
48
|
-
this.build = new BuildItem(this.item.path)
|
|
49
|
-
this.mdFile = new ComponentWikiFile(this.getPathWiki(), true, false)
|
|
50
|
-
this.code = new ComponentWikiFile(this.item.pathByOS, false, false)
|
|
51
|
-
this.projectName = PropertiesFile.readFile<Record<string, any>>(UI_FILE_PACKAGE)?.name ?? 'Library'
|
|
52
|
-
this.ai = useAi()
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Generates documentation using AI.
|
|
57
|
-
*
|
|
58
|
-
* Генерирует документацию с использованием ИИ.
|
|
59
|
-
*/
|
|
60
|
-
async make() {
|
|
61
|
-
const date = this.mdFile.getDate()
|
|
62
|
-
|
|
63
|
-
if (
|
|
64
|
-
this.ai
|
|
65
|
-
&& this.getItemDate() > date.getDate()
|
|
66
|
-
) {
|
|
67
|
-
console.log(
|
|
68
|
-
`${this.projectName}/File:`,
|
|
69
|
-
this.item.path,
|
|
70
|
-
PropertiesConfig.getWikiLanguage()
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
const status = this.isBuildDisabled() || await this.build.make()
|
|
74
|
-
|
|
75
|
-
if (status) {
|
|
76
|
-
this.makeAi()
|
|
77
|
-
|
|
78
|
-
const generate = await this.ai.generate(
|
|
79
|
-
this.readPrompt()
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
if (generate) {
|
|
83
|
-
const read = generate.split('#########')
|
|
84
|
-
|
|
85
|
-
if (read?.[0]) {
|
|
86
|
-
this.description = read[0].trim()
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
read?.[1]
|
|
91
|
-
&& !read[1].match('--FULL--')
|
|
92
|
-
) {
|
|
93
|
-
this.code.write(read[1])
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (read?.[2]) {
|
|
97
|
-
this.mdFile.write(this.initName(read[2]))
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
this.build.removeDir()
|
|
103
|
-
} else if (!this.ai) {
|
|
104
|
-
console.error('AI is not configured.')
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Checks if the item is marked as not to be built.
|
|
110
|
-
*
|
|
111
|
-
* Проверяет, помечен ли элемент как не подлежащий сборке.
|
|
112
|
-
*/
|
|
113
|
-
isBuildDisabled(): boolean {
|
|
114
|
-
return Boolean(
|
|
115
|
-
this.code.read().match('// wiki:build-none')
|
|
116
|
-
)
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Returns the path to the Wiki file.
|
|
121
|
-
*
|
|
122
|
-
* Возвращает путь к Wiki файлу.
|
|
123
|
-
*/
|
|
124
|
-
protected getPathWiki(): string[] {
|
|
125
|
-
const fileName = removeCommonPrefix(this.item.path, this.path)
|
|
126
|
-
.replace(/\.ts$/, '')
|
|
127
|
-
|
|
128
|
-
return [
|
|
129
|
-
...GitRead.splitPath(this.path),
|
|
130
|
-
...GitRead.splitPath(`${fileName}.mdx`)
|
|
131
|
-
]
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Returns the file modification date.
|
|
136
|
-
*
|
|
137
|
-
* Возвращает дату изменения файла.
|
|
138
|
-
*/
|
|
139
|
-
protected getItemDate(): Date {
|
|
140
|
-
return new Datetime(this.item.date).getDate()
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Returns the title for the documentation.
|
|
145
|
-
*
|
|
146
|
-
* Возвращает заголовок для документации.
|
|
147
|
-
*/
|
|
148
|
-
protected getTitle() {
|
|
149
|
-
let title = this.projectName
|
|
150
|
-
+ '/'
|
|
151
|
-
+ this.item.path
|
|
152
|
-
.replace(UI_DIR_IN + '/', '')
|
|
153
|
-
.replace(/\.ts$/, '')
|
|
154
|
-
|
|
155
|
-
if (this.description) {
|
|
156
|
-
title += ` - ${this.description}`
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return title
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Reads the demo file content.
|
|
164
|
-
*
|
|
165
|
-
* Читает содержимое демо-файла.
|
|
166
|
-
*/
|
|
167
|
-
protected readDemo(): string {
|
|
168
|
-
return new ComponentWikiFile(this.pathDemo).read()
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Reads the prompt template.
|
|
173
|
-
*
|
|
174
|
-
* Читает шаблон промпта.
|
|
175
|
-
*/
|
|
176
|
-
protected readPrompt(): string {
|
|
177
|
-
return new ComponentWikiFile(this.pathPrompt)
|
|
178
|
-
.read()
|
|
179
|
-
.replace(/\[wikiLanguage]/g, PropertiesConfig.getWikiLanguage())
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Prepares context for AI.
|
|
184
|
-
*
|
|
185
|
-
* Подготавливает контекст для ИИ.
|
|
186
|
-
*/
|
|
187
|
-
protected makeAi(): void {
|
|
188
|
-
if (this.ai) {
|
|
189
|
-
this.ai.addContent(`Code: ${this.build.getCode()}`)
|
|
190
|
-
this.ai.addContent(`Original code: ${this.code.read()}`)
|
|
191
|
-
this.ai.addContent(`Demo (only for template analysis, all data is fake): ${this.readDemo()}`)
|
|
192
|
-
this.ai.addContent(`Original MDX: ${this.mdFile.read()}`)
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Initializes the title in the content.
|
|
198
|
-
*
|
|
199
|
-
* Инициализирует заголовок в контенте.
|
|
200
|
-
* @param content content / контент
|
|
201
|
-
*/
|
|
202
|
-
protected initName(content: string): string {
|
|
203
|
-
if (content.match('[title]')) {
|
|
204
|
-
return content.replace('[title]', this.getTitle())
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
return content
|
|
208
|
-
}
|
|
209
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { dirname } from 'node:path'
|
|
2
|
-
import { fileURLToPath } from 'node:url'
|
|
3
|
-
import { hasNativeDirname } from '../../functions/hasNativeDirname'
|
|
4
|
-
import { AiDocItemAbstract } from './AiDocItemAbstract'
|
|
5
|
-
|
|
6
|
-
const dirnamePath = hasNativeDirname()
|
|
7
|
-
? __dirname
|
|
8
|
-
: dirname(fileURLToPath(import.meta.url))
|
|
9
|
-
|
|
10
|
-
/** Sample prompt template path / Путь к шаблону промпта */
|
|
11
|
-
const FILE_PROMPT_SAMPLE = [dirnamePath, '..', '..', 'media', 'templates', 'prompts']
|
|
12
|
-
|
|
13
|
-
/** Sample prompt template for classes / Шаблон промпта для классов */
|
|
14
|
-
const FILE_PROMPT_SAMPLE_CLASS = [...FILE_PROMPT_SAMPLE, 'aiDocClassPrompt.en.txt']
|
|
15
|
-
|
|
16
|
-
/** Sample demo file for classes / Пример демонстрационного файла для классов */
|
|
17
|
-
const FILE_DEMO_SAMPLE_CLASS = [...FILE_PROMPT_SAMPLE, 'demoClassEn.mdx']
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* AI Documentation Item for Classes.
|
|
21
|
-
*
|
|
22
|
-
* Элемент документации AI для классов.
|
|
23
|
-
*/
|
|
24
|
-
export class AiDocItemClasses extends AiDocItemAbstract {
|
|
25
|
-
protected pathDemo: string[] = FILE_DEMO_SAMPLE_CLASS
|
|
26
|
-
protected pathPrompt: string[] = FILE_PROMPT_SAMPLE_CLASS
|
|
27
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { dirname } from 'node:path'
|
|
2
|
-
import { fileURLToPath } from 'node:url'
|
|
3
|
-
import { hasNativeDirname } from '../../functions/hasNativeDirname'
|
|
4
|
-
import { AiDocItemAbstract } from './AiDocItemAbstract'
|
|
5
|
-
|
|
6
|
-
const dirnamePath = hasNativeDirname()
|
|
7
|
-
? __dirname
|
|
8
|
-
: dirname(fileURLToPath(import.meta.url))
|
|
9
|
-
|
|
10
|
-
/** Sample prompt template path / Путь к шаблону промпта */
|
|
11
|
-
const FILE_PROMPT_SAMPLE = [dirnamePath, '..', '..', 'media', 'templates', 'prompts']
|
|
12
|
-
|
|
13
|
-
const FILE_PROMPT_SAMPLE_COMPOSABLE = [...FILE_PROMPT_SAMPLE, 'aiDocComposablePrompt.en.txt']
|
|
14
|
-
|
|
15
|
-
const FILE_DEMO_SAMPLE_COMPOSABLE = [...FILE_PROMPT_SAMPLE, 'demoComposableEn.mdx']
|
|
16
|
-
|
|
17
|
-
export class AiDocItemComposables extends AiDocItemAbstract {
|
|
18
|
-
protected pathDemo: string[] = FILE_DEMO_SAMPLE_COMPOSABLE
|
|
19
|
-
protected pathPrompt: string[] = FILE_PROMPT_SAMPLE_COMPOSABLE
|
|
20
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { PropertiesConfig } from '../Properties/PropertiesConfig'
|
|
2
|
-
|
|
3
|
-
import type { AiDocTypeItem } from '../../types/aiTypes'
|
|
4
|
-
import type { GitFileItem } from '../../types/gitTypes'
|
|
5
|
-
|
|
6
|
-
import { aiDocTypes } from '../../media/ai/ai-doc-types'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Class for managing AI documentation types.
|
|
10
|
-
*
|
|
11
|
-
* Класс для управления типами документации ИИ.
|
|
12
|
-
*/
|
|
13
|
-
export class AiDocType {
|
|
14
|
-
/** List of available documentation types / Список доступных типов документации */
|
|
15
|
-
protected static types = [...aiDocTypes]
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Adds a new documentation type to the list.
|
|
19
|
-
*
|
|
20
|
-
* Добавляет новый тип документации в список.
|
|
21
|
-
* @param type documentation type item / элемент типа документации
|
|
22
|
-
*/
|
|
23
|
-
static add(type: AiDocTypeItem) {
|
|
24
|
-
this.types.unshift(type)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Generates documentation for a file item.
|
|
29
|
-
*
|
|
30
|
-
* Генерирует документацию для элемента файла.
|
|
31
|
-
* @param item git file item / элемент файла git
|
|
32
|
-
*/
|
|
33
|
-
static async make(item: GitFileItem) {
|
|
34
|
-
const path = PropertiesConfig.getAiDocStorybookPath()
|
|
35
|
-
|
|
36
|
-
for (const docType of aiDocTypes) {
|
|
37
|
-
if (docType.check(item)) {
|
|
38
|
-
const docItem = new docType.item(path, item)
|
|
39
|
-
await docItem.make()
|
|
40
|
-
|
|
41
|
-
break
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { getConfigAi } from '../../functions/getConfigAi'
|
|
2
|
-
import { AiGoogleLite } from './AiGoogleLite'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Google AI (Gemini) implementation of AiAbstract.
|
|
6
|
-
* Initializes GoogleGenAI client and performs text generation requests.
|
|
7
|
-
*
|
|
8
|
-
* Реализация Google AI (Gemini) поверх AiAbstract.
|
|
9
|
-
* Инициализирует клиент GoogleGenAI и выполняет запросы генерации текста.
|
|
10
|
-
*
|
|
11
|
-
* Responsibilities / Ответственности:
|
|
12
|
-
* - Provide API key / Предоставить API ключ
|
|
13
|
-
* - Initialize low-level client / Инициализировать низкоуровневый клиент
|
|
14
|
-
* - Call generateContent and extract plain text / Вызвать generateContent и извлечь текст
|
|
15
|
-
*
|
|
16
|
-
* Notes / Примечания:
|
|
17
|
-
* - Model must be set via setModel() before generate() / Модель нужно задать через setModel()
|
|
18
|
-
* - Returns empty string if response is missing / Возвращает пустую строку при отсутствии результата
|
|
19
|
-
*/
|
|
20
|
-
export class AiGoogle extends AiGoogleLite {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(
|
|
23
|
-
...getConfigAi()
|
|
24
|
-
)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { getConfigAi } from '../../functions/getConfigAi'
|
|
2
|
-
import { AiGoogleCliLite } from './AiGoogleCliLite'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Google AI (Gemini) implementation via CLI.
|
|
6
|
-
* Extends AiGoogleCliLite and provides configuration from the project environment.
|
|
7
|
-
*
|
|
8
|
-
* Реализация Google AI (Gemini) через CLI.
|
|
9
|
-
* Расширяет AiGoogleCliLite и предоставляет конфигурацию из окружения проекта.
|
|
10
|
-
*
|
|
11
|
-
* Responsibilities / Ответственности:
|
|
12
|
-
* - Provide API key and model from config / Предоставить API ключ и модель из конфигурации
|
|
13
|
-
* - Initialize CLI wrapper / Инициализировать обертку CLI
|
|
14
|
-
*
|
|
15
|
-
* Notes / Примечания:
|
|
16
|
-
* - Uses getConfigAi() to retrieve credentials / Использует getConfigAi() для получения учетных данных
|
|
17
|
-
*/
|
|
18
|
-
export class AiGoogleCli extends AiGoogleCliLite {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(
|
|
21
|
-
...getConfigAi()
|
|
22
|
-
)
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { forEach } from '@dxtmisha/functional-basic'
|
|
2
|
-
import { exec } from 'node:child_process'
|
|
3
|
-
|
|
4
|
-
import { AiAbstract } from './AiAbstract'
|
|
5
|
-
import { ApiTmp } from './ApiTmp'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Google AI (Gemini) implementation via CLI.
|
|
9
|
-
* Uses system shell to execute Gemini CLI commands.
|
|
10
|
-
*
|
|
11
|
-
* Реализация Google AI (Gemini) через CLI.
|
|
12
|
-
* Использует системную оболочку для выполнения команд Gemini CLI.
|
|
13
|
-
*
|
|
14
|
-
* Responsibilities / Ответственности:
|
|
15
|
-
* - Construct CLI command / Сформировать CLI команду
|
|
16
|
-
* - Execute command via shell / Выполнить команду через оболочку
|
|
17
|
-
* - Return stdout as result / Вернуть stdout как результат
|
|
18
|
-
*
|
|
19
|
-
* Notes / Примечания:
|
|
20
|
-
* - Requires 'gemini' CLI tool installed / Требует установленной утилиты 'gemini'
|
|
21
|
-
* - API key is passed via environment variable or config / API ключ передается через переменную окружения или конфиг
|
|
22
|
-
*/
|
|
23
|
-
export class AiGoogleCliLite extends AiAbstract<{}> {
|
|
24
|
-
protected readonly tmp = new ApiTmp()
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Initializes the "client".
|
|
28
|
-
* For CLI, we just mark it as initialized.
|
|
29
|
-
*
|
|
30
|
-
* Инициализирует "клиента".
|
|
31
|
-
* Для CLI мы просто помечаем его как инициализированный.
|
|
32
|
-
*/
|
|
33
|
-
protected init(): void {
|
|
34
|
-
this.ai = {}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Implementation hook: convert accumulated images to model-specific format.
|
|
39
|
-
* CLI implementation currently ignores images.
|
|
40
|
-
*
|
|
41
|
-
* Хук реализации: преобразовать накопленные изображения в формат, специфичный для модели.
|
|
42
|
-
* Реализация CLI в настоящее время игнорирует изображения.
|
|
43
|
-
*/
|
|
44
|
-
protected toImages(): any {
|
|
45
|
-
return []
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Implementation hook: convert accumulated contents to model-specific format.
|
|
50
|
-
* Returns array of strings.
|
|
51
|
-
*
|
|
52
|
-
* Хук реализации: преобразовать накопленное содержимое в формат, специфичный для модели.
|
|
53
|
-
* Возвращает массив строк.
|
|
54
|
-
*/
|
|
55
|
-
protected toContents(): any {
|
|
56
|
-
return forEach(
|
|
57
|
-
this.contents,
|
|
58
|
-
content => this.tmp.createFile(content)
|
|
59
|
-
)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Performs content generation request via CLI and returns textual result.
|
|
64
|
-
*
|
|
65
|
-
* Выполняет запрос генерации контента через CLI и возвращает текстовый результат.
|
|
66
|
-
* @param model Model identifier / Идентификатор модели
|
|
67
|
-
* @param contents Composed contents for generation / Собранный контент для генерации
|
|
68
|
-
*/
|
|
69
|
-
protected async response(
|
|
70
|
-
model: string,
|
|
71
|
-
contents: string
|
|
72
|
-
): Promise<string> {
|
|
73
|
-
return new Promise((resolve) => {
|
|
74
|
-
const fullPrompt = [
|
|
75
|
-
...this.toContents(),
|
|
76
|
-
this.tmp.createFile(contents)
|
|
77
|
-
].join('\n\n##################\n\n')
|
|
78
|
-
|
|
79
|
-
const escapedPrompt = fullPrompt.replace(/"/g, '\\"')
|
|
80
|
-
const modelFlag = model ? ` --model "${model}"` : ''
|
|
81
|
-
const command = `gemini "${escapedPrompt} -- Output strictly the code/answer. No preamble, no chatter, no reasoning" ${modelFlag} --yolo`
|
|
82
|
-
|
|
83
|
-
try {
|
|
84
|
-
exec(
|
|
85
|
-
command,
|
|
86
|
-
{
|
|
87
|
-
encoding: 'utf8',
|
|
88
|
-
env: {
|
|
89
|
-
...process.env
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
(error, stdout, stderr) => {
|
|
93
|
-
if (error) {
|
|
94
|
-
console.error('Error executing Gemini CLI:', stderr || error.message)
|
|
95
|
-
resolve('')
|
|
96
|
-
} else {
|
|
97
|
-
resolve(stdout.trim())
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
this.tmp.removeFile()
|
|
101
|
-
}
|
|
102
|
-
)
|
|
103
|
-
} catch (_) {
|
|
104
|
-
this.tmp.removeFile()
|
|
105
|
-
}
|
|
106
|
-
})
|
|
107
|
-
}
|
|
108
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { forEach } from '@dxtmisha/functional-basic'
|
|
2
|
-
import { AiAbstract } from './AiAbstract'
|
|
3
|
-
import { GoogleGenAI } from '@google/genai'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Google AI (Gemini) implementation of AiAbstract.
|
|
7
|
-
* Initializes GoogleGenAI client and performs text generation requests.
|
|
8
|
-
*
|
|
9
|
-
* Реализация Google AI (Gemini) поверх AiAbstract.
|
|
10
|
-
* Инициализирует клиент GoogleGenAI и выполняет запросы генерации текста.
|
|
11
|
-
*
|
|
12
|
-
* Responsibilities / Ответственности:
|
|
13
|
-
* - Provide API key / Предоставить API ключ
|
|
14
|
-
* - Initialize low-level client / Инициализировать низкоуровневый клиент
|
|
15
|
-
* - Call generateContent and extract plain text / Вызвать generateContent и извлечь текст
|
|
16
|
-
*
|
|
17
|
-
* Notes / Примечания:
|
|
18
|
-
* - Model must be set via setModel() before generate() / Модель нужно задать через setModel()
|
|
19
|
-
* - Returns empty string if response is missing / Возвращает пустую строку при отсутствии результата
|
|
20
|
-
*/
|
|
21
|
-
export class AiGoogleLite extends AiAbstract<GoogleGenAI> {
|
|
22
|
-
/**
|
|
23
|
-
* Initializes GoogleGenAI client instance.
|
|
24
|
-
*
|
|
25
|
-
* Инициализирует экземпляр клиента GoogleGenAI.
|
|
26
|
-
*/
|
|
27
|
-
protected init(): void {
|
|
28
|
-
this.ai = new GoogleGenAI({ apiKey: this.key })
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Implementation hook: convert accumulated images to model-specific format.
|
|
33
|
-
*
|
|
34
|
-
* Хук реализации: преобразовать накопленные изображения в формат, специфичный для модели.
|
|
35
|
-
*/
|
|
36
|
-
protected toImages(): any {
|
|
37
|
-
return forEach(this.images, image => ({
|
|
38
|
-
inlineData: {
|
|
39
|
-
mimeType: image.mime,
|
|
40
|
-
data: image.base64
|
|
41
|
-
}
|
|
42
|
-
}))
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
protected toContents(): any {
|
|
46
|
-
return forEach(this.contents, content => ({
|
|
47
|
-
text: content
|
|
48
|
-
}))
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Performs content generation request and returns textual result.
|
|
53
|
-
*
|
|
54
|
-
* Выполняет запрос генерации контента и возвращает текстовый результат.
|
|
55
|
-
* @param model Model identifier / Идентификатор модели
|
|
56
|
-
* @param contents Composed contents for generation / Собранный контент для генерации
|
|
57
|
-
*/
|
|
58
|
-
protected async response(
|
|
59
|
-
model: string,
|
|
60
|
-
contents: string
|
|
61
|
-
): Promise<string> {
|
|
62
|
-
const response = await this.ai?.models.generateContent({
|
|
63
|
-
model,
|
|
64
|
-
contents: [
|
|
65
|
-
...this.toImages(),
|
|
66
|
-
{
|
|
67
|
-
parts: [
|
|
68
|
-
...this.toContents(),
|
|
69
|
-
{ text: contents }
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
|
-
config: this.config
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
return response?.text ?? ''
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { AiOpenAiLite } from './AiOpenAiLite'
|
|
2
|
-
import { getConfigAi } from '../../functions/getConfigAi'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* OpenAI implementation of AiAbstract.
|
|
6
|
-
* Initializes OpenAI client and performs text generation requests.
|
|
7
|
-
*
|
|
8
|
-
* Реализация OpenAI поверх AiAbstract.
|
|
9
|
-
* Инициализирует клиент OpenAI и выполняет запросы генерации текста.
|
|
10
|
-
*
|
|
11
|
-
* Responsibilities / Ответственности:
|
|
12
|
-
* - Provide API key / Предоставить API ключ
|
|
13
|
-
* - Initialize low-level client / Инициализировать низкоуровневый клиент
|
|
14
|
-
* - Call chat.completions.create and extract plain text / Вызвать chat.completions.create и извлечь текст
|
|
15
|
-
*
|
|
16
|
-
* Notes / Примечания:
|
|
17
|
-
* - Model must be set via setModel() before generate() / Модель нужно задать через setModel()
|
|
18
|
-
* - Returns empty string if response is missing / Возвращает пустую строку при отсутствии результата
|
|
19
|
-
*/
|
|
20
|
-
export class AiOpenAi extends AiOpenAiLite {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(
|
|
23
|
-
...getConfigAi()
|
|
24
|
-
)
|
|
25
|
-
}
|
|
26
|
-
}
|