@dxtmisha/scripts 0.11.8 → 1.0.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 +57 -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 +12 -2
- 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 +22 -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-x3CInynJ.js +232 -0
- package/dist/PropertiesConfig-ChizwW5y.js +250 -0
- package/{src/config.ts → dist/config.d.ts} +179 -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 +4677 -0
- package/dist/library.js +1436 -0
- package/dist/propertyTypes-DflziKuR.js +236 -0
- package/package.json +69 -20
- 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,242 +0,0 @@
|
|
|
1
|
-
import type { AiImageItem, AiImageList } from '../../types/aiTypes'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Abstract AI base class providing common mechanics for AI integrations.
|
|
5
|
-
* Handles prompt accumulation, model selection and unified response workflow.
|
|
6
|
-
*
|
|
7
|
-
* Абстрактный базовый класс AI, обеспечивающий общую механику интеграций:
|
|
8
|
-
* накопление prompt, выбор модели и унифицированный цикл получения ответа.
|
|
9
|
-
*
|
|
10
|
-
* Responsibilities / Ответственности:
|
|
11
|
-
* - Accumulate and compose prompt context / Накопление и компоновка контекста
|
|
12
|
-
* - Select active model / Выбор активной модели
|
|
13
|
-
* - Normalize generation call flow / Нормализация вызова генерации
|
|
14
|
-
*
|
|
15
|
-
* Extension points / Точки расширения:
|
|
16
|
-
* - init(): client / auth / transport setup
|
|
17
|
-
* - response(): concrete model invocation
|
|
18
|
-
*
|
|
19
|
-
* Расширение через методы:
|
|
20
|
-
* - init(): инициализация клиента / авторизация / транспорт
|
|
21
|
-
* - response(): конкретный вызов модели
|
|
22
|
-
*/
|
|
23
|
-
export abstract class AiAbstract<AI = any> {
|
|
24
|
-
/** AI client instance / Экземпляр AI-клиента */
|
|
25
|
-
protected ai?: AI
|
|
26
|
-
|
|
27
|
-
/** Prompt prefix / Префикс prompt */
|
|
28
|
-
protected prompt: string = ''
|
|
29
|
-
|
|
30
|
-
/** Accumulated image list / Накопленный список изображений */
|
|
31
|
-
protected images: AiImageList = []
|
|
32
|
-
|
|
33
|
-
/** Accumulated contents / Накопленные содержимое */
|
|
34
|
-
protected contents: string[] = []
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Constructor initializes implementation specific resources.
|
|
38
|
-
*
|
|
39
|
-
* Конструктор инициализирует ресурсы конкретной реализации.
|
|
40
|
-
* @param key - API key / API ключ
|
|
41
|
-
* @param model - initial model id / начальный идентификатор модели
|
|
42
|
-
* @param config - configuration object / объект конфигурации
|
|
43
|
-
*/
|
|
44
|
-
constructor(
|
|
45
|
-
protected key: string,
|
|
46
|
-
protected model: string,
|
|
47
|
-
protected config: Record<string, any> = {}
|
|
48
|
-
) {
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Returns accumulated image list.
|
|
53
|
-
*
|
|
54
|
-
* Возвращает накопленный список изображений.
|
|
55
|
-
*/
|
|
56
|
-
getImages(): AiImageList {
|
|
57
|
-
return this.images
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Returns accumulated contents.
|
|
62
|
-
*
|
|
63
|
-
* Возвращает накопленное содержимое.
|
|
64
|
-
*/
|
|
65
|
-
getContents(): string[] {
|
|
66
|
-
return this.contents
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Appends an image to the accumulated image list.
|
|
71
|
-
*
|
|
72
|
-
* Добавляет изображение к накопленному списку изображений.
|
|
73
|
-
* @param image - image item / элемент изображения
|
|
74
|
-
*/
|
|
75
|
-
addImage(image: AiImageItem): this {
|
|
76
|
-
this.images.push(image)
|
|
77
|
-
return this
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Appends content to the accumulated contents.
|
|
82
|
-
*
|
|
83
|
-
* Добавляет содержимое к накопленному содержимому.
|
|
84
|
-
* @param content - content string / строка содержимого
|
|
85
|
-
*/
|
|
86
|
-
addContent(content: string): this {
|
|
87
|
-
this.contents.push(content)
|
|
88
|
-
return this
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Appends a new line to the accumulated prompt block.
|
|
93
|
-
*
|
|
94
|
-
* Добавляет новую строку к накопленному блоку prompt.
|
|
95
|
-
*/
|
|
96
|
-
addPrompt(prompt: string): void {
|
|
97
|
-
this.prompt += `\n${prompt}`
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Clears entire accumulated image list.
|
|
102
|
-
*
|
|
103
|
-
* Очищает весь накопленный список изображений.
|
|
104
|
-
*/
|
|
105
|
-
resetImages(): this {
|
|
106
|
-
this.images = []
|
|
107
|
-
return this
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Clears entire accumulated contents.
|
|
112
|
-
*
|
|
113
|
-
* Очищает все накопленное содержимое.
|
|
114
|
-
*/
|
|
115
|
-
resetContents(): this {
|
|
116
|
-
this.contents = []
|
|
117
|
-
return this
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Clears entire accumulated prompt.
|
|
122
|
-
*
|
|
123
|
-
* Полностью очищает накопленный prompt.
|
|
124
|
-
*/
|
|
125
|
-
resetPrompt(): void {
|
|
126
|
-
this.prompt = ''
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Sets / switches API key for authentication.
|
|
131
|
-
*
|
|
132
|
-
* Устанавливает / переключает API ключ для аутентификации.
|
|
133
|
-
* @param key - new API key / новый API ключ
|
|
134
|
-
*/
|
|
135
|
-
setKey(key: string): this {
|
|
136
|
-
this.key = key
|
|
137
|
-
|
|
138
|
-
if (this.ai) {
|
|
139
|
-
this.init()
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return this
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Sets / switches current model for generation.
|
|
147
|
-
*
|
|
148
|
-
* Устанавливает / переключает текущую модель для генерации.
|
|
149
|
-
*/
|
|
150
|
-
setModel(model: string): this {
|
|
151
|
-
this.model = model
|
|
152
|
-
return this
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Sets / switches configuration object.
|
|
157
|
-
*
|
|
158
|
-
* Устанавливает / переключает объект конфигурации.
|
|
159
|
-
* @param config - configuration object / объект конфигурации
|
|
160
|
-
*/
|
|
161
|
-
setConfig(config: Record<string, any>): this {
|
|
162
|
-
this.config = config
|
|
163
|
-
return this
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Generates AI response using active model and composed contents.
|
|
168
|
-
*
|
|
169
|
-
* Генерирует отклик ИИ, используя активную модель и собранный контент.
|
|
170
|
-
*/
|
|
171
|
-
async generate(contents: string): Promise<string> {
|
|
172
|
-
if (!this.ai) {
|
|
173
|
-
this.init()
|
|
174
|
-
|
|
175
|
-
console.log(
|
|
176
|
-
`[Ai] Initialized AI client with model: ${this.model}`
|
|
177
|
-
)
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (this.ai) {
|
|
181
|
-
console.log('[Ai] Generating')
|
|
182
|
-
|
|
183
|
-
try {
|
|
184
|
-
const generate = await this.response(
|
|
185
|
-
this.model,
|
|
186
|
-
this.getMainContents(contents)
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
console.log(`[Ai] End (length: ${generate.length})`)
|
|
190
|
-
|
|
191
|
-
return generate
|
|
192
|
-
} catch (error) {
|
|
193
|
-
console.error('[Ai] Generation error:', error)
|
|
194
|
-
process.exit(603)
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return ''
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Combines persistent prompt prefix with provided contents.
|
|
203
|
-
*
|
|
204
|
-
* Объединяет постоянный префикс prompt с переданным содержимым.
|
|
205
|
-
*/
|
|
206
|
-
protected getMainContents(contents: string): string {
|
|
207
|
-
return `${this.prompt}\n${contents}`
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Implementation hook: initialize client / transport / auth.
|
|
212
|
-
*
|
|
213
|
-
* Хук реализации: инициализация клиента / транспорта / авторизации.
|
|
214
|
-
*/
|
|
215
|
-
protected abstract init(): void
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Implementation hook: convert accumulated images to model-specific format.
|
|
219
|
-
*
|
|
220
|
-
* Хук реализации: преобразовать накопленные изображения в формат, специфичный для модели.
|
|
221
|
-
*/
|
|
222
|
-
protected abstract toImages(): void
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Implementation hook: convert accumulated contents to model-specific format.
|
|
226
|
-
*
|
|
227
|
-
* Хук реализации: преобразовать накопленное содержимое в формат, специфичный для модели.
|
|
228
|
-
*/
|
|
229
|
-
protected abstract toContents(): void
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Implementation hook: perform model call and return textual result.
|
|
233
|
-
*
|
|
234
|
-
* Хук реализации: выполнить вызов модели и вернуть текстовый результат.
|
|
235
|
-
* @param model - active model id / идентификатор активной модели
|
|
236
|
-
* @param contents - composed prompt + contents / собранный prompt + содержимое
|
|
237
|
-
*/
|
|
238
|
-
protected abstract response(
|
|
239
|
-
model: string,
|
|
240
|
-
contents: string
|
|
241
|
-
): Promise<string>
|
|
242
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { getConfigAi } from '../../functions/getConfigAi'
|
|
2
|
-
import { AiClaudeLite } from './AiClaudeLite'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Claude AI implementation of AiAbstract.
|
|
6
|
-
* Initializes Anthropic client and performs text generation requests.
|
|
7
|
-
*
|
|
8
|
-
* Реализация Claude AI поверх AiAbstract.
|
|
9
|
-
* Инициализирует клиент Anthropic и выполняет запросы генерации текста.
|
|
10
|
-
*
|
|
11
|
-
* Responsibilities / Ответственности:
|
|
12
|
-
* - Provide API key / Предоставить API ключ
|
|
13
|
-
* - Initialize low-level client / Инициализировать низкоуровневый клиент
|
|
14
|
-
* - Call messages.create and extract plain text / Вызвать messages.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 AiClaude extends AiClaudeLite {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(
|
|
23
|
-
...getConfigAi()
|
|
24
|
-
)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { getConfigAi } from '../../functions/getConfigAi'
|
|
2
|
-
import { AiClaudeAgentLite } from './AiClaudeAgentLite'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Claude AI implementation via Agent SDK.
|
|
6
|
-
* Uses @anthropic-ai/claude-agent-sdk to interact with Claude as an agent.
|
|
7
|
-
*
|
|
8
|
-
* Реализация Claude AI через Agent SDK.
|
|
9
|
-
*/
|
|
10
|
-
export class AiClaudeAgent extends AiClaudeAgentLite {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(
|
|
13
|
-
...getConfigAi()
|
|
14
|
-
)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { query } from '@anthropic-ai/claude-agent-sdk'
|
|
2
|
-
import { AiAbstract } from './AiAbstract'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Claude AI implementation via Agent SDK.
|
|
6
|
-
* Uses @anthropic-ai/claude-agent-sdk to interact with Claude as an agent.
|
|
7
|
-
*
|
|
8
|
-
* Реализация Claude AI через Agent SDK.
|
|
9
|
-
* Использует @anthropic-ai/claude-agent-sdk для взаимодействия с Claude в режиме агента.
|
|
10
|
-
*
|
|
11
|
-
* Responsibilities / Ответственности:
|
|
12
|
-
* - Initialize Agent SDK client / Инициализировать Agent SDK клиент
|
|
13
|
-
* - Execute query via Agent SDK / Выполнить запрос через Agent SDK
|
|
14
|
-
* - Extract and return textual result / Извлечь и вернуть текстовый результат
|
|
15
|
-
*/
|
|
16
|
-
export class AiClaudeAgentLite extends AiAbstract<{}> {
|
|
17
|
-
/**
|
|
18
|
-
* Initializes the "client".
|
|
19
|
-
* For Agent SDK, we mark it as initialized.
|
|
20
|
-
*/
|
|
21
|
-
protected init(): void {
|
|
22
|
-
this.ai = {}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Implementation hook: convert accumulated images to model-specific format.
|
|
27
|
-
* Agent SDK implementation logic for images can be added if supported by the SDK.
|
|
28
|
-
*/
|
|
29
|
-
protected toImages(): any {
|
|
30
|
-
return []
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Implementation hook: convert accumulated contents to model-specific format.
|
|
35
|
-
*/
|
|
36
|
-
protected toContents(): any {
|
|
37
|
-
return this.contents.join('\n\n')
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Performs content generation request via Agent SDK and returns textual result.
|
|
42
|
-
*
|
|
43
|
-
* @param model Model identifier / Идентификатор модели
|
|
44
|
-
* @param contents Composed contents for generation / Собранный контент для генерации
|
|
45
|
-
*/
|
|
46
|
-
protected async response(
|
|
47
|
-
model: string,
|
|
48
|
-
contents: string
|
|
49
|
-
): Promise<string> {
|
|
50
|
-
const fullPrompt = [
|
|
51
|
-
this.toContents(),
|
|
52
|
-
contents
|
|
53
|
-
].filter(Boolean).join('\n\n')
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
const q = query({
|
|
57
|
-
prompt: fullPrompt,
|
|
58
|
-
options: {
|
|
59
|
-
model: model || undefined,
|
|
60
|
-
env: {
|
|
61
|
-
...process.env,
|
|
62
|
-
ANTHROPIC_API_KEY: this.key
|
|
63
|
-
},
|
|
64
|
-
permissionMode: 'acceptEdits', // Auto-accept file changes if any
|
|
65
|
-
allowDangerouslySkipPermissions: true,
|
|
66
|
-
...this.config
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
let lastResult = ''
|
|
71
|
-
|
|
72
|
-
for await (const message of q) {
|
|
73
|
-
if (message.type === 'result') {
|
|
74
|
-
if (message.subtype === 'success') {
|
|
75
|
-
lastResult = message.result
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return lastResult.trim()
|
|
81
|
-
} catch (error) {
|
|
82
|
-
console.error('[AiClaudeAgent] Error:', error)
|
|
83
|
-
return ''
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { getConfigAi } from '../../functions/getConfigAi'
|
|
2
|
-
import { AiClaudeCliLite } from './AiClaudeCliLite'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Claude AI implementation via CLI.
|
|
6
|
-
* Extends AiClaudeCliLite and provides configuration from the project environment.
|
|
7
|
-
*
|
|
8
|
-
* Реализация Claude AI через CLI.
|
|
9
|
-
* Расширяет AiClaudeCliLite и предоставляет конфигурацию из окружения проекта.
|
|
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 AiClaudeCli extends AiClaudeCliLite {
|
|
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
|
-
* Claude AI implementation via CLI.
|
|
9
|
-
* Uses system shell to execute Claude CLI commands.
|
|
10
|
-
*
|
|
11
|
-
* Реализация Claude AI через CLI.
|
|
12
|
-
* Использует системную оболочку для выполнения команд Claude 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 'claude' CLI tool installed / Требует установленной утилиты 'claude'
|
|
21
|
-
* - API key is passed via environment variable or config / API ключ передается через переменную окружения или конфиг
|
|
22
|
-
*/
|
|
23
|
-
export class AiClaudeCliLite 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 = `claude "${escapedPrompt} -- Output strictly the code/answer. No preamble, no chatter, no reasoning" ${modelFlag}`
|
|
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 Claude 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,112 +0,0 @@
|
|
|
1
|
-
import { Anthropic } from '@anthropic-ai/sdk'
|
|
2
|
-
import { forEach } from '@dxtmisha/functional-basic'
|
|
3
|
-
|
|
4
|
-
import { AiAbstract } from './AiAbstract'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Claude AI implementation of AiAbstract.
|
|
8
|
-
* Initializes Anthropic client and performs text generation requests.
|
|
9
|
-
*
|
|
10
|
-
* Реализация Claude AI поверх AiAbstract.
|
|
11
|
-
* Инициализирует клиент Anthropic и выполняет запросы генерации текста.
|
|
12
|
-
*
|
|
13
|
-
* Responsibilities / Ответственности:
|
|
14
|
-
* - Provide API key / Предоставить API ключ
|
|
15
|
-
* - Initialize Anthropic client / Инициализировать клиент Anthropic
|
|
16
|
-
* - Call messages.create and extract text content / Вызвать messages.create и извлечь текст
|
|
17
|
-
*
|
|
18
|
-
* Notes / Примечания:
|
|
19
|
-
* - Model must be set via setModel() before generate() / Модель нужно задать через setModel()
|
|
20
|
-
* - Returns empty string if response is missing / Возвращает пустую строку при отсутствии результата
|
|
21
|
-
*/
|
|
22
|
-
export class AiClaudeLite extends AiAbstract<Anthropic> {
|
|
23
|
-
/**
|
|
24
|
-
* Initializes Anthropic client instance.
|
|
25
|
-
*
|
|
26
|
-
* Инициализирует экземпляр клиента Anthropic.
|
|
27
|
-
*/
|
|
28
|
-
protected init(): void {
|
|
29
|
-
this.ai = new Anthropic({
|
|
30
|
-
apiKey: this.key
|
|
31
|
-
})
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Implementation hook: convert accumulated images to model-specific format.
|
|
36
|
-
* Claude expects images as content blocks with type 'image'.
|
|
37
|
-
*
|
|
38
|
-
* Хук реализации: преобразовать накопленные изображения в формат, специфичный для модели.
|
|
39
|
-
* Claude ожидает изображения как блоки контента с типом 'image'.
|
|
40
|
-
*/
|
|
41
|
-
protected toImages(): any {
|
|
42
|
-
return forEach(this.images, image => ({
|
|
43
|
-
type: 'image',
|
|
44
|
-
source: {
|
|
45
|
-
type: 'base64',
|
|
46
|
-
media_type: image.mime,
|
|
47
|
-
data: image.base64
|
|
48
|
-
}
|
|
49
|
-
}))
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Implementation hook: convert accumulated contents to model-specific format.
|
|
54
|
-
* Claude expects text as content blocks with type 'text'.
|
|
55
|
-
*
|
|
56
|
-
* Хук реализации: преобразовать накопленное содержимое в формат, специфичный для модели.
|
|
57
|
-
* Claude ожидает текст как блоки контента с типом 'text'.
|
|
58
|
-
*/
|
|
59
|
-
protected toContents(): any {
|
|
60
|
-
return forEach(this.contents, content => ({
|
|
61
|
-
type: 'text',
|
|
62
|
-
text: content
|
|
63
|
-
}))
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Performs content generation request and returns textual result.
|
|
68
|
-
*
|
|
69
|
-
* Выполняет запрос генерации контента и возвращает текстовый результат.
|
|
70
|
-
* @param model Model identifier (e.g., 'claude-3-5-sonnet-20241022') / Идентификатор модели
|
|
71
|
-
* @param contents Composed contents for generation / Собранный контент для генерации
|
|
72
|
-
*/
|
|
73
|
-
protected async response(
|
|
74
|
-
model: string,
|
|
75
|
-
contents: string
|
|
76
|
-
): Promise<string> {
|
|
77
|
-
const message = await this.ai?.messages.create({
|
|
78
|
-
model,
|
|
79
|
-
max_tokens: this.config.maxTokens ?? 4096,
|
|
80
|
-
messages: [
|
|
81
|
-
{
|
|
82
|
-
role: 'user',
|
|
83
|
-
content: [
|
|
84
|
-
...this.toImages(),
|
|
85
|
-
...this.toContents(),
|
|
86
|
-
{ type: 'text', text: contents }
|
|
87
|
-
]
|
|
88
|
-
}
|
|
89
|
-
],
|
|
90
|
-
...this.config
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
if (message?.content) {
|
|
94
|
-
return forEach(
|
|
95
|
-
message.content,
|
|
96
|
-
(block) => {
|
|
97
|
-
if (
|
|
98
|
-
block.type === 'text'
|
|
99
|
-
&& 'text' in block
|
|
100
|
-
) {
|
|
101
|
-
return block.text
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return undefined
|
|
105
|
-
}
|
|
106
|
-
)
|
|
107
|
-
.join('\n')
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return ''
|
|
111
|
-
}
|
|
112
|
-
}
|
package/src/classes/Ai/AiDoc.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { ServerStorage } from '@dxtmisha/functional-basic'
|
|
2
|
-
|
|
3
|
-
import { PropertiesConfig } from '../Properties/PropertiesConfig'
|
|
4
|
-
import { GitRead } from '../Git/GitRead'
|
|
5
|
-
import { AiDocType } from './AiDocType'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Class for generating AI documentation.
|
|
9
|
-
* It manages the process of reading directories, fetching files, and
|
|
10
|
-
* delegating the documentation generation to specific processors.
|
|
11
|
-
*
|
|
12
|
-
* Класс для генерации AI-документации.
|
|
13
|
-
* Управляет процессом чтения директорий, получения файлов и делегирования
|
|
14
|
-
* генерации документации специализированным процессорам.
|
|
15
|
-
*/
|
|
16
|
-
export class AiDoc {
|
|
17
|
-
/**
|
|
18
|
-
* Constructor for AiDoc. Sets error status config for ServerStorage.
|
|
19
|
-
*
|
|
20
|
-
* Конструктор для AiDoc. Устанавливает конфигурацию статуса ошибок для ServerStorage.
|
|
21
|
-
*/
|
|
22
|
-
constructor() {
|
|
23
|
-
ServerStorage.setErrorStatus(true)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Main method to generate documentation for configured directories.
|
|
28
|
-
*
|
|
29
|
-
* Основной метод для генерации документации по настроенным директориям.
|
|
30
|
-
* @returns promise that resolves when generation is complete / промис, завершающийся по окончании генерации
|
|
31
|
-
*/
|
|
32
|
-
async make() {
|
|
33
|
-
const dirs = PropertiesConfig.getAiDocDirectory()
|
|
34
|
-
const path = PropertiesConfig.getAiDocStorybookPath()
|
|
35
|
-
|
|
36
|
-
console.log(`AI documentation: ${path}`)
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
dirs
|
|
40
|
-
&& dirs.length
|
|
41
|
-
) {
|
|
42
|
-
for (const dir of dirs) {
|
|
43
|
-
await this.makeDirectory(dir)
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Process a specific directory, generating documentation for its files.
|
|
50
|
-
*
|
|
51
|
-
* Обрабатывает конкретную директорию, генерируя документацию для её файлов.
|
|
52
|
-
* @param dir directory path / путь к директории
|
|
53
|
-
* @returns promise that resolves when processing is complete / промис, завершающийся по окончании обработки
|
|
54
|
-
*/
|
|
55
|
-
async makeDirectory(dir: string) {
|
|
56
|
-
console.log('')
|
|
57
|
-
console.log(`Dir: ${dir}...`)
|
|
58
|
-
|
|
59
|
-
for (const item of this.getListByDirectory(dir)) {
|
|
60
|
-
try {
|
|
61
|
-
await AiDocType.make(item)
|
|
62
|
-
} catch (e) {
|
|
63
|
-
console.error(`Error processing file ${item}:`, e)
|
|
64
|
-
process.exit(602)
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Get filtered list of files in a directory via Git tracker.
|
|
71
|
-
*
|
|
72
|
-
* Получает отфильтрованный список файлов в директории через Git трекер.
|
|
73
|
-
* @param dir directory path / путь к директории
|
|
74
|
-
* @returns list of file paths / список путей к файлам
|
|
75
|
-
*/
|
|
76
|
-
protected getListByDirectory(dir: string) {
|
|
77
|
-
return GitRead.filterByDirectory(
|
|
78
|
-
GitRead.getListByDirectory(dir)
|
|
79
|
-
)
|
|
80
|
-
}
|
|
81
|
-
}
|