AI target
Entry: src/ai/index.ts → dist/ai/index.js.
AI-agent-service загружает расширения и регистрирует два реестра для каждого типа артефакта с генерацией:
| Registry | Назначение |
|---|---|
ai.artifactTypes | Метаданные генерации для LLM (schema, prompts, parse) |
ai.artifactDrivers | Runtime: session, tools, validate, finalize |
ai.fileExtractors | Извлечение текста из файлов проекта для RAG |
ai.fileExecutors | Действия над файлами (транскрибация, …) |
Подробнее про файлы: File extractors, File actions.
Keys должны совпадать с app.artifactTypes (например notes-doc).
ai/index.ts
ts
import { defineExtension, getExtensionRegistry } from '@artiroute/extension-sdk/extension';
import { notesTextDriver } from './text-driver';
export default defineExtension(() => {
getExtensionRegistry('ai.artifactTypes').register('notes-doc', notesDocType);
getExtensionRegistry('ai.artifactDrivers').register('notes-doc', notesTextDriver);
});ai.artifactTypes
Объект с методами:
describeGeneration,describeTemplateDefinition,describeContentFieldsgetOutputSchema— zod-like parseparseGenerationResult,extractDraftText,applyDraftTextvalidateDraft,extractIndexText
Определяет контракт контента для LLM и UI preview.
ai.artifactDrivers
Driver управляет сессией редактирования во время AI-генерации:
| Метод | Назначение |
|---|---|
buildSessionContent | Начальный content сессии из draft text |
getInstructions | System hints для агента |
getInfo | Metadata для UI |
validate | Проверка перед finalize |
finalize | Merge draft → artifact content |
createTools | AI SDK tools (readText, replaceText, …) |
Подробнее: Artifact drivers.
Manifest
js
extendsRegistries: [
{ registryId: 'ai.artifactTypes', keys: ['notes-doc'] },
{ registryId: 'ai.artifactDrivers', keys: ['notes-doc'] },
],
targets: { ai: {} },Plain-text fallback
Если driver реализует buildSessionContent → { text }, но createTools() пустой, ai-agent-service автоматически добавляет host plain-text tools (readText, replaceText, …).
См. registry-test minimal driver vs project-notes explicit tools.
Сборка и deploy
bash
pnpm build:extensions
pnpm install:extensions
pnpm ai:dev # или ai:startAI service импортирует ai/index.js из data/extensions/ аналогично frontend.
Примеры
- project-notes — полный driver с
createTools - registry-test — minimal driver + fallback