@ugm/desiagent 0.1.21 → 0.1.24

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 (38) hide show
  1. package/dist/core/execution/dags.d.ts +7 -19
  2. package/dist/core/execution/dags.d.ts.map +1 -1
  3. package/dist/core/execution/dags.js +267 -40
  4. package/dist/core/execution/dags.js.map +1 -1
  5. package/dist/core/execution/inference.d.ts +132 -0
  6. package/dist/core/execution/inference.d.ts.map +1 -0
  7. package/dist/core/execution/inference.js +112 -0
  8. package/dist/core/execution/inference.js.map +1 -0
  9. package/dist/core/providers/types.d.ts +22 -1
  10. package/dist/core/providers/types.d.ts.map +1 -1
  11. package/dist/core/tools/fetchPage.d.ts +1 -1
  12. package/dist/core/tools/llmExecute.d.ts +16 -16
  13. package/dist/core/tools/llmExecute.d.ts.map +1 -1
  14. package/dist/core/tools/llmExecute.js +39 -1
  15. package/dist/core/tools/llmExecute.js.map +1 -1
  16. package/dist/core/tools/readEmail.d.ts +2 -2
  17. package/dist/core/tools/sendEmail.d.ts +10 -10
  18. package/dist/core/tools/sendEmail.d.ts.map +1 -1
  19. package/dist/core/tools/sendEmail.js +5 -2
  20. package/dist/core/tools/sendEmail.js.map +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/types/client.d.ts +7 -19
  26. package/dist/types/client.d.ts.map +1 -1
  27. package/dist/types/config.d.ts +4 -4
  28. package/dist/types/config.d.ts.map +1 -1
  29. package/dist/types/config.js +1 -1
  30. package/dist/types/config.js.map +1 -1
  31. package/dist/types/execution.d.ts +1 -3
  32. package/dist/types/execution.d.ts.map +1 -1
  33. package/dist/types/execution.js.map +1 -1
  34. package/dist/util/logger.d.ts +7 -0
  35. package/dist/util/logger.d.ts.map +1 -1
  36. package/dist/util/logger.js +45 -3
  37. package/dist/util/logger.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Custom Inference Service
3
+ *
4
+ * Execute LLM inference using a named agent's prompt template.
5
+ * Resolves the active agent by name and uses its configuration.
6
+ */
7
+ import { z } from 'zod';
8
+ import type { DrizzleDB } from '../../db/client.js';
9
+ import type { UsageInfo } from '../providers/types.js';
10
+ export declare const CustomInferenceInputSchema: z.ZodObject<{
11
+ agentName: z.ZodString;
12
+ prompt: z.ZodString;
13
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
14
+ filename: z.ZodString;
15
+ content: z.ZodString;
16
+ mimeType: z.ZodOptional<z.ZodString>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ filename: string;
19
+ content: string;
20
+ mimeType?: string | undefined;
21
+ }, {
22
+ filename: string;
23
+ content: string;
24
+ mimeType?: string | undefined;
25
+ }>, "many">>;
26
+ params: z.ZodOptional<z.ZodObject<{
27
+ max_tokens: z.ZodOptional<z.ZodNumber>;
28
+ temperature: z.ZodOptional<z.ZodNumber>;
29
+ reasoning_effort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
32
+ max_tokens?: number | undefined;
33
+ temperature?: number | undefined;
34
+ }, {
35
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
36
+ max_tokens?: number | undefined;
37
+ temperature?: number | undefined;
38
+ }>>;
39
+ overrides: z.ZodOptional<z.ZodObject<{
40
+ provider: z.ZodOptional<z.ZodEnum<["openai", "openrouter", "ollama"]>>;
41
+ model: z.ZodOptional<z.ZodString>;
42
+ }, "strip", z.ZodTypeAny, {
43
+ model?: string | undefined;
44
+ provider?: "openai" | "openrouter" | "ollama" | undefined;
45
+ }, {
46
+ model?: string | undefined;
47
+ provider?: "openai" | "openrouter" | "ollama" | undefined;
48
+ }>>;
49
+ }, "strip", z.ZodTypeAny, {
50
+ prompt: string;
51
+ agentName: string;
52
+ params?: {
53
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
54
+ max_tokens?: number | undefined;
55
+ temperature?: number | undefined;
56
+ } | undefined;
57
+ attachments?: {
58
+ filename: string;
59
+ content: string;
60
+ mimeType?: string | undefined;
61
+ }[] | undefined;
62
+ overrides?: {
63
+ model?: string | undefined;
64
+ provider?: "openai" | "openrouter" | "ollama" | undefined;
65
+ } | undefined;
66
+ }, {
67
+ prompt: string;
68
+ agentName: string;
69
+ params?: {
70
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
71
+ max_tokens?: number | undefined;
72
+ temperature?: number | undefined;
73
+ } | undefined;
74
+ attachments?: {
75
+ filename: string;
76
+ content: string;
77
+ mimeType?: string | undefined;
78
+ }[] | undefined;
79
+ overrides?: {
80
+ model?: string | undefined;
81
+ provider?: "openai" | "openrouter" | "ollama" | undefined;
82
+ } | undefined;
83
+ }>;
84
+ export type CustomInferenceInput = z.infer<typeof CustomInferenceInputSchema>;
85
+ export interface CustomInferenceOutput {
86
+ agentName: string;
87
+ agentVersion: string;
88
+ response: string;
89
+ usage?: UsageInfo;
90
+ costUsd?: number;
91
+ finishReason?: string;
92
+ generationStats?: Record<string, unknown>;
93
+ inputFiles?: Array<{
94
+ filename: string;
95
+ mimeType?: string;
96
+ }>;
97
+ params: {
98
+ provider: string;
99
+ model: string;
100
+ max_tokens?: number;
101
+ temperature?: number;
102
+ reasoning_effort?: 'low' | 'medium' | 'high';
103
+ };
104
+ }
105
+ export interface InferenceContext {
106
+ db: DrizzleDB;
107
+ runId?: string;
108
+ defaults?: {
109
+ maxTokens?: number;
110
+ temperature?: number;
111
+ reasoningEffort?: 'low' | 'medium' | 'high';
112
+ provider?: 'openai' | 'openrouter' | 'ollama';
113
+ model?: string;
114
+ };
115
+ }
116
+ /**
117
+ * Execute custom inference using a named agent
118
+ *
119
+ * Resolves the active agent by name and uses its prompt template as system prompt.
120
+ * Supports file attachments and optional parameter overrides.
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * const result = await customInference({
125
+ * agentName: 'summarizer',
126
+ * prompt: 'Summarize the attached document',
127
+ * attachments: [{ filename: 'doc.txt', content: 'base64...' }],
128
+ * }, { db });
129
+ * ```
130
+ */
131
+ export declare function customInference(input: CustomInferenceInput, ctx: InferenceContext): Promise<CustomInferenceOutput>;
132
+ //# sourceMappingURL=inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../../src/core/execution/inference.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAuBvD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;KAC9C,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC5C,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;QAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,qBAAqB,CAAC,CA0EhC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Custom Inference Service
3
+ *
4
+ * Execute LLM inference using a named agent's prompt template.
5
+ * Resolves the active agent by name and uses its configuration.
6
+ */
7
+ import { z } from 'zod';
8
+ import { AgentsService } from './agents.js';
9
+ import { LlmExecuteTool } from '../tools/llmExecute.js';
10
+ import { NotFoundError } from '../../errors/index.js';
11
+ import { getLogger } from '../../util/logger.js';
12
+ const attachmentSchema = z.object({
13
+ filename: z.string(),
14
+ content: z.string(),
15
+ mimeType: z.string().optional(),
16
+ });
17
+ const paramsSchema = z.object({
18
+ max_tokens: z.number().int().positive().optional(),
19
+ temperature: z.number().min(0).max(2).optional(),
20
+ reasoning_effort: z.enum(['low', 'medium', 'high']).optional(),
21
+ });
22
+ const overridesSchema = z.object({
23
+ provider: z.enum(['openai', 'openrouter', 'ollama']).optional(),
24
+ model: z.string().optional(),
25
+ });
26
+ export const CustomInferenceInputSchema = z.object({
27
+ agentName: z.string().describe('Name of the agent to use (resolves to active version)'),
28
+ prompt: z.string().describe('User prompt to send'),
29
+ attachments: z.array(attachmentSchema).optional().describe('Optional file attachments'),
30
+ params: paramsSchema.optional().describe('Optional LLM parameters'),
31
+ overrides: overridesSchema.optional().describe('Optional provider/model overrides'),
32
+ });
33
+ /**
34
+ * Execute custom inference using a named agent
35
+ *
36
+ * Resolves the active agent by name and uses its prompt template as system prompt.
37
+ * Supports file attachments and optional parameter overrides.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const result = await customInference({
42
+ * agentName: 'summarizer',
43
+ * prompt: 'Summarize the attached document',
44
+ * attachments: [{ filename: 'doc.txt', content: 'base64...' }],
45
+ * }, { db });
46
+ * ```
47
+ */
48
+ export async function customInference(input, ctx) {
49
+ const logger = getLogger();
50
+ const validatedInput = CustomInferenceInputSchema.parse(input);
51
+ const agentsService = new AgentsService(ctx.db);
52
+ const agent = await agentsService.resolve(validatedInput.agentName);
53
+ if (!agent) {
54
+ throw new NotFoundError('Agent', validatedInput.agentName);
55
+ }
56
+ const provider = validatedInput.overrides?.provider || agent.provider || ctx.defaults?.provider || 'openai';
57
+ const model = validatedInput.overrides?.model || agent.model || ctx.defaults?.model || 'gpt-4o';
58
+ const maxTokens = validatedInput.params?.max_tokens ?? ctx.defaults?.maxTokens;
59
+ const temperature = validatedInput.params?.temperature ?? ctx.defaults?.temperature ?? 0.7;
60
+ const reasoningEffort = validatedInput.params?.reasoning_effort ?? ctx.defaults?.reasoningEffort;
61
+ logger.info({
62
+ agentName: agent.name,
63
+ agentVersion: agent.version,
64
+ provider,
65
+ model,
66
+ hasAttachments: !!validatedInput.attachments?.length,
67
+ fileCount: validatedInput.attachments?.length ?? 0,
68
+ }, 'Executing custom inference');
69
+ const llmExecuteTool = new LlmExecuteTool();
70
+ const result = await llmExecuteTool.execute({
71
+ provider: provider,
72
+ model,
73
+ task: agent.systemPrompt,
74
+ prompt: validatedInput.prompt,
75
+ attachments: validatedInput.attachments,
76
+ params: {
77
+ max_tokens: maxTokens,
78
+ temperature,
79
+ reasoning_effort: reasoningEffort,
80
+ },
81
+ }, {
82
+ logger,
83
+ runId: ctx.runId || `inference-${Date.now()}`,
84
+ subStepId: `step-${Date.now()}`,
85
+ });
86
+ logger.info({ agentName: agent.name }, 'Custom inference completed');
87
+ return {
88
+ agentName: agent.name,
89
+ agentVersion: agent.version,
90
+ response: result.content,
91
+ usage: result.usage ? {
92
+ promptTokens: result.usage.promptTokens ?? 0,
93
+ completionTokens: result.usage.completionTokens ?? 0,
94
+ totalTokens: result.usage.totalTokens ?? 0,
95
+ } : undefined,
96
+ costUsd: result.costUsd,
97
+ finishReason: result.finishReason,
98
+ generationStats: result.generationStats,
99
+ inputFiles: validatedInput.attachments?.map((f) => ({
100
+ filename: f.filename,
101
+ mimeType: f.mimeType,
102
+ })),
103
+ params: {
104
+ provider,
105
+ model,
106
+ max_tokens: maxTokens,
107
+ temperature,
108
+ reasoning_effort: reasoningEffort,
109
+ },
110
+ };
111
+ }
112
+ //# sourceMappingURL=inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../../src/core/execution/inference.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,33 @@
4
4
  * Interfaces for different LLM providers (OpenAI, Ollama, etc.)
5
5
  */
6
6
  import type { ToolDefinition } from '../../types/index.js';
7
+ /**
8
+ * Image content part for multimodal messages
9
+ */
10
+ export interface ImageContentPart {
11
+ type: 'image_url';
12
+ image_url: {
13
+ url: string;
14
+ detail?: 'auto' | 'low' | 'high';
15
+ };
16
+ }
17
+ /**
18
+ * Text content part for multimodal messages
19
+ */
20
+ export interface TextContentPart {
21
+ type: 'text';
22
+ text: string;
23
+ }
24
+ /**
25
+ * Content can be a string or array of content parts (for multimodal)
26
+ */
27
+ export type MessageContent = string | (TextContentPart | ImageContentPart)[];
7
28
  /**
8
29
  * Message in a conversation
9
30
  */
10
31
  export interface Message {
11
32
  role: 'system' | 'user' | 'assistant';
12
- content: string;
33
+ content: MessageContent;
13
34
  }
14
35
  /**
15
36
  * Tool call from LLM response
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/providers/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE1F;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEhD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/providers/types.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@ declare const fetchPageInputSchema: z.ZodObject<{
11
11
  maxLength: z.ZodDefault<z.ZodNumber>;
12
12
  timeout: z.ZodDefault<z.ZodNumber>;
13
13
  }, "strip", z.ZodTypeAny, {
14
- maxLength: number;
15
14
  url: string;
15
+ maxLength: number;
16
16
  timeout: number;
17
17
  }, {
18
18
  url: string;
@@ -16,12 +16,12 @@ declare const llmExecuteInputSchema: z.ZodObject<{
16
16
  content: z.ZodString;
17
17
  mimeType: z.ZodOptional<z.ZodString>;
18
18
  }, "strip", z.ZodTypeAny, {
19
- content: string;
20
19
  filename: string;
20
+ content: string;
21
21
  mimeType?: string | undefined;
22
22
  }, {
23
- content: string;
24
23
  filename: string;
24
+ content: string;
25
25
  mimeType?: string | undefined;
26
26
  }>, "many">>;
27
27
  params: z.ZodOptional<z.ZodObject<{
@@ -29,11 +29,11 @@ declare const llmExecuteInputSchema: z.ZodObject<{
29
29
  max_tokens: z.ZodOptional<z.ZodNumber>;
30
30
  temperature: z.ZodOptional<z.ZodNumber>;
31
31
  }, "strip", z.ZodTypeAny, {
32
- reasoning_effort?: "low" | "medium" | "high" | undefined;
32
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
33
33
  max_tokens?: number | undefined;
34
34
  temperature?: number | undefined;
35
35
  }, {
36
- reasoning_effort?: "low" | "medium" | "high" | undefined;
36
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
37
37
  max_tokens?: number | undefined;
38
38
  temperature?: number | undefined;
39
39
  }>>;
@@ -43,13 +43,13 @@ declare const llmExecuteInputSchema: z.ZodObject<{
43
43
  task: string;
44
44
  prompt: string;
45
45
  params?: {
46
- reasoning_effort?: "low" | "medium" | "high" | undefined;
46
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
47
47
  max_tokens?: number | undefined;
48
48
  temperature?: number | undefined;
49
49
  } | undefined;
50
50
  attachments?: {
51
- content: string;
52
51
  filename: string;
52
+ content: string;
53
53
  mimeType?: string | undefined;
54
54
  }[] | undefined;
55
55
  }, {
@@ -58,13 +58,13 @@ declare const llmExecuteInputSchema: z.ZodObject<{
58
58
  task: string;
59
59
  prompt: string;
60
60
  params?: {
61
- reasoning_effort?: "low" | "medium" | "high" | undefined;
61
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
62
62
  max_tokens?: number | undefined;
63
63
  temperature?: number | undefined;
64
64
  } | undefined;
65
65
  attachments?: {
66
- content: string;
67
66
  filename: string;
67
+ content: string;
68
68
  mimeType?: string | undefined;
69
69
  }[] | undefined;
70
70
  }>;
@@ -94,12 +94,12 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
94
94
  content: z.ZodString;
95
95
  mimeType: z.ZodOptional<z.ZodString>;
96
96
  }, "strip", z.ZodTypeAny, {
97
- content: string;
98
97
  filename: string;
98
+ content: string;
99
99
  mimeType?: string | undefined;
100
100
  }, {
101
- content: string;
102
101
  filename: string;
102
+ content: string;
103
103
  mimeType?: string | undefined;
104
104
  }>, "many">>;
105
105
  params: z.ZodOptional<z.ZodObject<{
@@ -107,11 +107,11 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
107
107
  max_tokens: z.ZodOptional<z.ZodNumber>;
108
108
  temperature: z.ZodOptional<z.ZodNumber>;
109
109
  }, "strip", z.ZodTypeAny, {
110
- reasoning_effort?: "low" | "medium" | "high" | undefined;
110
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
111
111
  max_tokens?: number | undefined;
112
112
  temperature?: number | undefined;
113
113
  }, {
114
- reasoning_effort?: "low" | "medium" | "high" | undefined;
114
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
115
115
  max_tokens?: number | undefined;
116
116
  temperature?: number | undefined;
117
117
  }>>;
@@ -121,13 +121,13 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
121
121
  task: string;
122
122
  prompt: string;
123
123
  params?: {
124
- reasoning_effort?: "low" | "medium" | "high" | undefined;
124
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
125
125
  max_tokens?: number | undefined;
126
126
  temperature?: number | undefined;
127
127
  } | undefined;
128
128
  attachments?: {
129
- content: string;
130
129
  filename: string;
130
+ content: string;
131
131
  mimeType?: string | undefined;
132
132
  }[] | undefined;
133
133
  }, {
@@ -136,13 +136,13 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
136
136
  task: string;
137
137
  prompt: string;
138
138
  params?: {
139
- reasoning_effort?: "low" | "medium" | "high" | undefined;
139
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
140
140
  max_tokens?: number | undefined;
141
141
  temperature?: number | undefined;
142
142
  } | undefined;
143
143
  attachments?: {
144
- content: string;
145
144
  filename: string;
145
+ content: string;
146
146
  mimeType?: string | undefined;
147
147
  }[] | undefined;
148
148
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"llmExecute.d.ts","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAgBvD,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE7D,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7E,IAAI,SAAgB;IACpB,WAAW,SAA2G;IACtH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAyB;IAEpC,OAAO,CAAC,WAAW;IAeb,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAwEnF"}
1
+ {"version":3,"file":"llmExecute.d.ts","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAgBvD,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE7D,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7E,IAAI,SAAgB;IACpB,WAAW,SAA2G;IACtH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAyB;IAEpC,OAAO,CAAC,WAAW;IAeb,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAoHnF"}
@@ -45,6 +45,8 @@ export class LlmExecuteTool extends BaseTool {
45
45
  provider: input.provider,
46
46
  model: input.model,
47
47
  hasAttachments: !!input.attachments?.length,
48
+ attachmentCount: input.attachments?.length ?? 0,
49
+ attachmentFiles: input.attachments?.map(a => a.filename) ?? [],
48
50
  }, '╰─Executing LLM call');
49
51
  try {
50
52
  const provider = createLLMProvider({
@@ -57,12 +59,48 @@ export class LlmExecuteTool extends BaseTool {
57
59
  }
58
60
  let userContent = input.prompt;
59
61
  if (input.attachments && input.attachments.length > 0) {
62
+ ctx.logger.debug({
63
+ totalAttachments: input.attachments.length,
64
+ filenames: input.attachments.map(a => ({ name: a.filename, mime: a.mimeType })),
65
+ }, '╰─Processing attachments');
60
66
  const textFiles = input.attachments.filter(att => !this.isImageFile(att.mimeType, att.filename));
67
+ const imageFiles = input.attachments.filter(att => this.isImageFile(att.mimeType, att.filename));
68
+ ctx.logger.debug({
69
+ textFileCount: textFiles.length,
70
+ imageFileCount: imageFiles.length,
71
+ textFiles: textFiles.map(a => a.filename),
72
+ imageFiles: imageFiles.map(a => a.filename),
73
+ }, '╰─Filtered files by type');
74
+ let textPrompt = input.prompt;
61
75
  if (textFiles.length > 0) {
62
76
  const attachmentText = textFiles
63
77
  .map(att => `\n\n--- File: ${att.filename} ---\n${att.content}`)
64
78
  .join('');
65
- userContent = `${input.prompt}${attachmentText}`;
79
+ textPrompt = `${input.prompt}${attachmentText}`;
80
+ ctx.logger.debug({
81
+ appendedLength: attachmentText.length,
82
+ }, '╰─Appended text files to prompt');
83
+ }
84
+ if (imageFiles.length > 0) {
85
+ const contentParts = [
86
+ { type: 'text', text: textPrompt },
87
+ ];
88
+ for (const img of imageFiles) {
89
+ const mimeType = img.mimeType || 'image/jpeg';
90
+ const dataUrl = `data:${mimeType};base64,${img.content}`;
91
+ contentParts.push({
92
+ type: 'image_url',
93
+ image_url: { url: dataUrl, detail: 'auto' },
94
+ });
95
+ ctx.logger.debug({
96
+ filename: img.filename,
97
+ mimeType,
98
+ }, '╰─Added image attachment');
99
+ }
100
+ userContent = contentParts;
101
+ }
102
+ else {
103
+ userContent = textPrompt;
66
104
  }
67
105
  }
68
106
  const messages = [
@@ -1 +1 @@
1
- {"version":3,"file":"llmExecute.js","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmExecute.js","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,10 @@ declare const readEmailInputSchema: z.ZodObject<{
25
25
  sender?: string | undefined;
26
26
  search?: string | undefined;
27
27
  }, {
28
- maxResults?: number | undefined;
29
- unreadOnly?: boolean | undefined;
30
28
  sender?: string | undefined;
31
29
  search?: string | undefined;
30
+ maxResults?: number | undefined;
31
+ unreadOnly?: boolean | undefined;
32
32
  mailbox?: string | undefined;
33
33
  markAsRead?: boolean | undefined;
34
34
  snippets?: boolean | undefined;
@@ -6,7 +6,7 @@
6
6
  import { z } from 'zod';
7
7
  import { BaseTool, type ToolContext } from './base.js';
8
8
  declare const sendEmailInputSchema: z.ZodObject<{
9
- to: z.ZodString;
9
+ to: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
10
10
  subject: z.ZodString;
11
11
  body: z.ZodString;
12
12
  cc: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
@@ -23,18 +23,18 @@ declare const sendEmailInputSchema: z.ZodObject<{
23
23
  path?: string | undefined;
24
24
  content?: string | undefined;
25
25
  contentType?: string | undefined;
26
- encoding?: "utf-8" | "base64" | undefined;
26
+ encoding?: "base64" | "utf-8" | undefined;
27
27
  }, {
28
28
  filename: string;
29
29
  path?: string | undefined;
30
30
  content?: string | undefined;
31
31
  contentType?: string | undefined;
32
- encoding?: "utf-8" | "base64" | undefined;
32
+ encoding?: "base64" | "utf-8" | undefined;
33
33
  }>, "many">>;
34
34
  }, "strip", z.ZodTypeAny, {
35
- body: string;
36
- to: string;
35
+ to: string | string[];
37
36
  subject: string;
37
+ body: string;
38
38
  html: boolean;
39
39
  cc?: string | string[] | undefined;
40
40
  bcc?: string | string[] | undefined;
@@ -43,12 +43,12 @@ declare const sendEmailInputSchema: z.ZodObject<{
43
43
  path?: string | undefined;
44
44
  content?: string | undefined;
45
45
  contentType?: string | undefined;
46
- encoding?: "utf-8" | "base64" | undefined;
46
+ encoding?: "base64" | "utf-8" | undefined;
47
47
  }[] | undefined;
48
48
  }, {
49
- body: string;
50
- to: string;
49
+ to: string | string[];
51
50
  subject: string;
51
+ body: string;
52
52
  cc?: string | string[] | undefined;
53
53
  bcc?: string | string[] | undefined;
54
54
  html?: boolean | undefined;
@@ -57,14 +57,14 @@ declare const sendEmailInputSchema: z.ZodObject<{
57
57
  path?: string | undefined;
58
58
  content?: string | undefined;
59
59
  contentType?: string | undefined;
60
- encoding?: "utf-8" | "base64" | undefined;
60
+ encoding?: "base64" | "utf-8" | undefined;
61
61
  }[] | undefined;
62
62
  }>;
63
63
  type SendEmailInput = z.infer<typeof sendEmailInputSchema>;
64
64
  interface SendEmailOutput {
65
65
  success: boolean;
66
66
  messageId?: string;
67
- to: string;
67
+ to: string | string[];
68
68
  subject: string;
69
69
  attachmentCount?: number;
70
70
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmail.d.ts","sourceRoot":"","sources":["../../../src/core/tools/sendEmail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAWvD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE3D,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAc,SAAQ,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC/D,IAAI,SAAe;IACnB,WAAW,SAA0H;IACrI,WAAW,EAAE,GAAG,CAAwB;IAExC,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,kBAAkB;IAQpB,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CA2EjF"}
1
+ {"version":3,"file":"sendEmail.d.ts","sourceRoot":"","sources":["../../../src/core/tools/sendEmail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAWvD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBxB,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE3D,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAc,SAAQ,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC/D,IAAI,SAAe;IACnB,WAAW,SAA0H;IACrI,WAAW,EAAE,GAAG,CAAwB;IAExC,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,kBAAkB;IAQpB,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CA2EjF"}
@@ -15,7 +15,10 @@ const attachmentSchema = z.object({
15
15
  encoding: z.enum(['base64', 'utf-8']).optional().describe('Content encoding if using content field'),
16
16
  });
17
17
  const sendEmailInputSchema = z.object({
18
- to: z.string().email().describe('Recipient email address'),
18
+ to: z.union([
19
+ z.string().email(),
20
+ z.array(z.string().email()),
21
+ ]).describe('Recipient email address(es) - single email or array of emails'),
19
22
  subject: z.string().describe('Email subject line'),
20
23
  body: z.string().describe('Email body content (plain text or HTML)'),
21
24
  cc: z.union([
@@ -76,7 +79,7 @@ export class SendEmailTool extends BaseTool {
76
79
  const from = process.env.SMTP_FROM;
77
80
  const mailOptions = {
78
81
  from,
79
- to: input.to,
82
+ to: this.normalizeEmailList(input.to),
80
83
  subject: input.subject,
81
84
  };
82
85
  if (input.html) {