@kosolapus/plugin-ts-sdk
v0.0.10
Published
TypeScript SDK for Conveyor plugins (NestJS)
Maintainers
Readme
@kosolapus/plugin-ts-sdk
Библиотека для плагинов Conveyor: вы поднимаете свой Nest-процесс, а SDK берёт на себя регистрацию в ядре, приём шагов workflow и протокол общения с plugin-manager.
Требования
- Node.js 26+
- NestJS 11
- Уже работающее ядро Conveyor (plugin-manager и runtime)
Установка
npm install @kosolapus/plugin-ts-sdkПример
main.ts — запуск процесса плагина:
import { bootstrapPluginExecutorMicroservice } from '@kosolapus/plugin-ts-sdk';
import { AppModule } from './app.module';
async function main() {
await bootstrapPluginExecutorMicroservice(AppModule);
}
void main();app.module.ts — при старте сообщает ядру, что умеет плагин, и слушает входящие задачи:
import { Module } from '@nestjs/common';
import {
PluginPublicationTcpHostModule,
ExecutorTaskTcpController,
BulkExecutorRouterService,
BulkExecutorTaskHandler,
DefaultRegistry,
DefaultTransportAdapter,
TcpControlPlaneOutputRouter,
buildExecutorStepAckNotifierFromEnv,
REGISTRY,
TRANSPORT_ADAPTER,
OUTPUT_ROUTER,
BULK_EXECUTOR_ROUTER_OPTIONS,
} from '@kosolapus/plugin-ts-sdk';
import { MyPublicationBatchSource } from './my-publication-batch.source';
import { MyManifestBuilder } from './my-manifest.builder';
@Module({
imports: [
PluginPublicationTcpHostModule.forRoot(MyPublicationBatchSource, {
manifestOnInit: true,
manifestBuilder: MyManifestBuilder,
}),
],
controllers: [ExecutorTaskTcpController],
providers: [
TcpControlPlaneOutputRouter,
{ provide: OUTPUT_ROUTER, useExisting: TcpControlPlaneOutputRouter },
{ provide: TRANSPORT_ADAPTER, useClass: DefaultTransportAdapter },
{ provide: REGISTRY, useClass: DefaultRegistry },
{
provide: BULK_EXECUTOR_ROUTER_OPTIONS,
useValue: {
pluginId: 'my-plugin',
pluginLabel: 'My Plugin',
pluginVariables: [],
getExecutors: () => []/* ваши шаги (@Executor) */,
notifyStepStarted: buildExecutorStepAckNotifierFromEnv(),
nodeTypePrefix: 'plugin.myPlugin.',
},
},
BulkExecutorTaskHandler,
BulkExecutorRouterService,
],
})
export class AppModule {}После запуска плагин представляется plugin-manager, отдаёт описание своих шагов и слушает порт 3000 (или EXECUTOR_TCP_PORT). Токены и адреса ядра — через переменные окружения; они должны совпадать с настройками Conveyor (PLUGIN_MANAGER_INGRESS_TOKEN, PLUGIN_MANAGER_RPC_HOST, PLUGIN_CONTROL_PLANE_KEY и т.д.).
Если у плагина есть свой UI, подключите PluginAssetHttpModule и включите HTTP (PLUGIN_HEALTH_HTTP_PORT).
