@acorex-platform/module-ai-management-client 0.0.20
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/fesm2022/acorex-platform-module-ai-management-client-agent-registry-tool-configurator-widget-column.component-BHdDG8z0.mjs +44 -0
- package/fesm2022/acorex-platform-module-ai-management-client-agent-registry-tool-configurator-widget-column.component-BHdDG8z0.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client-agent-registry-tool-configurator-widget-edit.component-CMsc3P9O.mjs +259 -0
- package/fesm2022/acorex-platform-module-ai-management-client-agent-registry-tool-configurator-widget-edit.component-CMsc3P9O.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client-assist-delegated-agent-configurator-widget-column.component-CWUhBvpf.mjs +62 -0
- package/fesm2022/acorex-platform-module-ai-management-client-assist-delegated-agent-configurator-widget-column.component-CWUhBvpf.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client-assist-delegated-agent-configurator-widget-edit.component-Dmi8vzfr.mjs +293 -0
- package/fesm2022/acorex-platform-module-ai-management-client-assist-delegated-agent-configurator-widget-edit.component-Dmi8vzfr.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client-contracts.mjs +1038 -0
- package/fesm2022/acorex-platform-module-ai-management-client-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client-list-ai-command-registry-catalog.query-DHfiKVa2.mjs +106 -0
- package/fesm2022/acorex-platform-module-ai-management-client-list-ai-command-registry-catalog.query-DHfiKVa2.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client-list-ai-query-registry-catalog.query-BX0uU1YX.mjs +107 -0
- package/fesm2022/acorex-platform-module-ai-management-client-list-ai-query-registry-catalog.query-BX0uU1YX.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client-list-output-contract-transcript-segments.query-BQXySOH_.mjs +54 -0
- package/fesm2022/acorex-platform-module-ai-management-client-list-output-contract-transcript-segments.query-BQXySOH_.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-ai-management-client.mjs +3642 -0
- package/fesm2022/acorex-platform-module-ai-management-client.mjs.map +1 -0
- package/package.json +28 -0
- package/types/acorex-platform-module-ai-management-client-contracts.d.ts +896 -0
- package/types/acorex-platform-module-ai-management-client.d.ts +797 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { sortByMultiLanguageString } from '@acorex-platform/framework-shared/core';
|
|
2
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
3
|
+
import { AXPItemConfiguratorComponent } from '@acorex-platform/framework-client/layout/components';
|
|
4
|
+
import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
5
|
+
import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
6
|
+
import * as i0 from '@angular/core';
|
|
7
|
+
import { inject, computed, signal, model, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
8
|
+
import { get, isEqual } from 'lodash';
|
|
9
|
+
import { RootConfig } from '@acorex-platform/module-ai-management-client/contracts';
|
|
10
|
+
import { createStringProperty } from '@acorex-platform/framework-shared/widget-core';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Maps delegated parameter definitions to property-viewer compatible fields.
|
|
14
|
+
*/
|
|
15
|
+
function mapDelegatedParameterDefinitionsToWidgetProperties(defs) {
|
|
16
|
+
const defaultGroup = {
|
|
17
|
+
name: 'delegated-agent-parameters',
|
|
18
|
+
title: 'Delegated parameters',
|
|
19
|
+
order: 1,
|
|
20
|
+
};
|
|
21
|
+
const filtered = defs.filter((d) => d.binding === 'assist_locked' || d.binding === 'assist_default');
|
|
22
|
+
const source = filtered.length > 0
|
|
23
|
+
? filtered
|
|
24
|
+
: [{ name: 'query', binding: 'assist_default', title: 'Query', description: '' }];
|
|
25
|
+
return source.map((d) => {
|
|
26
|
+
const group = d.group
|
|
27
|
+
? {
|
|
28
|
+
name: d.group.name,
|
|
29
|
+
title: d.group.title,
|
|
30
|
+
order: d.group.order ?? 0,
|
|
31
|
+
}
|
|
32
|
+
: defaultGroup;
|
|
33
|
+
const defaultStr = d.defaultValue !== undefined && d.defaultValue !== null ? String(d.defaultValue) : undefined;
|
|
34
|
+
const title = (d.title?.trim() || d.name);
|
|
35
|
+
const desc = typeof d.description === 'string' ? d.description.trim() : '';
|
|
36
|
+
const widgetType = d.interface?.name?.trim() ? d.interface.name.trim() : 'text-editor';
|
|
37
|
+
if (widgetType !== 'text-editor') {
|
|
38
|
+
const property = {
|
|
39
|
+
name: d.name,
|
|
40
|
+
title,
|
|
41
|
+
...(desc ? { description: desc } : {}),
|
|
42
|
+
group,
|
|
43
|
+
schema: {
|
|
44
|
+
dataType: 'string',
|
|
45
|
+
defaultValue: defaultStr,
|
|
46
|
+
interface: {
|
|
47
|
+
path: `options.${d.name}`,
|
|
48
|
+
name: d.name,
|
|
49
|
+
type: widgetType,
|
|
50
|
+
options: d.interface?.options ?? {},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
visible: true,
|
|
54
|
+
};
|
|
55
|
+
return property;
|
|
56
|
+
}
|
|
57
|
+
const property = createStringProperty({
|
|
58
|
+
name: d.name,
|
|
59
|
+
title,
|
|
60
|
+
path: `options.${d.name}`,
|
|
61
|
+
group,
|
|
62
|
+
visible: true,
|
|
63
|
+
defaultValue: defaultStr,
|
|
64
|
+
});
|
|
65
|
+
return desc ? { ...property, description: desc } : property;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function isDelegatedParameterDefinitionList(value) {
|
|
69
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
const first = value[0];
|
|
73
|
+
if (first == null || typeof first !== 'object' || Array.isArray(first)) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return (typeof first['name'] === 'string' &&
|
|
77
|
+
typeof first['binding'] === 'string' &&
|
|
78
|
+
!('schema' in first));
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
|
|
82
|
+
//#region ---- Imports ----
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region ---- Component ----
|
|
85
|
+
class AXMAssistDelegatedAgentConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
86
|
+
constructor() {
|
|
87
|
+
super(...arguments);
|
|
88
|
+
//#region ---- Services & Dependencies ----
|
|
89
|
+
this.entityService = inject(AXPEntityService);
|
|
90
|
+
this.translation = inject(AXTranslationService);
|
|
91
|
+
this.agentData = this.entityService
|
|
92
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.agent.name)
|
|
93
|
+
.data();
|
|
94
|
+
//#endregion
|
|
95
|
+
//#region ---- Computed Properties ----
|
|
96
|
+
this.readonly = computed(() => {
|
|
97
|
+
const raw = this.options()['readonly'];
|
|
98
|
+
if (typeof raw === 'string') {
|
|
99
|
+
const normalized = raw.trim().toLowerCase();
|
|
100
|
+
if (normalized === 'true') {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
if (normalized === 'false') {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return raw === true;
|
|
108
|
+
}, /* @ts-ignore */
|
|
109
|
+
...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
110
|
+
this.label = computed(() => {
|
|
111
|
+
const v = this.options()['label'];
|
|
112
|
+
return typeof v === 'string' && v.trim() ? v.trim() : '@ai-management:assists.entities.assist.fields.delegated-agent.title';
|
|
113
|
+
}, /* @ts-ignore */
|
|
114
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
115
|
+
this.agentRows = signal(undefined, /* @ts-ignore */
|
|
116
|
+
...(ngDevMode ? [{ debugName: "agentRows" }] : /* istanbul ignore next */ []));
|
|
117
|
+
this.listItems = computed(() => {
|
|
118
|
+
const rows = this.agentRows() ?? [];
|
|
119
|
+
const list = [];
|
|
120
|
+
for (const row of rows) {
|
|
121
|
+
const idRaw = get(row, 'id');
|
|
122
|
+
const id = idRaw != null ? String(idRaw).trim() : '';
|
|
123
|
+
if (!id) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const title = get(row, 'title');
|
|
127
|
+
const description = get(row, 'description');
|
|
128
|
+
const icon = get(row, 'icon');
|
|
129
|
+
const propertyDefinitions = resolvePropertyDefinitions(get(row, 'parameterDefinitions'));
|
|
130
|
+
list.push({ id, title, description, icon, propertyDefinitions });
|
|
131
|
+
}
|
|
132
|
+
return sortByMultiLanguageString(list, (item) => item.title, this.translation.getActiveLang());
|
|
133
|
+
}, /* @ts-ignore */
|
|
134
|
+
...(ngDevMode ? [{ debugName: "listItems" }] : /* istanbul ignore next */ []));
|
|
135
|
+
//#endregion
|
|
136
|
+
//#region ---- State ----
|
|
137
|
+
this.isInitialized = signal(false, /* @ts-ignore */
|
|
138
|
+
...(ngDevMode ? [{ debugName: "isInitialized" }] : /* istanbul ignore next */ []));
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region ---- Models ----
|
|
141
|
+
this.selectedItemIdModel = model('', /* @ts-ignore */
|
|
142
|
+
...(ngDevMode ? [{ debugName: "selectedItemIdModel" }] : /* istanbul ignore next */ []));
|
|
143
|
+
this.valuesModel = model({}, /* @ts-ignore */
|
|
144
|
+
...(ngDevMode ? [{ debugName: "valuesModel" }] : /* istanbul ignore next */ []));
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region ---- Effects ----
|
|
147
|
+
this.loadAgentsEffect = effect((onCleanup) => {
|
|
148
|
+
let cancelled = false;
|
|
149
|
+
onCleanup(() => {
|
|
150
|
+
cancelled = true;
|
|
151
|
+
});
|
|
152
|
+
void (async () => {
|
|
153
|
+
try {
|
|
154
|
+
const loaded = await this.agentData.query({
|
|
155
|
+
skip: 0,
|
|
156
|
+
take: 500,
|
|
157
|
+
sort: [{ field: 'title', dir: 'asc' }],
|
|
158
|
+
});
|
|
159
|
+
if (cancelled) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
this.agentRows.set(loaded.items ?? []);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
if (!cancelled) {
|
|
166
|
+
this.agentRows.set([]);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
})();
|
|
170
|
+
}, /* @ts-ignore */
|
|
171
|
+
...(ngDevMode ? [{ debugName: "loadAgentsEffect" }] : /* istanbul ignore next */ []));
|
|
172
|
+
this.syncValueToConfigurator = effect(() => {
|
|
173
|
+
const value = this.getValue();
|
|
174
|
+
if (value && value.type) {
|
|
175
|
+
const currentSelected = untracked(() => this.selectedItemIdModel());
|
|
176
|
+
const currentValues = untracked(() => this.valuesModel());
|
|
177
|
+
const nextOptions = (value.options ?? {});
|
|
178
|
+
if (value.type !== currentSelected || !isEqual(nextOptions, currentValues)) {
|
|
179
|
+
untracked(() => {
|
|
180
|
+
this.selectedItemIdModel.set(value.type);
|
|
181
|
+
this.valuesModel.set(nextOptions);
|
|
182
|
+
this.isInitialized.set(true);
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
untracked(() => {
|
|
188
|
+
if (!this.isInitialized()) {
|
|
189
|
+
this.selectedItemIdModel.set('');
|
|
190
|
+
this.valuesModel.set({});
|
|
191
|
+
this.isInitialized.set(true);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}, /* @ts-ignore */
|
|
195
|
+
...(ngDevMode ? [{ debugName: "syncValueToConfigurator" }] : /* istanbul ignore next */ []));
|
|
196
|
+
this.syncConfiguratorToValue = effect(() => {
|
|
197
|
+
const selectedId = this.selectedItemIdModel();
|
|
198
|
+
const values = this.valuesModel();
|
|
199
|
+
if (!untracked(() => this.isInitialized())) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const currentValue = untracked(() => this.getValue());
|
|
203
|
+
const empty = { type: '', options: {} };
|
|
204
|
+
if (!selectedId) {
|
|
205
|
+
if (!isEqual(currentValue ?? empty, empty)) {
|
|
206
|
+
untracked(() => {
|
|
207
|
+
this.setValue(empty);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const next = {
|
|
213
|
+
...(currentValue && typeof currentValue === 'object' ? currentValue : {}),
|
|
214
|
+
type: selectedId,
|
|
215
|
+
options: values,
|
|
216
|
+
};
|
|
217
|
+
if (!isEqual(next, currentValue)) {
|
|
218
|
+
untracked(() => {
|
|
219
|
+
this.setValue(next);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}, /* @ts-ignore */
|
|
223
|
+
...(ngDevMode ? [{ debugName: "syncConfiguratorToValue" }] : /* istanbul ignore next */ []));
|
|
224
|
+
}
|
|
225
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssistDelegatedAgentConfiguratorWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMAssistDelegatedAgentConfiguratorWidgetEditComponent, isStandalone: true, selector: "axm-assist-delegated-agent-configurator-widget-edit", inputs: { selectedItemIdModel: { classPropertyName: "selectedItemIdModel", publicName: "selectedItemIdModel", isSignal: true, isRequired: false, transformFunction: null }, valuesModel: { classPropertyName: "valuesModel", publicName: "valuesModel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedItemIdModel: "selectedItemIdModelChange", valuesModel: "valuesModelChange" }, usesInheritance: true, ngImport: i0, template: `
|
|
227
|
+
@if (isInitialized()) {
|
|
228
|
+
<axp-item-configurator
|
|
229
|
+
[(selectedItemId)]="selectedItemIdModel"
|
|
230
|
+
[(values)]="valuesModel"
|
|
231
|
+
[label]="label()"
|
|
232
|
+
[readonly]="readonly()"
|
|
233
|
+
[items]="listItems()"
|
|
234
|
+
></axp-item-configurator>
|
|
235
|
+
}
|
|
236
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AXPItemConfiguratorComponent, selector: "axp-item-configurator", inputs: ["selectedItemId", "values", "label", "readonly", "items", "headerActions"], outputs: ["selectedItemIdChange", "valuesChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
237
|
+
}
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssistDelegatedAgentConfiguratorWidgetEditComponent, decorators: [{
|
|
239
|
+
type: Component,
|
|
240
|
+
args: [{
|
|
241
|
+
selector: 'axm-assist-delegated-agent-configurator-widget-edit',
|
|
242
|
+
template: `
|
|
243
|
+
@if (isInitialized()) {
|
|
244
|
+
<axp-item-configurator
|
|
245
|
+
[(selectedItemId)]="selectedItemIdModel"
|
|
246
|
+
[(values)]="valuesModel"
|
|
247
|
+
[label]="label()"
|
|
248
|
+
[readonly]="readonly()"
|
|
249
|
+
[items]="listItems()"
|
|
250
|
+
></axp-item-configurator>
|
|
251
|
+
}
|
|
252
|
+
`,
|
|
253
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
254
|
+
imports: [AXPItemConfiguratorComponent],
|
|
255
|
+
}]
|
|
256
|
+
}], propDecorators: { selectedItemIdModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItemIdModel", required: false }] }, { type: i0.Output, args: ["selectedItemIdModelChange"] }], valuesModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "valuesModel", required: false }] }, { type: i0.Output, args: ["valuesModelChange"] }] } });
|
|
257
|
+
//#endregion
|
|
258
|
+
//#region ---- Helpers ----
|
|
259
|
+
function tryParseJsonIfString(value) {
|
|
260
|
+
if (typeof value === 'string' && value.trim() !== '') {
|
|
261
|
+
try {
|
|
262
|
+
return JSON.parse(value);
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
return value;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return value;
|
|
269
|
+
}
|
|
270
|
+
function isWidgetPropertyArray(value) {
|
|
271
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
return value.every((item) => item != null &&
|
|
275
|
+
typeof item === 'object' &&
|
|
276
|
+
'name' in item &&
|
|
277
|
+
typeof item.name === 'string' &&
|
|
278
|
+
'schema' in item &&
|
|
279
|
+
'group' in item);
|
|
280
|
+
}
|
|
281
|
+
function resolvePropertyDefinitions(rawValue) {
|
|
282
|
+
const parsed = tryParseJsonIfString(rawValue);
|
|
283
|
+
if (isWidgetPropertyArray(parsed)) {
|
|
284
|
+
return parsed;
|
|
285
|
+
}
|
|
286
|
+
if (isDelegatedParameterDefinitionList(parsed)) {
|
|
287
|
+
return mapDelegatedParameterDefinitionsToWidgetProperties(parsed);
|
|
288
|
+
}
|
|
289
|
+
return [];
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export { AXMAssistDelegatedAgentConfiguratorWidgetEditComponent };
|
|
293
|
+
//# sourceMappingURL=acorex-platform-module-ai-management-client-assist-delegated-agent-configurator-widget-edit.component-Dmi8vzfr.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-ai-management-client-assist-delegated-agent-configurator-widget-edit.component-Dmi8vzfr.mjs","sources":["../../../../libs/modules/ai-management/client/src/lib/features/widgets/assist-delegated-agent-configurator/delegated-parameter-definitions-to-widget-properties.ts","../../../../libs/modules/ai-management/client/src/lib/features/widgets/assist-delegated-agent-configurator/assist-delegated-agent-configurator-widget-edit.component.ts"],"sourcesContent":["import { AXPWidgetProperty, AXPWidgetPropertyGroup, createStringProperty } from '@acorex-platform/framework-shared/widget-core';\n//#region ---- Imports ----\n\n//#endregion\n\n//#region ---- Delegated definitions → property viewer ----\n\ntype DelegatedParameterDefinition = {\n name: string;\n binding: string;\n title?: string;\n description?: string;\n defaultValue?: unknown;\n group?: { name: string; title: string; order?: number };\n interface?: {\n name?: string;\n options?: Record<string, unknown>;\n };\n};\n\n/**\n * Maps delegated parameter definitions to property-viewer compatible fields.\n */\nexport function mapDelegatedParameterDefinitionsToWidgetProperties(\n defs: ReadonlyArray<DelegatedParameterDefinition>,\n): AXPWidgetProperty[] {\n const defaultGroup: AXPWidgetPropertyGroup = {\n name: 'delegated-agent-parameters',\n title: 'Delegated parameters',\n order: 1,\n };\n\n const filtered = defs.filter((d) => d.binding === 'assist_locked' || d.binding === 'assist_default');\n const source =\n filtered.length > 0\n ? filtered\n : [{ name: 'query', binding: 'assist_default', title: 'Query', description: '' }];\n\n return source.map((d) => {\n const group: AXPWidgetPropertyGroup = d.group\n ? {\n name: d.group.name,\n title: d.group.title,\n order: d.group.order ?? 0,\n }\n : defaultGroup;\n\n const defaultStr =\n d.defaultValue !== undefined && d.defaultValue !== null ? String(d.defaultValue) : undefined;\n const title = (d.title?.trim() || d.name) as string;\n const desc = typeof d.description === 'string' ? d.description.trim() : '';\n const widgetType = d.interface?.name?.trim() ? d.interface.name.trim() : 'text-editor';\n\n if (widgetType !== 'text-editor') {\n const property: AXPWidgetProperty = {\n name: d.name,\n title,\n ...(desc ? { description: desc } : {}),\n group,\n schema: {\n dataType: 'string',\n defaultValue: defaultStr,\n interface: {\n path: `options.${d.name}`,\n name: d.name,\n type: widgetType,\n options: d.interface?.options ?? {},\n },\n },\n visible: true,\n };\n return property;\n }\n\n const property = createStringProperty({\n name: d.name,\n title,\n path: `options.${d.name}`,\n group,\n visible: true,\n defaultValue: defaultStr,\n });\n\n return desc ? { ...property, description: desc } : property;\n });\n}\n\nexport function isDelegatedParameterDefinitionList(value: unknown): value is DelegatedParameterDefinition[] {\n if (!Array.isArray(value) || value.length === 0) {\n return false;\n }\n\n const first = value[0];\n if (first == null || typeof first !== 'object' || Array.isArray(first)) {\n return false;\n }\n\n return (\n typeof (first as Record<string, unknown>)['name'] === 'string' &&\n typeof (first as Record<string, unknown>)['binding'] === 'string' &&\n !('schema' in (first as object))\n );\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPMultiLanguageString, type AXPOptionsData, type AXPWidgetNode, sortByMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPWidgetProperty } from '@acorex-platform/framework-shared/widget-core';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { AXPItemConfiguratorComponent, ItemConfiguratorListItem } from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, model, signal, untracked } from '@angular/core';\nimport { get, isEqual } from 'lodash';\nimport { RootConfig, type AXMAiManagementAgentEntityModel } from '@acorex-platform/module-ai-management-client/contracts';\nimport {\n isDelegatedParameterDefinitionList,\n mapDelegatedParameterDefinitionsToWidgetProperties,\n} from './delegated-parameter-definitions-to-widget-properties';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-assist-delegated-agent-configurator-widget-edit',\n template: `\n @if (isInitialized()) {\n <axp-item-configurator\n [(selectedItemId)]=\"selectedItemIdModel\"\n [(values)]=\"valuesModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [items]=\"listItems()\"\n ></axp-item-configurator>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPItemConfiguratorComponent],\n})\nexport class AXMAssistDelegatedAgentConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetNode> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n private readonly agentData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.agent.name)\n .data<string, AXMAiManagementAgentEntityModel>();\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly = computed<boolean>(() => {\n const raw = this.options()['readonly'];\n if (typeof raw === 'string') {\n const normalized = raw.trim().toLowerCase();\n if (normalized === 'true') {\n return true;\n }\n if (normalized === 'false') {\n return false;\n }\n }\n return raw === true;\n });\n\n protected label = computed<string>(() => {\n const v = this.options()['label'];\n return typeof v === 'string' && v.trim() ? v.trim() : '@ai-management:assists.entities.assist.fields.delegated-agent.title';\n });\n\n private readonly agentRows = signal<unknown[] | undefined>(undefined);\n\n protected listItems = computed<ItemConfiguratorListItem[]>(() => {\n const rows = this.agentRows() ?? [];\n const list: ItemConfiguratorListItem[] = [];\n\n for (const row of rows) {\n const idRaw = get(row as object, 'id');\n const id = idRaw != null ? String(idRaw).trim() : '';\n if (!id) {\n continue;\n }\n\n const title = get(row as object, 'title') as unknown as AXPMultiLanguageString;\n const description = get(row as object, 'description') as unknown as AXPMultiLanguageString;\n const icon = get(row as object, 'icon') as unknown as string;\n const propertyDefinitions = resolvePropertyDefinitions(get(row as object, 'parameterDefinitions'));\n\n list.push({ id, title, description, icon, propertyDefinitions });\n }\n\n return sortByMultiLanguageString(list, (item) => item.title, this.translation.getActiveLang());\n });\n\n //#endregion\n\n //#region ---- State ----\n\n protected isInitialized = signal(false);\n\n //#endregion\n\n //#region ---- Models ----\n\n protected selectedItemIdModel = model<string>('');\n protected valuesModel = model<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Effects ----\n\n private loadAgentsEffect = effect((onCleanup) => {\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n\n void (async () => {\n try {\n const loaded = await this.agentData.query({\n skip: 0,\n take: 500,\n sort: [{ field: 'title', dir: 'asc' }],\n });\n if (cancelled) {\n return;\n }\n this.agentRows.set(loaded.items ?? []);\n } catch {\n if (!cancelled) {\n this.agentRows.set([]);\n }\n }\n })();\n });\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n\n if (value && value.type) {\n const currentSelected = untracked(() => this.selectedItemIdModel());\n const currentValues = untracked(() => this.valuesModel());\n const nextOptions = (value.options ?? {}) as Record<string, unknown>;\n\n if (value.type !== currentSelected || !isEqual(nextOptions, currentValues)) {\n untracked(() => {\n this.selectedItemIdModel.set(value.type);\n this.valuesModel.set(nextOptions);\n this.isInitialized.set(true);\n });\n }\n return;\n }\n\n untracked(() => {\n if (!this.isInitialized()) {\n this.selectedItemIdModel.set('');\n this.valuesModel.set({});\n this.isInitialized.set(true);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const selectedId = this.selectedItemIdModel();\n const values = this.valuesModel();\n\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n\n const currentValue = untracked(() => this.getValue());\n const empty: AXPWidgetNode = { type: '', options: {} };\n\n if (!selectedId) {\n if (!isEqual(currentValue ?? empty, empty)) {\n untracked(() => {\n this.setValue(empty);\n });\n }\n return;\n }\n\n const next: AXPWidgetNode = {\n ...(currentValue && typeof currentValue === 'object' ? currentValue : {}),\n type: selectedId,\n options: values as AXPOptionsData,\n };\n\n if (!isEqual(next, currentValue)) {\n untracked(() => {\n this.setValue(next);\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction tryParseJsonIfString(value: unknown): unknown {\n if (typeof value === 'string' && value.trim() !== '') {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return value;\n }\n }\n return value;\n}\n\nfunction isWidgetPropertyArray(value: unknown): value is AXPWidgetProperty[] {\n if (!Array.isArray(value) || value.length === 0) {\n return false;\n }\n\n return value.every(\n (item) =>\n item != null &&\n typeof item === 'object' &&\n 'name' in item &&\n typeof (item as AXPWidgetProperty).name === 'string' &&\n 'schema' in item &&\n 'group' in item,\n );\n}\n\nfunction resolvePropertyDefinitions(rawValue: unknown): AXPWidgetProperty[] {\n const parsed = tryParseJsonIfString(rawValue);\n\n if (isWidgetPropertyArray(parsed)) {\n return parsed;\n }\n\n if (isDelegatedParameterDefinitionList(parsed)) {\n return mapDelegatedParameterDefinitionsToWidgetProperties(parsed);\n }\n\n return [];\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|