@acorex/connectivity 21.0.0-next.39 → 21.0.0-next.41
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-connectivity-mock-acorex-connectivity-mock-Bso6KgSC.mjs → acorex-connectivity-mock-acorex-connectivity-mock-BTiDjsTG.mjs} +10129 -4533
- package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-BTiDjsTG.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.activity-Cbm3SNXn.mjs +212 -0
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.activity-Cbm3SNXn.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-chat-generate-image.command-BYNcjNoo.mjs → acorex-connectivity-mock-chat-generate-image.command-OImAZbUq.mjs} +5 -11
- package/fesm2022/acorex-connectivity-mock-chat-generate-image.command-OImAZbUq.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-chat-synthesize-speech.command-82f3G8lC.mjs → acorex-connectivity-mock-chat-synthesize-speech.command-Dieqfce2.mjs} +2 -2
- package/fesm2022/{acorex-connectivity-mock-chat-synthesize-speech.command-82f3G8lC.mjs.map → acorex-connectivity-mock-chat-synthesize-speech.command-Dieqfce2.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-chat-transcribe-speech.command-D6gp3I1V.mjs → acorex-connectivity-mock-chat-transcribe-speech.command-BvZwDms4.mjs} +2 -2
- package/fesm2022/{acorex-connectivity-mock-chat-transcribe-speech.command-D6gp3I1V.mjs.map → acorex-connectivity-mock-chat-transcribe-speech.command-BvZwDms4.mjs.map} +1 -1
- package/fesm2022/acorex-connectivity-mock-user-roles-for-list-column.query-DZlsdoZn.mjs +31 -0
- package/fesm2022/acorex-connectivity-mock-user-roles-for-list-column.query-DZlsdoZn.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock.mjs +1 -1
- package/package.json +2 -2
- package/types/acorex-connectivity-mock.d.ts +204 -211
- package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-Bso6KgSC.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.activity-DTPM1eU1.mjs +0 -79
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.activity-DTPM1eU1.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-chat-generate-image.command-BYNcjNoo.mjs.map +0 -1
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { AXPEntityStorageService } from '@acorex/platform/layout/entity';
|
|
4
|
-
|
|
5
|
-
const LEAVE_REQUEST_ENTITY = 'HumanCapitalManagement.LeaveRequest';
|
|
6
|
-
const EMPLOYEE_ENTITY = 'HumanCapitalManagement.Employee';
|
|
7
|
-
/**
|
|
8
|
-
* Assign To Manager Activity (Backend - Mock)
|
|
9
|
-
*
|
|
10
|
-
* Resolves the manager from Leave Request → Employee → managerId.
|
|
11
|
-
* Outputs managerId (and employee info) so the next human-task can use assignedUserIds: {{ variables.managerId }}
|
|
12
|
-
* and only that manager sees the task in the task board.
|
|
13
|
-
*
|
|
14
|
-
* Execution Mode: backend
|
|
15
|
-
* Activity Type: workflow-activity:assign-to-manager
|
|
16
|
-
*/
|
|
17
|
-
class AssignToManagerActivity {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.entityStorage = inject(AXPEntityStorageService);
|
|
20
|
-
}
|
|
21
|
-
async execute(input) {
|
|
22
|
-
const leaveRequestId = input.leaveRequestId;
|
|
23
|
-
let managerId = null;
|
|
24
|
-
let employee = { displayName: '' };
|
|
25
|
-
if (leaveRequestId) {
|
|
26
|
-
try {
|
|
27
|
-
const leaveRequest = (await this.entityStorage.getOne(LEAVE_REQUEST_ENTITY, leaveRequestId));
|
|
28
|
-
if (leaveRequest?.employeeId) {
|
|
29
|
-
const emp = (await this.entityStorage.getOne(EMPLOYEE_ENTITY, leaveRequest.employeeId));
|
|
30
|
-
if (emp) {
|
|
31
|
-
employee = {
|
|
32
|
-
displayName: emp.person?.displayName ?? emp.displayName ?? '',
|
|
33
|
-
...emp,
|
|
34
|
-
};
|
|
35
|
-
const managerEmployeeId = emp.managerId;
|
|
36
|
-
if (managerEmployeeId) {
|
|
37
|
-
const managerEmp = (await this.entityStorage.getOne(EMPLOYEE_ENTITY, managerEmployeeId));
|
|
38
|
-
managerId = managerEmp?.userId ?? managerEmployeeId;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (!employee.displayName && leaveRequest) {
|
|
43
|
-
employee = {
|
|
44
|
-
displayName: leaveRequest.employeeName ??
|
|
45
|
-
leaveRequest.employee?.person?.displayName ??
|
|
46
|
-
leaveRequest.employee?.displayName ??
|
|
47
|
-
'',
|
|
48
|
-
...(leaveRequest.employee ?? {}),
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// keep default employee and managerId null
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
success: true,
|
|
58
|
-
data: {
|
|
59
|
-
managerId,
|
|
60
|
-
employee,
|
|
61
|
-
leaveRequestId,
|
|
62
|
-
},
|
|
63
|
-
metadata: {
|
|
64
|
-
outcome: 'done',
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AssignToManagerActivity, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
69
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AssignToManagerActivity, providedIn: 'root' }); }
|
|
70
|
-
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AssignToManagerActivity, decorators: [{
|
|
72
|
-
type: Injectable,
|
|
73
|
-
args: [{
|
|
74
|
-
providedIn: 'root',
|
|
75
|
-
}]
|
|
76
|
-
}] });
|
|
77
|
-
|
|
78
|
-
export { AssignToManagerActivity };
|
|
79
|
-
//# sourceMappingURL=acorex-connectivity-mock-assign-to-manager.activity-DTPM1eU1.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-assign-to-manager.activity-DTPM1eU1.mjs","sources":["../../../../libs/connectivity/mock/src/lib/workflow-management/activities/assign-to-manager.activity.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXPEntityStorageService } from '@acorex/platform/layout/entity';\n\nconst LEAVE_REQUEST_ENTITY = 'HumanCapitalManagement.LeaveRequest';\nconst EMPLOYEE_ENTITY = 'HumanCapitalManagement.Employee';\n\nexport interface AssignToManagerInput {\n leaveRequestId: string;\n}\n\nexport interface AssignToManagerOutput {\n managerId: string | null;\n employee: { displayName: string; [key: string]: any };\n leaveRequestId?: string;\n}\n\n/**\n * Assign To Manager Activity (Backend - Mock)\n *\n * Resolves the manager from Leave Request → Employee → managerId.\n * Outputs managerId (and employee info) so the next human-task can use assignedUserIds: {{ variables.managerId }}\n * and only that manager sees the task in the task board.\n *\n * Execution Mode: backend\n * Activity Type: workflow-activity:assign-to-manager\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AssignToManagerActivity implements AXPCommand<AssignToManagerInput, AssignToManagerOutput> {\n private readonly entityStorage = inject(AXPEntityStorageService);\n\n async execute(input: AssignToManagerInput): Promise<AXPExecuteCommandResult<AssignToManagerOutput>> {\n const leaveRequestId = input.leaveRequestId;\n let managerId: string | null = null;\n let employee: { displayName: string; [key: string]: any } = { displayName: '' };\n\n if (leaveRequestId) {\n try {\n const leaveRequest = (await this.entityStorage.getOne(LEAVE_REQUEST_ENTITY, leaveRequestId)) as {\n employeeId?: string;\n employee?: any;\n employeeName?: string;\n } | null;\n if (leaveRequest?.employeeId) {\n const emp = (await this.entityStorage.getOne(EMPLOYEE_ENTITY, leaveRequest.employeeId)) as {\n managerId?: string;\n userId?: string;\n displayName?: string;\n person?: { displayName?: string };\n } | null;\n if (emp) {\n employee = {\n displayName: emp.person?.displayName ?? emp.displayName ?? '',\n ...emp,\n };\n const managerEmployeeId = emp.managerId;\n if (managerEmployeeId) {\n const managerEmp = (await this.entityStorage.getOne(EMPLOYEE_ENTITY, managerEmployeeId)) as {\n userId?: string;\n } | null;\n managerId = managerEmp?.userId ?? managerEmployeeId;\n }\n }\n }\n if (!employee.displayName && leaveRequest) {\n employee = {\n displayName:\n (leaveRequest as any).employeeName ??\n (leaveRequest as any).employee?.person?.displayName ??\n (leaveRequest as any).employee?.displayName ??\n '',\n ...((leaveRequest as any).employee ?? {}),\n };\n }\n } catch {\n // keep default employee and managerId null\n }\n }\n\n return {\n success: true,\n data: {\n managerId,\n employee,\n leaveRequestId,\n },\n metadata: {\n outcome: 'done',\n },\n };\n }\n}\n"],"names":[],"mappings":";;;;AAKA,MAAM,oBAAoB,GAAG,qCAAqC;AAClE,MAAM,eAAe,GAAG,iCAAiC;AAYzD;;;;;;;;;AASG;MAIU,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AA8DjE,IAAA;IA5DC,MAAM,OAAO,CAAC,KAA2B,EAAA;AACvC,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc;QAC3C,IAAI,SAAS,GAAkB,IAAI;AACnC,QAAA,IAAI,QAAQ,GAAgD,EAAE,WAAW,EAAE,EAAE,EAAE;QAE/E,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI;AACF,gBAAA,MAAM,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAInF;AACR,gBAAA,IAAI,YAAY,EAAE,UAAU,EAAE;AAC5B,oBAAA,MAAM,GAAG,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,UAAU,CAAC,CAK9E;oBACR,IAAI,GAAG,EAAE;AACP,wBAAA,QAAQ,GAAG;4BACT,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE;AAC7D,4BAAA,GAAG,GAAG;yBACP;AACD,wBAAA,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS;wBACvC,IAAI,iBAAiB,EAAE;AACrB,4BAAA,MAAM,UAAU,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAE/E;AACR,4BAAA,SAAS,GAAG,UAAU,EAAE,MAAM,IAAI,iBAAiB;wBACrD;oBACF;gBACF;AACA,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,YAAY,EAAE;AACzC,oBAAA,QAAQ,GAAG;wBACT,WAAW,EACR,YAAoB,CAAC,YAAY;AACjC,4BAAA,YAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW;4BAClD,YAAoB,CAAC,QAAQ,EAAE,WAAW;4BAC3C,EAAE;AACJ,wBAAA,IAAK,YAAoB,CAAC,QAAQ,IAAI,EAAE,CAAC;qBAC1C;gBACH;YACF;AAAE,YAAA,MAAM;;YAER;QACF;QAEA,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,IAAI,EAAE;gBACJ,SAAS;gBACT,QAAQ;gBACR,cAAc;AACf,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;IACH;8GA9DW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-chat-generate-image.command-BYNcjNoo.mjs","sources":["../../../../libs/connectivity/mock/src/lib/ai-management/commands/chat-generate-image.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AI_CHAT_GENERATED_IMAGE_REF_TYPE,\n AI_GENERATED_IMAGE_MAX_REMOTE_URL_IN_TOOL,\n AXPAiChatToolRunContextService,\n blobOrFileFromImageResult,\n persistAiGeneratedImage,\n RootConfig,\n} from '@acorex/modules/ai-management';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\n\nimport type { AXMAiAssistRow } from '../ai-agent-engine.types';\nimport { resolveDelegatedAssistOptionModel } from '../ai-delegated-agent-parameters.util';\nimport { AXCAiChatRouterService } from '../chat/ai-chat-router.service';\n\n//#endregion\n\n//#region ---- Command: AiManagement:ChatGenerateImage ----\n\nexport interface AiManagementChatGenerateImageInput {\n /** Catalog `AiModel` row id for an image-purpose model. When omitted, uses `delegatedAgents[].options.model` for the active delegated specialist (`agentId` in run context). */\n model?: string;\n prompt?: string;\n size?: string;\n style?: string;\n}\n\nfunction parseGenerateImageInput(args: unknown):\n | { ok: true; model?: string; prompt: string; size?: string; style?: string }\n | { ok: false; error: string } {\n const obj =\n args != null && typeof args === 'object' && !Array.isArray(args)\n ? (args as Record<string, unknown>)\n : null;\n if (!obj) {\n return { ok: false, error: 'Invalid arguments: expected an object.' };\n }\n const prompt = typeof obj['prompt'] === 'string' ? obj['prompt'].trim() : '';\n if (!prompt) {\n return { ok: false, error: 'Invalid arguments: \"prompt\" is required and must be non-empty.' };\n }\n const model = typeof obj['model'] === 'string' ? obj['model'].trim() : undefined;\n const size = typeof obj['size'] === 'string' ? obj['size'].trim() : undefined;\n const style = typeof obj['style'] === 'string' ? obj['style'].trim() : undefined;\n return {\n ok: true,\n prompt,\n ...(model ? { model } : {}),\n ...(size ? { size } : {}),\n ...(style ? { style } : {}),\n };\n}\n\n@Injectable()\nexport class AiManagementChatGenerateImageCommand\n implements AXPCommand<AiManagementChatGenerateImageInput, { fileId?: string; prompt: string; imageUrl?: string }>\n{\n private readonly aiChatRouter = inject(AXCAiChatRouterService);\n private readonly runContext = inject(AXPAiChatToolRunContextService);\n private readonly fileStorage = inject(AXPFileStorageService);\n private readonly entityService = inject(AXPEntityService);\n\n private readonly assistData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assist.name)\n .data<string, AXMAiAssistRow, AXMAiAssistRow, AXMAiAssistRow, AXMAiAssistRow>();\n\n async execute(\n input: AiManagementChatGenerateImageInput,\n ): Promise<AXPExecuteCommandResult<{ fileId?: string; prompt: string; imageUrl?: string }>> {\n const ctx = this.runContext.getContext();\n if (!ctx?.assistId?.trim()) {\n return {\n success: false,\n message: {\n text: 'Image generation requires an active AI chat run context (assist id).',\n },\n };\n }\n\n const parsed = parseGenerateImageInput(input);\n if (!parsed.ok) {\n return { success: false, message: { text: parsed.error } };\n }\n\n try {\n const assist = await this.assistData.byKey(ctx.assistId.trim());\n if (!assist) {\n return {\n success: false,\n message: { text: `Assist row was not found (id: ${ctx.assistId.trim()}).` },\n };\n }\n\n const modelEntityId =\n parsed.model?.trim() || resolveDelegatedAssistOptionModel(assist, ctx.agentId) || '';\n if (!modelEntityId) {\n return {\n success: false,\n message: {\n text:\n 'No image model: pass \"model\" (catalog id) or set options.model on the image-generation delegated specialist row for this assist.',\n },\n };\n }\n\n let composedPrompt = parsed.prompt;\n if (parsed.style?.trim()) {\n composedPrompt = `${composedPrompt}\\nStyle: ${parsed.style.trim()}`;\n }\n\n const { imageUrl } = await this.aiChatRouter.generateImage({\n modelEntityId,\n prompt: composedPrompt,\n size: parsed.size?.trim() || undefined,\n });\n\n try {\n const file = await blobOrFileFromImageResult(imageUrl);\n const { fileId } = await persistAiGeneratedImage(this.fileStorage, file, {\n refId: assist.id,\n refType: AI_CHAT_GENERATED_IMAGE_REF_TYPE,\n });\n return { success: true, data: { fileId, prompt: parsed.prompt } };\n } catch (persistErr) {\n const u = imageUrl.trim();\n if (u.startsWith('https://') && u.length <= AI_GENERATED_IMAGE_MAX_REMOTE_URL_IN_TOOL) {\n return {\n success: true,\n data: { prompt: parsed.prompt, imageUrl: u },\n };\n }\n const pmsg = persistErr instanceof Error ? persistErr.message : String(persistErr);\n throw new Error(`Could not store generated image for chat replay. ${pmsg}`);\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n return { success: false, message: { text: msg } };\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|