@fluxo-dev/api-client-base 26.2.5 → 26.3.1

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.
Files changed (27) hide show
  1. package/index.cjs.js +2405 -1616
  2. package/package.json +2 -2
  3. package/src/lib/ai/ai.service.d.ts +160 -145
  4. package/src/lib/ai/index.d.ts +1 -1
  5. package/src/lib/ai/models/index.d.ts +566 -12
  6. package/src/lib/communication/mail-template/email-template.service.d.ts +3 -1
  7. package/src/lib/communication/mail-template/models/email-template-catalog-entry.d.ts +9 -0
  8. package/src/lib/communication/mail-template/models/email-template-type.d.ts +2 -1
  9. package/src/lib/communication/mail-template/models/email-template.d.ts +3 -0
  10. package/src/lib/communication/mail-template/models/index.d.ts +1 -0
  11. package/src/lib/configuration/configuration.service.d.ts +7 -1
  12. package/src/lib/configuration/models/index.d.ts +1 -0
  13. package/src/lib/configuration/models/module-variable.d.ts +23 -0
  14. package/src/lib/fluxo-client.d.ts +3 -3
  15. package/src/lib/fluxo-state-dispatcher.d.ts +3 -0
  16. package/src/lib/ai/models/agent.d.ts +0 -21
  17. package/src/lib/ai/models/create-agent.d.ts +0 -6
  18. package/src/lib/ai/models/create-llm-settings.d.ts +0 -17
  19. package/src/lib/ai/models/create-mcp-server.d.ts +0 -22
  20. package/src/lib/ai/models/create-orchestration.d.ts +0 -9
  21. package/src/lib/ai/models/llm-settings.d.ts +0 -25
  22. package/src/lib/ai/models/mcp-server.d.ts +0 -38
  23. package/src/lib/ai/models/orchestration.d.ts +0 -27
  24. package/src/lib/ai/models/update-agent.d.ts +0 -6
  25. package/src/lib/ai/models/update-llm-settings.d.ts +0 -10
  26. package/src/lib/ai/models/update-mcp-server.d.ts +0 -20
  27. package/src/lib/ai/models/update-orchestration.d.ts +0 -9
@@ -1,12 +1,566 @@
1
- export * from './create-llm-settings';
2
- export * from './llm-settings';
3
- export * from './update-llm-settings';
4
- export * from './agent';
5
- export * from './create-agent';
6
- export * from './update-agent';
7
- export * from './orchestration';
8
- export * from './create-orchestration';
9
- export * from './update-orchestration';
10
- export * from './mcp-server';
11
- export * from './create-mcp-server';
12
- export * from './update-mcp-server';
1
+ export declare enum LlmProvider {
2
+ OpenAI = 1,
3
+ AzureOpenAI = 2,
4
+ Anthropic = 3,
5
+ Google = 4,
6
+ Ollama = 5,
7
+ Custom = 99
8
+ }
9
+ export declare enum WorkflowPattern {
10
+ Sequential = 1,
11
+ Concurrent = 2,
12
+ Handoff = 3,
13
+ GroupChat = 4,
14
+ Magentic = 5,
15
+ Custom = 99
16
+ }
17
+ export declare enum ChatMessageRole {
18
+ User = 1,
19
+ Assistant = 2,
20
+ System = 3,
21
+ Tool = 4
22
+ }
23
+ export type ChatTargetType = 'agent' | 'workflow';
24
+ export interface LlmConfigDto {
25
+ id: number;
26
+ name: string;
27
+ provider: LlmProvider;
28
+ model: string;
29
+ apiKeyMasked?: string;
30
+ endpointUrl?: string | null;
31
+ additionalParameters?: string | null;
32
+ isDefault: boolean;
33
+ createdAt: string;
34
+ /** USD per 1M input tokens — optional; drives the chat cost popover. */
35
+ inputCostPer1MTokens?: number | null;
36
+ /** USD per 1M output tokens — optional. */
37
+ outputCostPer1MTokens?: number | null;
38
+ }
39
+ export interface CreateLlmConfigCommand {
40
+ name: string;
41
+ provider: LlmProvider;
42
+ model: string;
43
+ apiKey?: string | null;
44
+ endpointUrl?: string | null;
45
+ additionalParameters?: string | null;
46
+ isDefault?: boolean;
47
+ inputCostPer1MTokens?: number | null;
48
+ outputCostPer1MTokens?: number | null;
49
+ }
50
+ export interface UpdateLlmConfigCommand {
51
+ name: string;
52
+ provider: LlmProvider;
53
+ model: string;
54
+ apiKey?: string | null;
55
+ endpointUrl?: string | null;
56
+ additionalParameters?: string | null;
57
+ isDefault?: boolean;
58
+ inputCostPer1MTokens?: number | null;
59
+ outputCostPer1MTokens?: number | null;
60
+ }
61
+ export interface AiAgentDto {
62
+ id: number;
63
+ name: string;
64
+ description?: string | null;
65
+ systemPrompt?: string | null;
66
+ llmConfigurationId: number;
67
+ llmConfigurationName?: string;
68
+ maxIterations: number;
69
+ isPublic: boolean;
70
+ createdAt: string;
71
+ enabledToolIds: string[];
72
+ /** Ids of McpServerConfiguration linked to this agent. */
73
+ enabledMcpServerIds: number[];
74
+ /** Ids of AiSkill linked to this agent. */
75
+ enabledSkillIds: number[];
76
+ }
77
+ export interface CreateAgentCommand {
78
+ name: string;
79
+ description?: string | null;
80
+ systemPrompt?: string | null;
81
+ llmConfigurationId: number;
82
+ maxIterations?: number;
83
+ isPublic?: boolean;
84
+ }
85
+ export interface UpdateAgentCommand extends CreateAgentCommand {
86
+ }
87
+ export interface UpdateAgentToolsCommand {
88
+ toolIds: string[];
89
+ }
90
+ export interface UpdateAgentMcpServersCommand {
91
+ mcpServerIds: number[];
92
+ }
93
+ export interface UpdateAgentSkillsCommand {
94
+ skillIds: number[];
95
+ }
96
+ export interface AiToolDto {
97
+ id: string;
98
+ name: string;
99
+ description: string;
100
+ category?: string | null;
101
+ parametersSchema?: string | null;
102
+ }
103
+ export interface AiWorkflowAgentEntry {
104
+ agentConfigurationId: number;
105
+ order: number;
106
+ role?: string | null;
107
+ /** Handoff/Magentic: marks the orchestrator/manager slot. Exactly one per workflow. */
108
+ isRouter?: boolean;
109
+ /** Handoff: natural-language hint shown to the router LLM so it knows when to delegate. */
110
+ handoffDescription?: string | null;
111
+ }
112
+ export interface AiWorkflowDto {
113
+ id: number;
114
+ name: string;
115
+ description?: string | null;
116
+ pattern: WorkflowPattern;
117
+ /** Upper bound on loop iterations (GroupChat / Magentic / Handoff back-references). */
118
+ maxIterations: number;
119
+ /** Optional system prompt for patterns with a manager LLM (GroupChat selector, Magentic). */
120
+ managerSystemPrompt?: string | null;
121
+ isPublic: boolean;
122
+ createdAt: string;
123
+ updatedAt: string;
124
+ agents: AiWorkflowAgentEntry[];
125
+ }
126
+ export interface CreateAiWorkflowCommand {
127
+ name: string;
128
+ description?: string | null;
129
+ pattern?: WorkflowPattern;
130
+ maxIterations?: number;
131
+ managerSystemPrompt?: string | null;
132
+ isPublic?: boolean;
133
+ }
134
+ export interface UpdateAiWorkflowCommand extends CreateAiWorkflowCommand {
135
+ }
136
+ export interface UpdateAiWorkflowAgentsCommand {
137
+ agents: AiWorkflowAgentEntry[];
138
+ }
139
+ /**
140
+ * Multimodal input profile for a chat target. Drives the paperclip UI: the frontend hides
141
+ * it entirely on targets that don't accept any attachments, and uses the MIME whitelist /
142
+ * size cap to validate before hitting the network.
143
+ */
144
+ export interface AiChatCapabilitiesDto {
145
+ supportsImages: boolean;
146
+ supportsPdf: boolean;
147
+ maxAttachmentBytes: number;
148
+ /**
149
+ * Full set of MIME types accepted by the file picker. May include skill-staging
150
+ * types (e.g. .pptx/.docx) on agents with skills linked — those don't go to the
151
+ * LLM as content blocks (the bridge stages them in the script's cwd instead).
152
+ */
153
+ acceptedMimeTypes: string[];
154
+ /**
155
+ * Strict subset of `acceptedMimeTypes` the LLM consumes inline as content blocks.
156
+ * Currently the FE doesn't need to consult this list (the BE filters at dispatch
157
+ * time), but it's exposed for future UI hints (e.g. "this PDF will be read by the
158
+ * model" vs "this .pptx will be passed to a skill script").
159
+ */
160
+ llmInlineMimeTypes: string[];
161
+ }
162
+ export interface ChatTargetDto {
163
+ id: number;
164
+ type: ChatTargetType;
165
+ name: string;
166
+ description: string | null;
167
+ /** URL AG-UI da usare come runtimeUrl in CopilotKit (relativo, es. `/ai/agui/agent/1`) */
168
+ aguiUrl: string;
169
+ capabilities: AiChatCapabilitiesDto;
170
+ }
171
+ export interface StartConversationCommand {
172
+ /** Esattamente uno tra agentId e workflowId deve essere valorizzato */
173
+ agentId?: number | null;
174
+ workflowId?: number | null;
175
+ }
176
+ export interface StartConversationResult {
177
+ /** GUID — passare a CopilotKit come threadId */
178
+ threadId: string;
179
+ /** Passare a CopilotKit come runtimeUrl */
180
+ aguiUrl: string;
181
+ }
182
+ export interface ChatConversationSummaryDto {
183
+ id: string;
184
+ title: string | null;
185
+ targetName: string | null;
186
+ targetType: ChatTargetType;
187
+ agentId: number | null;
188
+ workflowId: number | null;
189
+ messageCount: number;
190
+ createdAt: string;
191
+ updatedAt: string;
192
+ /** User-assigned tags. Empty array when none. Lowercased server-side. */
193
+ tags?: string[];
194
+ }
195
+ export interface ChatConversationDetailDto {
196
+ id: string;
197
+ title: string | null;
198
+ targetName: string | null;
199
+ targetType: ChatTargetType;
200
+ agentId: number | null;
201
+ workflowId: number | null;
202
+ /** URL AG-UI per riprendere la sessione */
203
+ aguiUrl: string;
204
+ createdAt: string;
205
+ updatedAt: string;
206
+ /**
207
+ * ExternalId of the currently-active leaf in the conversation tree. The frontend uses it
208
+ * to populate `lastAssistantMessageIdRef` on load AND to drive "you're on branch X" UI.
209
+ * Null only on empty conversations.
210
+ */
211
+ activeLeafExternalId: string | null;
212
+ /** Multimodal capability profile of the target backing this conversation. */
213
+ capabilities: AiChatCapabilitiesDto;
214
+ /**
215
+ * LLM model id used by the conversation's target (e.g. "claude-haiku-4-5-20251001").
216
+ * Null for workflows (they aggregate multiple agents, each with its own model).
217
+ */
218
+ model?: string | null;
219
+ /** LLM provider (e.g. "Anthropic", "OpenAI"). Pairs with `model`. */
220
+ provider?: string | null;
221
+ /**
222
+ * USD per 1 000 000 input tokens — configured server-side on the LlmConfiguration.
223
+ * Null when the admin hasn't set a price; the frontend then hides the cost row.
224
+ */
225
+ inputCostPer1MTokens?: number | null;
226
+ /** USD per 1 000 000 output tokens. See `inputCostPer1MTokens`. */
227
+ outputCostPer1MTokens?: number | null;
228
+ /** Lifetime token usage for this conversation, used for the cost-transparency UI. */
229
+ usage?: AiChatUsageDto;
230
+ /**
231
+ * The active-branch chain (root → leaf), each entry carrying sibling metadata for the
232
+ * branch navigator. NOT paginated — a single chain is bounded by definition.
233
+ */
234
+ messages: AiChatMessageDto[];
235
+ }
236
+ /** Per-conversation token-usage summary. Cost computation is client-side. */
237
+ export interface AiChatUsageDto {
238
+ inputTokens: number;
239
+ outputTokens: number;
240
+ totalTokens?: number;
241
+ }
242
+ export interface RenameConversationCommand {
243
+ title: string;
244
+ }
245
+ /** Body of `PUT /chat/conversation/{id}/tags`. Replaces ALL tags atomically. */
246
+ export interface UpdateConversationTagsCommand {
247
+ tags: string[];
248
+ }
249
+ /**
250
+ * Body of `PUT /chat/conversation/{id}/active-leaf`. Pass the ExternalId of the message you
251
+ * want to make the active "tip" of the conversation. The backend persists this; the next
252
+ * `getConversation` returns the chain walked from that ExternalId back to the root.
253
+ */
254
+ export interface SetActiveLeafCommand {
255
+ externalId: string;
256
+ }
257
+ export interface AiChatMessageDto {
258
+ id: number;
259
+ /** Stable UUID pre-generated by the client; the API uses this as the message identity. */
260
+ externalId: string;
261
+ /** ExternalId of the parent message in the conversation tree; null for the first message. */
262
+ parentExternalId?: string | null;
263
+ conversationId: string;
264
+ role: ChatMessageRole;
265
+ content: string;
266
+ /** Valorizzato per tool_use / tool_result — collega il risultato alla call originaria. */
267
+ toolCallId?: string | null;
268
+ /** Valorizzato solo per i messaggi tool */
269
+ toolName?: string | null;
270
+ /** JSON serializzato degli argomenti al tool */
271
+ toolArguments?: string | null;
272
+ /**
273
+ * Sub-agent name that produced this assistant row in a workflow chat (e.g. "Router",
274
+ * "Assistente vendite"). Drives the per-bubble header label. Null for single-agent chats
275
+ * and non-assistant rows.
276
+ */
277
+ authorName?: string | null;
278
+ createdAt: string;
279
+ /**
280
+ * ExternalIds of every message that shares this message's parent (including itself),
281
+ * ordered by CreatedAt. Lets the UI render a branch navigator (< n/N >) on messages that
282
+ * have edit-siblings. Empty list when the message has no siblings (root row, or only
283
+ * child of its parent).
284
+ */
285
+ siblingExternalIds: string[];
286
+ /** Zero-based index of this message within `siblingExternalIds`. */
287
+ siblingIndex: number;
288
+ /**
289
+ * Binary attachments bound to this message (only meaningful for user role). Empty when
290
+ * the message has no attachments. Each entry carries metadata + a relative ContentUrl
291
+ * the frontend uses for thumbnails / downloads.
292
+ */
293
+ attachments: AiChatAttachmentDto[];
294
+ }
295
+ /**
296
+ * Persisted attachment metadata. The bytes live in the application's IFluxoBlobStore
297
+ * implementation; this object only carries identity, MIME, and a resolvable URL.
298
+ */
299
+ /**
300
+ * Origin of an attachment. Mirrors the C# enum <c>AiChatAttachmentSource</c>.
301
+ * The chat UI's attachments drawer surfaces this as a small badge so users
302
+ * know whether they uploaded the file themselves or whether a skill script
303
+ * produced it.
304
+ */
305
+ export declare enum AiChatAttachmentSource {
306
+ User = 0,
307
+ SkillOutput = 1
308
+ }
309
+ export interface AiChatAttachmentDto {
310
+ /** DB id used to reference the row in the attachment-ids header at send time. */
311
+ id: number;
312
+ /** ExternalId of the bound user message. Null for orphan (uploaded but never sent). */
313
+ messageExternalId: string | null;
314
+ fileName: string;
315
+ mimeType: string;
316
+ sizeBytes: number;
317
+ /** Server-relative URL (`/ai/chat/conversation/{id}/attachments/{id}/content`). */
318
+ contentUrl: string;
319
+ createdAt: string;
320
+ /** Provenance — drives the badge / icon shown in the drawer. */
321
+ source: AiChatAttachmentSource;
322
+ /** When source=SkillOutput, the name of the script that produced this file. Null otherwise. */
323
+ producedByScriptName: string | null;
324
+ /**
325
+ * LLM-supplied tool_call id (matches `ToolCallChatMessage.toolCallId`) of the
326
+ * tool_call whose execution produced this file. Used by the chat UI to attribute
327
+ * the file chip to its specific tool_call card with O(1) deterministic equality.
328
+ * Null on user uploads or on harvests run outside an LLM tool-call context.
329
+ */
330
+ producedByToolCallId: string | null;
331
+ }
332
+ export interface PagedResult<T> {
333
+ items: T[];
334
+ totalCount: number;
335
+ page: number;
336
+ pageSize: number;
337
+ totalPages: number;
338
+ }
339
+ export interface AiPromptTemplateDto {
340
+ id: number;
341
+ title: string;
342
+ body: string;
343
+ tags: string[];
344
+ /**
345
+ * Agents this template is scoped to. Empty = global (visible to every chat).
346
+ * Non-empty = visible only when the active conversation's `agentId` matches one
347
+ * of these ids. Workflow conversations (no single agentId) only see globals.
348
+ */
349
+ agentIds: number[];
350
+ /** FluxoUser.Id of the original author. Audit-only — does not gate edit/delete. */
351
+ createdByUserId: string;
352
+ createdAt: string;
353
+ updatedAt: string;
354
+ }
355
+ export interface CreateAiPromptTemplateCommand {
356
+ title: string;
357
+ body: string;
358
+ tags?: string[];
359
+ /** Empty / undefined = global. */
360
+ agentIds?: number[];
361
+ }
362
+ export interface UpdateAiPromptTemplateCommand {
363
+ title: string;
364
+ body: string;
365
+ tags?: string[];
366
+ agentIds?: number[];
367
+ }
368
+ /**
369
+ * Transport protocol of an MCP server. Values match the C# enum
370
+ * <c>McpServerTransport</c> on the BE (Stdio=1, Sse=2).
371
+ */
372
+ export declare enum McpServerTransport {
373
+ Stdio = 1,
374
+ Sse = 2
375
+ }
376
+ /**
377
+ * Authentication scheme applied to MCP transport requests. Values match the
378
+ * C# enum <c>McpServerAuthType</c>. OAuth (=4) reserved for future use.
379
+ */
380
+ export declare enum McpServerAuthType {
381
+ None = 1,
382
+ ApiKey = 2,
383
+ Bearer = 3
384
+ }
385
+ export interface McpServerConfigurationDto {
386
+ id: number;
387
+ name: string;
388
+ description?: string | null;
389
+ transport: McpServerTransport;
390
+ /** Stdio: executable name. Null for other transports. */
391
+ command?: string | null;
392
+ /** Stdio: argv. Empty for other transports. */
393
+ arguments: string[];
394
+ /** Sse: server URL. Null for other transports. */
395
+ endpoint?: string | null;
396
+ authType: McpServerAuthType;
397
+ /** `***xxxx` mask of the encrypted secret, or null when no auth is set. */
398
+ authSecretMasked?: string | null;
399
+ authHeaderName?: string | null;
400
+ requireApproval: boolean;
401
+ toolListCacheTtlMinutes: number;
402
+ isEnabled: boolean;
403
+ createdAt: string;
404
+ updatedAt: string;
405
+ }
406
+ export interface CreateMcpServerCommand {
407
+ name: string;
408
+ description?: string | null;
409
+ transport: McpServerTransport;
410
+ command?: string | null;
411
+ arguments?: string[];
412
+ endpoint?: string | null;
413
+ authType: McpServerAuthType;
414
+ /** Plaintext — encrypted server-side. */
415
+ authSecret?: string | null;
416
+ authHeaderName?: string | null;
417
+ requireApproval: boolean;
418
+ toolListCacheTtlMinutes: number;
419
+ isEnabled: boolean;
420
+ }
421
+ export interface UpdateMcpServerCommand extends CreateMcpServerCommand {
422
+ }
423
+ export interface McpServerTestResultDto {
424
+ success: boolean;
425
+ toolNames: string[];
426
+ error?: string | null;
427
+ durationMs?: number | null;
428
+ }
429
+ /**
430
+ * One tool the agent has access to at runtime. Returned by
431
+ * `GET /agent/{id}/available-tools` for both native (server-registered) and
432
+ * MCP (pulled from a linked MCP server's pool) tools. The FE uses `source` to
433
+ * tag the tool_call card and group the /tools modal.
434
+ */
435
+ export interface AvailableToolDto {
436
+ name: string;
437
+ description?: string | null;
438
+ /** `'native'` or `'mcp:<server-name>'`. */
439
+ source: string;
440
+ requiresApproval: boolean;
441
+ }
442
+ /**
443
+ * One skill currently linked to the agent. Returned by
444
+ * `GET /agent/{id}/available-skills`. The FE uses `name` to match the
445
+ * `skillName` argument carried by the synthetic skill tool_calls
446
+ * (`load_skill`, `read_skill_resource`, `run_skill_script`) and attribute
447
+ * the call back to a row in the chat UI / `/tools` modal.
448
+ */
449
+ export interface AvailableSkillDto {
450
+ id: number;
451
+ name: string;
452
+ description: string;
453
+ resourceCount: number;
454
+ scriptCount: number;
455
+ /** Number of supporting files attached via the tree-faithful import path. */
456
+ fileCount: number;
457
+ /** Mirrors the global per-skill flag. Stored but not enforced in v1. */
458
+ requireApproval: boolean;
459
+ }
460
+ /** Maps 1:1 to the C# enum AiSkillScriptLanguage. */
461
+ export declare enum AiSkillScriptLanguage {
462
+ Python = 1,
463
+ JavaScript = 2,
464
+ Bash = 3
465
+ }
466
+ /**
467
+ * Maps 1:1 to the C# enum AiSkillScriptRunner. `Wasm` is reserved for v2 (the
468
+ * Wasmtime-based sandbox runner) — picking it today returns an error from the
469
+ * registry lookup since no Wasm runner is registered in v1.
470
+ */
471
+ export declare enum AiSkillScriptRunner {
472
+ Subprocess = 1,
473
+ Wasm = 2
474
+ }
475
+ export interface AiSkillDto {
476
+ id: number;
477
+ name: string;
478
+ description: string;
479
+ instructions: string;
480
+ requireApproval: boolean;
481
+ createdByUserId: string;
482
+ createdAt: string;
483
+ updatedAt: string;
484
+ resources: AiSkillResourceDto[];
485
+ scripts: AiSkillScriptDto[];
486
+ /**
487
+ * Supporting files (tree-faithful import path). Metadata only — fetch the
488
+ * bytes on demand via `GET /ai/skill/{skillId}/files/{fileId}/content`. Empty
489
+ * for hand-authored skills that rely on resources + scripts.
490
+ */
491
+ files: AiSkillFileDto[];
492
+ }
493
+ export interface AiSkillFileDto {
494
+ id: number;
495
+ /** Forward-slash, relative to skill root. E.g. `"scripts/office/helpers/merge_runs.py"`. */
496
+ relativePath: string;
497
+ mimeType: string;
498
+ sizeBytes: number;
499
+ createdAt: string;
500
+ }
501
+ /** Content-fetch payload for a single file. Content is base64-encoded by ASP.NET's
502
+ * System.Text.Json byte[] serialiser. Decode client-side when rendering. */
503
+ export interface AiSkillFileContentDto {
504
+ id: number;
505
+ relativePath: string;
506
+ mimeType: string;
507
+ sizeBytes: number;
508
+ /** Base64-encoded raw bytes. */
509
+ content: string;
510
+ }
511
+ export interface AiSkillResourceDto {
512
+ id: number;
513
+ name: string;
514
+ description?: string | null;
515
+ content: string;
516
+ }
517
+ export interface AiSkillScriptDto {
518
+ id: number;
519
+ name: string;
520
+ description?: string | null;
521
+ parametersSchema: string;
522
+ language: AiSkillScriptLanguage;
523
+ runner: AiSkillScriptRunner;
524
+ body: string;
525
+ }
526
+ /**
527
+ * Create/update commands carry the same shape. Nested rows: include `id` for
528
+ * existing rows to preserve identity through the BE diff; omit / null for new
529
+ * rows; rows in the DB but absent from the command list get deleted.
530
+ */
531
+ export interface CreateAiSkillCommand {
532
+ name: string;
533
+ description: string;
534
+ instructions: string;
535
+ requireApproval: boolean;
536
+ resources: AiSkillResourceCommand[];
537
+ scripts: AiSkillScriptCommand[];
538
+ }
539
+ export type UpdateAiSkillCommand = CreateAiSkillCommand;
540
+ export interface AiSkillResourceCommand {
541
+ /** Existing row id when editing, null/undefined when creating fresh. */
542
+ id?: number | null;
543
+ name: string;
544
+ description?: string | null;
545
+ content: string;
546
+ }
547
+ export interface AiSkillScriptCommand {
548
+ id?: number | null;
549
+ name: string;
550
+ description?: string | null;
551
+ parametersSchema: string;
552
+ language: AiSkillScriptLanguage;
553
+ runner: AiSkillScriptRunner;
554
+ body: string;
555
+ }
556
+ export interface TestSkillScriptCommand {
557
+ argsJson: string;
558
+ timeoutSeconds?: number | null;
559
+ }
560
+ export interface AiSkillScriptTestResultDto {
561
+ success: boolean;
562
+ output?: string | null;
563
+ error?: string | null;
564
+ durationMs?: number | null;
565
+ exitCode?: number | null;
566
+ }
@@ -1,6 +1,8 @@
1
1
  import { BaseCommonService } from '../../infrastructure';
2
- import { EmailTemplate, EmailTemplateType, EmailTemplateVariableDescription } from './models';
2
+ import { EmailTemplate, EmailTemplateCatalogEntry, EmailTemplateType, EmailTemplateVariableDescription } from './models';
3
3
  export declare class EmailTemplateService extends BaseCommonService<EmailTemplate> {
4
4
  constructor();
5
+ getCatalog(): Promise<EmailTemplateCatalogEntry[]>;
5
6
  getVariablesDescription(type: EmailTemplateType): Promise<EmailTemplateVariableDescription[]>;
7
+ getVariablesDescriptionForCustomTemplate(slug: string): Promise<EmailTemplateVariableDescription[]>;
6
8
  }
@@ -0,0 +1,9 @@
1
+ import { EmailTemplate } from './email-template';
2
+ import { EmailTemplateType } from './email-template-type';
3
+ export interface EmailTemplateCatalogEntry {
4
+ typeId: EmailTemplateType;
5
+ slug: string | null;
6
+ displayName: string;
7
+ group: string;
8
+ templates: EmailTemplate[];
9
+ }
@@ -4,5 +4,6 @@ export declare enum EmailTemplateType {
4
4
  WelcomeWithCredentialsAndAccessLinkForExternalUser = 3,
5
5
  WelcomeWithCredentialsForExternalUser = 4,
6
6
  PasswordReset = 5,
7
- PasswordRecovery = 6
7
+ PasswordRecovery = 6,
8
+ Custom = 999
8
9
  }
@@ -7,4 +7,7 @@ export interface EmailTemplate {
7
7
  isDefault: boolean;
8
8
  subject: string;
9
9
  body: string;
10
+ slug?: string | null;
11
+ group?: string | null;
12
+ displayName?: string | null;
10
13
  }
@@ -1,3 +1,4 @@
1
1
  export * from './email-template';
2
+ export * from './email-template-catalog-entry';
2
3
  export * from './email-template-type';
3
4
  export * from './email-template-variable-description';
@@ -6,7 +6,7 @@ import { DomainRole } from "../security/domain-role/index";
6
6
  import { Permission } from "../security/permission/index";
7
7
  import { AppMenu } from "./app-menu";
8
8
  import { AppMenuCreateCommand } from "./app-menu-create-command";
9
- import { WebMenuExport } from './models';
9
+ import { WebMenuExport, ModuleVariableGroupDto } from './models';
10
10
  export type InitialConfiguration = {
11
11
  apps: FluxoApp[];
12
12
  menu: AppMenuItem[];
@@ -28,6 +28,10 @@ export type SystemSettings = {
28
28
  allowExternalUsers: boolean;
29
29
  twoFactorEnabled: boolean;
30
30
  isWorkflowEnabled: boolean;
31
+ isAIEnabled: boolean;
32
+ moduleVariables: {
33
+ [id: string]: string;
34
+ };
31
35
  };
32
36
  export declare enum FluxoACLMode {
33
37
  DomainRole = 1,
@@ -56,4 +60,6 @@ export declare class ConfigurationService {
56
60
  domainRoleId: number;
57
61
  frontends: string[];
58
62
  }[]>;
63
+ getModuleVariables(scope?: string, moduleName?: string): Promise<ModuleVariableGroupDto[]>;
64
+ updateModuleVariableValue(compositeId: string, value?: string): Promise<void>;
59
65
  }
@@ -3,3 +3,4 @@ export * from './feature';
3
3
  export * from './feature-list';
4
4
  export * from './update-routes-command';
5
5
  export * from './web-menu-export';
6
+ export * from './module-variable';
@@ -0,0 +1,23 @@
1
+ export interface ModuleVariableGroupDto {
2
+ scope: string;
3
+ moduleName: string;
4
+ description: string;
5
+ variables: ModuleVariableDto[];
6
+ }
7
+ export interface ModuleVariableDto {
8
+ id: string;
9
+ compositeId: string;
10
+ name: string;
11
+ description?: string;
12
+ type: 'String' | 'Boolean' | 'Int' | 'Decimal' | 'Select' | 'Secret';
13
+ defaultValue?: string;
14
+ value?: string;
15
+ effectiveValue?: string;
16
+ options?: string;
17
+ group?: string;
18
+ visibleWhenVariableId?: string;
19
+ visibleWhenValue?: string;
20
+ }
21
+ export interface UpdateModuleVariableValueCommand {
22
+ value?: string;
23
+ }