@difizen/magent-au
Version:
75 lines (64 loc) • 2.04 kB
text/typescript
import { Fetcher } from '@difizen/magent-core';
import { inject, transient } from '@difizen/mana-app';
import { ComponentModel } from '../component-model/component-model.js';
import { ToolManager } from '../tool/tool-manager.js';
import type { ToolModel } from '../tool/tool-model.js';
import type { PluginMeta } from './protocol.js';
import { PluginModelOption } from './protocol.js';
()
export class PluginModel extends ComponentModel<PluginModel, PluginMeta> {
protected fetcher: Fetcher;
protected toolManager: ToolManager;
option: PluginMeta;
toolset: ToolModel[] = [];
constructor(
(PluginModelOption) option: PluginMeta,
(ToolManager) toolManager: ToolManager,
(Fetcher) fetcher: Fetcher,
) {
super();
this.option = option;
this.toolManager = toolManager;
this.fetcher = fetcher;
this.id = option.id;
this.initialize(option);
}
shouldInitFromMeta(option: PluginMeta): boolean {
return true;
}
fetchInfo(option: PluginMeta): Promise<void> {
throw new Error('Method not implemented.');
}
protected override fromMeta(option: PluginMeta): void {
super.fromMeta(option);
this.toolset = option.toolset.map(this.toolManager.getOrCreate);
}
override toMeta = (): PluginMeta => {
return {
...super.toMeta(),
toolset: this.toolset.map((item) => item.toMeta()),
};
};
}
()
export class OpenAPIPluginModel extends PluginModel {
openapi_desc?: string;
get openapiDesc(): string | undefined {
return this.openapi_desc;
}
set openapiDesc(v: string | undefined) {
this.openapi_desc = v;
}
protected override fromMeta(option: PluginMeta): void {
super.fromMeta(option);
this.toolset = option.toolset.map(this.toolManager.getOrCreate);
this.openapi_desc = option.openapi_desc;
}
override toMeta = (): PluginMeta => {
return {
...super.toMeta(),
toolset: this.toolset.map((item) => item.toMeta()),
openapi_desc: this.openapiDesc,
};
};
}