Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,369 @@
# pieces-medullar
Library of [Activepieces](https://www.activepieces.com/) for [Medullar Solutions](https://www.medullar.com)
## Overview
`pieces-medullar` is a library designed to integrate Medullar Solutions with the Activepieces framework, enabling seamless automation and extensibility.
## Features
- **Extensibility**: Easily integrate with other services.
- **Type-Safe**: Built with TypeScript for robust type checking.
- **Community-Driven**: Contributions are welcome to enhance its capabilities.
## Contributing
We welcome contributions! Please refer to the [Contributing Guide](https://www.activepieces.com/docs/contributing/overview) for more details.
## License
This library is released under the [MIT License](https://opensource.org/licenses/MIT).
## API Documentation
### Base URL
`https://api.medullar.com`
### Authentication
All endpoints require authentication. Include a valid access token in the `Authorization` header:
`Authorization: Bearer <your_token_here>`
### Endpoints
#### Get User Details
**GET** `/auth/v1/users/me/`
Retrieve details about the currently authenticated user.
* URL: `/auth/v1/users/me/`
* Method: GET
* Auth required: Yes
* Example Response
```json
{
"id": 360,
"uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407",
"username": "marc@medullar.com",
"email": "marc@medullar.com",
"first_name": "Marc",
"last_name": "Llopart",
"language": "en",
"role": "super_admin",
"status": "active",
"onboarding_status": "completed",
"other_data": {},
"salesforce_metadata": {},
"is_active": true,
"date_joined": "2025-03-06T13:49:50Z",
"last_login": "2025-05-08T08:19:43.969447Z",
"created_at": "2025-03-06T13:49:50.011260Z",
"updated_at": "2025-04-02T16:23:57.557045Z",
"devices": null,
"company": {
"id": 26567447,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"stripe_promotion_code": ""
},
"num_days_until_trial_expiration_date": -1
}
```
#### Get User Medullar Spaces
**GET** `/explorator/v1/spaces/?user={user_uuid}&limit=1000&offset=0`
Retrieve a list of Medullar spaces associated with a specific user.
* URL: `/explorator/v1/spaces/`
* Method: GET
* Query Parameters:
* user: UUID of the user
* limit: Number of results to return
* offset: Pagination offset
* Auth required: Yes
* Example Response
```json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 496,
"uuid": "4d6a15d0-246f-447a-b53e-5dd9101d53c6",
"name": "Internal Strategy",
"is_my_space": true,
"context": "Quarterly strategy space including roadmap planning and executive updates.",
"questions": [],
"expiration_date": "9999-12-31T00:00:00Z",
"created_at": "2025-05-05T09:18:28.087134Z",
"updated_at": "2025-05-05T09:18:28.087145Z",
"records": null,
"users": null,
"record_count": 0,
"company": {
"id": 47,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"created_at": "2024-02-01T14:05:20.245119Z",
"updated_at": "2025-05-07T15:51:56.077837Z"
},
"role": "owner"
}
]
}
```
#### Get Chats in a Space
**GET** `/explorator/v1/chats/?space={spaceId}&limit=1000&offset=0`
Get a list of chats within a given Medullar space.
* URL: `/explorator/v1/chats/`
* Method: GET
* Query Parameters:
* space: ID of the space
* limit, offset: Pagination controls
* Auth required: Yes
* Example response
```json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 676,
"uuid": "7904e660-ed82-47f1-a8cb-635458c0c0aa",
"name": "automated",
"description": "",
"created_at": "2025-05-07T08:39:35.156881Z",
"updated_at": "2025-05-07T08:39:35.484367Z",
"space": {
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb",
"name": "hello"
}
}
]
}
```
#### Create a new record in a Space
**POST** `/explorator/v1/records/`
Add a new record to a Medullar space.
* URL: `/explorator/v1/records/`
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"user": {
"uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407"
},
"spaces": [
{
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb"
}
],
"data": {
"content": "let's add text to a space",
"url": ""
},
"source": "text",
"company": {
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5"
}
}
```
source can be `text` `url` `file` `image`
* Example response
```json
{
"id": 2859,
"uuid": "e50e8d79-02e8-483f-a516-3f93a9f665e9",
"name": "let's add text to a space...",
"source": "text",
"data": {
"content": "let's add text to a space",
"url": ""
},
"content_type": "text",
"action": "add_to_space",
"hash_string": "8664fdeef5dd7b78166f72d2dada6d375a5baebeffe75",
"status": "pending",
"summary": "",
"started_at": null,
"finished_at": null,
"processing_time": null,
"num_retries": 0,
"worker_task_id": "",
"created_at": "2025-05-08T08:33:25.224377Z",
"updated_at": "2025-05-08T08:33:25.228917Z",
"company": {
"id": 47,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"created_at": "2024-02-01T14:05:20.245119Z",
"updated_at": "2025-05-07T15:51:56.077837Z"
},
"user": {
"uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407"
}
}
```
#### Create a New Chat in a Space
**POST** `/explorator/v1/chats/`
Create a new chat thread within a Medullar space.
* URL: `/explorator/v1/chats/`
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"space": {
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb"
},
"name": "New Chat"
}
```
* Example response
```json
{
"id": 698,
"uuid": "9d5eec19-1e1f-4f7a-90ae-415077a8ae63",
"name": "New Chat",
"description": "",
"created_at": "2025-05-08T08:38:26.426639Z",
"updated_at": "2025-05-08T08:38:26.426649Z",
"space": {
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb",
"name": "hello"
}
}
```
#### Post a Message in a Chat
**POST** `/explorator/v1/messages/?chat={chatId}`
Post a new message to an existing chat in a Medullar space.
* URL: /explorator/v1/messages/
* Query Parameter: chat - ID of the chat
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"chat": {
"uuid": "9d5eec19-1e1f-4f7a-90ae-415077a8ae63"
},
"text": "@medullar new chat",
"user_email": "marc@medullar.com",
"user_uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407",
"is_bot": false,
"created_at": "2025-05-08T08:38:26.504Z",
"is_reasoning_selected": false,
"selected_mode": "single_agent",
"user_name": "marc"
}
```
* Example response
```
{
"id": 2319,
"uuid": "68fafef2-949a-409c-b7cd-21445f5a241b",
"text": "@medullar new chat",
"user_uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407",
"user_email": "marc@medullar.com",
"user_first_name": "Marc",
"user_last_name": "Llopart",
"is_bot": false,
"created_at": "2025-05-08T08:38:26.713567Z",
"updated_at": "2025-05-08T08:38:26.713577Z",
"is_reasoning_selected": false,
"selected_mode": "single_agent",
"source": "external_api",
"chat": {
"uuid": "9d5eec19-1e1f-4f7a-90ae-415077a8ae63",
"name": "New Chat"
}
}
```
source should be `external_api` if you want to get the response in the API call, `internal_api` will return the response in a websocket.
#### Create a New Space
**POST** `/explorator/v1/spaces/`
Create a new Medullar space.
* URL: `/explorator/v1/spaces/`
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"name": "test space",
"company": {
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5"
}
}
```
* Example response
```json
{
"id": 501,
"uuid": "415ab840-19b8-49dc-9aa0-d13a84ac5858",
"name": "test space",
"is_my_space": false,
"context": "",
"questions": [],
"expiration_date": "9999-12-31T00:00:00Z",
"created_at": "2025-05-08T08:41:35.786369Z",
"updated_at": "2025-05-08T08:41:35.786379Z",
"records": null,
"users": null,
"company": {
"id": 47,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"created_at": "2024-02-01T14:05:20.245119Z",
"updated_at": "2025-05-07T15:51:56.077837Z"
},
"role": "owner"
}
```

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-medullar",
"version": "0.2.6"
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-medullar",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/medullar/src",
"projectType": "library",
"release": {
"version": {
"currentVersionResolver": "git-tag",
"preserveLocalDependencyProtocols": false,
"manifestRootsToUpdate": [
"dist/{projectRoot}"
]
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/medullar",
"tsConfig": "packages/pieces/community/medullar/tsconfig.lib.json",
"packageJson": "packages/pieces/community/medullar/package.json",
"main": "packages/pieces/community/medullar/src/index.ts",
"assets": [
"packages/pieces/community/medullar/*.md",
{
"input": "packages/pieces/community/medullar/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/medullar",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "KI-gestützte Entdeckungs- und Einblicksplattform, die als Ihr erweiterter digitaler Geist fungiert",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Bitte verwende deinen persönlichen **API KEY**. Du kannst einen in deinem [Medullar Account Profil](https://my.medullar.com/my-account), unter dem **API Keys** Abschnitt generieren.",
"Create new Space": "Neuen Raum erstellen",
"List Spaces": "Auflistungsräume",
"Add Space Record": "Raumdatensatz hinzufügen",
"Ask Space": "Raum fragen",
"Delete Space": "Raum löschen",
"Rename Space": "Raum umbenennen",
"Create a new Space.": "Neuen Raum erstellen.",
"List all user Spaces": "Alle Benutzerräume auflisten",
"Adds a Record into a Space": "Fügt einen Datensatz zu einem Raum hinzu",
"Ask anything to a Space": "Fragen Sie etwas an einen Raum",
"Delete an existing Space.": "Löschen eines existierenden Bereichs.",
"Rename an existing Space.": "Einen existierenden Raum umbenennen.",
"Space Name": "Raumname",
"Space": "Raum",
"Source Type": "Quelltyp",
"Content": "Inhalt",
"URL": "URL",
"Chat": "Chat",
"Chat Mode": "Chat-Modus",
"Deep Analysis": "Tiefe Analyse",
"Message": "Nachricht",
"Select an Space": "Wählen Sie einen Raum",
"Select source type": "Quelltyp auswählen",
"Optional. Content of the record": "Optional. Inhalt des Datensatzes",
"Optional. URL of the record": "Optional. URL des Datensatzes",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Optional. Wählen Sie einen Chat aus, in dem Nachrichten gespeichert werden, wenn nicht ausgewählt, wird ein Standardchat mit dem Namen `automated` erstellt",
"Select chat mode.": "Chat-Modus auswählen.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Optional. Aktiviere Deep Analysis um genauere Ergebnisse zu erhalten, aber langsamere Reaktionszeit",
"Message to send to the Space": "Nachricht an den Raum senden",
"Text": "Text",
"Image": "Bild",
"File": "Datei",
"MedullaryAI Agent": "MedullaryAI-Agent",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "MedullaryAI-Faktenprüfung",
"MedullaryAI Researcher": "MedullaryAI-Forscher",
"MedullaryAI Sales Researcher": "MedullaryAI Vertriebsforscher",
"MedullaryAI Search Agent": "MedullaryAI Suchagent"
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "Plataforma de descubrimiento y visión impulsada por AIs que actúa como tu mente digital extendida",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Por favor, utiliza tu **API KEY**. Puedes generar una en tu [perfil de cuenta de Medullar](https://my.medullar.com/my-account), bajo la sección **Llaves API**.",
"Create new Space": "Crear nuevo espacio",
"List Spaces": "Listar espacios",
"Add Space Record": "Añadir registro espacial",
"Ask Space": "Preguntar espacio",
"Delete Space": "Eliminar espacio",
"Rename Space": "Renombrar espacio",
"Create a new Space.": "Crear un nuevo espacio.",
"List all user Spaces": "Listar todos los espacios de usuario",
"Adds a Record into a Space": "Añade un registro a un espacio",
"Ask anything to a Space": "Pregunte cualquier cosa a un espacio",
"Delete an existing Space.": "Eliminar un espacio existente.",
"Rename an existing Space.": "Renombrar un Espacio existente.",
"Space Name": "Nombre del espacio",
"Space": "Espacio",
"Source Type": "Tipo de origen",
"Content": "Contenido",
"URL": "URL",
"Chat": "Chatear",
"Chat Mode": "Modo de chat",
"Deep Analysis": "Análisis profundo",
"Message": "Mensaje",
"Select an Space": "Seleccione un espacio",
"Select source type": "Seleccionar tipo de fuente",
"Optional. Content of the record": "Opcional. Contenido del registro",
"Optional. URL of the record": "Opcional. URL del registro",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Opcional. Seleccione un chat donde se almacenarán los mensajes, si no se seleccionan, se creará un chat predeterminado con el nombre 'automated'",
"Select chat mode.": "Seleccionar modo de chat.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Opcional. Habilitar análisis profundo para obtener resultados más precisos pero tiempo de respuesta más lento",
"Message to send to the Space": "Mensaje a enviar al Espacio",
"Text": "Texto",
"Image": "Imagen",
"File": "Archivo",
"MedullaryAI Agent": "Agente de MedullaryAI",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "Chequeo de Datos de MedullaryAI",
"MedullaryAI Researcher": "Investigador de MedullaryAI",
"MedullaryAI Sales Researcher": "Investigador de ventas de MedullaryAI",
"MedullaryAI Search Agent": "Buscar agente en MedullaryAI"
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "Une plateforme de découverte et de connaissance basée sur l'IA qui agit comme votre esprit numérique étendu",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Veuillez utiliser votre **clé d'API**. Vous pouvez en générer un dans votre [profil de compte Medullar](https://my.medullar.com/my-account), dans la section **Clés API**.",
"Create new Space": "Créer un nouvel espace",
"List Spaces": "Lister les espaces",
"Add Space Record": "Ajouter un enregistrement de l'espace",
"Ask Space": "Demander un espace",
"Delete Space": "Supprimer l'espace",
"Rename Space": "Renommer l'espace",
"Create a new Space.": "Créer un nouvel espace.",
"List all user Spaces": "Lister tous les espaces utilisateur",
"Adds a Record into a Space": "Ajoute un enregistrement dans un espace",
"Ask anything to a Space": "Demander quoi que ce soit à un espace",
"Delete an existing Space.": "Supprimer un espace existant.",
"Rename an existing Space.": "Renommer un espace existant.",
"Space Name": "Nom de l'espace",
"Space": "Espace libre",
"Source Type": "Type de source",
"Content": "Contenus",
"URL": "URL",
"Chat": "Discuter",
"Chat Mode": "Mode de chat",
"Deep Analysis": "Analyse en profondeur",
"Message": "Message",
"Select an Space": "Sélectionnez un espace",
"Select source type": "Sélectionner le type de source",
"Optional. Content of the record": "Optionnel. Contenu de l'enregistrement",
"Optional. URL of the record": "Optionnel. URL de l'enregistrement",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Optionnel. Sélectionnez un chat où les messages seront stockés, si non sélectionné, un chat par défaut sera créé avec le nom `automatisé`",
"Select chat mode.": "Sélectionnez le mode de discussion.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Optionnel. Activez l'analyse profonde pour obtenir des résultats plus précis mais un temps de réponse plus lent",
"Message to send to the Space": "Message à envoyer à l'espace",
"Text": "Texte du texte",
"Image": "Image",
"File": "Ficher",
"MedullaryAI Agent": "Agent MedullaryAI",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "Vérification des faits de MedullaryAI",
"MedullaryAI Researcher": "Chercheur de MedullaryAI",
"MedullaryAI Sales Researcher": "Chercheur commercial MedullaryAI",
"MedullaryAI Search Agent": "Agent de recherche MedullaryAI"
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "拡張デジタルマインドとして機能するAIを搭載したディスカバリー&インサイトプラットフォーム",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "あなたの **API キー** を使用してください。**API キー** セクションの下の [Medullar account profile](https://my.medullar.com/my-account) にそれを生成できます。",
"Create new Space": "新しいスペースを作成",
"List Spaces": "スペースの一覧",
"Add Space Record": "スペースレコードを追加",
"Ask Space": "スペースに質問する",
"Delete Space": "スペースを削除",
"Rename Space": "スペースの名前を変更",
"Create a new Space.": "新しいスペースを作成します。",
"List all user Spaces": "すべてのユーザースペースを一覧表示する",
"Adds a Record into a Space": "スペースにレコードを追加",
"Ask anything to a Space": "スペースに質問する",
"Delete an existing Space.": "既存スペースを削除します。",
"Rename an existing Space.": "既存のスペースの名前を変更します。",
"Space Name": "スペース名",
"Space": "スペース",
"Source Type": "ソースタイプ",
"Content": "コンテンツ",
"URL": "URL",
"Chat": "チャット",
"Chat Mode": "チャットモード",
"Deep Analysis": "深い分析",
"Message": "メッセージ",
"Select an Space": "スペースを選択",
"Select source type": "ソースの種類を選択",
"Optional. Content of the record": "省略可能。レコードの内容",
"Optional. URL of the record": "省略可能。 URL of the record",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "オプションです。メッセージが保存されるチャットを選択してください。選択されていない場合、`automated` という名前のデフォルトのチャットが作成されます。",
"Select chat mode.": "チャットモードを選択",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "省略可能です。より正確な結果を得るためにディープ分析を有効にしますが、応答時間が遅くなります。",
"Message to send to the Space": "スペースに送信するメッセージ",
"Text": "テキスト",
"Image": "画像",
"File": "ファイル",
"MedullaryAI Agent": "MedullaryAI Agent",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "MedullaryAI Fact Check",
"MedullaryAI Researcher": "MedullaryAI Research",
"MedullaryAI Sales Researcher": "MedullaryAI セールス研究者",
"MedullaryAI Search Agent": "MedullaryAI 検索エージェント"
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "Ontdekking op AI-aangedreven en inzichtsplatform dat fungeert als je uitgebreide digitale geest",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Gebruik alstublieft uw persoonlijke **API KEY**. U kunt er een genereren in het [Medullar account profiel](https://my.medullar.com/my-account), onder de **API Keys** sectie.",
"Create new Space": "Nieuwe ruimte maken",
"List Spaces": "Lijst van ruimten",
"Add Space Record": "Ruimterecord toevoegen",
"Ask Space": "Vraag ruimte",
"Delete Space": "Verwijder ruimte",
"Rename Space": "Spatie hernoemen",
"Create a new Space.": "Maak een nieuwe ruimte aan.",
"List all user Spaces": "Laat alle gebruikersruimten zien",
"Adds a Record into a Space": "Voegt een record toe in een spatie",
"Ask anything to a Space": "Vraag iets aan een spatie",
"Delete an existing Space.": "Verwijder een bestaande ruimte.",
"Rename an existing Space.": "Hernoem een bestaande ruimte.",
"Space Name": "Ruimte Naam",
"Space": "Spatiebalk",
"Source Type": "Type bron",
"Content": "Inhoud",
"URL": "URL",
"Chat": "Chatten",
"Chat Mode": "Chat modus",
"Deep Analysis": "Diepe Analyse",
"Message": "bericht",
"Select an Space": "Selecteer een ruimte",
"Select source type": "Selecteer het type bron",
"Optional. Content of the record": "Optioneel. Inhoud van het record",
"Optional. URL of the record": "Optioneel. URL van het record",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Optioneel. Selecteer een Chat waar berichten worden opgeslagen, indien niet geselecteerd, zal een standaard chat worden gemaakt met de naam 'automatisch'",
"Select chat mode.": "Selecteer de chatmodus.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Optioneel. Schakel Diepe Analyse in om nauwkeuriger resultaten te krijgen, maar tragere responstijd",
"Message to send to the Space": "Bericht te verzenden naar de ruimte",
"Text": "Tekstveld",
"Image": "Afbeelding",
"File": "Bestand",
"MedullaryAI Agent": "MedullaryAI Agent",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "MedullaryAI Fact Controle",
"MedullaryAI Researcher": "MedullaryAI Onderzoeker",
"MedullaryAI Sales Researcher": "MedullaryAI Verkoper Onderzoeker",
"MedullaryAI Search Agent": "MedullaryAI Zoek Agent"
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "Plataforma de descoberta e visão de IA que atua como sua mente digital estendida",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Por favor, use sua **CHAVE API** pessoal. Você pode gerar uma em seu [perfil de conta Medular](https://my.medullar.com/my-account), sob a seção **Chaves API**.",
"Create new Space": "Criar novo Espaço",
"List Spaces": "Listar Espaços",
"Add Space Record": "Adicionar Gravação de Espaço",
"Ask Space": "Perguntar espaço",
"Delete Space": "Excluir Espaço",
"Rename Space": "Renomear Espaço",
"Create a new Space.": "Crie um novo Espaço.",
"List all user Spaces": "Listar todos os espaços de usuário",
"Adds a Record into a Space": "Adiciona um Registro em um Espaço",
"Ask anything to a Space": "Pergunte qualquer coisa a um Espaço",
"Delete an existing Space.": "Apague um Espaço existente.",
"Rename an existing Space.": "Renomear um Espaço existente.",
"Space Name": "Nome do Espaço",
"Space": "Sala",
"Source Type": "Tipo de origem",
"Content": "Conteúdo",
"URL": "URL:",
"Chat": "Bate-papo",
"Chat Mode": "Modo Bate-papo",
"Deep Analysis": "Análise profunda",
"Message": "mensagem",
"Select an Space": "Selecione um Espaço",
"Select source type": "Selecionar tipo de origem",
"Optional. Content of the record": "Opcional. Conteúdo do registro",
"Optional. URL of the record": "Opcional. URL do registro",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Opcional. Selecione um chat onde as mensagens serão armazenadas, se não selecionadas, um chat padrão será criado com o nome `automated`",
"Select chat mode.": "Selecionar Modo de Bate-Papo.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Opcional. Ative a Análise Profunda para obter resultados mais precisos, mas o tempo de resposta mais lento",
"Message to send to the Space": "Mensagem a enviar para o Espaço",
"Text": "texto",
"Image": "Imagem:",
"File": "Arquivo",
"MedullaryAI Agent": "Agente MedullaryAI",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "Verificação do Fato MedullaryIA",
"MedullaryAI Researcher": "Pesquisador MedullaryAI",
"MedullaryAI Sales Researcher": "Pesquisador de vendas MedullaryAI",
"MedullaryAI Search Agent": "Agente de busca MedullaryAI"
}

View File

@@ -0,0 +1,35 @@
{
"Medullar": "Медуллар",
"AI-powered discovery & insight platform that acts as your extended digital mind": "Платформа с поддержкой AI и проницаемость, которая служит вашим расширенным цифровым умом",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Пожалуйста, используйте ваш персональный **API KEY**. Вы можете создать его в вашем [профиле аккаунта Medulla](https://my.medullar.com/my-account), в разделе **API Keys**.",
"Create new Space": "Создать новое пространство",
"List Spaces": "Пробелы списка",
"Add Space Record": "Добавить пробел записи",
"Ask Space": "Пробел",
"Create a new Space.": "Создать новый раздел.",
"List all user Spaces": "Список всех пользовательских областей",
"Adds a Record into a Space": "Добавляет запись в пробел",
"Ask anything to a Space": "Спросите что-либо пробелу",
"Space Name": "Название области",
"Space": "Пространство",
"Source Type": "Тип источника",
"Content": "Содержание",
"URL": "URL",
"Chat": "Чат",
"Chat Mode": "Режим чата",
"Deep Analysis": "Глубокий анализ",
"Message": "Сообщение",
"Select an Space": "Выберите пробел",
"Select source type": "Выберите тип источника",
"Optional. Content of the record": "Необязательно. Содержимое записи",
"Optional. URL of the record": "Необязательный URL записи",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Необязательно. Выберите чат, в котором будут храниться сообщения, если не выбрано, будет создан чат по умолчанию с именем `automated`",
"Select chat mode.": "Выберите режим чата.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Необязательно. Включите глубокий анализ, чтобы получить более точные результаты, но замедлить время ответа",
"Message to send to the Space": "Сообщение для отправки в сообщество",
"Text": "Текст",
"Image": "Изображение",
"File": "Файл",
"Single AI Agent": "Агент ИИ",
"Basic AI Chat": "Базовый ИИ Чат"
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "AI-powered discovery & insight platform that acts as your extended digital mind",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.",
"Create new Space": "Create new Space",
"List Spaces": "List Spaces",
"Add Space Record": "Add Space Record",
"Ask Space": "Ask Space",
"Delete Space": "Delete Space",
"Rename Space": "Rename Space",
"Create a new Space.": "Create a new Space.",
"List all user Spaces": "List all user Spaces",
"Adds a Record into a Space": "Adds a Record into a Space",
"Ask anything to a Space": "Ask anything to a Space",
"Delete an existing Space.": "Delete an existing Space.",
"Rename an existing Space.": "Rename an existing Space.",
"Space Name": "Space Name",
"Space": "Space",
"Source Type": "Source Type",
"Content": "Content",
"URL": "URL",
"Chat": "Chat",
"Chat Mode": "Chat Mode",
"Deep Analysis": "Deep Analysis",
"Message": "Message",
"Select an Space": "Select an Space",
"Select source type": "Select source type",
"Optional. Content of the record": "Optional. Content of the record",
"Optional. URL of the record": "Optional. URL of the record",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`",
"Select chat mode.": "Select chat mode.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Optional. Enable Deep Analysis to get more accurate results but slower response time",
"Message to send to the Space": "Message to send to the Space",
"Text": "Text",
"Image": "Image",
"File": "File",
"MedullaryAI Agent": "MedullaryAI Agent",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "MedullaryAI Fact Check",
"MedullaryAI Researcher": "MedullaryAI Researcher",
"MedullaryAI Sales Researcher": "MedullaryAI Sales Researcher",
"MedullaryAI Search Agent": "MedullaryAI Search Agent"
}

View File

@@ -0,0 +1,35 @@
{
"Medullar": "Medullar",
"AI-powered discovery & insight platform that acts as your extended digital mind": "AI-powered discovery & insight platform that acts as your extended digital mind",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.",
"Create new Space": "Create new Space",
"List Spaces": "List Spaces",
"Add Space Record": "Add Space Record",
"Ask Space": "Ask Space",
"Create a new Space.": "Create a new Space.",
"List all user Spaces": "List all user Spaces",
"Adds a Record into a Space": "Adds a Record into a Space",
"Ask anything to a Space": "Ask anything to a Space",
"Space Name": "Space Name",
"Space": "Space",
"Source Type": "Source Type",
"Content": "Content",
"URL": "URL",
"Chat": "Chat",
"Chat Mode": "Chat Mode",
"Deep Analysis": "Deep Analysis",
"Message": "Message",
"Select an Space": "Select an Space",
"Select source type": "Select source type",
"Optional. Content of the record": "Optional. Content of the record",
"Optional. URL of the record": "Optional. URL of the record",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`",
"Select chat mode.": "Select chat mode.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Optional. Enable Deep Analysis to get more accurate results but slower response time",
"Message to send to the Space": "Message to send to the Space",
"Text": "Text",
"Image": "Image",
"File": "File",
"Single AI Agent": "Single AI Agent",
"Basic AI Chat": "Basic AI Chat"
}

View File

@@ -0,0 +1,42 @@
{
"AI-powered discovery & insight platform that acts as your extended digital mind": "AI-powered discovery & insight platform that acts as your extended digital mind",
"Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.": "Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.",
"Create new Space": "Create new Space",
"List Spaces": "List Spaces",
"Add Space Record": "Add Space Record",
"Ask Space": "Ask Space",
"Delete Space": "Delete Space",
"Rename Space": "Rename Space",
"Create a new Space.": "Create a new Space.",
"List all user Spaces": "List all user Spaces",
"Adds a Record into a Space": "Adds a Record into a Space",
"Ask anything to a Space": "Ask anything to a Space",
"Delete an existing Space.": "Delete an existing Space.",
"Rename an existing Space.": "Rename an existing Space.",
"Space Name": "Space Name",
"Space": "Space",
"Source Type": "Source Type",
"Content": "Content",
"URL": "URL",
"Chat": "Chat",
"Chat Mode": "Chat Mode",
"Deep Analysis": "Deep Analysis",
"Message": "Message",
"Select an Space": "Select an Space",
"Select source type": "Select source type",
"Optional. Content of the record": "Optional. Content of the record",
"Optional. URL of the record": "Optional. URL of the record",
"Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`": "Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`",
"Select chat mode.": "Select chat mode.",
"Optional. Enable Deep Analysis to get more accurate results but slower response time": "Optional. Enable Deep Analysis to get more accurate results but slower response time",
"Message to send to the Space": "Message to send to the Space",
"Text": "文本",
"Image": "Image",
"File": "文件",
"MedullaryAI Agent": "MedullaryAI Agent",
"MedullaryAI Agent (xAI Grok)": "MedullaryAI Agent (xAI Grok)",
"MedullaryAI Fact Check": "MedullaryAI Fact Check",
"MedullaryAI Researcher": "MedullaryAI Researcher",
"MedullaryAI Sales Researcher": "MedullaryAI Sales Researcher",
"MedullaryAI Search Agent": "MedullaryAI Search Agent"
}

View File

@@ -0,0 +1,31 @@
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { createSpace } from './lib/actions/create-space';
import { listSpaces } from './lib/actions/list-spaces';
import { addSpaceRecord } from './lib/actions/add-space-record';
import { askSpace } from './lib/actions/ask-space';
import { deleteSpace } from './lib/actions/delete-space';
import { renameSpace } from './lib/actions/rename-space';
import { PieceCategory } from '@activepieces/shared';
export const medullarAuth = PieceAuth.SecretText({
displayName: 'API Key',
required: true,
description: 'Please use your personal **API KEY**. You can generate one in your [Medullar account profile](https://my.medullar.com/my-account), under the **API Keys** section.',
});
export const medullar = createPiece({
displayName: 'Medullar',
description:
'AI-powered discovery & insight platform that acts as your extended digital mind',
auth: medullarAuth,
minimumSupportedRelease: '0.36.1',
logoUrl:
'https://cdn.activepieces.com/pieces/medullar.png',
authors: ['mllopart'],
actions: [createSpace, listSpaces, addSpaceRecord, askSpace, deleteSpace, renameSpace],
triggers: [],
categories: [
PieceCategory.ARTIFICIAL_INTELLIGENCE,
PieceCategory.PRODUCTIVITY,
],
});

View File

@@ -0,0 +1,86 @@
import { medullarAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { getUser, medullarCommon, medullarPropsCommon } from '../common';
export const addSpaceRecord = createAction({
auth: medullarAuth,
name: 'addSpaceRecord',
displayName: 'Add Space Record',
description: 'Adds a Record into a Space',
props: {
spaceId: medullarPropsCommon.spaceId,
sourceType: Property.StaticDropdown({
displayName: 'Source Type',
description: 'Select source type',
required: true,
options: {
options: [
{
label: 'URL',
value: 'url',
},
{
label: 'Text',
value: 'text',
},
{
label: 'Image',
value: 'image',
},
{
label: 'File',
value: 'file',
},
],
},
}),
content: Property.LongText({
displayName: 'Content',
description: 'Optional. Content of the record',
required: false,
}),
url: Property.ShortText({
displayName: 'URL',
description: 'Optional. URL of the record',
required: false,
}),
},
async run(context) {
const userData = await getUser(context.auth);
let url = ' ';
let content = ' ';
if (context.propsValue['url'] != null) url = context.propsValue['url'];
if (context.propsValue['content'] != null)
content = context.propsValue['content'];
const spaceResponse = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${medullarCommon.aiUrl}/records/`,
body: {
spaces: [
{
uuid: context.propsValue['spaceId'],
},
],
company: {
uuid: userData.company.uuid,
},
user: {
uuid: userData.uuid,
},
source: context.propsValue['sourceType'],
data: {
content: content,
url: url,
},
},
headers: {
Authorization: `Bearer ${context.auth.secret_text}`,
},
});
return spaceResponse.body;
},
});

View File

@@ -0,0 +1,102 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { medullarAuth } from '../../index';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { getUser, medullarCommon, medullarPropsCommon } from '../common';
export const askSpace = createAction({
auth: medullarAuth,
name: 'askSpace',
displayName: 'Ask Space',
description: 'Ask anything to a Space',
props: {
spaceId: medullarPropsCommon.spaceId,
chatId: medullarPropsCommon.chatId,
selectedMode: Property.StaticDropdown({
displayName: 'Chat Mode',
description: 'Select chat mode.',
required: true,
options: {
options: [
{
label: 'MedullaryAI Agent',
value: 'single_agent',
},
{
label: 'MedullaryAI Agent (xAI Grok)',
value: 'single_agent_xai',
},
{
label: 'MedullaryAI Fact Check',
value: 'fact_check_agent',
},
{
label: 'MedullaryAI Researcher',
value: 'research_agent',
},
{
label: 'MedullaryAI Sales Researcher',
value: 'sales_research_agent',
},
{
label: 'MedullaryAI Search Agent',
value: '`search_agent`',
}
],
},
}),
isReasoning: Property.Checkbox({
displayName: 'Deep Analysis',
description:
'Optional. Enable Deep Analysis to get more accurate results but slower response time',
required: false,
defaultValue: false,
}),
text: Property.LongText({
displayName: 'Message',
description: 'Message to send to the Space',
required: true,
}),
},
async run(context) {
const userData = await getUser(context.auth);
let chatId = context.propsValue['chatId'];
if (chatId == null) {
// if no chatId is selected, create a new one
const chatResponse = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${medullarCommon.aiUrl}/chats/`,
body: {
name: 'activepieces automated',
space: {
uuid: context.propsValue['spaceId'],
},
},
headers: {
Authorization: `Bearer ${context.auth.secret_text}`,
},
});
chatId = chatResponse.body.uuid;
}
const messageResponse = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${medullarCommon.aiUrl}/messages/get_response/?chat=${chatId}`,
body: {
chat: {
uuid: chatId,
},
text: context.propsValue['text'],
is_bot: false,
is_reasoning_selected: context.propsValue['isReasoning'],
selected_mode: context.propsValue['selectedMode'],
source: 'external_api',
},
headers: {
Authorization: `Bearer ${context.auth.secret_text}`,
},
});
return messageResponse.body;
},
});

View File

@@ -0,0 +1,36 @@
import { medullarAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { medullarCommon, getUser } from '../common';
export const createSpace = createAction({
auth: medullarAuth,
name: 'createSpace',
displayName: 'Create new Space',
description: 'Create a new Space.',
props: {
space_name: Property.ShortText({
displayName: 'Space Name',
required: true,
}),
},
async run(context) {
const userData = await getUser(context.auth);
const spaceResponse = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${medullarCommon.aiUrl}/spaces/`,
body: {
name: context.propsValue['space_name'],
company: {
uuid: userData.company.uuid,
},
},
headers: {
Authorization: `Bearer ${context.auth.secret_text}`,
},
});
return spaceResponse.body;
},
});

View File

@@ -0,0 +1,27 @@
import { medullarAuth } from '../../index';
import { createAction } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { medullarCommon } from '../common';
import { medullarPropsCommon } from '../common';
export const deleteSpace = createAction({
auth: medullarAuth,
name: 'deleteSpace',
displayName: 'Delete Space',
description: 'Delete an existing Space.',
props: {
spaceId: medullarPropsCommon.spaceId,
},
async run(context) {
await httpClient.sendRequest({
method: HttpMethod.DELETE,
url: `${medullarCommon.aiUrl}/spaces/${context.propsValue.spaceId}/`,
headers: {
Authorization: `Bearer ${context.auth.secret_text}`,
},
});
return {deleted: true, spaceId: context.propsValue.spaceId};
},
});

View File

@@ -0,0 +1,15 @@
import { medullarAuth } from '../../index';
import { createAction } from '@activepieces/pieces-framework';
import { getUserSpaces } from '../common';
export const listSpaces = createAction({
auth: medullarAuth,
name: 'listSpaces',
displayName: 'List Spaces',
description: 'List all user Spaces',
props: {},
async run(context) {
const spaceListResponse = await getUserSpaces(context.auth);
return spaceListResponse;
},
});

View File

@@ -0,0 +1,34 @@
import { medullarAuth } from '../../index';
import { createAction,Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { medullarCommon } from '../common';
import { medullarPropsCommon } from '../common';
export const renameSpace = createAction({
auth: medullarAuth,
name: 'renameSpace',
displayName: 'Rename Space',
description: 'Rename an existing Space.',
props: {
spaceId: medullarPropsCommon.spaceId,
space_name: Property.ShortText({
displayName: 'Space Name',
required: true,
}),
},
async run(context) {
const response = await httpClient.sendRequest({
method: HttpMethod.PATCH,
url: `${medullarCommon.aiUrl}/spaces/${context.propsValue.spaceId}/`,
headers: {
Authorization: `Bearer ${context.auth.secret_text}`,
},
body: {
name: context.propsValue.space_name,
},
});
return response.body;
},
});

View File

@@ -0,0 +1,128 @@
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { AppConnectionValueForAuthProperty, Property } from '@activepieces/pieces-framework';
import { medullarAuth } from '../..';
export const medullarCommon = {
baseUrl: 'https://api.medullar.com',
authUrl: 'https://api.medullar.com/auth/v1',
exploratorUrl: 'https://api.medullar.com/explorator/v1',
aiUrl: 'https://api.medullar.com/ai/v1',
};
export async function getUser(authentication: AppConnectionValueForAuthProperty<typeof medullarAuth>) {
const userResponse = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `${medullarCommon.authUrl}/users/me/`,
headers: {
Authorization: `Bearer ${authentication}`,
},
});
const userData = userResponse.body;
if (!userData) {
throw new Error('User data not found.');
}
if (!userData.company) {
throw new Error('User does not belong to any company.');
}
return userData;
}
export async function getUserSpaces(authentication: AppConnectionValueForAuthProperty<typeof medullarAuth>) {
const userData = await getUser(authentication);
const spaceListResponse = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `${medullarCommon.aiUrl}/spaces/?user=${userData.uuid}&limit=1000&offset=0`,
headers: {
Authorization: `Bearer ${authentication.secret_text}`,
},
});
return spaceListResponse.body.results;
}
export const medullarPropsCommon = {
spaceId: Property.Dropdown<{ name: string; uuid: string },true,typeof medullarAuth>({
auth: medullarAuth,
displayName: 'Space',
description: 'Select an Space',
required: true,
refreshers: ['auth'],
refreshOnSearch: false,
options: async ({ auth }) => {
const authentication = auth;
if (!authentication) {
return {
disabled: true,
placeholder: 'connect your account first',
options: [],
};
}
const spaceListResponse = await getUserSpaces(authentication);
return {
disabled: false,
options: spaceListResponse
.flat()
.map((list: { name: string; uuid: string }) => {
return {
label: list.name,
value: list.uuid,
};
}),
};
},
}),
chatId: Property.Dropdown<{ name: string; uuid: string },false,typeof medullarAuth>({
auth: medullarAuth,
displayName: 'Chat',
description:
'Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`',
required: false,
refreshers: ['auth', 'spaceId'],
refreshOnSearch: false,
options: async ({ auth, spaceId }) => {
const authentication = auth;
if (!authentication) {
return {
disabled: true,
placeholder: 'connect your account first',
options: [],
};
}
if (!spaceId) {
return {
disabled: true,
options: [],
placeholder: 'Please select a Space first',
};
}
const chatListResponse = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `${medullarCommon.aiUrl}/chats/?space=${spaceId}&limit=1000&offset=0`,
headers: {
Authorization: `Bearer ${authentication}`,
},
});
return {
disabled: false,
options: chatListResponse.body.results
.flat()
.map((list: { name: string; uuid: string }) => {
return {
label: list.name,
value: list.uuid,
};
}),
};
},
}),
};

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}