@apia/ai 4.0.30 → 4.0.32

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/dist/index.d.ts CHANGED
@@ -95,9 +95,14 @@ interface ISearchResultsController<P extends ProcessingUnit> {
95
95
  Component: FC;
96
96
  }
97
97
 
98
- declare class ResponseStream extends EventEmitter<{
98
+ type ResponseStreamEvents = {
99
99
  part: string;
100
- }> {
100
+ block: {
101
+ type: string;
102
+ description: string;
103
+ };
104
+ };
105
+ declare class ResponseStream extends EventEmitter<ResponseStreamEvents> {
101
106
  private buffer;
102
107
  private isRunning;
103
108
  private locked;
@@ -107,9 +112,7 @@ declare class ResponseStream extends EventEmitter<{
107
112
  private timing;
108
113
  private waiting;
109
114
  private calculatePartSize;
110
- emit<K extends 'part'>(_: K, data: {
111
- part: string;
112
- }[K]): void;
115
+ emit<K extends keyof ResponseStreamEvents>(ev: K, data: ResponseStreamEvents[K]): void;
113
116
  run(): void;
114
117
  }
115
118
 
package/dist/index.js CHANGED
@@ -330,14 +330,26 @@ class ResponseStream extends EventEmitter {
330
330
  totalSize * (this.timing / this.maxCompletionTime)
331
331
  );
332
332
  }
333
- emit(_, data) {
334
- if (this.locked) {
335
- this.waiting.push(data);
333
+ emit(ev, data) {
334
+ if (ev === "part") {
335
+ let chunk = data;
336
+ const blockMatches = chunk.matchAll(
337
+ /<BLOCK-START type="([^"]+)">(.+?)<\/BLOCK-END type="\1">/g
338
+ );
339
+ for (const match of blockMatches) {
340
+ this.emit("block", { description: match[2], type: match[1] });
341
+ chunk = chunk.replaceAll(match[0], "");
342
+ }
343
+ if (this.locked) {
344
+ this.waiting.push(chunk);
345
+ } else {
346
+ this.buffer += chunk;
347
+ }
348
+ this.calculatePartSize();
349
+ this.run();
336
350
  } else {
337
- this.buffer += data;
351
+ super.emit(ev, data);
338
352
  }
339
- this.calculatePartSize();
340
- this.run();
341
353
  }
342
354
  run() {
343
355
  if (!this.isRunning) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/semanticSearch/SearchController/objects/SemanticSearchReference/Component.tsx","../src/semanticSearch/SearchController/objects/SemanticSearchReference/index.tsx","../src/semanticSearch/SearchController/index.tsx","../src/routines/RoutinesGeneration.ts","../src/routines/DashboardRoutinesGeneration.ts","../src/stream/ResponseStream.ts","../src/components/documents/ImageBinaryField/getImage.ts","../src/components/documents/UploadModal/ImageIcon.tsx","../src/components/documents/ImageBinaryField/getImageSrcString.ts","../src/components/documents/UploadModal/getImagesWithDescription.tsx","../src/semanticSearch/ViewController/types.ts","../src/components/chat/messages/MultipleChoiceMessage.tsx"],"sourcesContent":["import { Box } from '@apia/theme';\r\nimport { SemanticSearchReference } from '.';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\nexport const Component = observer(\r\n (props: { instance: SemanticSearchReference }) => {\r\n return (\r\n <Box>\r\n <a href={props.instance.state.link}>{props.instance.state.title}</a>\r\n <Box>{props.instance.state.body}</Box>\r\n </Box>\r\n );\r\n },\r\n);\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { Component } from './Component';\r\n\r\n/*\r\n * This class is used to store the state of a search result record.\r\n */\r\ntype TSearchResultState = {\r\n title: string;\r\n body: string;\r\n link: string;\r\n};\r\n\r\nexport class SemanticSearchReference {\r\n state: TSearchResultState = { title: '', body: '', link: '' };\r\n\r\n public constructor(props: TSearchResultState) {\r\n this.state = props;\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n Component = () => (\r\n <>\r\n (<Component instance={this} />)\r\n </>\r\n );\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { SemanticSearchReference } from './objects/SemanticSearchReference';\r\nimport { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport { FiltersStore } from '@apia/components';\r\n\r\n/**\r\n * @class SearchController:\r\n * - mobx Controller for the semantic search logic\r\n * - search for a term and get the results. This controller must be used\r\n * to maintain the state of the search string and of the results given a search string\r\n */\r\nclass SearchController {\r\n static instance = new SearchController();\r\n\r\n state: {\r\n queryString: string;\r\n results: SemanticSearchReference[];\r\n isLoading: boolean;\r\n disabled: boolean;\r\n } = { queryString: '', results: [], isLoading: false, disabled: false };\r\n\r\n protected constructor() {\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n public async search(selectedId: string) {\r\n const filters = await FiltersStore.getFiltersById(\r\n Number.parseInt(selectedId),\r\n );\r\n FiltersStore.setFilters(filters, 'U');\r\n SearchController.instance.state.isLoading = true;\r\n const response = await ApiaApi.post<{ results: SemanticSearchReference[] }>(\r\n makeApiaUrl({\r\n action: 'search',\r\n semSearchId: selectedId,\r\n }),\r\n {\r\n postData: {\r\n q: SearchController.instance.state.queryString,\r\n filters: JSON.stringify(FiltersStore.getFiltersAsFilterValue('U')),\r\n },\r\n postDataTreatement: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n if (response?.data?.results) {\r\n this.setReferences(response.data.results);\r\n }\r\n this.state.isLoading = false;\r\n }\r\n\r\n protected setReferences(results: SemanticSearchReference[]) {\r\n if (typeof results === 'string' && results) {\r\n results = JSON.parse(results as any as string);\r\n }\r\n SearchController.instance.state.results = results.map((x) =>\r\n x instanceof SemanticSearchReference ? x : new SemanticSearchReference(x),\r\n );\r\n SearchController.instance.state.disabled = false;\r\n }\r\n}\r\n\r\nexport default SearchController;\r\n","import axios from 'axios';\r\nimport { AudioRecorder } from '@apia/util';\r\nimport { ApiaApi, makeApiaUrl, parseSuccessfulResponse } from '@apia/api';\r\nimport { ResponseStream } from '../stream/ResponseStream';\r\nimport { action, makeObservable, observable } from 'mobx';\r\n\r\ntype RoutinesGenerationState = {\r\n isLoading: boolean;\r\n progress: number;\r\n};\r\n\r\ntype TPollProgress = {\r\n message: string;\r\n progress: number;\r\n debug: string;\r\n streamPart?: string;\r\n};\r\n\r\nexport type TPollRoutineResult = {\r\n status: string;\r\n payload: unknown | TPollProgress;\r\n};\r\n\r\nexport type TGenerateFromImage = {\r\n base64: string;\r\n description: string;\r\n};\r\n\r\nexport type TRoutineCompletion = Partial<{\r\n images: TGenerateFromImage[];\r\n parameters: Record<string, string>;\r\n stream: ResponseStream;\r\n}> & {\r\n routineName: string;\r\n};\r\n\r\nfunction isPollProgress(\r\n payload: unknown | TPollProgress,\r\n): payload is TPollProgress {\r\n return (payload as TPollProgress)?.progress !== undefined;\r\n}\r\n\r\nexport class RoutinesGeneration {\r\n public audioRecorder = new AudioRecorder();\r\n private routineId: string = '';\r\n public state: RoutinesGenerationState = {\r\n isLoading: false,\r\n progress: 0,\r\n };\r\n\r\n public constructor() {\r\n makeObservable(this, {\r\n completion: action,\r\n state: observable,\r\n stop: action,\r\n transcribeAudio: action,\r\n });\r\n }\r\n\r\n private checkCanGenerate() {\r\n if (this.state.isLoading) {\r\n throw new Error('Cannot queue two simultaneous generations');\r\n }\r\n\r\n this.state.isLoading = true;\r\n }\r\n\r\n public async pollRoutine<T>(routineId: string, stream?: ResponseStream) {\r\n this.routineId = routineId;\r\n this.state.isLoading = true;\r\n return this.internalPollRoutine<T>(stream);\r\n }\r\n\r\n private async internalPollRoutine<T>(stream?: ResponseStream) {\r\n while (this.state.isLoading) {\r\n const pollResult = await this.callRoutinePoll(this.routineId);\r\n if (isPollProgress(pollResult.payload)) {\r\n try {\r\n const res = JSON.parse(pollResult.payload.debug) as string[];\r\n if (res.length > 0) {\r\n res.forEach((c) => {\r\n console.log(JSON.parse(c));\r\n });\r\n }\r\n\r\n if (pollResult.payload.streamPart && stream) {\r\n stream.emit('part', pollResult.payload.streamPart);\r\n }\r\n this.state.progress = pollResult.payload.progress;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n } else if (pollResult.status === 'FINISHED') {\r\n this.resetLoading();\r\n return pollResult.payload as T;\r\n } else if (pollResult.status === 'ERROR') {\r\n this.resetLoading();\r\n throw new Error(pollResult.payload as string);\r\n } else {\r\n this.resetLoading();\r\n throw new Error('Wrong poll response');\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected async callAudioTranscription(\r\n audio: Blob,\r\n ): ReturnType<RoutinesGeneration['callRoutineStart']> {\r\n const url = makeApiaUrl({\r\n action: 'routineStart',\r\n routine: 'transcription/Transcribe',\r\n });\r\n\r\n const response = await axios.post(url, audio.arrayBuffer(), {\r\n headers: {\r\n 'Content-Type': 'application/octet-stream',\r\n },\r\n });\r\n\r\n const result = await parseSuccessfulResponse<{\r\n orchestrator: { routineId: string };\r\n }>(response, '');\r\n\r\n if (result?.orchestrator) {\r\n return result;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected async callRoutinePoll(\r\n routineId: string,\r\n ): Promise<TPollRoutineResult> {\r\n const result = await ApiaApi.post<{ orchestrator: string }>(\r\n makeApiaUrl({\r\n action: 'routinePoll',\r\n routineId,\r\n }),\r\n );\r\n\r\n if (result?.data?.orchestrator) {\r\n return JSON.parse(result.data.orchestrator) as TPollRoutineResult;\r\n } else {\r\n throw new Error('Poll failed');\r\n }\r\n }\r\n\r\n protected async callRoutineStart(\r\n routineName: string,\r\n parameters: Record<string, string>,\r\n images: TGenerateFromImage[],\r\n ): Promise<{ orchestrator: { routineId: string } } | null> {\r\n const result = await ApiaApi.post<{\r\n orchestrator: { routineId: string };\r\n }>(\r\n makeApiaUrl({\r\n action: 'routineStart',\r\n routine: routineName,\r\n }),\r\n {\r\n postData: {\r\n images: JSON.stringify(images),\r\n ...parameters,\r\n },\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n\r\n return result?.data || null;\r\n }\r\n\r\n private async executeRoutine<T>(\r\n routineName: string,\r\n parameters: Record<string, string>,\r\n images: TGenerateFromImage[],\r\n stream?: ResponseStream,\r\n ): Promise<T | null> {\r\n this.checkCanGenerate();\r\n\r\n try {\r\n const result = await this.callRoutineStart(\r\n routineName,\r\n parameters,\r\n images,\r\n );\r\n\r\n if (result?.orchestrator?.routineId !== undefined) {\r\n this.routineId = result?.orchestrator.routineId;\r\n\r\n return this.internalPollRoutine<T>(stream);\r\n } else {\r\n throw new Error('Cannot get routine id');\r\n }\r\n } catch (e) {\r\n this.resetLoading();\r\n throw e;\r\n }\r\n }\r\n\r\n private resetLoading() {\r\n this.state.isLoading = false;\r\n this.state.progress = 0;\r\n }\r\n\r\n public async completion<T>(params: TRoutineCompletion) {\r\n return this.executeRoutine<T>(\r\n params.routineName,\r\n params.parameters ?? {},\r\n params.images ?? [],\r\n params.stream,\r\n );\r\n }\r\n\r\n public stop() {\r\n this.resetLoading();\r\n ApiaApi.get<{\r\n orchestrator: { routineId: string };\r\n }>(\r\n makeApiaUrl({\r\n action: 'routineStop',\r\n routineId: this.routineId,\r\n }),\r\n );\r\n }\r\n\r\n public async transcribeAudio(audio: Blob) {\r\n const result = await this.callAudioTranscription(audio);\r\n\r\n if (result) {\r\n this.state.isLoading = true;\r\n if (result?.orchestrator?.routineId) {\r\n this.routineId = result?.orchestrator?.routineId;\r\n return await this.internalPollRoutine<{\r\n transcription: string;\r\n }>();\r\n }\r\n }\r\n\r\n throw new Error('Something went wrong while transcribing the audio');\r\n }\r\n}\r\n","import { TActionDispatcher, TActionResult } from '@apia/dashboard-controller';\r\nimport {\r\n RoutinesGeneration,\r\n TPollRoutineResult,\r\n TGenerateFromImage,\r\n} from './RoutinesGeneration';\r\n\r\nexport class DashboardsRoutinesGeneration extends RoutinesGeneration {\r\n constructor(protected dispatcher: TActionDispatcher) {\r\n super();\r\n }\r\n\r\n private blobToBase64(audio: Blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n if (reader.result && typeof reader.result === 'string') {\r\n const base64 = reader.result.split(',')[1];\r\n resolve(base64);\r\n } else {\r\n reject(new Error('Could not convert Blob to base64'));\r\n }\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(audio);\r\n });\r\n }\r\n\r\n protected async callAudioTranscription(\r\n audio: Blob,\r\n ): Promise<{ orchestrator: { routineId: string } } | null> {\r\n const audioBase64 = await this.blobToBase64(audio);\r\n const result = (await this.dispatcher({\r\n action: 'transcription',\r\n audioBase64,\r\n })) as TActionResult<{\r\n orchestrator: {\r\n routineId: string;\r\n };\r\n }>;\r\n\r\n return result?.data || null;\r\n }\r\n\r\n protected async callRoutinePoll(\r\n routineId: string,\r\n ): Promise<TPollRoutineResult> {\r\n const result = (await this.dispatcher({\r\n action: 'routinePoll',\r\n routineId,\r\n })) as TActionResult<{ orchestrator: string }>;\r\n\r\n if (result?.data?.orchestrator) {\r\n const parsed = JSON.parse(result.data.orchestrator) as TPollRoutineResult;\r\n\r\n return parsed;\r\n }\r\n\r\n throw new Error('Poll failed');\r\n }\r\n\r\n protected async callRoutineStart(\r\n routineName: string,\r\n parameters: Record<string, string>,\r\n images: TGenerateFromImage[],\r\n ): Promise<{ orchestrator: { routineId: string } } | null> {\r\n const result = (await this.dispatcher({\r\n action: 'routineStart',\r\n routine: routineName,\r\n ...parameters,\r\n images,\r\n })) as TActionResult<{\r\n orchestrator: {\r\n routineId: string;\r\n };\r\n }>;\r\n\r\n return result?.data || null;\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\n\r\nexport class ResponseStream extends EventEmitter<{ part: string }> {\r\n private buffer: string = '';\r\n private isRunning = false;\r\n private locked = false;\r\n public maxCompletionTime = 150; // ms\r\n private minPartSize = 2;\r\n private partSize = 2;\r\n private timing = 5; // ms\r\n private waiting: string[] = [];\r\n\r\n private calculatePartSize() {\r\n const totalSize =\r\n this.buffer.length +\r\n this.waiting.reduce<number>((a, b) => a + b.length, 0);\r\n\r\n this.partSize = Math.max(\r\n this.minPartSize,\r\n totalSize * (this.timing / this.maxCompletionTime),\r\n );\r\n }\r\n\r\n emit<K extends 'part'>(_: K, data: { part: string }[K]): void {\r\n if (this.locked) {\r\n this.waiting.push(data);\r\n } else {\r\n this.buffer += data;\r\n }\r\n this.calculatePartSize();\r\n this.run();\r\n }\r\n\r\n run() {\r\n if (!this.isRunning) {\r\n this.isRunning = true;\r\n const interval = setInterval(() => {\r\n this.locked = true;\r\n\r\n const choosedSize = Math.min(this.buffer.length, this.partSize);\r\n\r\n const part = this.buffer.slice(0, choosedSize);\r\n this.buffer = this.buffer.slice(choosedSize);\r\n\r\n while (this.waiting.length > 0) {\r\n const part = this.waiting.shift();\r\n if (part) {\r\n this.buffer += part;\r\n }\r\n }\r\n this.locked = false;\r\n if (part) {\r\n super.emit('part', part);\r\n } else {\r\n this.isRunning = false;\r\n clearInterval(interval);\r\n }\r\n }, this.timing);\r\n }\r\n }\r\n}\r\n","import { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport { uniqueId } from 'lodash-es';\r\n\r\nexport type RetrievedImage = {\r\n base64: string;\r\n path: string;\r\n};\r\n\r\nexport type GetImageSize = '256x256' | '512x512' | '1024x1024';\r\n\r\nexport async function getImageFromGpt({\r\n prompt,\r\n ...props\r\n}: {\r\n prompt: string;\r\n size?: GetImageSize;\r\n model: string;\r\n}): Promise<RetrievedImage | null> {\r\n const res = await ApiaApi.post<{ image: string }>(\r\n makeApiaUrl({\r\n action: 'generateImage',\r\n ...props,\r\n }),\r\n {\r\n postData: {\r\n prompt,\r\n },\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n\r\n if (res?.data)\r\n return {\r\n base64: res.data.image as any as string,\r\n path: `${uniqueId()}.png`,\r\n };\r\n\r\n return null;\r\n}\r\n\r\nexport async function getImageFromDisk(\r\n inputProps?: Partial<{\r\n accept: string;\r\n }>,\r\n): Promise<RetrievedImage | null> {\r\n return (\r\n (await getImagesFromDisk({ ...inputProps, multiple: 'false' }))![0] ?? null\r\n );\r\n}\r\n\r\nexport function getImagesFromDisk(\r\n inputProps?: Partial<{\r\n accept: string;\r\n multiple: string;\r\n }>,\r\n): Promise<RetrievedImage[]> {\r\n return new Promise<RetrievedImage[]>((resolve) => {\r\n const input = document.createElement('input');\r\n input.accept = 'image/*';\r\n input.type = 'file';\r\n input.style.display = 'none';\r\n Object.assign(input, inputProps);\r\n\r\n document.body.append(input);\r\n\r\n input.addEventListener('change', (event) => {\r\n const target = event?.target as HTMLInputElement;\r\n if (!target?.files) return;\r\n\r\n const retrievedImages: (RetrievedImage | null)[] = [];\r\n const sources = [...(target.files ?? [])];\r\n\r\n const checkResolve = () => {\r\n if (sources.length === retrievedImages.length) {\r\n resolve(retrievedImages.filter((c): c is RetrievedImage => !!c));\r\n }\r\n };\r\n\r\n sources.forEach((file) => {\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = function (e) {\r\n const binary = (e.target?.result as string)?.split(',')[1];\r\n input.remove();\r\n retrievedImages.push({\r\n base64: binary,\r\n path: file.name,\r\n });\r\n\r\n checkResolve();\r\n };\r\n reader.readAsDataURL(file);\r\n } else {\r\n retrievedImages.push(null);\r\n }\r\n\r\n checkResolve();\r\n });\r\n });\r\n input.click();\r\n });\r\n}\r\n","import { IconButton } from '@apia/components';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const ImageIcon = ({\r\n deletable,\r\n onClick,\r\n onRemove,\r\n src,\r\n}: {\r\n deletable: boolean;\r\n onClick: () => unknown;\r\n onRemove: () => unknown;\r\n src: string;\r\n}) => {\r\n return (\r\n <Box className=\"image_preview\">\r\n {deletable && (\r\n <IconButton icon=\"Close\" size=\"Xs\" iconSize=\"Xs\" onClick={onRemove} />\r\n )}\r\n <img src={src} onClick={onClick} />\r\n </Box>\r\n );\r\n};\r\n","export function getSrcFromBase64(base64: string) {\r\n return `data:image/jpg;base64,${base64}`;\r\n}\r\n","import {\r\n ApiaUtil,\r\n IconButton,\r\n SortableList,\r\n SortableListItem,\r\n} from '@apia/components';\r\nimport { Box, getVariant, Textarea } from '@apia/theme';\r\nimport { makeAutoObservable, toJS } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { uniqueId } from '@apia/notifications';\r\nimport { ImageIcon } from './ImageIcon';\r\nimport { getSrcFromBase64 } from '../ImageBinaryField/getImageSrcString';\r\nimport { getImagesFromDisk } from '../ImageBinaryField/getImage';\r\n\r\nexport type TGenerateFromImage = {\r\n base64: string;\r\n description: string;\r\n};\r\n\r\ntype TStoredImage = TGenerateFromImage & { id: string };\r\n\r\nclass ImagesStore {\r\n images: Map<string, TStoredImage> = new Map();\r\n selectedId = '';\r\n\r\n constructor(\r\n images: TGenerateFromImage[],\r\n public multiple: boolean,\r\n ) {\r\n this.images = new Map(\r\n images.map((c) => {\r\n const id = uniqueId();\r\n return [id, { ...c, id }];\r\n }),\r\n );\r\n this.selectedId = this.images.values().next().value?.id || '';\r\n makeAutoObservable(this);\r\n }\r\n}\r\n\r\nconst GetImagesDescription = observer(({ store }: { store: ImagesStore }) => {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n <Box\r\n className=\"images_description_generator\"\r\n {...getVariant('layout.design.projectAnalysis.imagesLoader')}\r\n >\r\n <Box className=\"images_sort_wrapper\">\r\n <SortableList\r\n onSortChange={(ev) => {\r\n store.images = new Map(\r\n ev.map((c) => [\r\n c.props.id,\r\n c.props.additionalProps as TStoredImage,\r\n ]),\r\n );\r\n }}\r\n >\r\n {[...store.images].map(([k, c]) => (\r\n <SortableListItem additionalProps={c} id={c.id} key={c.id}>\r\n <ImageIcon\r\n deletable={store.multiple}\r\n onClick={() => {\r\n store.selectedId = c.id;\r\n }}\r\n onRemove={() => {\r\n store.images.delete(k);\r\n }}\r\n src={getSrcFromBase64(c.base64 ?? '')}\r\n />\r\n </SortableListItem>\r\n ))}\r\n </SortableList>\r\n </Box>\r\n <Box className=\"image_editor\">\r\n <Box className=\"image_preview\">\r\n {store.images.get(store.selectedId) && (\r\n <img\r\n src={getSrcFromBase64(\r\n store.images.get(store.selectedId)!.base64 ?? '',\r\n )}\r\n />\r\n )}\r\n </Box>\r\n <Box className=\"image_description\">\r\n <Textarea\r\n autoFocus\r\n disabled={!store.images.get(store.selectedId)}\r\n onChange={(ev) => {\r\n const image = store.images.get(store.selectedId);\r\n if (image) image.description = ev.target.value;\r\n }}\r\n value={store.images.get(store.selectedId)?.description}\r\n />\r\n {store.multiple && (\r\n <IconButton\r\n icon=\"Attach\"\r\n onClick={() => {\r\n getImagesFromDisk({ multiple: 'true' }).then((res) => {\r\n res.forEach((c) => {\r\n const id = uniqueId();\r\n store.images.set(id, {\r\n base64: c.base64,\r\n description: '',\r\n id,\r\n });\r\n });\r\n });\r\n }}\r\n size=\"Md\"\r\n iconSize=\"Sm\"\r\n variant=\"icon-only\"\r\n />\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n});\r\n\r\nexport function getImagesWithDescription({\r\n multiple,\r\n}: {\r\n multiple?: boolean;\r\n}): Promise<TGenerateFromImage[]> {\r\n return new Promise((resolve) => {\r\n getImagesFromDisk({ multiple: multiple ? 'true' : undefined }).then(\r\n (images) => {\r\n const store = new ImagesStore(\r\n images.map((c) => ({\r\n base64: c.base64,\r\n description: '',\r\n })),\r\n multiple || false,\r\n );\r\n\r\n ApiaUtil.instance.modals.open({\r\n children: <GetImagesDescription store={store} />,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector<HTMLElement>('textarea');\r\n },\r\n onConfirm: () => {\r\n resolve([...toJS(store.images).values()]);\r\n },\r\n onCancel() {\r\n resolve([]);\r\n },\r\n size: 'xxxl-fixed',\r\n noHeader: true,\r\n });\r\n },\r\n );\r\n });\r\n}\r\n","import { FilterDTO } from '@apia/components';\r\nimport { createContext, FC } from 'react';\r\n\r\nexport type TReference = {\r\n title: string;\r\n body: string;\r\n link: string;\r\n isExternal: boolean;\r\n score: number;\r\n startIndex: number;\r\n};\r\n\r\nexport type TSearchListItem = {\r\n content: string;\r\n isExternal: boolean;\r\n link: string;\r\n title: string;\r\n references: TReference[];\r\n};\r\n\r\nexport interface ProcessingUnit {\r\n visualizationType: TSearchMode;\r\n content: string;\r\n references: TReference[];\r\n isExternal: boolean;\r\n}\r\n\r\nexport interface ListingProcessingUnit extends ProcessingUnit {\r\n visualizationType: 'list';\r\n title: string;\r\n link: string;\r\n}\r\n\r\nexport interface ChatProcessingUnit extends ProcessingUnit {\r\n visualizationType: 'chat';\r\n}\r\n\r\nexport const ViewRendererContext = createContext<ISemanticSearchViewController>(\r\n {} as any,\r\n);\r\n\r\nexport type TSearchMode = 'list' | 'chat' | 'none';\r\n\r\nexport interface ISemanticSearchViewController {\r\n state: {\r\n filters: Record<string, FilterDTO>;\r\n filtersOpen: boolean;\r\n isLoading: boolean;\r\n mode: TSearchMode;\r\n searchString: string;\r\n };\r\n\r\n ResultsRenderer: FC;\r\n clearHistory(): Promise<void>;\r\n search(str?: string): void;\r\n toggleFiltersOpen(): void;\r\n}\r\n\r\nexport type TResponseData = {\r\n result: string;\r\n success: string;\r\n streaming: boolean;\r\n failed?: boolean;\r\n};\r\n\r\nexport interface ISearchResultsController<P extends ProcessingUnit> {\r\n state: {\r\n results: P[];\r\n };\r\n\r\n beforeSearch(props?: object): void;\r\n afterSearch(props?: object): void;\r\n\r\n clear(): void;\r\n\r\n processResults(\r\n qryString: string,\r\n results: ProcessingUnit[],\r\n responseData?: TResponseData,\r\n ): void;\r\n\r\n Component: FC;\r\n}\r\n","import { ApiaUtil, ChatMessage, SimpleButton } from '@apia/components';\r\nimport { Box, Paragraph } from '@apia/theme';\r\nimport { ReactElement } from 'react';\r\n\r\nexport type TMultipleChoiceMessageOption<OptionProps> = {\r\n label: string;\r\n url: string;\r\n additionalProps?: OptionProps;\r\n};\r\n\r\nexport class MultipleChoiceMessage<OptionProps> extends ChatMessage {\r\n constructor(\r\n question: string,\r\n options: TMultipleChoiceMessageOption<OptionProps>[],\r\n Renderer?: (props: {\r\n item: TMultipleChoiceMessageOption<OptionProps>;\r\n }) => ReactElement,\r\n ) {\r\n super(\r\n Renderer ? (\r\n <Box className=\"multipleChoiceMessage customRenderer\">\r\n <Paragraph>{question}</Paragraph>\r\n {options.map((item) => (\r\n <Renderer item={item} key={item.url} />\r\n ))}\r\n </Box>\r\n ) : (\r\n <Box className=\"multipleChoiceMessage\">\r\n <Paragraph>{question}</Paragraph>\r\n <Box as=\"ul\">\r\n {options.map((current) => (\r\n <li key={current.label}>\r\n <SimpleButton\r\n className=\"multipleChoice__option\"\r\n onClick={() => {\r\n ApiaUtil.instance.tabs.openTab(current.label, current.url);\r\n }}\r\n >\r\n {current.label}\r\n </SimpleButton>\r\n </li>\r\n ))}\r\n </Box>\r\n </Box>\r\n ),\r\n 'multipleChoice',\r\n );\r\n }\r\n}\r\n"],"names":["__publicField","part"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/semanticSearch/SearchController/objects/SemanticSearchReference/Component.tsx","../src/semanticSearch/SearchController/objects/SemanticSearchReference/index.tsx","../src/semanticSearch/SearchController/index.tsx","../src/routines/RoutinesGeneration.ts","../src/routines/DashboardRoutinesGeneration.ts","../src/stream/ResponseStream.ts","../src/components/documents/ImageBinaryField/getImage.ts","../src/components/documents/UploadModal/ImageIcon.tsx","../src/components/documents/ImageBinaryField/getImageSrcString.ts","../src/components/documents/UploadModal/getImagesWithDescription.tsx","../src/semanticSearch/ViewController/types.ts","../src/components/chat/messages/MultipleChoiceMessage.tsx"],"sourcesContent":["import { Box } from '@apia/theme';\r\nimport { SemanticSearchReference } from '.';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\nexport const Component = observer(\r\n (props: { instance: SemanticSearchReference }) => {\r\n return (\r\n <Box>\r\n <a href={props.instance.state.link}>{props.instance.state.title}</a>\r\n <Box>{props.instance.state.body}</Box>\r\n </Box>\r\n );\r\n },\r\n);\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { Component } from './Component';\r\n\r\n/*\r\n * This class is used to store the state of a search result record.\r\n */\r\ntype TSearchResultState = {\r\n title: string;\r\n body: string;\r\n link: string;\r\n};\r\n\r\nexport class SemanticSearchReference {\r\n state: TSearchResultState = { title: '', body: '', link: '' };\r\n\r\n public constructor(props: TSearchResultState) {\r\n this.state = props;\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n Component = () => (\r\n <>\r\n (<Component instance={this} />)\r\n </>\r\n );\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { SemanticSearchReference } from './objects/SemanticSearchReference';\r\nimport { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport { FiltersStore } from '@apia/components';\r\n\r\n/**\r\n * @class SearchController:\r\n * - mobx Controller for the semantic search logic\r\n * - search for a term and get the results. This controller must be used\r\n * to maintain the state of the search string and of the results given a search string\r\n */\r\nclass SearchController {\r\n static instance = new SearchController();\r\n\r\n state: {\r\n queryString: string;\r\n results: SemanticSearchReference[];\r\n isLoading: boolean;\r\n disabled: boolean;\r\n } = { queryString: '', results: [], isLoading: false, disabled: false };\r\n\r\n protected constructor() {\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n public async search(selectedId: string) {\r\n const filters = await FiltersStore.getFiltersById(\r\n Number.parseInt(selectedId),\r\n );\r\n FiltersStore.setFilters(filters, 'U');\r\n SearchController.instance.state.isLoading = true;\r\n const response = await ApiaApi.post<{ results: SemanticSearchReference[] }>(\r\n makeApiaUrl({\r\n action: 'search',\r\n semSearchId: selectedId,\r\n }),\r\n {\r\n postData: {\r\n q: SearchController.instance.state.queryString,\r\n filters: JSON.stringify(FiltersStore.getFiltersAsFilterValue('U')),\r\n },\r\n postDataTreatement: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n if (response?.data?.results) {\r\n this.setReferences(response.data.results);\r\n }\r\n this.state.isLoading = false;\r\n }\r\n\r\n protected setReferences(results: SemanticSearchReference[]) {\r\n if (typeof results === 'string' && results) {\r\n results = JSON.parse(results as any as string);\r\n }\r\n SearchController.instance.state.results = results.map((x) =>\r\n x instanceof SemanticSearchReference ? x : new SemanticSearchReference(x),\r\n );\r\n SearchController.instance.state.disabled = false;\r\n }\r\n}\r\n\r\nexport default SearchController;\r\n","import axios from 'axios';\r\nimport { AudioRecorder } from '@apia/util';\r\nimport { ApiaApi, makeApiaUrl, parseSuccessfulResponse } from '@apia/api';\r\nimport { ResponseStream } from '../stream/ResponseStream';\r\nimport { action, makeObservable, observable } from 'mobx';\r\n\r\ntype RoutinesGenerationState = {\r\n isLoading: boolean;\r\n progress: number;\r\n};\r\n\r\ntype TPollProgress = {\r\n message: string;\r\n progress: number;\r\n debug: string;\r\n streamPart?: string;\r\n};\r\n\r\nexport type TPollRoutineResult = {\r\n status: string;\r\n payload: unknown | TPollProgress;\r\n};\r\n\r\nexport type TGenerateFromImage = {\r\n base64: string;\r\n description: string;\r\n};\r\n\r\nexport type TRoutineCompletion = Partial<{\r\n images: TGenerateFromImage[];\r\n parameters: Record<string, string>;\r\n stream: ResponseStream;\r\n}> & {\r\n routineName: string;\r\n};\r\n\r\nfunction isPollProgress(\r\n payload: unknown | TPollProgress,\r\n): payload is TPollProgress {\r\n return (payload as TPollProgress)?.progress !== undefined;\r\n}\r\n\r\nexport class RoutinesGeneration {\r\n public audioRecorder = new AudioRecorder();\r\n private routineId: string = '';\r\n public state: RoutinesGenerationState = {\r\n isLoading: false,\r\n progress: 0,\r\n };\r\n\r\n public constructor() {\r\n makeObservable(this, {\r\n completion: action,\r\n state: observable,\r\n stop: action,\r\n transcribeAudio: action,\r\n });\r\n }\r\n\r\n private checkCanGenerate() {\r\n if (this.state.isLoading) {\r\n throw new Error('Cannot queue two simultaneous generations');\r\n }\r\n\r\n this.state.isLoading = true;\r\n }\r\n\r\n public async pollRoutine<T>(routineId: string, stream?: ResponseStream) {\r\n this.routineId = routineId;\r\n this.state.isLoading = true;\r\n return this.internalPollRoutine<T>(stream);\r\n }\r\n\r\n private async internalPollRoutine<T>(stream?: ResponseStream) {\r\n while (this.state.isLoading) {\r\n const pollResult = await this.callRoutinePoll(this.routineId);\r\n if (isPollProgress(pollResult.payload)) {\r\n try {\r\n const res = JSON.parse(pollResult.payload.debug) as string[];\r\n if (res.length > 0) {\r\n res.forEach((c) => {\r\n console.log(JSON.parse(c));\r\n });\r\n }\r\n\r\n if (pollResult.payload.streamPart && stream) {\r\n stream.emit('part', pollResult.payload.streamPart);\r\n }\r\n this.state.progress = pollResult.payload.progress;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n } else if (pollResult.status === 'FINISHED') {\r\n this.resetLoading();\r\n return pollResult.payload as T;\r\n } else if (pollResult.status === 'ERROR') {\r\n this.resetLoading();\r\n throw new Error(pollResult.payload as string);\r\n } else {\r\n this.resetLoading();\r\n throw new Error('Wrong poll response');\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected async callAudioTranscription(\r\n audio: Blob,\r\n ): ReturnType<RoutinesGeneration['callRoutineStart']> {\r\n const url = makeApiaUrl({\r\n action: 'routineStart',\r\n routine: 'transcription/Transcribe',\r\n });\r\n\r\n const response = await axios.post(url, audio.arrayBuffer(), {\r\n headers: {\r\n 'Content-Type': 'application/octet-stream',\r\n },\r\n });\r\n\r\n const result = await parseSuccessfulResponse<{\r\n orchestrator: { routineId: string };\r\n }>(response, '');\r\n\r\n if (result?.orchestrator) {\r\n return result;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected async callRoutinePoll(\r\n routineId: string,\r\n ): Promise<TPollRoutineResult> {\r\n const result = await ApiaApi.post<{ orchestrator: string }>(\r\n makeApiaUrl({\r\n action: 'routinePoll',\r\n routineId,\r\n }),\r\n );\r\n\r\n if (result?.data?.orchestrator) {\r\n return JSON.parse(result.data.orchestrator) as TPollRoutineResult;\r\n } else {\r\n throw new Error('Poll failed');\r\n }\r\n }\r\n\r\n protected async callRoutineStart(\r\n routineName: string,\r\n parameters: Record<string, string>,\r\n images: TGenerateFromImage[],\r\n ): Promise<{ orchestrator: { routineId: string } } | null> {\r\n const result = await ApiaApi.post<{\r\n orchestrator: { routineId: string };\r\n }>(\r\n makeApiaUrl({\r\n action: 'routineStart',\r\n routine: routineName,\r\n }),\r\n {\r\n postData: {\r\n images: JSON.stringify(images),\r\n ...parameters,\r\n },\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n\r\n return result?.data || null;\r\n }\r\n\r\n private async executeRoutine<T>(\r\n routineName: string,\r\n parameters: Record<string, string>,\r\n images: TGenerateFromImage[],\r\n stream?: ResponseStream,\r\n ): Promise<T | null> {\r\n this.checkCanGenerate();\r\n\r\n try {\r\n const result = await this.callRoutineStart(\r\n routineName,\r\n parameters,\r\n images,\r\n );\r\n\r\n if (result?.orchestrator?.routineId !== undefined) {\r\n this.routineId = result?.orchestrator.routineId;\r\n\r\n return this.internalPollRoutine<T>(stream);\r\n } else {\r\n throw new Error('Cannot get routine id');\r\n }\r\n } catch (e) {\r\n this.resetLoading();\r\n throw e;\r\n }\r\n }\r\n\r\n private resetLoading() {\r\n this.state.isLoading = false;\r\n this.state.progress = 0;\r\n }\r\n\r\n public async completion<T>(params: TRoutineCompletion) {\r\n return this.executeRoutine<T>(\r\n params.routineName,\r\n params.parameters ?? {},\r\n params.images ?? [],\r\n params.stream,\r\n );\r\n }\r\n\r\n public stop() {\r\n this.resetLoading();\r\n ApiaApi.get<{\r\n orchestrator: { routineId: string };\r\n }>(\r\n makeApiaUrl({\r\n action: 'routineStop',\r\n routineId: this.routineId,\r\n }),\r\n );\r\n }\r\n\r\n public async transcribeAudio(audio: Blob) {\r\n const result = await this.callAudioTranscription(audio);\r\n\r\n if (result) {\r\n this.state.isLoading = true;\r\n if (result?.orchestrator?.routineId) {\r\n this.routineId = result?.orchestrator?.routineId;\r\n return await this.internalPollRoutine<{\r\n transcription: string;\r\n }>();\r\n }\r\n }\r\n\r\n throw new Error('Something went wrong while transcribing the audio');\r\n }\r\n}\r\n","import { TActionDispatcher, TActionResult } from '@apia/dashboard-controller';\r\nimport {\r\n RoutinesGeneration,\r\n TPollRoutineResult,\r\n TGenerateFromImage,\r\n} from './RoutinesGeneration';\r\n\r\nexport class DashboardsRoutinesGeneration extends RoutinesGeneration {\r\n constructor(protected dispatcher: TActionDispatcher) {\r\n super();\r\n }\r\n\r\n private blobToBase64(audio: Blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n if (reader.result && typeof reader.result === 'string') {\r\n const base64 = reader.result.split(',')[1];\r\n resolve(base64);\r\n } else {\r\n reject(new Error('Could not convert Blob to base64'));\r\n }\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(audio);\r\n });\r\n }\r\n\r\n protected async callAudioTranscription(\r\n audio: Blob,\r\n ): Promise<{ orchestrator: { routineId: string } } | null> {\r\n const audioBase64 = await this.blobToBase64(audio);\r\n const result = (await this.dispatcher({\r\n action: 'transcription',\r\n audioBase64,\r\n })) as TActionResult<{\r\n orchestrator: {\r\n routineId: string;\r\n };\r\n }>;\r\n\r\n return result?.data || null;\r\n }\r\n\r\n protected async callRoutinePoll(\r\n routineId: string,\r\n ): Promise<TPollRoutineResult> {\r\n const result = (await this.dispatcher({\r\n action: 'routinePoll',\r\n routineId,\r\n })) as TActionResult<{ orchestrator: string }>;\r\n\r\n if (result?.data?.orchestrator) {\r\n const parsed = JSON.parse(result.data.orchestrator) as TPollRoutineResult;\r\n\r\n return parsed;\r\n }\r\n\r\n throw new Error('Poll failed');\r\n }\r\n\r\n protected async callRoutineStart(\r\n routineName: string,\r\n parameters: Record<string, string>,\r\n images: TGenerateFromImage[],\r\n ): Promise<{ orchestrator: { routineId: string } } | null> {\r\n const result = (await this.dispatcher({\r\n action: 'routineStart',\r\n routine: routineName,\r\n ...parameters,\r\n images,\r\n })) as TActionResult<{\r\n orchestrator: {\r\n routineId: string;\r\n };\r\n }>;\r\n\r\n return result?.data || null;\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\n\r\nexport type ResponseStreamEvents = {\r\n part: string;\r\n block: { type: string; description: string };\r\n};\r\n\r\nexport type ResponseStreamBlock = { type: string; content: string; id: string };\r\n\r\nexport class ResponseStream extends EventEmitter<ResponseStreamEvents> {\r\n private buffer: string = '';\r\n private isRunning = false;\r\n private locked = false;\r\n public maxCompletionTime = 150; // ms\r\n private minPartSize = 2;\r\n private partSize = 2;\r\n private timing = 5; // ms\r\n private waiting: string[] = [];\r\n\r\n private calculatePartSize() {\r\n const totalSize =\r\n this.buffer.length +\r\n this.waiting.reduce<number>((a, b) => a + b.length, 0);\r\n\r\n this.partSize = Math.max(\r\n this.minPartSize,\r\n totalSize * (this.timing / this.maxCompletionTime),\r\n );\r\n }\r\n\r\n emit<K extends keyof ResponseStreamEvents>(\r\n ev: K,\r\n data: ResponseStreamEvents[K],\r\n ): void {\r\n if (ev === 'part') {\r\n let chunk = data as string;\r\n\r\n const blockMatches = chunk.matchAll(\r\n /<BLOCK-START type=\"([^\"]+)\">(.+?)<\\/BLOCK-END type=\"\\1\">/g,\r\n );\r\n\r\n for (const match of blockMatches) {\r\n this.emit('block', { description: match[2], type: match[1] });\r\n chunk = chunk.replaceAll(match[0], '');\r\n }\r\n\r\n if (this.locked) {\r\n this.waiting.push(chunk);\r\n } else {\r\n this.buffer += chunk;\r\n }\r\n this.calculatePartSize();\r\n this.run();\r\n } else {\r\n super.emit(ev, data);\r\n }\r\n }\r\n\r\n run() {\r\n if (!this.isRunning) {\r\n this.isRunning = true;\r\n const interval = setInterval(() => {\r\n this.locked = true;\r\n\r\n const choosedSize = Math.min(this.buffer.length, this.partSize);\r\n\r\n const part = this.buffer.slice(0, choosedSize);\r\n this.buffer = this.buffer.slice(choosedSize);\r\n\r\n while (this.waiting.length > 0) {\r\n const part = this.waiting.shift();\r\n if (part) {\r\n this.buffer += part;\r\n }\r\n }\r\n this.locked = false;\r\n if (part) {\r\n super.emit('part', part);\r\n } else {\r\n this.isRunning = false;\r\n clearInterval(interval);\r\n }\r\n }, this.timing);\r\n }\r\n }\r\n}\r\n","import { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport { uniqueId } from 'lodash-es';\r\n\r\nexport type RetrievedImage = {\r\n base64: string;\r\n path: string;\r\n};\r\n\r\nexport type GetImageSize = '256x256' | '512x512' | '1024x1024';\r\n\r\nexport async function getImageFromGpt({\r\n prompt,\r\n ...props\r\n}: {\r\n prompt: string;\r\n size?: GetImageSize;\r\n model: string;\r\n}): Promise<RetrievedImage | null> {\r\n const res = await ApiaApi.post<{ image: string }>(\r\n makeApiaUrl({\r\n action: 'generateImage',\r\n ...props,\r\n }),\r\n {\r\n postData: {\r\n prompt,\r\n },\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n\r\n if (res?.data)\r\n return {\r\n base64: res.data.image as any as string,\r\n path: `${uniqueId()}.png`,\r\n };\r\n\r\n return null;\r\n}\r\n\r\nexport async function getImageFromDisk(\r\n inputProps?: Partial<{\r\n accept: string;\r\n }>,\r\n): Promise<RetrievedImage | null> {\r\n return (\r\n (await getImagesFromDisk({ ...inputProps, multiple: 'false' }))![0] ?? null\r\n );\r\n}\r\n\r\nexport function getImagesFromDisk(\r\n inputProps?: Partial<{\r\n accept: string;\r\n multiple: string;\r\n }>,\r\n): Promise<RetrievedImage[]> {\r\n return new Promise<RetrievedImage[]>((resolve) => {\r\n const input = document.createElement('input');\r\n input.accept = 'image/*';\r\n input.type = 'file';\r\n input.style.display = 'none';\r\n Object.assign(input, inputProps);\r\n\r\n document.body.append(input);\r\n\r\n input.addEventListener('change', (event) => {\r\n const target = event?.target as HTMLInputElement;\r\n if (!target?.files) return;\r\n\r\n const retrievedImages: (RetrievedImage | null)[] = [];\r\n const sources = [...(target.files ?? [])];\r\n\r\n const checkResolve = () => {\r\n if (sources.length === retrievedImages.length) {\r\n resolve(retrievedImages.filter((c): c is RetrievedImage => !!c));\r\n }\r\n };\r\n\r\n sources.forEach((file) => {\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = function (e) {\r\n const binary = (e.target?.result as string)?.split(',')[1];\r\n input.remove();\r\n retrievedImages.push({\r\n base64: binary,\r\n path: file.name,\r\n });\r\n\r\n checkResolve();\r\n };\r\n reader.readAsDataURL(file);\r\n } else {\r\n retrievedImages.push(null);\r\n }\r\n\r\n checkResolve();\r\n });\r\n });\r\n input.click();\r\n });\r\n}\r\n","import { IconButton } from '@apia/components';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const ImageIcon = ({\r\n deletable,\r\n onClick,\r\n onRemove,\r\n src,\r\n}: {\r\n deletable: boolean;\r\n onClick: () => unknown;\r\n onRemove: () => unknown;\r\n src: string;\r\n}) => {\r\n return (\r\n <Box className=\"image_preview\">\r\n {deletable && (\r\n <IconButton icon=\"Close\" size=\"Xs\" iconSize=\"Xs\" onClick={onRemove} />\r\n )}\r\n <img src={src} onClick={onClick} />\r\n </Box>\r\n );\r\n};\r\n","export function getSrcFromBase64(base64: string) {\r\n return `data:image/jpg;base64,${base64}`;\r\n}\r\n","import {\r\n ApiaUtil,\r\n IconButton,\r\n SortableList,\r\n SortableListItem,\r\n} from '@apia/components';\r\nimport { Box, getVariant, Textarea } from '@apia/theme';\r\nimport { makeAutoObservable, toJS } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { uniqueId } from '@apia/notifications';\r\nimport { ImageIcon } from './ImageIcon';\r\nimport { getSrcFromBase64 } from '../ImageBinaryField/getImageSrcString';\r\nimport { getImagesFromDisk } from '../ImageBinaryField/getImage';\r\n\r\nexport type TGenerateFromImage = {\r\n base64: string;\r\n description: string;\r\n};\r\n\r\ntype TStoredImage = TGenerateFromImage & { id: string };\r\n\r\nclass ImagesStore {\r\n images: Map<string, TStoredImage> = new Map();\r\n selectedId = '';\r\n\r\n constructor(\r\n images: TGenerateFromImage[],\r\n public multiple: boolean,\r\n ) {\r\n this.images = new Map(\r\n images.map((c) => {\r\n const id = uniqueId();\r\n return [id, { ...c, id }];\r\n }),\r\n );\r\n this.selectedId = this.images.values().next().value?.id || '';\r\n makeAutoObservable(this);\r\n }\r\n}\r\n\r\nconst GetImagesDescription = observer(({ store }: { store: ImagesStore }) => {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n <Box\r\n className=\"images_description_generator\"\r\n {...getVariant('layout.design.projectAnalysis.imagesLoader')}\r\n >\r\n <Box className=\"images_sort_wrapper\">\r\n <SortableList\r\n onSortChange={(ev) => {\r\n store.images = new Map(\r\n ev.map((c) => [\r\n c.props.id,\r\n c.props.additionalProps as TStoredImage,\r\n ]),\r\n );\r\n }}\r\n >\r\n {[...store.images].map(([k, c]) => (\r\n <SortableListItem additionalProps={c} id={c.id} key={c.id}>\r\n <ImageIcon\r\n deletable={store.multiple}\r\n onClick={() => {\r\n store.selectedId = c.id;\r\n }}\r\n onRemove={() => {\r\n store.images.delete(k);\r\n }}\r\n src={getSrcFromBase64(c.base64 ?? '')}\r\n />\r\n </SortableListItem>\r\n ))}\r\n </SortableList>\r\n </Box>\r\n <Box className=\"image_editor\">\r\n <Box className=\"image_preview\">\r\n {store.images.get(store.selectedId) && (\r\n <img\r\n src={getSrcFromBase64(\r\n store.images.get(store.selectedId)!.base64 ?? '',\r\n )}\r\n />\r\n )}\r\n </Box>\r\n <Box className=\"image_description\">\r\n <Textarea\r\n autoFocus\r\n disabled={!store.images.get(store.selectedId)}\r\n onChange={(ev) => {\r\n const image = store.images.get(store.selectedId);\r\n if (image) image.description = ev.target.value;\r\n }}\r\n value={store.images.get(store.selectedId)?.description}\r\n />\r\n {store.multiple && (\r\n <IconButton\r\n icon=\"Attach\"\r\n onClick={() => {\r\n getImagesFromDisk({ multiple: 'true' }).then((res) => {\r\n res.forEach((c) => {\r\n const id = uniqueId();\r\n store.images.set(id, {\r\n base64: c.base64,\r\n description: '',\r\n id,\r\n });\r\n });\r\n });\r\n }}\r\n size=\"Md\"\r\n iconSize=\"Sm\"\r\n variant=\"icon-only\"\r\n />\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n});\r\n\r\nexport function getImagesWithDescription({\r\n multiple,\r\n}: {\r\n multiple?: boolean;\r\n}): Promise<TGenerateFromImage[]> {\r\n return new Promise((resolve) => {\r\n getImagesFromDisk({ multiple: multiple ? 'true' : undefined }).then(\r\n (images) => {\r\n const store = new ImagesStore(\r\n images.map((c) => ({\r\n base64: c.base64,\r\n description: '',\r\n })),\r\n multiple || false,\r\n );\r\n\r\n ApiaUtil.instance.modals.open({\r\n children: <GetImagesDescription store={store} />,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector<HTMLElement>('textarea');\r\n },\r\n onConfirm: () => {\r\n resolve([...toJS(store.images).values()]);\r\n },\r\n onCancel() {\r\n resolve([]);\r\n },\r\n size: 'xxxl-fixed',\r\n noHeader: true,\r\n });\r\n },\r\n );\r\n });\r\n}\r\n","import { FilterDTO } from '@apia/components';\r\nimport { createContext, FC } from 'react';\r\n\r\nexport type TReference = {\r\n title: string;\r\n body: string;\r\n link: string;\r\n isExternal: boolean;\r\n score: number;\r\n startIndex: number;\r\n};\r\n\r\nexport type TSearchListItem = {\r\n content: string;\r\n isExternal: boolean;\r\n link: string;\r\n title: string;\r\n references: TReference[];\r\n};\r\n\r\nexport interface ProcessingUnit {\r\n visualizationType: TSearchMode;\r\n content: string;\r\n references: TReference[];\r\n isExternal: boolean;\r\n}\r\n\r\nexport interface ListingProcessingUnit extends ProcessingUnit {\r\n visualizationType: 'list';\r\n title: string;\r\n link: string;\r\n}\r\n\r\nexport interface ChatProcessingUnit extends ProcessingUnit {\r\n visualizationType: 'chat';\r\n}\r\n\r\nexport const ViewRendererContext = createContext<ISemanticSearchViewController>(\r\n {} as any,\r\n);\r\n\r\nexport type TSearchMode = 'list' | 'chat' | 'none';\r\n\r\nexport interface ISemanticSearchViewController {\r\n state: {\r\n filters: Record<string, FilterDTO>;\r\n filtersOpen: boolean;\r\n isLoading: boolean;\r\n mode: TSearchMode;\r\n searchString: string;\r\n };\r\n\r\n ResultsRenderer: FC;\r\n clearHistory(): Promise<void>;\r\n search(str?: string): void;\r\n toggleFiltersOpen(): void;\r\n}\r\n\r\nexport type TResponseData = {\r\n result: string;\r\n success: string;\r\n streaming: boolean;\r\n failed?: boolean;\r\n};\r\n\r\nexport interface ISearchResultsController<P extends ProcessingUnit> {\r\n state: {\r\n results: P[];\r\n };\r\n\r\n beforeSearch(props?: object): void;\r\n afterSearch(props?: object): void;\r\n\r\n clear(): void;\r\n\r\n processResults(\r\n qryString: string,\r\n results: ProcessingUnit[],\r\n responseData?: TResponseData,\r\n ): void;\r\n\r\n Component: FC;\r\n}\r\n","import { ApiaUtil, ChatMessage, SimpleButton } from '@apia/components';\r\nimport { Box, Paragraph } from '@apia/theme';\r\nimport { ReactElement } from 'react';\r\n\r\nexport type TMultipleChoiceMessageOption<OptionProps> = {\r\n label: string;\r\n url: string;\r\n additionalProps?: OptionProps;\r\n};\r\n\r\nexport class MultipleChoiceMessage<OptionProps> extends ChatMessage {\r\n constructor(\r\n question: string,\r\n options: TMultipleChoiceMessageOption<OptionProps>[],\r\n Renderer?: (props: {\r\n item: TMultipleChoiceMessageOption<OptionProps>;\r\n }) => ReactElement,\r\n ) {\r\n super(\r\n Renderer ? (\r\n <Box className=\"multipleChoiceMessage customRenderer\">\r\n <Paragraph>{question}</Paragraph>\r\n {options.map((item) => (\r\n <Renderer item={item} key={item.url} />\r\n ))}\r\n </Box>\r\n ) : (\r\n <Box className=\"multipleChoiceMessage\">\r\n <Paragraph>{question}</Paragraph>\r\n <Box as=\"ul\">\r\n {options.map((current) => (\r\n <li key={current.label}>\r\n <SimpleButton\r\n className=\"multipleChoice__option\"\r\n onClick={() => {\r\n ApiaUtil.instance.tabs.openTab(current.label, current.url);\r\n }}\r\n >\r\n {current.label}\r\n </SimpleButton>\r\n </li>\r\n ))}\r\n </Box>\r\n </Box>\r\n ),\r\n 'multipleChoice',\r\n );\r\n }\r\n}\r\n"],"names":["__publicField","part"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apia/ai",
3
- "version": "4.0.30",
3
+ "version": "4.0.32",
4
4
  "sideEffects": false,
5
5
  "author": "Alexis Leite <alexisleite@live.com>",
6
6
  "main": "dist/index.js",
@@ -15,11 +15,11 @@
15
15
  "libWatchForDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:dashboards"
16
16
  },
17
17
  "dependencies": {
18
- "@apia/api": "^4.0.30",
19
- "@apia/components": "^4.0.30",
20
- "@apia/dashboard-controller": "^4.0.30",
21
- "@apia/theme": "^4.0.30",
22
- "@apia/util": "^4.0.30",
18
+ "@apia/api": "^4.0.32",
19
+ "@apia/components": "^4.0.32",
20
+ "@apia/dashboard-controller": "^4.0.32",
21
+ "@apia/theme": "^4.0.32",
22
+ "@apia/util": "^4.0.32",
23
23
  "mobx": "^6.13.1",
24
24
  "mobx-react-lite": "^4.0.7"
25
25
  },
@@ -27,7 +27,7 @@
27
27
  "@types/react": "^18.2.43",
28
28
  "@types/react-dom": "^18.2.17",
29
29
  "@typescript-eslint/eslint-plugin": "^6.14.0",
30
- "axios": "^1.3.5",
30
+ "axios": "^1.11.0",
31
31
  "typescript": "5.4.2"
32
32
  },
33
33
  "peerDependencies": {
@@ -40,5 +40,5 @@
40
40
  "access": "public",
41
41
  "registry": "https://registry.npmjs.org/"
42
42
  },
43
- "gitHead": "02b7b1d5b7470fb1ecbab9ca09f6f79c040a45dc"
43
+ "gitHead": "eca64d3d15acd91a55b9a21891b623aeca1f4401"
44
44
  }