@adminforth/agent 1.52.0 → 1.52.2

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/build.log CHANGED
@@ -63,5 +63,5 @@ custom/speech_recognition_frontend/voiceActivityDetection.ts
63
63
  custom/speech_recognition_frontend/types/
64
64
  custom/speech_recognition_frontend/types/voice-activity-detection.d.ts
65
65
 
66
- sent 1,682,590 bytes received 940 bytes 3,367,060.00 bytes/sec
67
- total size is 1,678,362 speedup is 1.00
66
+ sent 1,682,869 bytes received 940 bytes 3,367,618.00 bytes/sec
67
+ total size is 1,678,641 speedup is 1.00
package/custom/chat.ts CHANGED
@@ -17,7 +17,7 @@ import type {
17
17
  ChatStatus,
18
18
  UIMessage,
19
19
  } from 'ai';
20
- import { AbstractChat, } from 'ai'
20
+ import { AbstractChat } from 'ai'
21
21
  import { Ref, ref } from 'vue';
22
22
 
23
23
  class VueChatState<
@@ -6,7 +6,7 @@ import { PRE_SESSION_ID } from './constants';
6
6
  import { i18nInstance } from '@/i18n';
7
7
 
8
8
  type AdminforthLike = {
9
- confirm(options: { message: string; yes: string; no: string }): Promise<boolean>;
9
+ confirm(options: { title?: string; message?: string; yes?: string; no?: string; dangerous?: boolean }): Promise<boolean>;
10
10
  };
11
11
 
12
12
  type CreateAgentSessionManagerOptions = {
@@ -177,7 +177,7 @@ export function createAgentSessionManager({
177
177
  return;
178
178
  }
179
179
  blockCloseOfChat.value = true;
180
- const isConfirmed = await adminforth.confirm({title: t('Are you sure, that you want to delete this session?'), message: t('This process is irreversible.'), yes: 'Yes', no: 'No'});
180
+ const isConfirmed = await adminforth.confirm({title: t('Are you sure, that you want to delete this session?'), message: t('This process is irreversible.'), yes: 'Yes', no: 'No', dangerous: true});
181
181
  blockCloseOfChat.value = false;
182
182
  if (!isConfirmed) {
183
183
  return;
@@ -160,6 +160,7 @@
160
160
  input: part.data.input,
161
161
  output: finishedPart?.data?.output,
162
162
  toolInfo: part.data.toolInfo,
163
+ error: finishedPart?.data?.error,
163
164
  }
164
165
  };
165
166
  };
@@ -20,7 +20,8 @@
20
20
  >
21
21
  <div class="flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-lightNavbar dark:bg-darkNavbar">
22
22
  <Spinner v-if="isRunning" class="h-4 w-4" />
23
- <IconCheckOutline v-else class="h-4 w-4 text-lightPrimary dark:text-darkPrimary" />
23
+ <IconCheckOutline v-else-if="!props.data.toolInfo.error" class="h-4 w-4 text-lightPrimary dark:text-darkPrimary" />
24
+ <IconCloseOutline v-else class="h-4 w-4 text-red-500" />
24
25
  </div>
25
26
 
26
27
  <div class="min-w-0">
@@ -61,7 +62,7 @@
61
62
  import { computed, ref, watch, onMounted } from 'vue';
62
63
  import { type IFormattedToolCallPart } from '../types';
63
64
  import { Spinner } from '@/afcl';
64
- import { IconAngleDownOutline, IconCheckOutline } from '@iconify-prerendered/vue-flowbite';
65
+ import { IconAngleDownOutline, IconCheckOutline, IconCloseOutline } from '@iconify-prerendered/vue-flowbite';
65
66
 
66
67
  const props = defineProps<{
67
68
  data: IFormattedToolCallPart
@@ -13,7 +13,11 @@
13
13
  </h3>
14
14
  <div class="flex flex-wrap">
15
15
  <template v-for="group in props.toolGroup" :key="group.title">
16
- <ToolRenderer v-for="part in group.groupedTools" :key="part.toolInfo.toolCallId" :data="part"/>
16
+ <ToolRenderer
17
+ v-for="part in group.groupedTools"
18
+ :key="part.toolInfo.toolCallId"
19
+ :data="part"
20
+ />
17
21
  </template>
18
22
  </div>
19
23
  </li>
package/custom/types.ts CHANGED
@@ -10,6 +10,7 @@ export interface IPartData {
10
10
  toolInfo?: string;
11
11
  status?: 'pending' | 'processing' | 'approved' | 'rejected';
12
12
  messages?: string[];
13
+ error?: string;
13
14
  }
14
15
  export interface IPart {
15
16
  type: 'reasoning' | 'data-tool-call' | 'data-rendering' | 'data-tool-approval' | 'text';
@@ -17,7 +17,7 @@ import type {
17
17
  ChatStatus,
18
18
  UIMessage,
19
19
  } from 'ai';
20
- import { AbstractChat, } from 'ai'
20
+ import { AbstractChat } from 'ai'
21
21
  import { Ref, ref } from 'vue';
22
22
 
23
23
  class VueChatState<
@@ -6,7 +6,7 @@ import { PRE_SESSION_ID } from './constants';
6
6
  import { i18nInstance } from '@/i18n';
7
7
 
8
8
  type AdminforthLike = {
9
- confirm(options: { message: string; yes: string; no: string }): Promise<boolean>;
9
+ confirm(options: { title?: string; message?: string; yes?: string; no?: string; dangerous?: boolean }): Promise<boolean>;
10
10
  };
11
11
 
12
12
  type CreateAgentSessionManagerOptions = {
@@ -177,7 +177,7 @@ export function createAgentSessionManager({
177
177
  return;
178
178
  }
179
179
  blockCloseOfChat.value = true;
180
- const isConfirmed = await adminforth.confirm({title: t('Are you sure, that you want to delete this session?'), message: t('This process is irreversible.'), yes: 'Yes', no: 'No'});
180
+ const isConfirmed = await adminforth.confirm({title: t('Are you sure, that you want to delete this session?'), message: t('This process is irreversible.'), yes: 'Yes', no: 'No', dangerous: true});
181
181
  blockCloseOfChat.value = false;
182
182
  if (!isConfirmed) {
183
183
  return;
@@ -160,6 +160,7 @@
160
160
  input: part.data.input,
161
161
  output: finishedPart?.data?.output,
162
162
  toolInfo: part.data.toolInfo,
163
+ error: finishedPart?.data?.error,
163
164
  }
164
165
  };
165
166
  };
@@ -20,7 +20,8 @@
20
20
  >
21
21
  <div class="flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-lightNavbar dark:bg-darkNavbar">
22
22
  <Spinner v-if="isRunning" class="h-4 w-4" />
23
- <IconCheckOutline v-else class="h-4 w-4 text-lightPrimary dark:text-darkPrimary" />
23
+ <IconCheckOutline v-else-if="!props.data.toolInfo.error" class="h-4 w-4 text-lightPrimary dark:text-darkPrimary" />
24
+ <IconCloseOutline v-else class="h-4 w-4 text-red-500" />
24
25
  </div>
25
26
 
26
27
  <div class="min-w-0">
@@ -61,7 +62,7 @@
61
62
  import { computed, ref, watch, onMounted } from 'vue';
62
63
  import { type IFormattedToolCallPart } from '../types';
63
64
  import { Spinner } from '@/afcl';
64
- import { IconAngleDownOutline, IconCheckOutline } from '@iconify-prerendered/vue-flowbite';
65
+ import { IconAngleDownOutline, IconCheckOutline, IconCloseOutline } from '@iconify-prerendered/vue-flowbite';
65
66
 
66
67
  const props = defineProps<{
67
68
  data: IFormattedToolCallPart
@@ -13,7 +13,11 @@
13
13
  </h3>
14
14
  <div class="flex flex-wrap">
15
15
  <template v-for="group in props.toolGroup" :key="group.title">
16
- <ToolRenderer v-for="part in group.groupedTools" :key="part.toolInfo.toolCallId" :data="part"/>
16
+ <ToolRenderer
17
+ v-for="part in group.groupedTools"
18
+ :key="part.toolInfo.toolCallId"
19
+ :data="part"
20
+ />
17
21
  </template>
18
22
  </div>
19
23
  </li>
@@ -10,6 +10,7 @@ export interface IPartData {
10
10
  toolInfo?: string;
11
11
  status?: 'pending' | 'processing' | 'approved' | 'rejected';
12
12
  messages?: string[];
13
+ error?: string;
13
14
  }
14
15
  export interface IPart {
15
16
  type: 'reasoning' | 'data-tool-call' | 'data-rendering' | 'data-tool-approval' | 'text';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminforth/agent",
3
- "version": "1.52.0",
3
+ "version": "1.52.2",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",