add docs and some fixes
20
memora-docs/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Dependencies
|
||||
/node_modules
|
||||
|
||||
# Production
|
||||
/build
|
||||
|
||||
# Generated files
|
||||
.docusaurus
|
||||
.cache-loader
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
41
memora-docs/README.md
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# Website
|
||||
|
||||
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## Local Development
|
||||
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
This command generates static content into the `build` directory and can be served using any static contents hosting service.
|
||||
|
||||
## Deployment
|
||||
|
||||
Using SSH:
|
||||
|
||||
```bash
|
||||
USE_SSH=true npm run deploy
|
||||
```
|
||||
|
||||
Not using SSH:
|
||||
|
||||
```bash
|
||||
GIT_USER=<Your GitHub username> npm run deploy
|
||||
```
|
||||
|
||||
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: add-agent-background
|
||||
title: "Add/merge agent background"
|
||||
description: "Add new background information or merge with existing. LLM intelligently resolves conflicts, normalizes to first person, and optionally infers personality traits."
|
||||
sidebar_label: "Add/merge agent background"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "post api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Add/merge agent background"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"post"}
|
||||
path={"/api/v1/agents/{agent_id}/background"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Add new background information or merge with existing. LLM intelligently resolves conflicts, normalizes to first person, and optionally infers personality traits.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={{"required":true,"content":{"application/json":{"schema":{"properties":{"content":{"type":"string","title":"Content","description":"New background information to add or merge"},"update_personality":{"type":"boolean","title":"Update Personality","description":"If true, infer Big Five personality traits from the merged background (default: true)","default":true}},"type":"object","required":["content"],"title":"AddBackgroundRequest","description":"Request model for adding/merging background information.","example":{"content":"I was born in Texas","update_personality":true}}}}}}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"background":{"type":"string","title":"Background"},"personality":{"anyOf":[{"properties":{"openness":{"type":"number","maximum":1,"minimum":0,"title":"Openness","description":"Openness to experience (0-1)"},"conscientiousness":{"type":"number","maximum":1,"minimum":0,"title":"Conscientiousness","description":"Conscientiousness (0-1)"},"extraversion":{"type":"number","maximum":1,"minimum":0,"title":"Extraversion","description":"Extraversion (0-1)"},"agreeableness":{"type":"number","maximum":1,"minimum":0,"title":"Agreeableness","description":"Agreeableness (0-1)"},"neuroticism":{"type":"number","maximum":1,"minimum":0,"title":"Neuroticism","description":"Neuroticism (0-1)"},"bias_strength":{"type":"number","maximum":1,"minimum":0,"title":"Bias Strength","description":"How strongly personality influences opinions (0-1)"}},"type":"object","required":["openness","conscientiousness","extraversion","agreeableness","neuroticism","bias_strength"],"title":"PersonalityTraits","description":"Personality traits based on Big Five model.","example":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}},{"type":"null"}]}},"type":"object","required":["background"],"title":"BackgroundResponse","description":"Response model for background update.","example":{"background":"I was born in Texas. I am a software engineer with 10 years of experience.","personality":{"agreeableness":0.8,"bias_strength":0.6,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.4,"openness":0.7}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
---
|
||||
id: agent-memory-api
|
||||
title: "Agent Memory API"
|
||||
description: "A temporal-semantic memory system for AI agents that stores, retrieves, and reasons over memories."
|
||||
sidebar_label: Introduction
|
||||
sidebar_position: 0
|
||||
hide_title: true
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import ApiLogo from "@theme/ApiLogo";
|
||||
import Heading from "@theme/Heading";
|
||||
import SchemaTabs from "@theme/SchemaTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Export from "@theme/ApiExplorer/Export";
|
||||
|
||||
<span
|
||||
className={"theme-doc-version-badge badge badge--secondary"}
|
||||
children={"Version: 1.0.0"}
|
||||
>
|
||||
</span>
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Agent Memory API"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
|
||||
|
||||
|
||||
A temporal-semantic memory system for AI agents that stores, retrieves, and reasons over memories.
|
||||
|
||||
## Features
|
||||
|
||||
* **Batch Memory Storage**: Store multiple memories efficiently with automatic fact extraction
|
||||
* **Semantic Search**: Find relevant memories using natural language queries
|
||||
* **Fact Type Filtering**: Search across world facts, agent actions, and opinions separately
|
||||
* **Think Endpoint**: Generate contextual answers based on agent identity and memories
|
||||
* **Graph Visualization**: Interactive memory graph visualization
|
||||
* **Document Tracking**: Track and manage memory documents with upsert support
|
||||
|
||||
## Architecture
|
||||
|
||||
The system uses:
|
||||
- **Temporal Links**: Connect memories that are close in time
|
||||
- **Semantic Links**: Connect semantically similar memories
|
||||
- **Entity Links**: Connect memories that mention the same entities
|
||||
- **Spreading Activation**: Intelligent traversal for memory retrieval
|
||||
|
||||
|
||||
<div
|
||||
style={{"display":"flex","flexDirection":"column","marginBottom":"var(--ifm-paragraph-margin-bottom)"}}
|
||||
>
|
||||
<h3
|
||||
style={{"marginBottom":"0.25rem"}}
|
||||
>
|
||||
Contact
|
||||
</h3><span>
|
||||
Memory System:
|
||||
</span>
|
||||
</div><div
|
||||
style={{"marginBottom":"var(--ifm-paragraph-margin-bottom)"}}
|
||||
>
|
||||
<h3
|
||||
style={{"marginBottom":"0.25rem"}}
|
||||
>
|
||||
License
|
||||
</h3><a
|
||||
href={"https://www.apache.org/licenses/LICENSE-2.0.html"}
|
||||
>
|
||||
Apache 2.0
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
---
|
||||
id: batch-put-async
|
||||
title: "Store multiple memories asynchronously"
|
||||
description: "Store multiple memory items in batch asynchronously using the task backend."
|
||||
sidebar_label: "Store multiple memories asynchronously"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "post api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Store multiple memories asynchronously"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"post"}
|
||||
path={"/api/v1/agents/{agent_id}/memories/async"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Store multiple memory items in batch asynchronously using the task backend.
|
||||
|
||||
This endpoint returns immediately after queuing the task, without waiting for completion.
|
||||
The actual processing happens in the background.
|
||||
|
||||
Features:
|
||||
- Immediate response (non-blocking)
|
||||
- Background processing via task queue
|
||||
- Efficient batch processing
|
||||
- Automatic fact extraction from natural language
|
||||
- Entity recognition and linking
|
||||
- Document tracking with automatic upsert (when document_id is provided)
|
||||
- Temporal and semantic linking
|
||||
|
||||
The system automatically:
|
||||
1. Queues the batch put task
|
||||
2. Returns immediately with success=True, queued=True
|
||||
3. Processes in background: extracts facts, generates embeddings, creates links
|
||||
|
||||
Note: If document_id is provided and already exists, the old document and its memory units will be deleted before creating new ones (upsert behavior).
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={{"required":true,"content":{"application/json":{"schema":{"properties":{"items":{"items":{"properties":{"content":{"type":"string","title":"Content"},"event_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Event Date"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["content"],"title":"MemoryItem","description":"Single memory item for batch put.","example":{"content":"Alice mentioned she's working on a new ML model","context":"team meeting","event_date":"2024-01-15T10:30:00Z"}},"type":"array","title":"Items"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"}},"type":"object","required":["items"],"title":"BatchPutRequest","description":"Request model for batch put endpoint.","example":{"document_id":"conversation_123","items":[{"content":"Alice works at Google","context":"work"},{"content":"Bob went hiking yesterday","event_date":"2024-01-15T10:00:00Z"}]}}}}}}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"agent_id":{"type":"string","title":"Agent Id"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"},"items_count":{"type":"integer","title":"Items Count"},"queued":{"type":"boolean","title":"Queued"}},"type":"object","required":["success","message","agent_id","items_count","queued"],"title":"BatchPutAsyncResponse","description":"Response model for async batch put endpoint.","example":{"agent_id":"user123","document_id":"conversation_123","items_count":2,"message":"Batch put task queued for background processing","queued":true,"success":true}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
---
|
||||
id: batch-put-memories
|
||||
title: "Store multiple memories"
|
||||
description: "Store multiple memory items in batch with automatic fact extraction."
|
||||
sidebar_label: "Store multiple memories"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "post api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Store multiple memories"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"post"}
|
||||
path={"/api/v1/agents/{agent_id}/memories"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Store multiple memory items in batch with automatic fact extraction.
|
||||
|
||||
Features:
|
||||
- Efficient batch processing
|
||||
- Automatic fact extraction from natural language
|
||||
- Entity recognition and linking
|
||||
- Document tracking with automatic upsert (when document_id is provided)
|
||||
- Temporal and semantic linking
|
||||
|
||||
The system automatically:
|
||||
1. Extracts semantic facts from the content
|
||||
2. Generates embeddings
|
||||
3. Deduplicates similar facts
|
||||
4. Creates temporal, semantic, and entity links
|
||||
5. Tracks document metadata
|
||||
|
||||
Note: If document_id is provided and already exists, the old document and its memory units will be deleted before creating new ones (upsert behavior).
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={{"required":true,"content":{"application/json":{"schema":{"properties":{"items":{"items":{"properties":{"content":{"type":"string","title":"Content"},"event_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Event Date"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["content"],"title":"MemoryItem","description":"Single memory item for batch put.","example":{"content":"Alice mentioned she's working on a new ML model","context":"team meeting","event_date":"2024-01-15T10:30:00Z"}},"type":"array","title":"Items"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"}},"type":"object","required":["items"],"title":"BatchPutRequest","description":"Request model for batch put endpoint.","example":{"document_id":"conversation_123","items":[{"content":"Alice works at Google","context":"work"},{"content":"Bob went hiking yesterday","event_date":"2024-01-15T10:00:00Z"}]}}}}}}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"agent_id":{"type":"string","title":"Agent Id"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"},"items_count":{"type":"integer","title":"Items Count"}},"type":"object","required":["success","message","agent_id","items_count"],"title":"BatchPutResponse","description":"Response model for batch put endpoint.","example":{"agent_id":"user123","document_id":"conversation_123","items_count":2,"message":"Successfully stored 2 memory items","success":true}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: cancel-operation
|
||||
title: "Cancel a pending async operation"
|
||||
description: "Cancel a pending async operation by removing it from the queue"
|
||||
sidebar_label: "Cancel a pending async operation"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJy9VktvGzcQ/ivE5NIaG8kxetqbGsupAacJYjUX2wjG3JGWMZdkyFk5W2H/ezHc1SuuExQtqou45Mw3Mx/nwQ0wrhKUN/CWGh879S5QRDbeJbgroKKkownyDSW8RqfJKlSBXGXcSmHqnFZ+q6LuOxWp8Ws5M6yW0TeKa1JfWmoJCthJXlZQgs5wn3abUEDAiA0xRXFpAw4bghJwRY4/mQoKMOJHQK6hgEhfWhOpgpJjSwUkXVODUG6AuyB6iaNxKyiADVvZmAmQuqyg74sd+s7+f2FhR99g5U4wUvAuURK1s9NT+Tum9brVmlJatlZ9GIWhAO0dk2MRxxCs0Rl2+jmJzmbvSt/3fQG/nJ09Bf6I1lSDN/MYffwHqBCi8MJm8LsiRmNlZZia9FTAen10iq57t8x3eMyU8D7uGMe0ogj9XV9s9zBG7A7ovPKDg9AX0KTV95h/SynhimAH9rxoJkMt5LTf2/b3n0nz0a3f5LgG06Pc3R5mT+/A7vNhnA/0/Z2xrchvi8X7J4DD3TbEtZeCqcgSUy4TrqGEKQYzXb+a5vpI0822TvrpLqfTdHOY331O8KXP7BwVxVj+s/eX8G3Z37qZYmqCj2hfJmrQsdGqGRRSl5gatfRRzS7V4IniGlkl9pFSoSJxNLSWJbpKRcLkXVJ+TXEAMZQmt+7WvXihLgi5jZTk80SdnPyKrOutb9fsI67o5KTMS1JNa9kESzsYRcul0YYc2049Gq4VtuwbFH+XqFnRV46oJa4B/3obzTVh1LVAX5jspKU1Ot4jt0mamhP30CqLbtXiKnc2OR7QLsSEpJW6MJZJsi47m7EV6uhTUo8+2ip7I4Rk7gePRn58ME6+VCLphky2G9AXtXEPau6q4I1jAX5DTq6WVK7qr9yiVejSI8Wk7jFRpbwbTZiKHBvusoltUAPum4ihVh9NatGaP3OmCPilY8pcrWl716ssuT6UHCDOvW4bMbOIqB/GsPN6sIdOuBpRqlE4DTfUhkSRVWpD8JHHPJhFXRsmLckgW4uatpnWJkrlrXspjIxJqa6Me0hi87V3jvTBteVMxEhKW59IGafYNDSo7y7/ifo2ydHaTiXTGIvxgDVRng90/sCyxCntV4ZgwoZUvoUdyHWIhHmSzoToI+6tNfnmOOKaYkKba2zkcKwptLdOjb+xuaPOzX2cbdvKydRJg7JGk8yXvcgsoK5JnU1OoYA2WiihZg6pnE4fHx8nmI8nPq6mo26aXl2+nv9+PX95Njmd1NxYARYfh3bxanI6OZWt4BM36A5s/egB8W3r2ezn1b9/fIydVwplGiyaPFRywJuxod4ABgMFrF9BMTw6EhRQHjw/9n1VDo5eDncF1D6xoGw2Un1/RNv3si09ooPy5q6ANUaD99J2bzZQmSTrCsol2kTfif2nD+NI+lk9F8h28jiZO2u0rXxBAQ/UHb6gZP7+j3aPGMqDviasKOb4B5GZ1hT4QPnJu0ReUbsZeD6/mi/m0Pd/AQeDus0=
|
||||
sidebar_class_name: "delete api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Cancel a pending async operation"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"delete"}
|
||||
path={"/api/v1/agents/{agent_id}/operations/{operation_id}"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Cancel a pending async operation by removing it from the queue
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string","title":"Operation Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: clear-agent-memories
|
||||
title: "Clear agent memories"
|
||||
description: "Delete memory units for an agent. Optionally filter by fact_type (world, agent, opinion) to delete only specific types. This is a destructive operation that cannot be undone. The agent profile (personality and background) will be preserved."
|
||||
sidebar_label: "Clear agent memories"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJzlVlFz2zYM/is49qXNqXaa25PfvMbpcteuvSbrS5PrIRQssaFIlaCcej7/9x1ISZGXZu26x/kligR8AL8PBLBTEStWi49qWZGL8AYdVtSQi+q6UCWxDqaNxju1UKdkKRI01Piwhc6ZyLD2AdABivMM3iZTtHYLa2MjBbjZwhp1/BS3LcHTOx9sWWTrAnxrnPHuGUQPZcb2zm6BW9JmbTSIE8/gsjYMhgGhJI6h09FsCHxLASUcxBojaHTOR7gh6FzpHYkb5UjQBr82luBpS4ElPxO3gK6EG9S3VfCdK5/BnbFW3NtATGFD5UwVagxyXqqF0pYwfEqYnxILhlgVqsWADUUKwuNOOWxILVQ2M6UqlBH2Woy1KlSgL50JVKpFDB0VinVNDarFTslp1UJxDMZVqlDRRCsvsjDnpdrvixF9JHWA/9JR2B7gr9HyQQB027frlOJhKIHt37jOWrV/oPyga9IyyTLo+4ikk/TPxOVS4Pf/HVZSC8Std0wsZzo5PpY/h7gXndbEvO4svO+NVaG0d1HqWphoW2t0Enb+mcVnN+GpDSJ7NDkCZ7CJQjfeW0I3OWMfUE7YEDNW9E+CvulN9vtisPE3n0nHA/k+jpHvQa/vQfJlnBzvkILhAzS+JJuu6XDFhpJmKXD6ik1rU7pj5uLsu6CpdymBR0Kt1NhIiZTwXn6F+uXk5KEQH9CaMl/SVQg+/LwKJUU0Vp5MpIYfGlivD77+QLEbF6mioPbX90JgCLidaPXa5wSTtFz9kKwD2OOmiYz+UnynCORcOXRvN6mBe3ozu48f4zTT961gg8lvl5fvHgBmbRuKtZcGmOshtbxYq4WaY2vmmxfzdE15vht63n4+aY/GrX0i46CfvclTZPnu/EHtXrklRGpaH9A+Z2rQRaOHscNbjtSkgl6e5/7AeQJw9IG4gEAxGNrIo/T4QMjeMfgNBRjSml25K/fkCZwRxi4Qy79HcHT0K0ZdD7ldRB+woqOjRXokaDobTWtphAFar4025KLdwp2JNWAXfYOSb+pp9DUG1HKujH8xnOaCMOhaoM9MStLSBl28R+7YuAqcpIcWLLqqw4pA2ryRfAVtbK1wltqmcVVKNmED6uCZIXXSlA33/RRyRj0/fW9lYJJBFsluM/plbdwtrFzZeuOiAL8iJ72DIF3ir7FDC+j4jgLDDTKV4PtVAExJLg5jdjhUxn0VsK3hg+EOrfkzVZuAn7tIiavNuGJUyXIztcwQp153sqPAZUB92x87Ped4aYkZUMremLNCXcsUInDXtj7Evg6WQdcmkpZikFeyO/SV1jHx4so9F0b6ooTXxt2yxHzpnSM9kS1VIgYCbT0TGAfRNJTdR/EfuA9FnjYnNo2xGCasifMq0/mdyHLOvBIRMDYESYUR5KINhKUU1lKIPuDeWpOUiwE3FBjz0Og57O8U2isH/a/v5ahTL+/XkuHmJOqkH1mjSebTvcmyRV0TnMyOVaG6YNVC1TG2vJjP7+7uZpg+z3yo5r0vz1+fv1z9frF6fjI7ntWxsQIsOeZ28WJ2PDuWV63n2KCbxHopC1tfkZOOdNBudvcj6f+44fbjQK7zvLVo0qRLsuz6Lv9RYWtUoTYvVJG3WuFwMdlvR2qvC1V7juKz20lH+CPY/V5e5/VUxnFpGG/sZEF9VI2f2jq/dZxb2v5tZd6g7cQuLZQbDEZS+pfpPX3fj+ln8FjgYRq77TTmkNDIYFpAasKSQsohf15qTW2cOD7YlyT5cTafrl6vLldqv/8LyLPVmQ==
|
||||
sidebar_class_name: "delete api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Clear agent memories"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"delete"}
|
||||
path={"/api/v1/agents/{agent_id}/memories"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Delete memory units for an agent. Optionally filter by fact_type (world, agent, opinion) to delete only specific types. This is a destructive operation that cannot be undone. The agent profile (personality and background) will be preserved.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"fact_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional fact type filter (world, agent, opinion)","title":"Fact Type"},"description":"Optional fact type filter (world, agent, opinion)"}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"DeleteResponse","description":"Response model for delete operations.","example":{"message":"Resource deleted successfully","success":true}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: create-or-update-agent
|
||||
title: "Create or update agent"
|
||||
description: "Create a new agent or update existing agent with personality and background. Auto-fills missing fields with defaults."
|
||||
sidebar_label: "Create or update agent"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "put api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Create or update agent"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"put"}
|
||||
path={"/api/v1/agents/{agent_id}"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Create a new agent or update existing agent with personality and background. Auto-fills missing fields with defaults.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"personality":{"anyOf":[{"properties":{"openness":{"type":"number","maximum":1,"minimum":0,"title":"Openness","description":"Openness to experience (0-1)"},"conscientiousness":{"type":"number","maximum":1,"minimum":0,"title":"Conscientiousness","description":"Conscientiousness (0-1)"},"extraversion":{"type":"number","maximum":1,"minimum":0,"title":"Extraversion","description":"Extraversion (0-1)"},"agreeableness":{"type":"number","maximum":1,"minimum":0,"title":"Agreeableness","description":"Agreeableness (0-1)"},"neuroticism":{"type":"number","maximum":1,"minimum":0,"title":"Neuroticism","description":"Neuroticism (0-1)"},"bias_strength":{"type":"number","maximum":1,"minimum":0,"title":"Bias Strength","description":"How strongly personality influences opinions (0-1)"}},"type":"object","required":["openness","conscientiousness","extraversion","agreeableness","neuroticism","bias_strength"],"title":"PersonalityTraits","description":"Personality traits based on Big Five model.","example":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}},{"type":"null"}]},"background":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background"}},"type":"object","title":"CreateAgentRequest","description":"Request model for creating/updating an agent.","example":{"background":"I am a creative software engineer with 10 years of experience","name":"Alice","personality":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}}}}}}}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"name":{"type":"string","title":"Name"},"personality":{"properties":{"openness":{"type":"number","maximum":1,"minimum":0,"title":"Openness","description":"Openness to experience (0-1)"},"conscientiousness":{"type":"number","maximum":1,"minimum":0,"title":"Conscientiousness","description":"Conscientiousness (0-1)"},"extraversion":{"type":"number","maximum":1,"minimum":0,"title":"Extraversion","description":"Extraversion (0-1)"},"agreeableness":{"type":"number","maximum":1,"minimum":0,"title":"Agreeableness","description":"Agreeableness (0-1)"},"neuroticism":{"type":"number","maximum":1,"minimum":0,"title":"Neuroticism","description":"Neuroticism (0-1)"},"bias_strength":{"type":"number","maximum":1,"minimum":0,"title":"Bias Strength","description":"How strongly personality influences opinions (0-1)"}},"type":"object","required":["openness","conscientiousness","extraversion","agreeableness","neuroticism","bias_strength"],"title":"PersonalityTraits","description":"Personality traits based on Big Five model.","example":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}},"background":{"type":"string","title":"Background"}},"type":"object","required":["agent_id","name","personality","background"],"title":"AgentProfileResponse","description":"Response model for agent profile.","example":{"agent_id":"user123","background":"I am a software engineer with 10 years of experience in startups","name":"Alice","personality":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
---
|
||||
id: delete-document
|
||||
title: "Delete a document"
|
||||
description: "Delete a document and all its associated memory units and links."
|
||||
sidebar_label: "Delete a document"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJztVk1vGzcQ/SvE5JIYG8kxetqbGsupAacNYjUX2wjG3JGWMZfckLNyVGH/ezHkrj7iOkWBoqf64hU/3gzfzLyZLTCuIpQ3cO5115DjCHcFVBR1MC0b76CEc7LEpFBVwxmFrlJorTIcFcbotUGmSjXU+LBRnUvrrlLWuIc4uXW3blGbqB6NtUpj1FiRqhJqeeteq0VNe2zDkexSlmfWHkPSNw6oxdIy+EaxYI73xgvJpHrJ1LQ+oC1UpAYdG10ocmx48+rQ40fDteLaRzqytPPYtxRQaFAanfOs7kl1rvKOJlDAbveyghLygz6PDkEBLQZsiCkIw1tw2BCUgCty/NlUUIARelvkGgoI9LUzgSooOXRUQNQ1NQjlFnjTyr3IwbgVFMCGrSzMBEhdVtD3xQ59NP9vGBhzItu4E4jYehcpyq2z01P5d5wr153WFOOys+rjcBgK0N6xUFJuAdvWGp1Ym36Jcme796Tv+76An87OngJ/QmuqHIp5CD78A1Rog0SKTfa7IkZj5cswNfHpAev10S66zW/LFMFjooT1YcU4phUF6O/6YlzDEHBzwOaVzw5CX0ATVz8i/j3FiCuCHdjzRxMZaiG7/d62v/9Cmo+CfpPelU0P5+72MHt6M7vPP+M80/dXxsYjvywWH54A5tg2xLXfV0sqEq6hhCm2Zrp+M03VEafbsUr66ZjRcbo9SO4+ZffSJ26OCuJ9LuTZh0v4Xslu3UyNyvB6FIax8uMmMjVq6YOaXarsh+IaWUX2gWKhAnEwtJZPUbdAGL2Lyq8pZBBDWe1evFAXhNwFSlJyok5OfkbW9ejbNfuAKzo5KdMnqaazbFpLOxhFy6XRhhzbTVYp7Ng3KP4uUfOohcYP+Nfja64Jg64F+sIkJy2t0fEeuYvGrZQT99Aqi27V4YrU145kO6NdiAlJKnVhLJPkXHI2YSvUwceoHn2wVfJGCEncZ48GfnxrnPxSkUQJmewmoy9q4x7U3FWtN44F+B05kVJSqaa/cYdWoYuPFKK6x0iV8m4wYaqs48nE+KiM+y5gW6tPJnZozR8p+QT80jElrtY7lV+lk+vDkxliJ3mLgPpheHb6zvbQCVcDyi4zc4S6NlJgFbu29YGHPJgFXRsmLcmQ2wqNmdZFiqn/nZwshqRUV9K+xOZb7xzpg7ClTMRASltpV8YpNg3l67vgP7k+Jjlau1HRNMZiOGBNLs8znX9jWd4p4sviPzaUu+kO5LoNhJUk1kyIPuLeWpMixwHXFCLaVGMDh0NNob11avgbpB11kvahr42Vk6gTebJGk3SX/ZFZi7omdTY5hQK6YKGEmrmN5XT6+Pg4wbQ98WE1He7G6dXl2/mv1/PXZ5PTSc2NFWDxMcvFm8np5FSWWh+5QXdg68lM9L3WbPft6f8B6rkBamggUvHT1qJJvTFFbjv0hRvA1kAB6zdQ5MkpQgHlwQy1K0JZP5x+7gqofWTB2G5FRH4Ptu9lWaRuA+XNXQFrDAbvpXvcbKEyUb4rKJdoI/0goi8/Dn31lXruGWP7dNI812g7+QUFPNDmcAiUIeI/tHtIUBpWasKKQnp+PjHTmlo+uPtktpJJcNfHz+dX88Uc+v5PedtN5A==
|
||||
sidebar_class_name: "delete api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Delete a document"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"delete"}
|
||||
path={"/api/v1/agents/{agent_id}/documents/{document_id}"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Delete a document and all its associated memory units and links.
|
||||
|
||||
This will cascade delete:
|
||||
- The document itself
|
||||
- All memory units extracted from this document
|
||||
- All links (temporal, semantic, entity) associated with those memory units
|
||||
|
||||
This operation cannot be undone.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: delete-memory-unit
|
||||
title: "Delete a memory unit"
|
||||
description: "Delete a single memory unit and all its associated links (temporal, semantic, and entity links)"
|
||||
sidebar_label: "Delete a memory unit"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJy9VlFv2zgM/isC97IVbtIW9+S33JruCnS3Yc320hYDZzOxVlnyRDpdLvB/P1C2k3S97nDAYXmJLZMfqU/kR21BcMWQ38BbqkPcmHcNRRQbPMNdBiVxEW2j75DDOTkSMmjY+pUjU/curbdi0JcGnTNW2CBzKCwKlcZZf8/mpVDdhIguM0w1erFFljzIi5VNb/UKMghj9MsScihTvM99mM8aBjJoMGJNQlGz3oLHmiAHXJGXz7aEDKym2qBUkEGkb62NVEIusaUMuKioRsi3IJtG/Vii9SvIQKw4XZgpkLksoeuyHbqG/j/APypTCftO3bkJnonV4+zkRP8e833dFgUxL1tnPgzGkEERvJAXNcemcbZIhE2/svps91l0Xddl8NvZ2VPgT+hsmdzMPMYQ/wMqNFEPSWyfd0mC1umTFar5qYELxaOv6DfvlunkHpOkbA8r1gutKEJ312XjGsaImwMmr0KfIHQZ1Lz6GelviRlXBDuw500TGWahX7t97PDlKxXy6MBv0r760IPd3R5mT2/P7vPbOO/p+6dgo8kfi8X7J4D92dYkVdg3SmoOqSCHKTZ2uj6dpq7g6Xbsjm6aeskST7dDTXepqJch0fKoBwZBmL2/hB+F4NbPzNjSx2NHj3LAGxaqzTJEM7s0fQpGKhTDEiJxZiJJtLTWRxWBSMjBswlrimZMcHLrb/2LF+aCUNpIrK9H5ujod5SiGnO7lhBxRUdHeXokU7dObDNKkyU2tFzawpIXtzEPViqDrYQaNd8lFmLou0QsdF89/vW4m2vCWFQKfWFTko7W6GWP3KoKGq/poTMO/arFFZlvLennHu1CQ2g9mQvrhLTcUrIJ22ARA7N5CNGVKRslJHHfZzTwExrr9c0wqfgJuU2PvqisvzdzXzbBelHgN+RVQMmkdv4uLTqDnh8osvmCTKUJfghhy0F8NcS4qR73TcSmMp8st+jsX6nuFPzSCyWu1jvpXyXL9aFlD3EeirbWMIuIxf2w7fTcx0OvXA0o5WDM/Qm1DVMUw23ThChDHcxiUVmhQotBlxYVjZXWMnF+64+VkaEozZVOFI35OnhPxcGxpUrESKZwgclYb8TW1LvvDv+J+1jk6NzGsK2tw3jAmjrPezr/JbLuU3VXNH+sqR+BO5DrJhKWWlgzJfoR987ZdHIScU2R0aUeGzgcegrdrTfDb1B1LJKqD6Ns7JxEnSqTswXpYNmbzBosKjJnkxPIoI0OcqhEGs6n04eHhwmmz5MQV9PBl6dXl6/nf17Pj88mJ5NKaqfAmmMvF6eTk8mJLjWBpUZ/EGt3pTi4S/woN9v9cPoFV5BBh7V7po1Dm0ZMYmE7yOsNYGMhg/UpZP3FgyGD/OAKMh65Lo93h7sMqsCi7tut9uLH6LpOl1UxNpDf3GWwxmjxi4rwzRZKy/pcQr5Ex/QTVl5+GCbTK/PcDsYB5HX8rNG1+gYZ3NPm8PqkY/gXxh3JSaO+Iiwppq33X2dFQY0c+D25meg9ajcFz+dX88Ucuu5vWrnCbA==
|
||||
sidebar_class_name: "delete api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Delete a memory unit"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"delete"}
|
||||
path={"/api/v1/agents/{agent_id}/memories/{unit_id}"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Delete a single memory unit and all its associated links (temporal, semantic, and entity links)
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"unit_id","in":"path","required":true,"schema":{"type":"string","title":"Unit Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: get-agent-profile
|
||||
title: "Get agent profile"
|
||||
description: "Get personality traits and background for an agent. Auto-creates agent with defaults if not exists."
|
||||
sidebar_label: "Get agent profile"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Get agent profile"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents/{agent_id}/profile"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Get personality traits and background for an agent. Auto-creates agent with defaults if not exists.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"name":{"type":"string","title":"Name"},"personality":{"properties":{"openness":{"type":"number","maximum":1,"minimum":0,"title":"Openness","description":"Openness to experience (0-1)"},"conscientiousness":{"type":"number","maximum":1,"minimum":0,"title":"Conscientiousness","description":"Conscientiousness (0-1)"},"extraversion":{"type":"number","maximum":1,"minimum":0,"title":"Extraversion","description":"Extraversion (0-1)"},"agreeableness":{"type":"number","maximum":1,"minimum":0,"title":"Agreeableness","description":"Agreeableness (0-1)"},"neuroticism":{"type":"number","maximum":1,"minimum":0,"title":"Neuroticism","description":"Neuroticism (0-1)"},"bias_strength":{"type":"number","maximum":1,"minimum":0,"title":"Bias Strength","description":"How strongly personality influences opinions (0-1)"}},"type":"object","required":["openness","conscientiousness","extraversion","agreeableness","neuroticism","bias_strength"],"title":"PersonalityTraits","description":"Personality traits based on Big Five model.","example":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}},"background":{"type":"string","title":"Background"}},"type":"object","required":["agent_id","name","personality","background"],"title":"AgentProfileResponse","description":"Response model for agent profile.","example":{"agent_id":"user123","background":"I am a software engineer with 10 years of experience in startups","name":"Alice","personality":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: get-agent-stats
|
||||
title: "Get memory statistics for an agent"
|
||||
description: "Get statistics about nodes and links for a specific agent"
|
||||
sidebar_label: "Get memory statistics for an agent"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJylVktv3DYQ/ivE5NIayq5t9KTbNrFdA04bxNtcbCMYU7MSY4pkyNE6m4X+ezGUtI+6SVHUF1PkzDcz37x2C4x1gvIOFjU5Vu/QYU0tOYaHAipKOprAxjso4YpYJUY2iY1OCh99x8r5ipJCVylr3FNSKx8VqhRIm5XRCgUVCvCBIgrOdQUl1MSf8ssnwUtQQMCILTFF8WULDluCEgYZU0EBRjwIyA0UEOlLZyJVUHLsqICkG2oRyi3wJohe4mhcDQWwYSsXQ3DXFfT9g+in4F2iJCrnp6fy7zjU205rSmnVWfVhFIYCtHcs4ZRbwBCs0Tmi+eckOtu9G33f9wX8cn7+EvgjWlNlNXURo4//ARVCFBbZDH5XxGisnAxTm14KWK+PXtFt/lhldo9Z6ovdjXFMNUXoH/piusMYcXNA5Y0fHIS+gDbVP2L9HaWENcEO7PuimQy1lNd+b9s/fibNRxm/y3ENpke5hz3Mnt6B3e+H8Xag75+MTSK/LZfvXwAOuW2JGz9Wcq5ebqCEOQYzX5/Nc9mm+XYq334+lblxK59pOKrLd9T6uFGL99fw9567dwvF1AYf0b5O1KJjo1U7KKRNYmpzyy2uh1ZLihuUNvWRUqEicTS0lqO0aCRM3iXl1xQHEENpdu/u3atX6pKQu0hJPk/UycmvyLqZfLtlH7Gmk5MyH0m1nWUTLO1gFK1WRhtybDfq2XCjsGPfovi7Qs2KvnJELXEN+LdTNLeEUTcCfWmyk5bW6HiP3CXjauXEPbTKoqs7rEl96UieB7RLMSH1oy6NZZLyys5mbIU6+pTUs4+2yt4IIZn7waORHx+Mky+VSAYSk90M6MvGuCd14argjWMBviInE41Ubt+v3KFV6NIzxaQeMVGlvBtNmIocG95kE1NQA+5VxNCojyZ1aM23XGcCfu2YMldrmnJdZ8n1oeQA8dbrTua1WkbUT2PY+TzYywN9QqlG4TRkqAuJIqvUheAjj3WwiLoxTFqKQa6WDU2V1iVK5b17LYyMRaluZOyLzTfeOdIHacuViJGUtj6RMk6xaWlQ3yX/hfpU5GjtRiXTGovxgDVRvhjo/BfLEqfMWRb/sSWVs7ADuQ2RsJLCWgjRR9xba3LmOOKaYkKbe2zkcOwptPdOjX/jFEedp/i4vKbOydTJJLJGkyySvcgioG5Inc9OoYAuWiihYQ6pnM+fn59nmJ9nPtbzUTfNb67fXPx+e/H6fHY6a7i1Aiw+DuPibHY6O5Wr4BO36A5syfae5sZ+ied17XZr+mj4bPer6X/t/nG+SpfMg0WTV0eOdjtOzjvAYKCA9RkUw9KXYVkerP9hgD4U0PjEorDdSpf9GW3fy7XMgg2Udw8FrDEafJTxereFyiQ5V1Cu0Cb6QYQ/fRh3zM/qez5Pq8TJIlmj7eQLCniizeGPlbw9G8KKYvZheF5oTYEPFF8se/lpslssVxdL6Pu/AGALWMc=
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Get memory statistics for an agent"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents/{agent_id}/stats"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Get statistics about nodes and links for a specific agent
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: get-document
|
||||
title: "Get document details"
|
||||
description: "Get a specific document including its original text"
|
||||
sidebar_label: "Get document details"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJy9V01v2zgQ/SsEe9kNFH+1vejmTZM0QLstGqeHTQJjQo0lNhSpkiMnruH/vhhKsuW6SYtisb5EombezDy+4TBrSZAHmV7LN07VJVoK8jaRGQbldUXaWZnKcyQBIlSo9EIrkbWWQltl6kzbXGgKwnmdawtGED6STKSr0AMjXGQylTnSvHOUiazAQ4mEnmOvpYUSZSohR0tznclEag5cARUykR6/1tpjJlPyNSYyqAJLkOla0qpiv0Be21wmkjQZXpgykLjI5GaTbNG78P9FgI6tJsYtQ4TK2YCBvSajEf/ZZ/GyVgpDWNRGfGqNZSKVs8SUpGsJVWW0ipQNvwT2WfcyqTwTSrqJoLPnsuOkkh2bv0RUIrsNnMcNfMbpQ7fTMzbcbIuYFxCKWIldfVjEjd2H4M1oV2xtjGTiOtCTBkO8ZQzG9AiE2RyeTeWksRLTmEddZb/gc9VYtT4lls6v5rXVNFeutn1XbQlz9D3f99FaXFlN4iRabzZJZ+7uvqCiPT1dyyi2nrD3Wf6Ou72y9+r5UaK3h3rsKWtffd0HUboMjVg4L3KkXS+jzSqnLQ1kIvERyoph1z0NyTqgH09efp9yKuFOteu9LZOT0eTV8Wh8PH49G4/Sl6N0NPqH246hAoagnZ2Pf1hWOn59IEZ5Vhuzy5YXRYEeB4PBPk9PBN7wL5GvJpPDxvwMRmex7cSp987/fldmSKBN7E/CMhwaGKf2vv5Co3Qa3NzuhAbew6qnyneuSTDqOeTPif89hgA5yi3Y06aRDDHjrz8TOdfVhG7tetLc0duw+3QZbxr6fhSsM3k7m308AGz2tkQqXDtq4oQhFucQKj1cjodRyGG47gS9GXZiCsN1bzJs4mhYuEjM3iHZtv7048VBc93YqSAsK+fBHAcswZJWolG2CKtAWMaOm16IJg9BBZAI5DyGRHgkr3HJj2Az4RGCs0G4JfoGRGMY3Ngb++KFOEOg2mPg1yNxdPQXkCq63C7Jecjx6CiNjyjK2pCuDG5hBC4WWmm0ZFbiQVMhoCZXAue7AEUCH8mD4roa/MuumksErwqGPtMxSYNLsLRDrgPfBCynB0YYsHkNOYqvNfLnBu2MQ7CixJk2hCy4mGzEFqC8C0E8OG+ymA0TErlvMmr5cZW2/CYC8jWC0Kwa9Fmh7b04bU8yBj5Hy5cQFLGhH6kGI8CGB/RB3EHATDjbhtAZWtK0iiG6ohrccw9VIT7rUIPR36LyGPzCEkaultjtdR4tl33LBmJ7X5h5UPdt2fG5iQeWuWpRtspsdqiuAnoSoa4q56nVwdSrQhMqFgMvzQrslFYHDOmNPWZGWlGKd9reB4554qxF1du2qETwKJRxAYW2gnSJjft28w/cO5GDMSsRdKkN+B5r7Hza0PmTyFwnn7zE+UOJIu7CFuSy8gjxijllove4N0bHnSMPS/QBmqnWctj2FJgbK9pfe66Diud6eynsOidSx2eT0Qp5gO5MphWoAsVkMOJR441MZUFUhXQ4fHh4GED8PHA+H7a+Yfju4uT078vT48lgNCioNAzMOTbHxXgwGox4qXKBSrC9WOf9mdyMk/D9cbPejaffvJq3pyu/DSsDOg6OWNm6PTevJVRaJnI57m4vnEbau8dsRcrr/av1bSILF4gx1mtusitvNhte5qNgJdPr20QuwWu449P1ei0zHfg5k+kCTMBnyv3jUzt0/hRPldHNFsuTZQmm5jeZyHtc9f/D4An7P8btExQneYGQoY/lNxZTpbCinu/BxYNvy9shd346k5vNv8fyvSg=
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Get document details"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents/{agent_id}/documents/{document_id}"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Get a specific document including its original text
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"id":{"type":"string","title":"Id"},"agent_id":{"type":"string","title":"Agent Id"},"original_text":{"type":"string","title":"Original Text"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"memory_unit_count":{"type":"integer","title":"Memory Unit Count"}},"type":"object","required":["id","agent_id","original_text","content_hash","created_at","updated_at","memory_unit_count"],"title":"DocumentResponse","description":"Response model for get document endpoint.","example":{"agent_id":"user123","content_hash":"abc123","created_at":"2024-01-15T10:30:00Z","id":"session_1","memory_unit_count":15,"original_text":"Full document text here...","updated_at":"2024-01-15T10:30:00Z"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
71
memora-docs/docs/api-reference/endpoints/get-graph.api.mdx
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: get-graph
|
||||
title: "Get memory graph data"
|
||||
description: "Retrieve graph data for visualization, optionally filtered by fact_type (world/agent/opinion). Limited to 1000 most recent items."
|
||||
sidebar_label: "Get memory graph data"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJzNV21v20YS/iuD7ZfEoCVZTYEDv6mN4zOQOoGt9oDahjEmR+TWy112dyhFJ+i/H2a5lKk4boHiDjh9kbSceWbm2XnjTjFWQeW36lcdOjT638jaWXWfqZJC4XUb/+bqmthrWhNUHtsaSmSElfOwHqtl4KI8GrOFlTZMnkp43MIKC37gbUvwZuO8KadYkeWpa7XVzr6dwEfdaKYS2MHZbDaDxgUGTwVZBs3UhInKlGvJRzuXpcpVRfwQnVGZatFjQ0xeQtkpiw2pXEUjD7pUmdISQ4sswp7+6LSnUuXsO8pUKGpqUOU7JR6qXAX22lYqU6zZyMFCgOCyVPt9dkA/xDTA/9GR3x7hr9CEIwNot59W0cVjUwKbTmxnjNrfPxv/gAXDUh7u5dhTaJ0NFARvPpvJ1/FV3XRFQSGsOgPXSVhlqnCWyXL0om2NLiKT09+D6OxGPrZeeGbdW7Cu7H/EW4jaZan7S/48kuypTDG4x9+pYLU/HKD3uB0RehVR95misvofwJ9HVHmOj4YevNv8920sBRquBVqEHKN56KzmMEokbZkq8mMtkYNfotx+/7W1ce7cJuoHjo6COTY4SpYLKYj3yDi6+a8LuX8AjSvJxBoelTTZsnXaspQbfcGmFdTdcE23O7XyrlG5OosuqFzN1SGIQA1a1oXK1IZ0VbPKZ5N/SM6mJLrdKV0mZYOPZKS0jC4INs4/BUCGC+cqQ8+YsVvE8oia85Hmj+4RNlKXtX5K5Xqkc398/be7vgS+sMrVv5x/Am1XTuhBFq35bP7udHZ2evYDnM3y72dCgGXdp0Zy883n8+ubT1dvs+QnvPl0fbG4uvxtsbz8dPVWGoF4iY/F2fz7dz9MJkJjMvntQKOX49yZ7+WTqXfz+cvK/hWNLmPdwrn3zv/9si6JUZujojgWMK44Lpm/7lxDtu/vX6+aj653UGqmCdWfNd2fKQSs6LkEXxeNZAw98s+LSuLqTSe5UfE809uz+3oY73v6vmVsEPnncvn5BWB/tw1x7dIIi8OLa5WrKbZ6uj7rR2OY7obptZ8OUy4mrNBwNJZ+psb5LSw+X76o9Tu7AKamdR7N6VCe0PQKYRuYmtgAFpfQWwWukSGw8xQy8GnmhwzQluAJg7MB3Jp8D6IpTO7snf3uO/hAyJ2nIH9P4OTkR+SiHny7YeexopOTPP4kaDrDujV0gAFarXShybLZwkZzDdixa1D8lUEL9IU9FhJXj38zRHND6ItaoD/o6KShNVp+Ru6CthVYcQ8NGLRVhxWBTGst/graYcbCh7i1aFtFZyM2YOFdCBD7SvRGCInc9x4lftI2EyCQ7CNMZtujL2ttn+A8tVYBviArqwxBakkdGkAbNuQDPGKgEpxNJnQZ29A2mhiC6nFjs4ejxU3ALy1T5GpNw133Hf5oV+sh3ruia8TM0mPxlMKOv3t7aIWrhFIm4dDfUNcG8gyha1vnOeXBwhe1ZiokGeRoWdOQaV2gkN/ZU2EkJSV81PYpiM2fnLVUjK4tZiJ6gsK4QKAtsG6oVz9c/gv1IcnjBhp0ow36EWuifN7T+ReWJU7psyz+Y0MwDIPkQesJS0mshRB9xL0xOt4ce1yTD9gP2cRhqik0dxbSJ3VxLGIXT9vlUDmROulEMj5knj+LLFosaoL5RGZV52Um1sxtyKfTzWYzwfh44nw1Tbph+vHyp/Orm/PT+WQ2qbkxAiw+9u3ibDKbzOSodYEbtCNbF8THuSTbwtf9Zvc8jf4v3hdSa5YCm7YGdZw6kahdarq3ClutMrWWlaRvgSpT+ejFoe+995mqXWBR2O2kQH/xZr+X437pl7lY6iDrxvPa/0Tbr14T1mg68SiO/TV6LQrfVn6V2DfXaZq9hddCHIaW3Y5tDg4dgotzuiYsyUcf+seLoqCWR4ov1gpx/jDCLs6Xar//Dw9s58g=
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Get memory graph data"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents/{agent_id}/graph"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Retrieve graph data for visualization, optionally filtered by fact_type (world/agent/opinion). Limited to 1000 most recent items.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"fact_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fact Type"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"nodes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Nodes"},"edges":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Edges"},"table_rows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Table Rows"},"total_units":{"type":"integer","title":"Total Units"}},"type":"object","required":["nodes","edges","table_rows","total_units"],"title":"GraphDataResponse","description":"Response model for graph data endpoint.","example":{"edges":[{"from":"1","to":"2","type":"semantic","weight":0.8}],"nodes":[{"id":"1","label":"Alice works at Google","type":"world"},{"id":"2","label":"Bob went hiking","type":"world"}],"table_rows":[{"context":"Work info","date":"2024-01-15 10:30","entities":"Alice (PERSON), Google (ORGANIZATION)","id":"abc12345...","text":"Alice works at Google"}],"total_units":2}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
63
memora-docs/docs/api-reference/endpoints/list-agents.api.mdx
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
id: list-agents
|
||||
title: "List all agents"
|
||||
description: "Get a list of all agents with their profiles"
|
||||
sidebar_label: "List all agents"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJylV9ty2zYQ/RUM8tJ6aIly4rTDN9m1U83kNrXSh9oez5pckYhBAAFAyaxG/95ZkJQoyrm5fjFE7O5Z7OUssOYecseTaz7NUXn2DhTkWKLy/DbiGbrUCuOFVjzhb9AzYFI4z/SCgZQMSMexlfAF8wUKy4zVCyHR8YhrgxZIdZbxhJPaXSPPI27RGa0cOp6s+Ukc0799sKsqTdG5RSXZX60wj3iqlSffkjUHY6RIA8D4syOdNXdpgSXQyliC96JBaHGTNRceS/cVgTuR0drXBnnCnbdC5TziXnhJH5oAzTK+ibiCEr8l+572NxE3aJ1WIIWvD0G1QaXQuZ4hVZX3aHnES3gUZVXyZBLxUqhmHe8APnS6wyR1G8xrho8GrUCVIvslPp78Sh6lWrlUoPJCV+656OcHRoZuHEjsPMBHb2GJ1okmaT8LftHXH+L2N3eQkFtEuJf43ANP9wwMQfd2d6gKK6u9SIUrn4P5vqc+ROzt7fDuBbg75y2q3BfPQTwT4NhVZ2CI+adeMeetVrmsWa+wmVALWVGVOaaNUEKrbRA2UeeEvv+MqQ+t/6USFjPiHL2r4sO6HFTKMIv78R2e/nZ3qo87V+cWhD/MX0+C+SDC7sFhxrRiZyJnl2KJrNQZylHwCkojsaGNvbqKR78dZCF8e6Lp4tHrYSvEo9NB0cSjl1GPJuLR7xTRe0gfcqsr9U26OttJUdtbBI/ZHTTcqeoPC55cD7U3Ua9opOSbXhjPGwts6sleZbL/ae9TYyHY+06ZbNm5Jd59Xt0LyO2Ar98K52ceDzuoYfMwzGgmNDOsnV7MVWUJth7xnWNgLdTDaeB+zHX3pFu9sbbvWrfRlBxbaBv8FCrvDd2DSmwm3HV/lvHKoZ2cvNwPUcJnDEoGzOmFX4FFhioXCgNF9OuEn8Qnr47jyfHkdD6Jk5dxEsf/dDlI+FSKdJiLp3ri9ImeOP1KT5z+SE+c7vfE6aAcd26/nk9eJSeN25vbTfiLeIm+0BSGHClbBsglPgYjxsvJeHtFEWqhQ3/tjf93WGpbs+nH2UHabtSUeSyNtiCPHZagvEhZ2Si42lGVUS6ns+7e5AvwzHlt0UXMorcCl7QElTGL4IhI9RJtY0SgG92oG/XiBbtE8JVFRz+P2NHRGfi06Hy78tpCjkdHSVgiKyvphZG4NcNwsRAh9rJuCh8qr0sgfxeQehZykNK5GvtX3WmuEGxakOlLEZyUuATld5YrR2WqyD2QTILKK8iRfanoIuIaa5cEMa8NskshPRJTBGeDbQap1c6xlbYyC95QQELsG4/a+GwnjUMDFjzKurE+L4R6YBcqM1ooT4bfoKKbKLJwe3z0FUgGyq3Q9ni+gRAZFaSvA0R3qMbuGwumYH8LV4EU/4Z7JxmfKY8hVkvscp0HyWVfsjHxh04rulqzuYX0oT12WDd44e7dWcla4fZ6XRmH1jNXGaOtb+tgatNCeEypGOjTvMCu0iqHLrlRxxSRtijZW6EeHGGea6Uw7aUtVCJRQSq1QyYU86LERn2b/AP1rshBypo5UQoJthc1Ur5owvkd5DLQgKI3BHNQEiN54bdGroxFyKiwphTovdhLKULmWtKAhi/bGLY9BfJGsfavfURAGgZXS2Vd54TQEekTtRE170SmBtIC2cko5hGvrOQJL7w3LhmPV6vVCML2SNt83Oq68dvZ+cX7q4vjk1E8KnwpyfCW2PhkFI/i8EbQzpegelg0HXpUP2Sa9e4Z9LNvsnZUUReMjQShwiyn06xbIrzmYASP+HISblzd9Cq087S5XlPHfLJys6HP1Nc1T65vI74EK4j26dcm4gVChjYMpAesKYBpioYIdwmyChN1+ICj28GWnN9czPlm8x9AEQw1
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"List all agents"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Get a list of all agents with their profiles
|
||||
|
||||
<ParamsDetails
|
||||
parameters={undefined}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"agents":{"items":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"name":{"type":"string","title":"Name"},"personality":{"properties":{"openness":{"type":"number","maximum":1,"minimum":0,"title":"Openness","description":"Openness to experience (0-1)"},"conscientiousness":{"type":"number","maximum":1,"minimum":0,"title":"Conscientiousness","description":"Conscientiousness (0-1)"},"extraversion":{"type":"number","maximum":1,"minimum":0,"title":"Extraversion","description":"Extraversion (0-1)"},"agreeableness":{"type":"number","maximum":1,"minimum":0,"title":"Agreeableness","description":"Agreeableness (0-1)"},"neuroticism":{"type":"number","maximum":1,"minimum":0,"title":"Neuroticism","description":"Neuroticism (0-1)"},"bias_strength":{"type":"number","maximum":1,"minimum":0,"title":"Bias Strength","description":"How strongly personality influences opinions (0-1)"}},"type":"object","required":["openness","conscientiousness","extraversion","agreeableness","neuroticism","bias_strength"],"title":"PersonalityTraits","description":"Personality traits based on Big Five model.","example":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}},"background":{"type":"string","title":"Background"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["agent_id","name","personality","background"],"title":"AgentListItem","description":"Agent list item with profile summary."},"type":"array","title":"Agents"}},"type":"object","required":["agents"],"title":"AgentListResponse","description":"Response model for listing all agents.","example":{"agents":[{"agent_id":"user123","background":"I am a software engineer","created_at":"2024-01-15T10:30:00Z","name":"Alice","personality":{"agreeableness":0.5,"bias_strength":0.5,"conscientiousness":0.5,"extraversion":0.5,"neuroticism":0.5,"openness":0.5},"updated_at":"2024-01-16T14:20:00Z"}]}}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: list-documents
|
||||
title: "List documents"
|
||||
description: "List documents with pagination and optional search. Documents are the source content from which memory units are extracted."
|
||||
sidebar_label: "List documents"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJzFV01z2zYQ/SsY5NJ6aIlS4gtvamKnnnGaD6s51PZo1uRKRAwCDLCUrWr03zsLghQVx3Hb6Ux1MQku3i7ePuyut5Jg5WV2Jd/YvKnQkJc3iSzQ507VpKyRmbxQnkTRfRf3ikpRw0oZYAMBphA22IIWHsHl5Uj0cAIcCipReNu4HEVuDaEhsXS2EvelyktRYWXdRjRGRXN8IAc5YTGSibQ1uuDovJCZ1MrToo9FJrIGBxUSOj7FVhqoUGYSVmhooQqZSMVHqIFKmUiHXxvlsJAZuQYT6fMSK5DZVtKm5n2enDIrmUhSpHlhxkDivJC7XdKjf+1gvzboNge4S9D+ABjM5v0yhHboguHiimm0lrubvdOPB960qhT9A48RVRnCFTrJ2VxCo0lmkzTdO7kIsENHdrn0+N94Gvh536Lu+IAOfW2NR8+7p2nKfw61dtnkOXq/bLT4FI1lIqNoAp91rVUeBDH+4nnPdhBR7VgupFoPirA6fICiUK1SPwwsWzHE09jbL5iT3PUL4BxsBpI4D2D83RLo7/LQmc6DxS6JOfyRaUxH0mXhR7Y9pd8GPczWVTx1F2fSCyl6uBk699Tf2AHvh7npPojKFqjF0jqhD0sDmqK2yhDfW3yAqmb0nv6r7f5eZrLx6CbTl/vsLkrwJfN9m8d1h0BYLIBkJqfp9NVxOjmenMwnafYyzdL0D5YqQ3n0XlmzmMhEtsVkwcVkkduGRTM5SSThAy00mhWVMjt5NU0T2dTFM/As2Zi5cHW61KR97k/SHf8S+Wo6fSzmz6BV0RbJU+es+/dKLpBA6QMpHxpomx8K/fmy0+lqd/O01i9sGyALs/KrH1XKd+g9rHB/cZ42DWSIOX99TsN8rtZ1tBuodk9vy+7Tx3jT0vc9Z53Jr/P5h0eAbW4rpNKyzlahOoZekskx1Gq8noyDpP1420l7Nx62J2WWNlBx0E/etR1v9uH80SW7NjNBWNXWgT72WIEhlXct0m88YRVu3uxctJ4FlUDCk3XoE+GQnMI1P3JfdgjeGi/sGl0LotCPrs21efFCnCFQ49Dz65E4OvoFKC+72C7JOljh0VEWHlFUjSZVa+xhBC6XKldoSG/aoQAashVwvEvIqWvjykb8y+40l2FIYOgzFYLUuAZDe+TGK7MShsMDLTSYVQMrFNySFMfLaGfsgjUkzpQmZImFYAO2gNxZ78W9dboI0TAhgfs2osiPrZXhN+GRBwlCvWnR56Uyd+I01jMGfouGB5E4wTxQA1qA8ffovLgFj4XgWSi4UAUaUrQJLrpDtbhvHdSl+Kx8A1r9GbTG4OeGMHC1xi7Xq2C5Hlq2EF2hFnMH+V08dnhu/YFhriLKN2NbU3t0JHxT19ZR1MHM5aUizFkMvDTnaa1VWuPRZ9fmmBmJohQXytx59vnaGoP5IG1BiTzA5dp6FMoIUhW22/vkP9reiRy03givKqXBDVjjzactnc945nNyrQ3TJlQoQhZ6kMvaIRQsrBkTfcC91ipkjhys0Xlou1vkMN4p0NdGxF+s5JCHSh7np+7mBOrarp8jN9K9yayGvEQxHaUykY3TMpMlUe2z8fj+/n4E4fPIutU47vXji/PXp79dnh5PR+mopCqMExxjWy4mo3SU8lJtPVVgBr4Ox/ZvC81234r+5wE/VmS+U+NagwrNJnCzjbX2SkKtZCLX3ODbqicTmQ2G/GL430tpPfGm7Zbv5e9O73a83A603BIL5eFWD0baO9zEsX4NuuFoQqN8wq6bo/6ObT9T741v+MUptv5+NE/m6adPsTP+LJ7irWuAZjP02UXTMxZ6folQoAsxtJ9neY71MNhHIwoH37fDt6dzudv9BQlO5jo=
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"List documents"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents/{agent_id}/documents"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
List documents with pagination and optional search. Documents are the source content from which memory units are extracted.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"ListDocumentsResponse","description":"Response model for list documents endpoint.","example":{"items":[{"agent_id":"user123","content_hash":"abc123","created_at":"2024-01-15T10:30:00Z","id":"session_1","memory_unit_count":15,"text_length":5420,"updated_at":"2024-01-15T10:30:00Z"}],"limit":100,"offset":0,"total":50}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: list-memories
|
||||
title: "List memory units"
|
||||
description: "List memory units with pagination and optional full-text search. Supports filtering by fact_type."
|
||||
sidebar_label: "List memory units"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJy9V21v2zYQ/isE96UNZFvOnG7TN69NMwNp0zVuB7QJiot0tthQpEKenHqG//twpOTITdN2wzZ/sUQd73l479xIgqWX2Xv5Aivr1uKsRgekrPHyMpEF+typmt9lJk+VJ1FFucYo8uJWUSlqWCoT9ggwhbBBHLRYNFoPCD+R8AguL4fivKlr68iLhdKETpmluFqLBeT0gdY1DmUibYc/K2QmtfL0ISAq9DKRNTiokNAx5Y00UKHMJCzR0AdVyEQq5lkDlTKRDm8a5bCQGbkGE+nzEiuQ2UYymMykJ6YgE0mKNC9MWZGYFXK7TXbad/Q69TcNuvWe/gVovwcAZn22CBT3oVhtu2IareX28g78OeQk5vyxj37zH6P+voemVaXobyC2WpUhXKKTHDALaDTJbJymdyCnQW0fyC4WHv8dpB7OWdS65QM69LU1Hj3vPkxT/tsP5/Mmz9H7RaPF61ZYJjK3htBQsGdda5WHaBx99Lxn02NUO45VUhFBEVb7D1AUKmbCq55kDMX2NPbqI+Ykt7sFcA7WvYCcBWX83RLoL9qhE50HiW3S+vBroq07ks4LX5PdmfRz0n1vvW9P3fFMdoHUIlz2wT3FWvOGS0jP8vve6T6IyhaoxcI6oe/VHzRFbZUhrhz4CaqaIXY+eL+J3vxEMpN/WHctcmtW6HxwKSMCMaXD9HAySMeD8dF8nGY/plmavmOFhlR0mpxqlaN49Or49fnZy8eJOLF2qVE8Ont9Mn05ezedz85ePpZJr1Zk8tY6HUoSF7KjoxR/nqTpAA9/uRpMxsVkAD+NnwwmkydPjo4mkzRNUzZf5Brhbq279gKoQ7NGUIliOhOEUIUsbn0dkq1zZrqLlvFRuuVfIieHh/fj/y1oVcS6feycdf88+AskUHov+vcFtM33c+PblaoLxe3lw+lxaiNBjuXKL79W2l+g97DEu1x7WDQYY1eJvxr2fK4I3cr1Av3OvNG6Dx/jWTTfl8A6kd/m81f3FEbfVkil5RhbhoIaml8mR1Cr0Wo8Cr3RjzZdj9yOunY64nQKFXhhgzn2mmA7Dkxfze5l5oWZCsKqtg70wGMFhlTe5aVfe8IqpOt0JiK6oBJIeLIOfSIcklO44kceFxyCt8YLu0InOm7DC3NhfvhBPEegxqHn1wNxcPArUF523M7JOljiwUEWHlFUjSZVa9ypEbhYqFyhIb2Oswo0ZCtgvpyqAj+Rg5zPFfWfd6c5DxMLq36uAkmNKzB0p7nxPL0YpgdaaDDLBpYouJMp5svadh1dPO/mnUA26BaQO+u9CGUisGGDBNtHRq19bK0MvwmPPP0Q6nXUPi+VuRbHbQVkxSdoeHhC0Va9BrQA42/ReXEFHgsuIRFCFaG6rQNEd6io98RBXYq3yjeg1Z8h3lj5zBAGW62w8/UySK76klHFM5s3FcPMHeTX7bHDc8QDw7ZqtRStcDtNNrVHR8LHUbGNg6nLS0WYczDw0rzELtIajz67MAO2SBuU4lSZa8+YT60xmPfcFiIRHIpcW49CGUGqwrh95/x727sgB63XwqtKaXA9q/Hm42jObyDzOVVbxz1UKLoe0zKoHULBgTVlQ+/ZXmsVPEcOQguLLbG1YZtToC+MaH9tNYc8VPN27OoyJ5guDgs5cve9E5nWkJcoDofcjxqnZSZLotpno9Ht7e0QwuehdctRu9ePTmdPj1+eHw8Oh+mwpCpMIcwxlovxMB2mvFRbTxWYHta9C8XntWZz15H+l9tHW35526jWoEJnCUbYtIX1vYRayUSuxjKJFw8mnfWuIL3rSqiwl4ksrSfeutlwGr5xervl5Tj2chcslIcr3Rt8r3H92dVjBbphbqFHPiB/851y3XT2PbK7Sf1O+JJfnGLpL7N/0IePXrfN87F4yNpdjzTrPmbHZmfnMBaUCAW6wCF+nuY51n2y96YYJr/rmCfHc7nd/gXQ2CLs
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"List memory units"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents/{agent_id}/memories/list"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
List memory units with pagination and optional full-text search. Supports filtering by fact_type.
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"fact_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fact Type"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"ListMemoryUnitsResponse","description":"Response model for list memory units endpoint.","example":{"items":[{"context":"Work conversation","date":"2024-01-15T10:30:00Z","entities":"Alice (PERSON), Google (ORGANIZATION)","fact_type":"world","id":"550e8400-e29b-41d4-a716-446655440000","text":"Alice works at Google on the AI team"}],"limit":100,"offset":0,"total":150}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: list-operations
|
||||
title: "List async operations"
|
||||
description: "Get a list of all async operations (pending and failed) for a specific agent, including error messages for failed operations"
|
||||
sidebar_label: "List async operations"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: eJzFVktz2zgM/isY9tJmFDvJ7Ek3b5tkM5NuO423lyTTQShYYkORLAk5dT367zug5Fez6c6e1hdTJPAB+IgH14qxTqq8Ve+p9XEFHwJFZONdUveFqijpaIJ8q1JdEgOCNYnBLwCtBUwrp8FvdeB1IFcZVwO6ChZoLFVvYOEjIKRA2iyMBqzJcQHGadtlWYrRR2gpJawpZfFBdQ9ZFWr7cVWpUokbXw7OA0ZsiSlKPGvlsCVVqmzti6lUoYwEEZAbVahI3zoTqVIlx44KlXRDLapyrXgVRC9xNK5WhWLDVjZmAgRXler7e9FPwbtESVTOTk7k75Ctm05rSmnRWfg0CqtCae+YHIs4hmCNzu5PvybRWe/c6Pu+L9RvZ2fPgT+jNVVWg3Nh7j+gqhCFMjaD3xUxGisrw9Sm5wLW64NTdKsPi8zuIUt9sd0xjqmmqPr7vtjsYYy42qPy2g8Oqr5Qbap/xfr7ISvUFuxl0UwGzOW039n2D19J88GN3+a4BtOj3P0OZkfvwO7LYbwb6PsnYxuRP+bzj88Ah7ttiRsvmVwT5+zlRpVqisFMl6fTnLZput6kbz89yHXjFj5zcZCcYw3PPl6pn2v3zs2AqQ0+oj1O1KJjo6EdFNIqMbW58GZXQ30m4AYZEvtIqYBIHA0tZSmVHQmTlLtfUhxADKXJnbtzr17BBSF3kZJ8HsHR0e/Iutn4dsM+Yk1HR2VeErSdZRMsbWGAFgujDTm2K3gy3AB27FsUfxeoGeg7R9QS14B/s4nmhjDqRqAvTHbS0hId75C7JO3GiXtowaKrO6wJvnUkxwPahZiQJIILY5kkx7KzGRtQR58SPPloq+yNEJK5Hzwa+fHBuNwPE0lXYrKrAX3eGPcI564K3jgW4Etycq8EuYa/c4cW0KUnigkeMEkTdKMJU5Fjw6tsYhPUgHsZMTTw2aQOrfmR00TArxxT5mpJm7uus+RyX3KAeOd114qZeUT9OIad14M9dMLViFKNwmm4oS4kigypC8FHHvNgFnVjmLQkg2zNG9pkWpcolXfuWBgZkxKujXtMYvOtd4703rXlTMRIoK1PBMYBm5YG9e3lP1PfJDlau4JkWmMx7rEmyucDnf9iWeKUZsviP7YE+Ra2IDchEuY5NhOiD7i31uSb44hLigltrrGRw7Gm0N45GH9jK0edW/k4wTaVk6mTdmSNJpkmO5FZQN0QnE1OVKG6aFWpGuaQyun06elpgvl44mM9HXXT9Prq7fmfN+fHZ5OTScOtFWDxcWgXp5OTyYlsBZ+4Rbdn61rm/8+D/+d+s96NpP/72TC2ZqmtabBo8tTJHK3HpnurMBhVqOWpKob3guiVey8Hf/Aqanxi0VqvpUD/irbvZVvayEqVt/eFWmI0+CCd+XatKpNkXalygTbRL5h6/WmcUW/gJcc3o8jJIFqi7eRLFeqRVvuPnTx9G8KKYvZhOJ5pTYH3FJ89FuRpsx1Ml+dz1fd/A2bNiYA=
|
||||
sidebar_class_name: "get api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"List async operations"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"get"}
|
||||
path={"/api/v1/agents/{agent_id}/operations"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Get a list of all async operations (pending and failed) for a specific agent, including error messages for failed operations
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={undefined}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
---
|
||||
id: search-memories
|
||||
title: "Search memory"
|
||||
description: "Search memory using semantic similarity and spreading activation."
|
||||
sidebar_label: "Search memory"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "post api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Search memory"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"post"}
|
||||
path={"/api/v1/agents/{agent_id}/memories/search"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Search memory using semantic similarity and spreading activation.
|
||||
|
||||
The fact_type parameter is optional and must be one of:
|
||||
- 'world': General knowledge about people, places, events, and things that happen
|
||||
- 'agent': Memories about what the AI agent did, actions taken, and tasks performed
|
||||
- 'opinion': The agent's formed beliefs, perspectives, and viewpoints
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"type":"string","title":"Query"},"fact_type":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Fact Type"},"thinking_budget":{"type":"integer","title":"Thinking Budget","default":100},"max_tokens":{"type":"integer","title":"Max Tokens","default":4096},"trace":{"type":"boolean","title":"Trace","default":false},"question_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Date"}},"type":"object","required":["query"],"title":"SearchRequest","description":"Request model for search endpoint.","example":{"fact_type":["world","agent"],"max_tokens":4096,"query":"What did Alice say about machine learning?","question_date":"2023-05-30T23:40:00","thinking_budget":100,"trace":true}}}}}}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"results":{"items":{"properties":{"id":{"type":"string","title":"Id"},"text":{"type":"string","title":"Text"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"}},"type":"object","required":["id","text"],"title":"SearchResult","description":"Single search result item.","example":{"context":"work info","document_id":"session_abc123","event_date":"2024-01-15T10:30:00Z","id":"123e4567-e89b-12d3-a456-426614174000","text":"Alice works at Google on the AI team","type":"world"}},"type":"array","title":"Results"},"trace":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Trace"}},"type":"object","required":["results"],"title":"SearchResponse","description":"Response model for search endpoints.","example":{"results":[{"context":"work info","event_date":"2024-01-15T10:30:00Z","id":"123e4567-e89b-12d3-a456-426614174000","text":"Alice works at Google on the AI team","type":"world"}],"trace":{"num_results":1,"query":"What did Alice say about machine learning?","time_seconds":0.123}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
156
memora-docs/docs/api-reference/endpoints/sidebar.ts
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
import type { SidebarsConfig } from "@docusaurus/plugin-content-docs";
|
||||
|
||||
const sidebar: SidebarsConfig = {
|
||||
apisidebar: [
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/agent-memory-api",
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Visualization",
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/get-graph",
|
||||
label: "Get memory graph data",
|
||||
className: "api-method get",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Memory Operations",
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/list-memories",
|
||||
label: "List memory units",
|
||||
className: "api-method get",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/search-memories",
|
||||
label: "Search memory",
|
||||
className: "api-method post",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/batch-put-memories",
|
||||
label: "Store multiple memories",
|
||||
className: "api-method post",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/batch-put-async",
|
||||
label: "Store multiple memories asynchronously",
|
||||
className: "api-method post",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/list-operations",
|
||||
label: "List async operations",
|
||||
className: "api-method get",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/cancel-operation",
|
||||
label: "Cancel a pending async operation",
|
||||
className: "api-method delete",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/delete-memory-unit",
|
||||
label: "Delete a memory unit",
|
||||
className: "api-method delete",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Reasoning",
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/think",
|
||||
label: "Think and generate answer",
|
||||
className: "api-method post",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Agent Management",
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/list-agents",
|
||||
label: "List all agents",
|
||||
className: "api-method get",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/get-agent-stats",
|
||||
label: "Get memory statistics for an agent",
|
||||
className: "api-method get",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/clear-agent-memories",
|
||||
label: "Clear agent memories",
|
||||
className: "api-method delete",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/get-agent-profile",
|
||||
label: "Get agent profile",
|
||||
className: "api-method get",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/update-agent-personality",
|
||||
label: "Update agent personality",
|
||||
className: "api-method put",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/add-agent-background",
|
||||
label: "Add/merge agent background",
|
||||
className: "api-method post",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/create-or-update-agent",
|
||||
label: "Create or update agent",
|
||||
className: "api-method put",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Documents",
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/list-documents",
|
||||
label: "List documents",
|
||||
className: "api-method get",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/get-document",
|
||||
label: "Get document details",
|
||||
className: "api-method get",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-reference/endpoints/delete-document",
|
||||
label: "Delete a document",
|
||||
className: "api-method delete",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default sidebar.apisidebar;
|
||||
79
memora-docs/docs/api-reference/endpoints/think.api.mdx
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
---
|
||||
id: think
|
||||
title: "Think and generate answer"
|
||||
description: "Think and formulate an answer using agent identity, world facts, and opinions."
|
||||
sidebar_label: "Think and generate answer"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "post api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Think and generate answer"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"post"}
|
||||
path={"/api/v1/agents/{agent_id}/think"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Think and formulate an answer using agent identity, world facts, and opinions.
|
||||
|
||||
This endpoint:
|
||||
1. Retrieves agent facts (agent's identity)
|
||||
2. Retrieves world facts relevant to the query
|
||||
3. Retrieves existing opinions (agent's perspectives)
|
||||
4. Uses LLM to formulate a contextual answer
|
||||
5. Extracts and stores any new opinions formed
|
||||
6. Returns plain text answer, the facts used, and new opinions
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"type":"string","title":"Query"},"thinking_budget":{"type":"integer","title":"Thinking Budget","default":50},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["query"],"title":"ThinkRequest","description":"Request model for think endpoint.","example":{"context":"This is for a research paper on AI ethics","query":"What do you think about artificial intelligence?","thinking_budget":50}}}}}}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"text":{"type":"string","title":"Text"},"based_on":{"items":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"text":{"type":"string","title":"Text"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"}},"type":"object","required":["text"],"title":"ThinkFact","description":"A fact used in think response.","example":{"context":"healthcare discussion","event_date":"2024-01-15T10:30:00Z","id":"123e4567-e89b-12d3-a456-426614174000","text":"AI is used in healthcare","type":"world"}},"type":"array","title":"Based On","default":[]},"new_opinions":{"items":{"type":"string"},"type":"array","title":"New Opinions","default":[]}},"type":"object","required":["text"],"title":"ThinkResponse","description":"Response model for think endpoint.","example":{"based_on":[{"id":"123","text":"AI is used in healthcare","type":"world"},{"id":"456","text":"I discussed AI applications last week","type":"agent"}],"new_opinions":["AI has great potential when used responsibly"],"text":"Based on my understanding, AI is a transformative technology..."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: update-agent-personality
|
||||
title: "Update agent personality"
|
||||
description: "Update agent's Big Five personality traits and bias strength"
|
||||
sidebar_label: "Update agent personality"
|
||||
hide_title: true
|
||||
hide_table_of_contents: true
|
||||
api: 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
|
||||
sidebar_class_name: "put api-method"
|
||||
info_path: docs/api-reference/endpoints/agent-memory-api
|
||||
custom_edit_url: null
|
||||
---
|
||||
|
||||
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
|
||||
import ParamsDetails from "@theme/ParamsDetails";
|
||||
import RequestSchema from "@theme/RequestSchema";
|
||||
import StatusCodes from "@theme/StatusCodes";
|
||||
import OperationTabs from "@theme/OperationTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Heading from "@theme/Heading";
|
||||
|
||||
<Heading
|
||||
as={"h1"}
|
||||
className={"openapi__heading"}
|
||||
children={"Update agent personality"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<MethodEndpoint
|
||||
method={"put"}
|
||||
path={"/api/v1/agents/{agent_id}/profile"}
|
||||
context={"endpoint"}
|
||||
>
|
||||
|
||||
</MethodEndpoint>
|
||||
|
||||
|
||||
|
||||
Update agent's Big Five personality traits and bias strength
|
||||
|
||||
<Heading
|
||||
id={"request"}
|
||||
as={"h2"}
|
||||
className={"openapi-tabs__heading"}
|
||||
children={"Request"}
|
||||
>
|
||||
</Heading>
|
||||
|
||||
<ParamsDetails
|
||||
parameters={[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}]}
|
||||
>
|
||||
|
||||
</ParamsDetails>
|
||||
|
||||
<RequestSchema
|
||||
title={"Body"}
|
||||
body={{"required":true,"content":{"application/json":{"schema":{"properties":{"personality":{"properties":{"openness":{"type":"number","maximum":1,"minimum":0,"title":"Openness","description":"Openness to experience (0-1)"},"conscientiousness":{"type":"number","maximum":1,"minimum":0,"title":"Conscientiousness","description":"Conscientiousness (0-1)"},"extraversion":{"type":"number","maximum":1,"minimum":0,"title":"Extraversion","description":"Extraversion (0-1)"},"agreeableness":{"type":"number","maximum":1,"minimum":0,"title":"Agreeableness","description":"Agreeableness (0-1)"},"neuroticism":{"type":"number","maximum":1,"minimum":0,"title":"Neuroticism","description":"Neuroticism (0-1)"},"bias_strength":{"type":"number","maximum":1,"minimum":0,"title":"Bias Strength","description":"How strongly personality influences opinions (0-1)"}},"type":"object","required":["openness","conscientiousness","extraversion","agreeableness","neuroticism","bias_strength"],"title":"PersonalityTraits","description":"Personality traits based on Big Five model.","example":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}}},"type":"object","required":["personality"],"title":"UpdatePersonalityRequest","description":"Request model for updating personality traits."}}}}}
|
||||
>
|
||||
|
||||
</RequestSchema>
|
||||
|
||||
<StatusCodes
|
||||
id={undefined}
|
||||
label={undefined}
|
||||
responses={{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"name":{"type":"string","title":"Name"},"personality":{"properties":{"openness":{"type":"number","maximum":1,"minimum":0,"title":"Openness","description":"Openness to experience (0-1)"},"conscientiousness":{"type":"number","maximum":1,"minimum":0,"title":"Conscientiousness","description":"Conscientiousness (0-1)"},"extraversion":{"type":"number","maximum":1,"minimum":0,"title":"Extraversion","description":"Extraversion (0-1)"},"agreeableness":{"type":"number","maximum":1,"minimum":0,"title":"Agreeableness","description":"Agreeableness (0-1)"},"neuroticism":{"type":"number","maximum":1,"minimum":0,"title":"Neuroticism","description":"Neuroticism (0-1)"},"bias_strength":{"type":"number","maximum":1,"minimum":0,"title":"Bias Strength","description":"How strongly personality influences opinions (0-1)"}},"type":"object","required":["openness","conscientiousness","extraversion","agreeableness","neuroticism","bias_strength"],"title":"PersonalityTraits","description":"Personality traits based on Big Five model.","example":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}},"background":{"type":"string","title":"Background"}},"type":"object","required":["agent_id","name","personality","background"],"title":"AgentProfileResponse","description":"Response model for agent profile.","example":{"agent_id":"user123","background":"I am a software engineer with 10 years of experience in startups","name":"Alice","personality":{"agreeableness":0.7,"bias_strength":0.7,"conscientiousness":0.6,"extraversion":0.5,"neuroticism":0.3,"openness":0.8}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}
|
||||
>
|
||||
|
||||
</StatusCodes>
|
||||
|
||||
|
||||
|
||||
41
memora-docs/docs/api-reference/index.md
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# API Reference
|
||||
|
||||
Complete reference for Memora's HTTP and MCP APIs.
|
||||
|
||||
## HTTP API
|
||||
|
||||
The HTTP API reference is automatically generated from our OpenAPI specification. Browse the endpoints in the sidebar to see request/response details, parameters, and examples.
|
||||
|
||||
**Base URL:** `http://localhost:8080`
|
||||
|
||||
| Category | Endpoints |
|
||||
|----------|-----------|
|
||||
| **Memory Operations** | Store, search, list, delete memories |
|
||||
| **Reasoning** | Think and generate personality-aware responses |
|
||||
| **Agent Management** | Create, update, list agents and profiles |
|
||||
| **Documents** | Manage document groupings |
|
||||
| **Visualization** | Get entity graph data |
|
||||
|
||||
## MCP API
|
||||
|
||||
The MCP (Model Context Protocol) API exposes Memora tools for AI assistants like Claude Desktop.
|
||||
|
||||
| Tool | Description |
|
||||
|------|-------------|
|
||||
| `memora_search` | Search memories |
|
||||
| `memora_think` | Generate personality-aware response |
|
||||
| `memora_store` | Store new memory |
|
||||
| `memora_agents` | List available agents |
|
||||
|
||||
[MCP Tools Reference →](./mcp)
|
||||
|
||||
## OpenAPI / Swagger
|
||||
|
||||
Interactive API documentation available when the server is running:
|
||||
|
||||
- **Swagger UI:** [http://localhost:8080/docs](http://localhost:8080/docs)
|
||||
- **OpenAPI JSON:** [http://localhost:8080/openapi.json](http://localhost:8080/openapi.json)
|
||||
176
memora-docs/docs/api-reference/mcp.md
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# MCP API
|
||||
|
||||
Model Context Protocol (MCP) tools exposed by the Memora MCP server.
|
||||
|
||||
## Available Tools
|
||||
|
||||
### memora_search
|
||||
|
||||
Search memories for an agent.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `query` | string | yes | Search query |
|
||||
| `agent_id` | string | no | Agent ID (uses default if not specified) |
|
||||
| `top_k` | integer | no | Number of results (default: 10) |
|
||||
|
||||
**Example:**
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_search",
|
||||
"arguments": {
|
||||
"query": "What does Alice do for work?",
|
||||
"top_k": 5
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"results": [
|
||||
{
|
||||
"text": "Alice works at Google as a software engineer",
|
||||
"weight": 0.95,
|
||||
"fact_type": "world"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### memora_think
|
||||
|
||||
Generate a personality-aware response using retrieved memories.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `query` | string | yes | Question or prompt |
|
||||
| `agent_id` | string | no | Agent ID (uses default if not specified) |
|
||||
| `thinking_budget` | integer | no | Tokens for reasoning (default: 100) |
|
||||
|
||||
**Example:**
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_think",
|
||||
"arguments": {
|
||||
"query": "What should I recommend to Alice?"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"text": "Based on Alice's interest in machine learning and her work at Google, I would recommend...",
|
||||
"based_on": [
|
||||
{"text": "Alice works at Google", "weight": 0.95}
|
||||
],
|
||||
"new_opinions": []
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### memora_store
|
||||
|
||||
Store a new memory.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `content` | string | yes | Memory content to store |
|
||||
| `agent_id` | string | no | Agent ID (uses default if not specified) |
|
||||
| `context` | string | no | Context or topic of the memory |
|
||||
|
||||
**Example:**
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_store",
|
||||
"arguments": {
|
||||
"content": "User prefers Python for data analysis",
|
||||
"context": "programming discussion"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Memory stored successfully"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### memora_agents
|
||||
|
||||
List all available agents.
|
||||
|
||||
**Parameters:** None
|
||||
|
||||
**Example:**
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_agents",
|
||||
"arguments": {}
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"agents": [
|
||||
{"agent_id": "default"},
|
||||
{"agent_id": "assistant"},
|
||||
{"agent_id": "researcher"}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `MEMORA_API_URL` | Memora API URL | `http://localhost:8080` |
|
||||
| `MEMORA_AGENT_ID` | Default agent ID | Required |
|
||||
|
||||
## Error Responses
|
||||
|
||||
MCP tools return errors in the standard MCP error format:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": {
|
||||
"code": "NOT_FOUND",
|
||||
"message": "Agent 'unknown-agent' not found"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Code | Description |
|
||||
|------|-------------|
|
||||
| `INVALID_PARAMS` | Missing or invalid parameters |
|
||||
| `NOT_FOUND` | Agent or resource not found |
|
||||
| `INTERNAL_ERROR` | Server error |
|
||||
7
memora-docs/docs/changelog/index.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Changelog
|
||||
|
||||
Coming soon.
|
||||
7
memora-docs/docs/cookbook/index.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Cookbook
|
||||
|
||||
Coming soon.
|
||||
336
memora-docs/docs/developer/api/agent-identity.md
Normal file
|
|
@ -0,0 +1,336 @@
|
|||
---
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# Agent Identity
|
||||
|
||||
Configure agent personality, background, and behavior.
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
## Creating an Agent
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
client.create_agent(
|
||||
agent_id="my-agent",
|
||||
name="Research Assistant",
|
||||
background="I am a research assistant specializing in machine learning",
|
||||
personality={
|
||||
"openness": 0.8,
|
||||
"conscientiousness": 0.7,
|
||||
"extraversion": 0.5,
|
||||
"agreeableness": 0.6,
|
||||
"neuroticism": 0.3,
|
||||
"bias_strength": 0.5
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="node" label="Node.js">
|
||||
|
||||
```typescript
|
||||
import { OpenAPI, ManagementService } from '@memora/client';
|
||||
|
||||
OpenAPI.BASE = 'http://localhost:8080';
|
||||
|
||||
await ManagementService.createAgentApiAgentsAgentIdPut('my-agent', {
|
||||
name: 'Research Assistant',
|
||||
background: 'I am a research assistant specializing in machine learning',
|
||||
personality: {
|
||||
openness: 0.8,
|
||||
conscientiousness: 0.7,
|
||||
extraversion: 0.5,
|
||||
agreeableness: 0.6,
|
||||
neuroticism: 0.3,
|
||||
bias_strength: 0.5
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
# Set background
|
||||
memora agent background my-agent "I am a research assistant specializing in ML"
|
||||
|
||||
# Set personality
|
||||
memora agent personality my-agent \
|
||||
--openness 0.8 \
|
||||
--conscientiousness 0.7 \
|
||||
--extraversion 0.5 \
|
||||
--agreeableness 0.6 \
|
||||
--neuroticism 0.3 \
|
||||
--bias-strength 0.5
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Personality Traits (Big Five)
|
||||
|
||||
Each trait is scored 0.0 to 1.0:
|
||||
|
||||
| Trait | Low (0.0) | High (1.0) |
|
||||
|-------|-----------|------------|
|
||||
| **Openness** | Conventional, prefers proven methods | Curious, embraces new ideas |
|
||||
| **Conscientiousness** | Flexible, spontaneous | Organized, systematic |
|
||||
| **Extraversion** | Reserved, independent | Outgoing, collaborative |
|
||||
| **Agreeableness** | Direct, analytical | Cooperative, diplomatic |
|
||||
| **Neuroticism** | Calm, optimistic | Risk-aware, cautious |
|
||||
|
||||
### How Traits Affect Behavior
|
||||
|
||||
**Openness** influences how the agent weighs new vs. established ideas:
|
||||
|
||||
```python
|
||||
# High openness agent
|
||||
"Let's try this new framework—it looks promising!"
|
||||
|
||||
# Low openness agent
|
||||
"Let's stick with the proven solution we know works."
|
||||
```
|
||||
|
||||
**Conscientiousness** affects structure and thoroughness:
|
||||
|
||||
```python
|
||||
# High conscientiousness agent
|
||||
"Here's a detailed, step-by-step analysis..."
|
||||
|
||||
# Low conscientiousness agent
|
||||
"Quick take: this should work, let's try it."
|
||||
```
|
||||
|
||||
**Extraversion** shapes collaboration preferences:
|
||||
|
||||
```python
|
||||
# High extraversion agent
|
||||
"We should get the team together to discuss this."
|
||||
|
||||
# Low extraversion agent
|
||||
"I'll analyze this independently and share my findings."
|
||||
```
|
||||
|
||||
**Agreeableness** affects how disagreements are handled:
|
||||
|
||||
```python
|
||||
# High agreeableness agent
|
||||
"That's a valid point. Perhaps we can find a middle ground..."
|
||||
|
||||
# Low agreeableness agent
|
||||
"Actually, the data doesn't support that conclusion."
|
||||
```
|
||||
|
||||
**Neuroticism** influences risk assessment:
|
||||
|
||||
```python
|
||||
# High neuroticism agent
|
||||
"We should consider what could go wrong here..."
|
||||
|
||||
# Low neuroticism agent
|
||||
"The risks seem manageable, let's proceed."
|
||||
```
|
||||
|
||||
## Background
|
||||
|
||||
The background is a first-person narrative providing agent context:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
client.create_agent(
|
||||
agent_id="financial-advisor",
|
||||
background="""I am a conservative financial advisor with 20 years of experience.
|
||||
I prioritize capital preservation over aggressive growth.
|
||||
I have seen multiple market crashes and believe in diversification."""
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
Background influences:
|
||||
- How questions are interpreted
|
||||
- Perspective in responses
|
||||
- Opinion formation context
|
||||
|
||||
### Merging Background
|
||||
|
||||
New background information is merged intelligently:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# Original background
|
||||
client.create_agent(
|
||||
agent_id="assistant",
|
||||
background="I am a helpful AI assistant"
|
||||
)
|
||||
|
||||
# Add more context (merged, not replaced)
|
||||
client.update_background(
|
||||
agent_id="assistant",
|
||||
background="I specialize in Python programming"
|
||||
)
|
||||
|
||||
# Result: "I am a helpful AI assistant. I specialize in Python programming."
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
Merging rules:
|
||||
- **Conflicts**: New overwrites old
|
||||
- **Additions**: Non-conflicting info is added
|
||||
- **Normalization**: "You are..." → "I am..."
|
||||
|
||||
## Getting Agent Profile
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
profile = client.get_profile(agent_id="my-agent")
|
||||
|
||||
print(f"Background: {profile['background']}")
|
||||
print(f"Personality: {profile['personality']}")
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora agent profile my-agent
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Updating Personality
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
client.update_personality(
|
||||
agent_id="my-agent",
|
||||
openness=0.9,
|
||||
conscientiousness=0.8
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Listing Agents
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
agents = client.list_agents()
|
||||
for agent in agents:
|
||||
print(agent["agent_id"])
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora agent list
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Default Values
|
||||
|
||||
If not specified, agents use neutral defaults:
|
||||
|
||||
```python
|
||||
{
|
||||
"openness": 0.5,
|
||||
"conscientiousness": 0.5,
|
||||
"extraversion": 0.5,
|
||||
"agreeableness": 0.5,
|
||||
"neuroticism": 0.5,
|
||||
"bias_strength": 0.5,
|
||||
"background": ""
|
||||
}
|
||||
```
|
||||
|
||||
## Personality Templates
|
||||
|
||||
Common personality configurations:
|
||||
|
||||
| Use Case | O | C | E | A | N | Bias |
|
||||
|----------|---|---|---|---|---|------|
|
||||
| **Customer Support** | 0.5 | 0.7 | 0.6 | 0.9 | 0.3 | 0.4 |
|
||||
| **Code Reviewer** | 0.4 | 0.9 | 0.3 | 0.4 | 0.5 | 0.6 |
|
||||
| **Creative Writer** | 0.9 | 0.4 | 0.7 | 0.6 | 0.5 | 0.7 |
|
||||
| **Risk Analyst** | 0.3 | 0.9 | 0.3 | 0.4 | 0.8 | 0.6 |
|
||||
| **Research Assistant** | 0.8 | 0.8 | 0.4 | 0.5 | 0.4 | 0.5 |
|
||||
| **Neutral (default)** | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 |
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# Customer support agent
|
||||
client.create_agent(
|
||||
agent_id="support",
|
||||
background="I am a friendly customer support agent",
|
||||
personality={
|
||||
"openness": 0.5,
|
||||
"conscientiousness": 0.7,
|
||||
"extraversion": 0.6,
|
||||
"agreeableness": 0.9, # Very diplomatic
|
||||
"neuroticism": 0.3, # Calm under pressure
|
||||
"bias_strength": 0.4
|
||||
}
|
||||
)
|
||||
|
||||
# Code reviewer agent
|
||||
client.create_agent(
|
||||
agent_id="reviewer",
|
||||
background="I am a thorough code reviewer focused on quality",
|
||||
personality={
|
||||
"openness": 0.4, # Prefers proven patterns
|
||||
"conscientiousness": 0.9, # Very thorough
|
||||
"extraversion": 0.3,
|
||||
"agreeableness": 0.4, # Direct feedback
|
||||
"neuroticism": 0.5,
|
||||
"bias_strength": 0.6
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Agent Isolation
|
||||
|
||||
Each agent has:
|
||||
- **Separate memories** — agents don't share memories
|
||||
- **Own personality** — traits are per-agent
|
||||
- **Independent opinions** — formed from their own experiences
|
||||
|
||||
```python
|
||||
# Store to agent A
|
||||
client.store(agent_id="agent-a", content="Python is great")
|
||||
|
||||
# Agent B doesn't see it
|
||||
results = client.search(agent_id="agent-b", query="Python")
|
||||
# Returns empty
|
||||
```
|
||||
215
memora-docs/docs/developer/api/ingest.md
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Ingest Data
|
||||
|
||||
Store memories, conversations, and documents into Memora.
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
## Installation
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```bash
|
||||
pip install memora-client
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="node" label="Node.js">
|
||||
|
||||
```bash
|
||||
npm install @memora/client
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
cd memora-cli && cargo build --release
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Store a Single Memory
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
client.store(
|
||||
agent_id="my-agent",
|
||||
content="Alice works at Google as a software engineer"
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="node" label="Node.js">
|
||||
|
||||
```typescript
|
||||
import { OpenAPI, MemoryStorageService } from '@memora/client';
|
||||
|
||||
OpenAPI.BASE = 'http://localhost:8080';
|
||||
|
||||
await MemoryStorageService.putApiPutPost({
|
||||
agent_id: 'my-agent',
|
||||
content: 'Alice works at Google as a software engineer'
|
||||
});
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora memory put my-agent "Alice works at Google as a software engineer"
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Store with Context and Date
|
||||
|
||||
Add context and event dates for better retrieval:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
client.store(
|
||||
agent_id="my-agent",
|
||||
content="Alice got promoted to senior engineer",
|
||||
context="career update",
|
||||
event_date="2024-03-15T10:00:00Z"
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora memory put my-agent "Alice got promoted" \
|
||||
--context "career update" \
|
||||
--event-date "2024-03-15"
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
The `event_date` enables temporal queries like "What happened last spring?"
|
||||
|
||||
## Batch Ingestion
|
||||
|
||||
Store multiple memories in a single request:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
client.store_batch(
|
||||
agent_id="my-agent",
|
||||
items=[
|
||||
{"content": "Alice works at Google", "context": "career"},
|
||||
{"content": "Bob is a data scientist at Meta", "context": "career"},
|
||||
{"content": "Alice and Bob are friends", "context": "relationship"}
|
||||
],
|
||||
document_id="conversation_001"
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="node" label="Node.js">
|
||||
|
||||
```typescript
|
||||
await MemoryStorageService.batchApiMemoriesBatchPost({
|
||||
agent_id: 'my-agent',
|
||||
items: [
|
||||
{ content: 'Alice works at Google', context: 'career' },
|
||||
{ content: 'Bob is a data scientist at Meta', context: 'career' }
|
||||
],
|
||||
document_id: 'conversation_001'
|
||||
});
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
The `document_id` groups related memories for later management.
|
||||
|
||||
## Store from Files
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
# Single file
|
||||
memora memory put-files my-agent document.txt
|
||||
|
||||
# Multiple files
|
||||
memora memory put-files my-agent doc1.txt doc2.md notes.txt
|
||||
|
||||
# With document ID
|
||||
memora memory put-files my-agent report.pdf --document-id "q4-report"
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## What Happens During Ingestion
|
||||
|
||||
When you store content, Memora:
|
||||
|
||||
1. **Extracts facts** using an LLM — converts raw text into structured narrative facts
|
||||
2. **Identifies entities** — people, places, organizations, concepts
|
||||
3. **Resolves entities** — "Alice" and "Alice Chen" become the same entity
|
||||
4. **Builds graph links** — connects memories through shared entities
|
||||
5. **Generates embeddings** — 384-dim vectors for semantic search
|
||||
6. **Stores to PostgreSQL** — with vector and full-text indexes
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Raw Content] --> B[LLM Extraction]
|
||||
B --> C[Entity Resolution]
|
||||
C --> D[Graph Construction]
|
||||
D --> E[Embedding]
|
||||
E --> F[(PostgreSQL)]
|
||||
```
|
||||
|
||||
## Async Ingestion
|
||||
|
||||
For large batches, use async ingestion:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# Start async ingestion
|
||||
operation = client.store_batch_async(
|
||||
agent_id="my-agent",
|
||||
items=[...large batch...],
|
||||
document_id="large-doc"
|
||||
)
|
||||
|
||||
# Check status
|
||||
status = client.get_operation(operation["operation_id"])
|
||||
print(status["status"]) # "pending", "processing", "completed", "failed"
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Best Practices
|
||||
|
||||
| Do | Don't |
|
||||
|----|-------|
|
||||
| Include context for better retrieval | Store raw unstructured dumps |
|
||||
| Use document_id to group related content | Mix unrelated content in one batch |
|
||||
| Add event_date for temporal queries | Omit dates if time matters |
|
||||
| Store conversations as they happen | Wait to batch everything |
|
||||
201
memora-docs/docs/developer/api/opinions.md
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# Opinions
|
||||
|
||||
How agents form, store, and evolve beliefs.
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
## What Are Opinions?
|
||||
|
||||
Opinions are beliefs formed by the agent based on evidence and personality. Unlike world facts (objective information received) or agent facts (actions taken), opinions are **judgments** with confidence scores.
|
||||
|
||||
| Type | Example | Confidence |
|
||||
|------|---------|------------|
|
||||
| World Fact | "Python was created in 1991" | — |
|
||||
| Agent Fact | "I recommended Python to Bob" | — |
|
||||
| Opinion | "Python is the best language for data science" | 0.85 |
|
||||
|
||||
## How Opinions Form
|
||||
|
||||
Opinions are created during `think` operations when the agent:
|
||||
1. Retrieves relevant facts
|
||||
2. Applies personality traits
|
||||
3. Forms a judgment
|
||||
4. Assigns a confidence score
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
F[Facts] --> P[Personality Filter]
|
||||
P --> J[Judgment]
|
||||
J --> O[Opinion + Confidence]
|
||||
O --> S[(Store)]
|
||||
```
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# Ask a question that might form an opinion
|
||||
answer = client.think(
|
||||
agent_id="my-agent",
|
||||
query="What do you think about functional programming?"
|
||||
)
|
||||
|
||||
# Check if new opinions were formed
|
||||
for opinion in answer["new_opinions"]:
|
||||
print(f"New opinion: {opinion['text']}")
|
||||
print(f"Confidence: {opinion['confidence']}")
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Searching Opinions
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# Search only opinions
|
||||
opinions = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="programming languages",
|
||||
fact_type=["opinion"]
|
||||
)
|
||||
|
||||
for op in opinions:
|
||||
print(f"{op['text']} (confidence: {op['confidence_score']:.2f})")
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora memory search my-agent "programming" --fact-type opinion
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Opinion Evolution
|
||||
|
||||
Opinions change as new evidence arrives:
|
||||
|
||||
| Evidence Type | Effect |
|
||||
|---------------|--------|
|
||||
| **Reinforcing** | Confidence increases (+0.1) |
|
||||
| **Weakening** | Confidence decreases (-0.15) |
|
||||
| **Contradicting** | Opinion revised, confidence reset |
|
||||
|
||||
**Example evolution:**
|
||||
|
||||
```
|
||||
t=0: "Python is best for data science" (0.70)
|
||||
↓ New evidence: Python dominates ML libraries
|
||||
t=1: "Python is best for data science" (0.85)
|
||||
↓ New evidence: Julia is 10x faster for numerical computing
|
||||
t=2: "Python is best for data science, though Julia is faster" (0.75)
|
||||
↓ New evidence: Most teams still use Python
|
||||
t=3: "Python is best for data science" (0.82)
|
||||
```
|
||||
|
||||
## Personality Influence
|
||||
|
||||
Different personalities form different opinions from the same facts:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# Create two agents with different personalities
|
||||
client.create_agent(
|
||||
agent_id="open-minded",
|
||||
personality={"openness": 0.9, "conscientiousness": 0.3, "bias_strength": 0.7}
|
||||
)
|
||||
|
||||
client.create_agent(
|
||||
agent_id="conservative",
|
||||
personality={"openness": 0.2, "conscientiousness": 0.9, "bias_strength": 0.7}
|
||||
)
|
||||
|
||||
# Store the same facts to both
|
||||
facts = [
|
||||
"Rust has better memory safety than C++",
|
||||
"C++ has a larger ecosystem and more libraries",
|
||||
"Rust compile times are longer than C++"
|
||||
]
|
||||
for fact in facts:
|
||||
client.store(agent_id="open-minded", content=fact)
|
||||
client.store(agent_id="conservative", content=fact)
|
||||
|
||||
# Ask both the same question
|
||||
q = "Should we rewrite our C++ codebase in Rust?"
|
||||
|
||||
answer1 = client.think(agent_id="open-minded", query=q)
|
||||
# Likely: "Yes, Rust's safety benefits outweigh migration costs"
|
||||
|
||||
answer2 = client.think(agent_id="conservative", query=q)
|
||||
# Likely: "No, C++'s ecosystem and our team's expertise make it the safer choice"
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Bias Strength
|
||||
|
||||
The `bias_strength` parameter (0-1) controls how much personality influences opinions:
|
||||
|
||||
| Value | Behavior |
|
||||
|-------|----------|
|
||||
| 0.0 | Pure evidence-based reasoning |
|
||||
| 0.5 | Balanced personality + evidence |
|
||||
| 1.0 | Strongly personality-driven |
|
||||
|
||||
```python
|
||||
# Evidence-focused agent
|
||||
client.create_agent(
|
||||
agent_id="analyst",
|
||||
personality={"bias_strength": 0.2} # Low bias
|
||||
)
|
||||
|
||||
# Personality-driven agent
|
||||
client.create_agent(
|
||||
agent_id="advisor",
|
||||
personality={"bias_strength": 0.8} # High bias
|
||||
)
|
||||
```
|
||||
|
||||
## Opinions in Think Responses
|
||||
|
||||
When `think` uses opinions, they appear in `based_on`:
|
||||
|
||||
```python
|
||||
answer = client.think(agent_id="my-agent", query="What language should I learn?")
|
||||
|
||||
print("World facts used:")
|
||||
for f in answer["based_on"]["world"]:
|
||||
print(f" {f['text']}")
|
||||
|
||||
print("\nOpinions used:")
|
||||
for o in answer["based_on"]["opinion"]:
|
||||
print(f" {o['text']} (confidence: {o['confidence_score']})")
|
||||
```
|
||||
|
||||
## Confidence Thresholds
|
||||
|
||||
Opinions below a confidence threshold may be:
|
||||
- Excluded from responses
|
||||
- Marked as uncertain
|
||||
- Revised more easily
|
||||
|
||||
```python
|
||||
# Low confidence opinions are held loosely
|
||||
# "I think Python might be good for this" (0.45)
|
||||
|
||||
# High confidence opinions are stated firmly
|
||||
# "Python is definitely the right choice" (0.92)
|
||||
```
|
||||
236
memora-docs/docs/developer/api/search.md
Normal file
|
|
@ -0,0 +1,236 @@
|
|||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Search Facts
|
||||
|
||||
Retrieve memories using multi-strategy search.
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
## Basic Search
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
results = client.search(
|
||||
agent_id="my-agent",
|
||||
query="What does Alice do?"
|
||||
)
|
||||
|
||||
for r in results:
|
||||
print(f"{r['text']} (score: {r['weight']:.2f})")
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="node" label="Node.js">
|
||||
|
||||
```typescript
|
||||
import { OpenAPI, SearchService } from '@memora/client';
|
||||
|
||||
OpenAPI.BASE = 'http://localhost:8080';
|
||||
|
||||
const results = await SearchService.searchApiSearchPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'What does Alice do?'
|
||||
});
|
||||
|
||||
for (const r of results.results) {
|
||||
console.log(`${r.text} (score: ${r.weight})`);
|
||||
}
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora memory search my-agent "What does Alice do?"
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Search Parameters
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `query` | string | required | Natural language query |
|
||||
| `top_k` | int | 10 | Maximum results to return |
|
||||
| `thinking_budget` | int | 100 | Tokens for graph traversal |
|
||||
| `fact_type` | list | all | Filter: `world`, `agent`, `opinion` |
|
||||
| `max_tokens` | int | 4096 | Token budget for results |
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
results = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="What does Alice do?",
|
||||
top_k=20,
|
||||
thinking_budget=150,
|
||||
fact_type=["world", "agent"],
|
||||
max_tokens=8000
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Temporal Queries
|
||||
|
||||
Memora automatically detects time expressions and activates temporal search:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# These queries activate temporal-graph retrieval
|
||||
results = client.search(agent_id="my-agent", query="What did Alice do last spring?")
|
||||
results = client.search(agent_id="my-agent", query="What happened in June?")
|
||||
results = client.search(agent_id="my-agent", query="Events from last year")
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora memory search my-agent "What did Alice do last spring?"
|
||||
memora memory search my-agent "What happened between March and May?"
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
Supported temporal expressions:
|
||||
|
||||
| Expression | Parsed As |
|
||||
|------------|-----------|
|
||||
| "last spring" | March 1 - May 31 (previous year) |
|
||||
| "in June" | June 1-30 (current/nearest year) |
|
||||
| "last year" | Jan 1 - Dec 31 (previous year) |
|
||||
| "last week" | 7 days ago - today |
|
||||
| "between March and May" | March 1 - May 31 |
|
||||
|
||||
## Filter by Fact Type
|
||||
|
||||
Search specific memory networks:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
# Only world facts (objective information)
|
||||
world_facts = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="Where does Alice work?",
|
||||
fact_type=["world"]
|
||||
)
|
||||
|
||||
# Only agent facts (agent's own experiences)
|
||||
agent_facts = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="What have I recommended?",
|
||||
fact_type=["agent"]
|
||||
)
|
||||
|
||||
# Only opinions (formed beliefs)
|
||||
opinions = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="What do I think about Python?",
|
||||
fact_type=["opinion"]
|
||||
)
|
||||
|
||||
# World and agent facts (exclude opinions)
|
||||
facts = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="What happened?",
|
||||
fact_type=["world", "agent"]
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora memory search my-agent "Python" --fact-type opinion
|
||||
memora memory search my-agent "Alice" --fact-type world,agent
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## How Search Works
|
||||
|
||||
Search runs four strategies in parallel:
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Q[Query] --> S[Semantic<br/>Vector similarity]
|
||||
Q --> K[Keyword<br/>BM25 exact match]
|
||||
Q --> G[Graph<br/>Entity traversal]
|
||||
Q --> T[Temporal<br/>Time-filtered]
|
||||
|
||||
S --> RRF[RRF Fusion]
|
||||
K --> RRF
|
||||
G --> RRF
|
||||
T --> RRF
|
||||
|
||||
RRF --> CE[Cross-Encoder<br/>Rerank]
|
||||
CE --> R[Results]
|
||||
```
|
||||
|
||||
| Strategy | When it helps |
|
||||
|----------|---------------|
|
||||
| **Semantic** | Conceptual matches, paraphrasing |
|
||||
| **Keyword** | Names, technical terms, exact phrases |
|
||||
| **Graph** | Related entities, indirect connections |
|
||||
| **Temporal** | "last spring", "in June", time ranges |
|
||||
|
||||
## Response Format
|
||||
|
||||
```python
|
||||
{
|
||||
"results": [
|
||||
{
|
||||
"id": "550e8400-e29b-41d4-a716-446655440000",
|
||||
"text": "Alice works at Google as a software engineer",
|
||||
"context": "career discussion",
|
||||
"event_date": "2024-01-15T10:00:00Z",
|
||||
"weight": 0.95,
|
||||
"fact_type": "world"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| `id` | Unique memory ID |
|
||||
| `text` | Memory content |
|
||||
| `context` | Original context (if provided) |
|
||||
| `event_date` | When the event occurred |
|
||||
| `weight` | Relevance score (0-1) |
|
||||
| `fact_type` | `world`, `agent`, or `opinion` |
|
||||
|
||||
## Thinking Budget
|
||||
|
||||
The `thinking_budget` controls graph traversal depth:
|
||||
|
||||
- **Low (50)**: Fast, shallow search — good for simple lookups
|
||||
- **Medium (100)**: Balanced — default for most queries
|
||||
- **High (200+)**: Deep exploration — finds indirect connections
|
||||
|
||||
```python
|
||||
# Quick lookup
|
||||
results = client.search(agent_id="my-agent", query="Alice's email", thinking_budget=50)
|
||||
|
||||
# Deep exploration
|
||||
results = client.search(agent_id="my-agent", query="How are Alice and Bob connected?", thinking_budget=200)
|
||||
```
|
||||
153
memora-docs/docs/developer/api/think-vs-search.md
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
---
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# Think vs Search
|
||||
|
||||
When to use `search` vs `think`.
|
||||
|
||||
## Quick Comparison
|
||||
|
||||
| | Search | Think |
|
||||
|---|--------|-------|
|
||||
| **Returns** | Raw memory results | Generated response |
|
||||
| **Use case** | Retrieval, lookup | Q&A, reasoning |
|
||||
| **LLM calls** | 0 (retrieval only) | 1+ (generation) |
|
||||
| **Speed** | Fast (~100-200ms) | Slower (~500-2000ms) |
|
||||
| **Opinions** | Returns existing | Can form new ones |
|
||||
| **Personality** | Not applied | Applied to response |
|
||||
|
||||
## When to Use Search
|
||||
|
||||
**Use Search when you need:**
|
||||
|
||||
- Raw facts for your own processing
|
||||
- Fast retrieval without generation
|
||||
- To populate context for another LLM
|
||||
- To check what's in memory
|
||||
- Debugging retrieval quality
|
||||
|
||||
```python
|
||||
# Get raw facts to inject into your own prompt
|
||||
results = client.search(agent_id="my-agent", query="Alice's preferences")
|
||||
|
||||
context = "\n".join([r["text"] for r in results])
|
||||
# Use context in your own LLM call
|
||||
```
|
||||
|
||||
**Examples:**
|
||||
|
||||
```python
|
||||
# Lookup — just get the facts
|
||||
results = client.search(agent_id="my-agent", query="Alice's email address")
|
||||
|
||||
# Context building — feed into another system
|
||||
results = client.search(agent_id="my-agent", query="Recent project discussions")
|
||||
context = format_for_prompt(results)
|
||||
|
||||
# Verification — check what's stored
|
||||
results = client.search(agent_id="my-agent", query="What do I know about Bob?")
|
||||
```
|
||||
|
||||
## When to Use Think
|
||||
|
||||
**Use Think when you need:**
|
||||
|
||||
- A natural language response
|
||||
- Personality-aware answers
|
||||
- Opinion formation
|
||||
- Reasoning over multiple facts
|
||||
- Source attribution
|
||||
|
||||
```python
|
||||
# Get a complete answer with personality
|
||||
answer = client.think(agent_id="my-agent", query="What should I recommend to Alice?")
|
||||
print(answer["text"]) # Natural language response
|
||||
print(answer["based_on"]) # Sources used
|
||||
```
|
||||
|
||||
**Examples:**
|
||||
|
||||
```python
|
||||
# Q&A — need a response, not just facts
|
||||
answer = client.think(agent_id="my-agent", query="What does Alice do for work?")
|
||||
|
||||
# Reasoning — synthesize multiple facts
|
||||
answer = client.think(agent_id="my-agent", query="How are Alice and Bob connected?")
|
||||
|
||||
# Opinion — agent forms a view
|
||||
answer = client.think(agent_id="my-agent", query="What do you think about Python?")
|
||||
|
||||
# Recommendation — personality-influenced
|
||||
answer = client.think(agent_id="my-agent", query="What book should I read next?")
|
||||
```
|
||||
|
||||
## Performance Comparison
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph Search
|
||||
S1[Query] --> S2[4-way Retrieval]
|
||||
S2 --> S3[RRF + Rerank]
|
||||
S3 --> S4[Results]
|
||||
end
|
||||
|
||||
subgraph Think
|
||||
T1[Query] --> T2[4-way Retrieval]
|
||||
T2 --> T3[RRF + Rerank]
|
||||
T3 --> T4[Load Personality]
|
||||
T4 --> T5[LLM Generation]
|
||||
T5 --> T6[Store Opinions]
|
||||
T6 --> T7[Response]
|
||||
end
|
||||
```
|
||||
|
||||
| Operation | Search | Think |
|
||||
|-----------|--------|-------|
|
||||
| Retrieval | ~100ms | ~100ms |
|
||||
| Reranking | ~35ms | ~35ms |
|
||||
| LLM Generation | — | ~500-1500ms |
|
||||
| Opinion Storage | — | ~50ms |
|
||||
| **Total** | **~135ms** | **~700-1700ms** |
|
||||
|
||||
## Hybrid Pattern
|
||||
|
||||
Use Search for context, Think for final response:
|
||||
|
||||
```python
|
||||
# First: fast search to check relevance
|
||||
results = client.search(agent_id="my-agent", query="Alice project status")
|
||||
|
||||
if len(results) > 0:
|
||||
# Only call Think if we have relevant memories
|
||||
answer = client.think(agent_id="my-agent", query="Summarize Alice's project status")
|
||||
else:
|
||||
answer = {"text": "I don't have information about Alice's projects."}
|
||||
```
|
||||
|
||||
## Decision Flowchart
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Need memory access] --> B{Need natural language response?}
|
||||
B -->|No| C[Use Search]
|
||||
B -->|Yes| D{Need personality/opinions?}
|
||||
D -->|No| E{Building context for another LLM?}
|
||||
E -->|Yes| C
|
||||
E -->|No| F[Use Think]
|
||||
D -->|Yes| F
|
||||
```
|
||||
|
||||
## Cost Considerations
|
||||
|
||||
| Factor | Search | Think |
|
||||
|--------|--------|-------|
|
||||
| API calls | 1 | 1 |
|
||||
| LLM tokens | 0 | 500-2000 |
|
||||
| Latency | Low | Medium |
|
||||
| Cost | Low | Higher (LLM usage) |
|
||||
|
||||
If you're making many requests or building a high-throughput system, consider:
|
||||
- Use Search for bulk operations
|
||||
- Use Think for user-facing responses
|
||||
- Cache Think responses when appropriate
|
||||
207
memora-docs/docs/developer/api/think.md
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Think
|
||||
|
||||
Generate personality-aware responses using retrieved memories.
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
## Basic Usage
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
answer = client.think(
|
||||
agent_id="my-agent",
|
||||
query="What should I know about Alice?"
|
||||
)
|
||||
|
||||
print(answer["text"])
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="node" label="Node.js">
|
||||
|
||||
```typescript
|
||||
import { OpenAPI, ReasoningService } from '@memora/client';
|
||||
|
||||
OpenAPI.BASE = 'http://localhost:8080';
|
||||
|
||||
const response = await ReasoningService.thinkApiThinkPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'What should I know about Alice?'
|
||||
});
|
||||
|
||||
console.log(response.text);
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora memory think my-agent "What should I know about Alice?"
|
||||
|
||||
# Verbose output shows reasoning and sources
|
||||
memora memory think my-agent "What should I know about Alice?" -v
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Response Format
|
||||
|
||||
```python
|
||||
{
|
||||
"text": "Alice is a software engineer at Google who joined last year...",
|
||||
"based_on": {
|
||||
"world": [
|
||||
{"text": "Alice works at Google", "weight": 0.95, "id": "..."}
|
||||
],
|
||||
"agent": [],
|
||||
"opinion": [
|
||||
{"text": "Alice is very competent", "weight": 0.82, "id": "..."}
|
||||
]
|
||||
},
|
||||
"new_opinions": [
|
||||
{"text": "Alice would be good for the ML project", "confidence": 0.75}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| `text` | Generated response |
|
||||
| `based_on` | Memories used, grouped by type |
|
||||
| `new_opinions` | New opinions formed during reasoning |
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `query` | string | required | Question or prompt |
|
||||
| `thinking_budget` | int | 100 | Tokens for retrieval + reasoning |
|
||||
| `top_k` | int | 10 | Max memories to retrieve |
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
answer = client.think(
|
||||
agent_id="my-agent",
|
||||
query="What do you think about remote work?",
|
||||
thinking_budget=150,
|
||||
top_k=20
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## What Think Does
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant C as Client
|
||||
participant A as Memora API
|
||||
participant M as Memory Store
|
||||
participant L as LLM
|
||||
|
||||
C->>A: think("What about Alice?")
|
||||
A->>M: Search all networks
|
||||
M-->>A: World + Agent + Opinion facts
|
||||
A->>A: Load agent personality
|
||||
A->>L: Generate with personality context
|
||||
L-->>A: Response + new opinions
|
||||
A->>M: Store new opinions
|
||||
A-->>C: Response + sources + new opinions
|
||||
```
|
||||
|
||||
1. **Retrieves** relevant memories from all three networks
|
||||
2. **Loads** agent personality (Big Five traits + background)
|
||||
3. **Generates** response influenced by personality
|
||||
4. **Forms opinions** if the query warrants it
|
||||
5. **Returns** response with sources and any new opinions
|
||||
|
||||
## Opinion Formation
|
||||
|
||||
Think can form new opinions based on evidence:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
answer = client.think(
|
||||
agent_id="my-agent",
|
||||
query="What do you think about Python vs JavaScript for data science?"
|
||||
)
|
||||
|
||||
# Response might include:
|
||||
# text: "Based on what I know about data science workflows..."
|
||||
# new_opinions: [
|
||||
# {"text": "Python is better for data science", "confidence": 0.85}
|
||||
# ]
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
New opinions are automatically stored and influence future responses.
|
||||
|
||||
## Personality Influence
|
||||
|
||||
The agent's personality affects Think responses:
|
||||
|
||||
| Trait | Effect on Think |
|
||||
|-------|-----------------|
|
||||
| High **Openness** | More willing to consider new ideas |
|
||||
| High **Conscientiousness** | More structured, methodical responses |
|
||||
| High **Extraversion** | More collaborative suggestions |
|
||||
| High **Agreeableness** | More diplomatic, harmony-seeking |
|
||||
| High **Neuroticism** | More risk-aware, cautious |
|
||||
|
||||
```python
|
||||
# Create an agent with specific personality
|
||||
client.create_agent(
|
||||
agent_id="cautious-advisor",
|
||||
background="I am a risk-aware financial advisor",
|
||||
personality={
|
||||
"openness": 0.3,
|
||||
"conscientiousness": 0.9,
|
||||
"neuroticism": 0.8,
|
||||
"bias_strength": 0.7
|
||||
}
|
||||
)
|
||||
|
||||
# Think responses will reflect this personality
|
||||
answer = client.think(
|
||||
agent_id="cautious-advisor",
|
||||
query="Should I invest in crypto?"
|
||||
)
|
||||
# Response will likely emphasize risks and caution
|
||||
```
|
||||
|
||||
## Using Sources
|
||||
|
||||
The `based_on` field shows which memories informed the response:
|
||||
|
||||
```python
|
||||
answer = client.think(agent_id="my-agent", query="Tell me about Alice")
|
||||
|
||||
print("Response:", answer["text"])
|
||||
print("\nBased on:")
|
||||
for fact in answer["based_on"]["world"]:
|
||||
print(f" - {fact['text']} (relevance: {fact['weight']:.2f})")
|
||||
```
|
||||
|
||||
This enables:
|
||||
- **Transparency** — users see why the agent said something
|
||||
- **Verification** — check if the response is grounded in facts
|
||||
- **Debugging** — understand retrieval quality
|
||||
112
memora-docs/docs/developer/architecture.md
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Architecture
|
||||
|
||||
Memora's architecture consists of three main pipelines: ingestion, retrieval, and reasoning.
|
||||
|
||||
## Memory Ingestion
|
||||
|
||||
When content is stored, Memora processes it through an LLM-powered extraction pipeline.
|
||||
|
||||
### Narrative Fact Extraction
|
||||
|
||||
Unlike traditional systems that create atomic fragments, Memora extracts **comprehensive narrative facts** that preserve context:
|
||||
|
||||
**Fragmented (traditional)**:
|
||||
- "Bob suggested Summer Vibes"
|
||||
- "Alice wanted something unique"
|
||||
- "They chose Beach Beats"
|
||||
|
||||
**Narrative (Memora)**:
|
||||
- "Alice and Bob discussed naming their summer party playlist. Bob suggested 'Summer Vibes' because it's catchy, but Alice wanted something unique. They ultimately decided on 'Beach Beats' for its playful tone."
|
||||
|
||||
This approach:
|
||||
- Preserves conversational flow and reasoning
|
||||
- Resolves pronouns ("she" → "Alice")
|
||||
- Normalizes temporal expressions ("last year" → "2024")
|
||||
- Reduces fact count while maintaining context
|
||||
|
||||
### Entity Extraction
|
||||
|
||||
The LLM identifies entities in each fact:
|
||||
|
||||
| Type | Examples |
|
||||
|------|----------|
|
||||
| PERSON | "Alice", "Bob Chen" |
|
||||
| ORGANIZATION | "Google", "Stanford" |
|
||||
| LOCATION | "Yosemite", "California" |
|
||||
| PRODUCT | "Python", "TensorFlow" |
|
||||
| CONCEPT | "machine learning", "remote work" |
|
||||
|
||||
### Entity Resolution
|
||||
|
||||
Multiple mentions are resolved to canonical entities:
|
||||
|
||||
- "Alice" + "Alice Chen" + "Alice C." → single entity
|
||||
- "Bob" + "Robert Chen" → single entity (nicknames)
|
||||
- Context-aware: "Apple (company)" vs "apple (fruit)"
|
||||
|
||||
### Graph Construction
|
||||
|
||||
Three types of links connect memories:
|
||||
|
||||
**Entity Links** (`weight=1.0`)
|
||||
- Connect all memories mentioning the same entity
|
||||
- Enable "tell me everything about X" queries
|
||||
|
||||
**Temporal Links** (`weight=0.3-1.0`)
|
||||
- Connect memories close in time
|
||||
- Weight decays with time distance
|
||||
- Enable "what happened around then?" queries
|
||||
|
||||
**Semantic Links** (`weight=0.7-1.0`)
|
||||
- Connect semantically similar memories
|
||||
- Based on embedding cosine similarity
|
||||
- Enable "tell me about similar topics" queries
|
||||
|
||||
**Causal Links** (`weight=1.0`, boosted 2x in retrieval)
|
||||
- Connect cause-effect relationships
|
||||
- Types: `causes`, `caused_by`, `enables`, `prevents`
|
||||
- Enable "why did this happen?" queries
|
||||
|
||||
## Memory Unit Structure
|
||||
|
||||
Each stored memory contains:
|
||||
|
||||
```python
|
||||
{
|
||||
"id": "uuid",
|
||||
"agent_id": "my-agent",
|
||||
"text": "Alice works at Google as a software engineer...",
|
||||
"fact_type": "world", # world, agent, or opinion
|
||||
"confidence_score": 0.85, # only for opinions
|
||||
"embedding": [0.12, -0.34, ...], # 384-dim vector
|
||||
"occurred_start": "2023-11-01", # when fact started
|
||||
"occurred_end": "2023-11-01", # when fact ended
|
||||
"mentioned_at": "2024-01-15", # when we learned it
|
||||
"entities": ["Alice", "Google"]
|
||||
}
|
||||
```
|
||||
|
||||
## Temporal Model
|
||||
|
||||
Memora distinguishes **when facts occurred** from **when they were mentioned**:
|
||||
|
||||
- `occurred_start/end`: When the fact/event actually happened
|
||||
- `mentioned_at`: When the agent learned about it
|
||||
|
||||
This enables:
|
||||
- Accurate temporal queries: "What did Alice do in 2020?"
|
||||
- Recency-aware ranking: Recent mentions get priority
|
||||
- Historical queries without losing old information
|
||||
|
||||
## Storage
|
||||
|
||||
PostgreSQL with pgvector provides:
|
||||
|
||||
- **HNSW Index**: Fast approximate nearest neighbor search
|
||||
- **GIN Index**: Full-text search with BM25 ranking
|
||||
- **Entity Graph**: Adjacency list for graph traversal
|
||||
- **ACID Transactions**: Consistent memory updates
|
||||
219
memora-docs/docs/developer/index.md
Normal file
|
|
@ -0,0 +1,219 @@
|
|||
---
|
||||
sidebar_position: 1
|
||||
slug: /
|
||||
---
|
||||
|
||||
# Overview
|
||||
|
||||
## Why Memora?
|
||||
|
||||
AI assistants forget everything between sessions. Every conversation starts from zero—no context about who you are, what you've discussed, or what the agent has learned. This isn't just inconvenient; it fundamentally limits what AI agents can do.
|
||||
|
||||
**The problem is harder than it looks:**
|
||||
|
||||
- **Simple vector search isn't enough** — "What did Alice do last spring?" requires temporal reasoning, not just semantic similarity
|
||||
- **Facts get disconnected** — Knowing "Alice works at Google" and "Google is in Mountain View" should let you answer "Where does Alice work?" even if you never stored that directly
|
||||
- **Agents need opinions** — A coding assistant that remembers "the user prefers functional programming" should weigh that when making recommendations
|
||||
- **Context matters** — The same information means different things to different agents with different personalities
|
||||
|
||||
Memora solves these problems with a memory system designed specifically for AI agents.
|
||||
|
||||
## What Memora Does
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph Clients
|
||||
A[Python Client]
|
||||
B[Node.js Client]
|
||||
C[CLI]
|
||||
D[AI Assistants]
|
||||
end
|
||||
|
||||
subgraph Memora Server
|
||||
E[HTTP API]
|
||||
F[MCP API]
|
||||
end
|
||||
|
||||
A --> E
|
||||
B --> E
|
||||
C --> E
|
||||
D --> F
|
||||
|
||||
E --> G[Memory Engine]
|
||||
F --> G
|
||||
|
||||
G --> H[(PostgreSQL + pgvector)]
|
||||
```
|
||||
|
||||
**Store** conversations and documents → **Search** with multi-strategy retrieval → **Think** with personality-aware reasoning
|
||||
|
||||
## Architecture
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph Input
|
||||
I1[Raw Text]
|
||||
I2[Conversations]
|
||||
I3[Documents]
|
||||
end
|
||||
|
||||
subgraph Ingestion
|
||||
E1[LLM Extraction]
|
||||
E2[Entity Resolution]
|
||||
E3[Graph Construction]
|
||||
end
|
||||
|
||||
subgraph Storage
|
||||
S1[World Facts]
|
||||
S2[Agent Facts]
|
||||
S3[Opinions]
|
||||
S4[Entity Graph]
|
||||
end
|
||||
|
||||
subgraph Retrieval
|
||||
R1[Semantic Search]
|
||||
R2[Keyword Search]
|
||||
R3[Graph Traversal]
|
||||
R4[Temporal Search]
|
||||
R5[RRF Fusion]
|
||||
R6[Cross-Encoder Rerank]
|
||||
end
|
||||
|
||||
subgraph Output
|
||||
O1[Search Results]
|
||||
O2[Think Response]
|
||||
end
|
||||
|
||||
I1 --> E1
|
||||
I2 --> E1
|
||||
I3 --> E1
|
||||
E1 --> E2
|
||||
E2 --> E3
|
||||
E3 --> S1
|
||||
E3 --> S2
|
||||
E3 --> S3
|
||||
E3 --> S4
|
||||
|
||||
S1 --> R1
|
||||
S1 --> R2
|
||||
S4 --> R3
|
||||
S1 --> R4
|
||||
|
||||
R1 --> R5
|
||||
R2 --> R5
|
||||
R3 --> R5
|
||||
R4 --> R5
|
||||
R5 --> R6
|
||||
R6 --> O1
|
||||
R6 --> O2
|
||||
```
|
||||
|
||||
## Key Components
|
||||
|
||||
### Three Memory Networks
|
||||
|
||||
Memora separates memories by type for epistemic clarity:
|
||||
|
||||
| Network | What it stores | Example |
|
||||
|---------|----------------|---------|
|
||||
| **World** | Objective facts received | "Alice works at Google" |
|
||||
| **Agent** | Agent's own actions | "I recommended Python to Bob" |
|
||||
| **Opinion** | Formed beliefs + confidence | "Python is best for ML" (0.85) |
|
||||
|
||||
### Multi-Strategy Retrieval (TEMPR)
|
||||
|
||||
Four search strategies run in parallel:
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Q[Query] --> S[Semantic]
|
||||
Q --> K[Keyword]
|
||||
Q --> G[Graph]
|
||||
Q --> T[Temporal]
|
||||
|
||||
S --> RRF[RRF Fusion]
|
||||
K --> RRF
|
||||
G --> RRF
|
||||
T --> RRF
|
||||
|
||||
RRF --> CE[Cross-Encoder]
|
||||
CE --> R[Results]
|
||||
```
|
||||
|
||||
| Strategy | Best for |
|
||||
|----------|----------|
|
||||
| **Semantic** | Conceptual similarity, paraphrasing |
|
||||
| **Keyword (BM25)** | Names, technical terms, exact matches |
|
||||
| **Graph** | Related entities, indirect connections |
|
||||
| **Temporal** | "last spring", "in June", time ranges |
|
||||
|
||||
### Personality Framework (CARA)
|
||||
|
||||
Agents have Big Five personality traits that influence opinion formation:
|
||||
|
||||
| Trait | Low | High |
|
||||
|-------|-----|------|
|
||||
| **Openness** | Prefers proven methods | Embraces new ideas |
|
||||
| **Conscientiousness** | Flexible, spontaneous | Systematic, organized |
|
||||
| **Extraversion** | Independent | Collaborative |
|
||||
| **Agreeableness** | Direct, analytical | Diplomatic, harmonious |
|
||||
| **Neuroticism** | Calm, optimistic | Risk-aware, cautious |
|
||||
|
||||
The `bias_strength` parameter (0-1) controls how much personality influences opinions.
|
||||
|
||||
## Client-Server Interaction
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant C as Client
|
||||
participant A as Memora API
|
||||
participant DB as PostgreSQL
|
||||
|
||||
C->>A: store("Alice works at Google")
|
||||
A->>A: Extract facts & entities
|
||||
A->>A: Build graph links
|
||||
A->>DB: Store memory units
|
||||
A-->>C: Success
|
||||
|
||||
C->>A: search("What does Alice do?")
|
||||
A->>DB: 4-way parallel search
|
||||
A->>A: RRF fusion + rerank
|
||||
A-->>C: Ranked results
|
||||
|
||||
C->>A: think("Tell me about Alice")
|
||||
A->>DB: Retrieve relevant memories
|
||||
A->>A: Generate with personality
|
||||
A-->>C: Response + sources
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
pip install memora-client
|
||||
```
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
# Store
|
||||
client.store(agent_id="my-agent", content="Alice works at Google")
|
||||
|
||||
# Search
|
||||
results = client.search(agent_id="my-agent", query="What does Alice do?")
|
||||
|
||||
# Think (personality-aware response)
|
||||
answer = client.think(agent_id="my-agent", query="Tell me about Alice")
|
||||
print(answer["text"])
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Architecture](./developer/architecture) — Deep dive into ingestion, storage, and graph construction
|
||||
- [Retrieval](./developer/retrieval) — How TEMPR's 4-way search works
|
||||
- [Personality](./developer/personality) — CARA framework and opinion formation
|
||||
- [Ingest Data](./developer/api/ingest) — Store memories, conversations, and documents
|
||||
- [Search Facts](./developer/api/search) — Multi-strategy retrieval
|
||||
- [Think](./developer/api/think) — Personality-aware response generation
|
||||
- [Server Administration](./developer/server) — Deployment and configuration
|
||||
181
memora-docs/docs/developer/personality.md
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
---
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# Personality
|
||||
|
||||
Memora's personality framework (CARA) uses the Big Five model to influence how agents form and express opinions.
|
||||
|
||||
## Big Five Traits
|
||||
|
||||
Each trait is scored 0.0 to 1.0:
|
||||
|
||||
| Trait | Low (0.0) | High (1.0) |
|
||||
|-------|-----------|------------|
|
||||
| **Openness** | Conventional, practical | Curious, creative |
|
||||
| **Conscientiousness** | Flexible, spontaneous | Organized, disciplined |
|
||||
| **Extraversion** | Reserved, reflective | Outgoing, energetic |
|
||||
| **Agreeableness** | Analytical, direct | Cooperative, diplomatic |
|
||||
| **Neuroticism** | Calm, stable | Risk-aware, cautious |
|
||||
|
||||
## Bias Strength
|
||||
|
||||
The `bias_strength` parameter (0.0-1.0) controls personality influence:
|
||||
|
||||
- **0.0**: Purely evidence-based reasoning
|
||||
- **0.5**: Balanced personality/evidence mix
|
||||
- **1.0**: Strongly personality-driven opinions
|
||||
|
||||
## Opinion Formation
|
||||
|
||||
When agents encounter information:
|
||||
|
||||
1. Evidence is retrieved from memory
|
||||
2. Personality traits weight different aspects
|
||||
3. Confidence score reflects evidence + personality alignment
|
||||
|
||||
**Example**: Two agents given the same facts about remote work:
|
||||
|
||||
**Agent A** (openness=0.9, conscientiousness=0.2):
|
||||
> "Remote work unlocks creative flexibility and spontaneous innovation."
|
||||
|
||||
**Agent B** (openness=0.2, conscientiousness=0.9):
|
||||
> "Remote work lacks the structure and accountability needed for consistent performance."
|
||||
|
||||
Same facts, different conclusions based on personality.
|
||||
|
||||
## Opinion Reinforcement
|
||||
|
||||
Opinions evolve as new evidence arrives:
|
||||
|
||||
| Evidence Type | Effect |
|
||||
|---------------|--------|
|
||||
| **Reinforcing** | Confidence increases (+0.1) |
|
||||
| **Weakening** | Confidence decreases (-0.15) |
|
||||
| **Contradicting** | Opinion revised, confidence reset |
|
||||
|
||||
**Example Evolution**:
|
||||
|
||||
```
|
||||
t=0: "Python is best for data science" (0.70)
|
||||
t=1: New evidence: Python dominates ML → (0.85)
|
||||
t=2: New evidence: Julia is 10x faster → (0.75, text revised)
|
||||
t=3: New evidence: Rust taking over production → (0.55, text revised)
|
||||
```
|
||||
|
||||
## Agent Profile
|
||||
|
||||
### Setting Personality
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="python" label="Python">
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
client.create_agent(
|
||||
agent_id="my-agent",
|
||||
name="Creative Assistant",
|
||||
background="I am a creative AI interested in new ideas",
|
||||
personality={
|
||||
"openness": 0.8,
|
||||
"conscientiousness": 0.6,
|
||||
"extraversion": 0.5,
|
||||
"agreeableness": 0.7,
|
||||
"neuroticism": 0.3,
|
||||
"bias_strength": 0.7
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="node" label="Node.js">
|
||||
|
||||
```typescript
|
||||
import { OpenAPI, ManagementService } from '@memora/client';
|
||||
|
||||
OpenAPI.BASE = 'http://localhost:8080';
|
||||
|
||||
await ManagementService.createAgentApiAgentsAgentIdPut('my-agent', {
|
||||
name: 'Creative Assistant',
|
||||
background: 'I am a creative AI interested in new ideas',
|
||||
personality: {
|
||||
openness: 0.8,
|
||||
conscientiousness: 0.6,
|
||||
extraversion: 0.5,
|
||||
agreeableness: 0.7,
|
||||
neuroticism: 0.3,
|
||||
bias_strength: 0.7
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="CLI">
|
||||
|
||||
```bash
|
||||
memora agent background my-agent "I am a creative AI interested in new ideas"
|
||||
memora agent personality my-agent \
|
||||
--openness 0.8 \
|
||||
--conscientiousness 0.6 \
|
||||
--extraversion 0.5 \
|
||||
--agreeableness 0.7 \
|
||||
--neuroticism 0.3 \
|
||||
--bias-strength 0.7
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
### Background
|
||||
|
||||
First-person narrative providing agent context:
|
||||
|
||||
```python
|
||||
client.create_agent(
|
||||
agent_id="my-agent",
|
||||
background="I am a senior software architect with 15 years of distributed systems experience. I prefer simplicity over cutting-edge technology."
|
||||
)
|
||||
```
|
||||
|
||||
Background influences:
|
||||
- How questions are interpreted
|
||||
- Perspective in responses
|
||||
- Opinion formation context
|
||||
|
||||
### Background Merging
|
||||
|
||||
New background info is merged intelligently:
|
||||
|
||||
- **Conflicts**: New overwrites old
|
||||
- **Additions**: Non-conflicting info is added
|
||||
- **Normalization**: Converts to first-person ("You are..." → "I am...")
|
||||
|
||||
## Default Personality
|
||||
|
||||
If unspecified, agents default to neutral (0.5):
|
||||
|
||||
```json
|
||||
{
|
||||
"openness": 0.5,
|
||||
"conscientiousness": 0.5,
|
||||
"extraversion": 0.5,
|
||||
"agreeableness": 0.5,
|
||||
"neuroticism": 0.5,
|
||||
"bias_strength": 0.5
|
||||
}
|
||||
```
|
||||
|
||||
## Use Case Examples
|
||||
|
||||
| Use Case | Recommended Traits |
|
||||
|----------|-------------------|
|
||||
| Customer Support | High agreeableness, low neuroticism |
|
||||
| Code Review | High conscientiousness, low agreeableness |
|
||||
| Creative Writing | High openness, high extraversion |
|
||||
| Risk Analysis | High neuroticism, high conscientiousness |
|
||||
146
memora-docs/docs/developer/retrieval.md
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Retrieval
|
||||
|
||||
Memora's retrieval architecture (TEMPR) runs four search strategies in parallel and fuses results for optimal recall and precision.
|
||||
|
||||
## Pipeline Overview
|
||||
|
||||
```
|
||||
Query → Embedding + Temporal Parse
|
||||
│
|
||||
├─→ Semantic Search (pgvector)
|
||||
├─→ Keyword Search (BM25)
|
||||
├─→ Graph Traversal (spreading activation)
|
||||
└─→ Temporal-Graph (time-filtered)
|
||||
│
|
||||
↓
|
||||
RRF Fusion
|
||||
│
|
||||
↓
|
||||
Cross-Encoder Rerank
|
||||
│
|
||||
↓
|
||||
Token Budget Filter → Results
|
||||
```
|
||||
|
||||
## Four Strategies
|
||||
|
||||
### 1. Semantic Search
|
||||
|
||||
Vector similarity using pgvector HNSW index.
|
||||
|
||||
```sql
|
||||
SELECT * FROM memories
|
||||
WHERE (1 - (embedding <=> query_embedding)) >= 0.3
|
||||
ORDER BY embedding <=> query_embedding
|
||||
LIMIT 100
|
||||
```
|
||||
|
||||
**Strengths**: Conceptual matches, paraphrasing, synonyms
|
||||
|
||||
**Example**: "Alice's job" → "Alice works as a software engineer"
|
||||
|
||||
### 2. Keyword Search (BM25)
|
||||
|
||||
PostgreSQL full-text search with BM25 ranking.
|
||||
|
||||
```sql
|
||||
SELECT *, ts_rank_cd(search_vector, to_tsquery('english', query)) AS score
|
||||
FROM memories
|
||||
WHERE search_vector @@ to_tsquery('english', query)
|
||||
ORDER BY score DESC
|
||||
```
|
||||
|
||||
**Strengths**: Exact names, technical terms, proper nouns
|
||||
|
||||
**Example**: "Google" → all mentions of "Google"
|
||||
|
||||
### 3. Graph Traversal
|
||||
|
||||
Spreading activation from semantic entry points through the entity graph.
|
||||
|
||||
```python
|
||||
1. Find top-5 semantic matches (similarity ≥ 0.5)
|
||||
2. Initialize activation = similarity_score
|
||||
3. For each node (up to thinking_budget):
|
||||
- Propagate: neighbor.activation = current × edge.weight × 0.8
|
||||
- Causal links get 2x boost
|
||||
4. Return nodes with activation scores
|
||||
```
|
||||
|
||||
**Strengths**: Indirect relationships, entity connections, causal reasoning
|
||||
|
||||
**Example**: "What does Alice do?" → Alice → Google → Google's products
|
||||
|
||||
### 4. Temporal-Graph Search
|
||||
|
||||
Activated when temporal expressions are detected. Uses T5-small for parsing.
|
||||
|
||||
| Expression | Parsed Range |
|
||||
|------------|--------------|
|
||||
| "last spring" | March 1 - May 31 (prev year) |
|
||||
| "in June" | June 1-30 |
|
||||
| "last year" | Jan 1 - Dec 31 (prev year) |
|
||||
| "between March and May" | March 1 - May 31 |
|
||||
|
||||
**Strengths**: Historical queries, time-bounded search
|
||||
|
||||
**Example**: "What did Alice do last spring?" → Events in March-May range
|
||||
|
||||
## Result Fusion (RRF)
|
||||
|
||||
Reciprocal Rank Fusion combines ranked lists without score normalization:
|
||||
|
||||
```
|
||||
RRF_score(d) = Σ 1/(60 + rank_i(d))
|
||||
```
|
||||
|
||||
Items appearing in multiple lists rank higher than single-list items.
|
||||
|
||||
## Cross-Encoder Reranking
|
||||
|
||||
Neural reranking with temporal awareness:
|
||||
|
||||
```python
|
||||
input = f"[Date: {date_readable}] {memory_text}"
|
||||
score = cross_encoder.predict([(query, input)])
|
||||
```
|
||||
|
||||
Model: `cross-encoder/ms-marco-MiniLM-L-6-v2`
|
||||
|
||||
## Token Budget Filtering
|
||||
|
||||
Final stage ensures results fit LLM context windows:
|
||||
|
||||
```python
|
||||
for result in reranked_results:
|
||||
tokens = len(tokenizer.encode(result.text))
|
||||
if total_tokens + tokens <= max_tokens:
|
||||
filtered.append(result)
|
||||
total_tokens += tokens
|
||||
```
|
||||
|
||||
## Search Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| `thinking_budget` | 100 | Max nodes to explore in graph |
|
||||
| `max_tokens` | 4096 | Token limit for results |
|
||||
| `fact_type` | all | Filter: world, agent, opinion |
|
||||
|
||||
## Performance
|
||||
|
||||
Typical latency breakdown (p50):
|
||||
|
||||
| Stage | Time |
|
||||
|-------|------|
|
||||
| Query embedding | ~12ms |
|
||||
| Semantic search | ~35ms |
|
||||
| BM25 search | ~8ms |
|
||||
| Graph traversal | ~42ms |
|
||||
| RRF fusion | ~2ms |
|
||||
| Cross-encoder | ~35ms |
|
||||
| **Total** | **~135ms** |
|
||||
317
memora-docs/docs/developer/server.md
Normal file
|
|
@ -0,0 +1,317 @@
|
|||
---
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# Server Administration
|
||||
|
||||
Guide to deploying and configuring the Memora server.
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ CLIENTS │
|
||||
├─────────────────┬─────────────────┬─────────────────┬───────────────────────┤
|
||||
│ Python Client │ Node.js Client │ CLI │ AI Assistants │
|
||||
│ memora-client │ @memora/client │ memora-cli │ (Claude, etc.) │
|
||||
└────────┬────────┴────────┬────────┴────────┬────────┴───────────┬───────────┘
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
▼ ▼ ▼ ▼
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ MEMORA API SERVER │
|
||||
│ (localhost:8080) │
|
||||
├─────────────────────────────────┬───────────────────────────────────────────┤
|
||||
│ HTTP API │ MCP API │
|
||||
│ /api/memories/* │ MCP Server (stdio) │
|
||||
│ /api/agents/* │ memora_search, memora_think, │
|
||||
│ /api/search, /api/think │ memora_store, memora_agents │
|
||||
└─────────────────────────────────┴───────────────────────────────────────────┘
|
||||
│ │
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ PROCESSING PIPELINE │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ INGESTION │ │ RETRIEVAL │ │ REASONING │ │
|
||||
│ │ │ │ (TEMPR) │ │ (CARA) │ │
|
||||
│ │ LLM Extract │ │ │ │ │ │
|
||||
│ │ Entity Res. │ │ 4-way Search│ │ Personality │ │
|
||||
│ │ Graph Build │ │ RRF Fusion │ │ Opinion Gen │ │
|
||||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ ML MODELS │
|
||||
├───────────────────┬───────────────────┬─────────────────────────────────────┤
|
||||
│ Embeddings │ Cross-Encoder │ LLM Provider │
|
||||
│ all-MiniLM-L6-v2 │ ms-marco-MiniLM │ OpenAI / Groq / Ollama │
|
||||
│ (384-dim) │ (reranking) │ (extraction, reasoning) │
|
||||
└───────────────────┴───────────────────┴─────────────────────────────────────┘
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ POSTGRESQL + PGVECTOR │
|
||||
│ (localhost:5432) │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ • Memory Units (facts, opinions) • HNSW Vector Index │
|
||||
│ • Entity Graph (nodes, edges) • GIN Full-Text Index │
|
||||
│ • Agent Profiles • Temporal Indexes │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ CONTROL PLANE (Optional) │
|
||||
│ (localhost:3000) │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ • Web UI for administration • Agent management │
|
||||
│ • Memory visualization • Graph explorer │
|
||||
│ • Connects to API Server • Monitoring dashboard │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Docker (Recommended)
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/memora/memora.git
|
||||
cd memora
|
||||
|
||||
# Create environment file
|
||||
cp .env.example .env
|
||||
# Edit .env with your LLM API key
|
||||
|
||||
# Start all services
|
||||
cd docker
|
||||
./start.sh
|
||||
```
|
||||
|
||||
Services will be available at:
|
||||
- **API Server**: http://localhost:8080
|
||||
- **Control Plane**: http://localhost:3000
|
||||
- **Swagger UI**: http://localhost:8080/docs
|
||||
|
||||
### Local Development
|
||||
|
||||
```bash
|
||||
# Install dependencies
|
||||
uv sync
|
||||
|
||||
# Start PostgreSQL only (via Docker)
|
||||
cd docker && docker-compose up -d postgres
|
||||
|
||||
# Start the API server
|
||||
./scripts/start-server.sh --env local
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
### API Server (`MEMORA_API_*`)
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `MEMORA_API_DATABASE_URL` | PostgreSQL connection string | Required |
|
||||
| `MEMORA_API_LLM_PROVIDER` | LLM provider: `openai`, `groq`, `ollama` | `groq` |
|
||||
| `MEMORA_API_LLM_API_KEY` | API key for LLM provider | Required (except ollama) |
|
||||
| `MEMORA_API_LLM_MODEL` | Model name | `openai/gpt-oss-20b` |
|
||||
| `MEMORA_API_LLM_BASE_URL` | Custom LLM endpoint | Provider default |
|
||||
| `MEMORA_API_HOST` | Server bind address | `0.0.0.0` |
|
||||
| `MEMORA_API_PORT` | Server port | `8080` |
|
||||
| `MEMORA_API_MCP_ENABLED` | Enable MCP server | `true` |
|
||||
|
||||
### Control Plane (`MEMORA_CP_*`)
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `MEMORA_CP_DATAPLANE_API_URL` | API server URL | `http://localhost:8080` |
|
||||
| `MEMORA_CP_HOSTNAME` | Server bind address | `0.0.0.0` |
|
||||
| `MEMORA_CP_PORT` | Server port | `3000` |
|
||||
|
||||
### Example Configuration
|
||||
|
||||
```bash
|
||||
# .env file
|
||||
|
||||
# Database
|
||||
MEMORA_API_DATABASE_URL=postgresql://memora:memora_dev@localhost:5432/memora
|
||||
|
||||
# LLM - Using Groq (fast inference)
|
||||
MEMORA_API_LLM_PROVIDER=groq
|
||||
MEMORA_API_LLM_API_KEY=gsk_xxxxxxxxxxxx
|
||||
MEMORA_API_LLM_MODEL=llama-3.1-70b-versatile
|
||||
|
||||
# LLM - Using OpenAI
|
||||
# MEMORA_API_LLM_PROVIDER=openai
|
||||
# MEMORA_API_LLM_API_KEY=sk-xxxxxxxxxxxx
|
||||
# MEMORA_API_LLM_MODEL=gpt-4o
|
||||
|
||||
# LLM - Using Ollama (local, no API key)
|
||||
# MEMORA_API_LLM_PROVIDER=ollama
|
||||
# MEMORA_API_LLM_BASE_URL=http://localhost:11434/v1
|
||||
# MEMORA_API_LLM_MODEL=llama3.1
|
||||
|
||||
# Control Plane
|
||||
MEMORA_CP_DATAPLANE_API_URL=http://localhost:8080
|
||||
```
|
||||
|
||||
## ML Models
|
||||
|
||||
Memora uses several ML models for different stages of the pipeline:
|
||||
|
||||
### Embedding Model
|
||||
|
||||
| Model | Dimensions | Purpose |
|
||||
|-------|------------|---------|
|
||||
| `all-MiniLM-L6-v2` | 384 | Semantic vector embeddings |
|
||||
|
||||
Downloaded automatically on first run. Used for:
|
||||
- Memory vectorization
|
||||
- Query embedding
|
||||
- Semantic similarity search
|
||||
|
||||
### Cross-Encoder (Reranking)
|
||||
|
||||
| Model | Purpose |
|
||||
|-------|---------|
|
||||
| `cross-encoder/ms-marco-MiniLM-L-6-v2` | Neural reranking |
|
||||
|
||||
Reranks search results for precision after initial retrieval. Includes temporal context in input.
|
||||
|
||||
### Temporal Parser
|
||||
|
||||
| Model | Purpose |
|
||||
|-------|---------|
|
||||
| `t5-small` | Temporal expression parsing |
|
||||
|
||||
Parses natural language time expressions like "last spring" or "in June 2024".
|
||||
|
||||
### LLM (Configurable)
|
||||
|
||||
Used for:
|
||||
- Fact extraction from raw content
|
||||
- Entity extraction and resolution
|
||||
- Opinion generation with personality
|
||||
- Think/reasoning responses
|
||||
|
||||
Supported providers:
|
||||
- **OpenAI**: GPT-4, GPT-4o, GPT-3.5-turbo
|
||||
- **Groq**: Llama 3.1, Mixtral (fast inference)
|
||||
- **Ollama**: Any local model
|
||||
|
||||
## Database Schema
|
||||
|
||||
PostgreSQL with pgvector extension:
|
||||
|
||||
```sql
|
||||
-- Memory units (facts and opinions)
|
||||
CREATE TABLE memory_units (
|
||||
id UUID PRIMARY KEY,
|
||||
agent_id VARCHAR NOT NULL,
|
||||
text TEXT NOT NULL,
|
||||
fact_type VARCHAR NOT NULL, -- 'world', 'agent', 'opinion'
|
||||
confidence_score FLOAT,
|
||||
embedding VECTOR(384),
|
||||
occurred_start DATE,
|
||||
occurred_end DATE,
|
||||
mentioned_at TIMESTAMP,
|
||||
context VARCHAR,
|
||||
document_id VARCHAR
|
||||
);
|
||||
|
||||
-- Entity graph
|
||||
CREATE TABLE entities (
|
||||
id UUID PRIMARY KEY,
|
||||
agent_id VARCHAR NOT NULL,
|
||||
name VARCHAR NOT NULL,
|
||||
entity_type VARCHAR NOT NULL,
|
||||
canonical_name VARCHAR
|
||||
);
|
||||
|
||||
CREATE TABLE entity_links (
|
||||
memory_id UUID REFERENCES memory_units(id),
|
||||
entity_id UUID REFERENCES entities(id),
|
||||
PRIMARY KEY (memory_id, entity_id)
|
||||
);
|
||||
|
||||
-- Agent profiles
|
||||
CREATE TABLE agent_profiles (
|
||||
agent_id VARCHAR PRIMARY KEY,
|
||||
background TEXT,
|
||||
openness FLOAT DEFAULT 0.5,
|
||||
conscientiousness FLOAT DEFAULT 0.5,
|
||||
extraversion FLOAT DEFAULT 0.5,
|
||||
agreeableness FLOAT DEFAULT 0.5,
|
||||
neuroticism FLOAT DEFAULT 0.5,
|
||||
bias_strength FLOAT DEFAULT 0.5
|
||||
);
|
||||
```
|
||||
|
||||
### Indexes
|
||||
|
||||
- **HNSW Index**: Fast approximate nearest neighbor for vector search
|
||||
- **GIN Index**: Full-text search with BM25 ranking
|
||||
- **B-tree Indexes**: Agent ID, timestamps, entity lookups
|
||||
|
||||
## Docker Services
|
||||
|
||||
```yaml
|
||||
services:
|
||||
postgres: # pgvector/pgvector:pg16
|
||||
api: # Memora API server
|
||||
control-plane: # Admin UI (optional)
|
||||
```
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
# Start all services
|
||||
cd docker && ./start.sh
|
||||
|
||||
# Stop services
|
||||
cd docker && ./stop.sh
|
||||
|
||||
# Clean all data
|
||||
cd docker && ./clean.sh
|
||||
|
||||
# View logs
|
||||
docker-compose logs -f api
|
||||
docker-compose logs -f control-plane
|
||||
```
|
||||
|
||||
## Health Checks
|
||||
|
||||
### API Server
|
||||
|
||||
```bash
|
||||
curl http://localhost:8080/api/v1/agents
|
||||
```
|
||||
|
||||
### Control Plane
|
||||
|
||||
```bash
|
||||
curl http://localhost:3000/
|
||||
```
|
||||
|
||||
## Production Deployment
|
||||
|
||||
For production deployments:
|
||||
|
||||
1. **Use managed PostgreSQL** with pgvector extension
|
||||
2. **Set proper secrets** via environment variables or secrets manager
|
||||
3. **Configure resource limits** for ML model inference
|
||||
4. **Set up monitoring** for API latency and error rates
|
||||
5. **Use HTTPS** with proper TLS certificates
|
||||
6. **Configure rate limiting** at load balancer level
|
||||
|
||||
### Resource Requirements
|
||||
|
||||
| Component | CPU | Memory | Notes |
|
||||
|-----------|-----|--------|-------|
|
||||
| API Server | 2+ cores | 4GB+ | ML models loaded in memory |
|
||||
| PostgreSQL | 2+ cores | 4GB+ | Depends on data size |
|
||||
| Control Plane | 1 core | 512MB | Lightweight Next.js app |
|
||||
256
memora-docs/docs/sdks/cli.md
Normal file
|
|
@ -0,0 +1,256 @@
|
|||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# CLI Reference
|
||||
|
||||
The Memora CLI provides command-line access to memory operations and agent management.
|
||||
|
||||
## Installation
|
||||
|
||||
### Pre-built Binaries
|
||||
|
||||
Download from the releases page:
|
||||
|
||||
```bash
|
||||
# macOS (Apple Silicon)
|
||||
curl -L https://github.com/memora/memora/releases/latest/download/memora-macos-arm64 -o memora
|
||||
chmod +x memora
|
||||
sudo mv memora /usr/local/bin/
|
||||
```
|
||||
|
||||
### Build from Source
|
||||
|
||||
```bash
|
||||
cd memora-cli-rust
|
||||
cargo build --release
|
||||
cp target/release/memora /usr/local/bin/
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Set environment variables or use command flags:
|
||||
|
||||
```bash
|
||||
export MEMORA_API_URL=http://localhost:8080
|
||||
export MEMORA_AGENT_ID=my-agent
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
### Memory Operations
|
||||
|
||||
#### put
|
||||
|
||||
Store a memory:
|
||||
|
||||
```bash
|
||||
memora put <agent_id> "Alice works at Google as a software engineer"
|
||||
|
||||
# With context
|
||||
memora put <agent_id> "Bob loves hiking" --context "hobby discussion"
|
||||
|
||||
# With event date
|
||||
memora put <agent_id> "Meeting with Carol" --date "2024-01-15"
|
||||
```
|
||||
|
||||
#### put-files
|
||||
|
||||
Store file contents as memories:
|
||||
|
||||
```bash
|
||||
# Store a single file
|
||||
memora put-files <agent_id> notes.txt
|
||||
|
||||
# Store multiple files
|
||||
memora put-files <agent_id> file1.txt file2.md file3.json
|
||||
|
||||
# With context
|
||||
memora put-files <agent_id> meeting-notes.txt --context "team meeting"
|
||||
```
|
||||
|
||||
#### search
|
||||
|
||||
Search memories:
|
||||
|
||||
```bash
|
||||
memora search <agent_id> "What does Alice do?"
|
||||
|
||||
# With options
|
||||
memora search <agent_id> "hiking recommendations" --budget 100 --top-k 5
|
||||
|
||||
# Verbose output
|
||||
memora search <agent_id> "query" -v
|
||||
```
|
||||
|
||||
#### think
|
||||
|
||||
Generate a response using memories and opinions:
|
||||
|
||||
```bash
|
||||
memora think <agent_id> "What do you know about Alice?"
|
||||
|
||||
# Verbose mode shows reasoning
|
||||
memora think <agent_id> "Should I recommend Python or Java?" -v
|
||||
```
|
||||
|
||||
### Agent Management
|
||||
|
||||
#### agents
|
||||
|
||||
List all agents:
|
||||
|
||||
```bash
|
||||
memora agents
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```
|
||||
Available agents:
|
||||
- alice-agent
|
||||
- bob-agent
|
||||
- tech-advisor
|
||||
```
|
||||
|
||||
#### profile
|
||||
|
||||
View agent profile:
|
||||
|
||||
```bash
|
||||
memora profile <agent_id>
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```
|
||||
Agent: my-agent
|
||||
|
||||
Personality:
|
||||
Openness: 0.80
|
||||
Conscientiousness: 0.60
|
||||
Extraversion: 0.50
|
||||
Agreeableness: 0.70
|
||||
Neuroticism: 0.30
|
||||
Bias Strength: 0.70
|
||||
|
||||
Background:
|
||||
I am a helpful AI assistant interested in technology.
|
||||
```
|
||||
|
||||
#### set-personality
|
||||
|
||||
Update personality traits:
|
||||
|
||||
```bash
|
||||
memora set-personality <agent_id> \
|
||||
--openness 0.8 \
|
||||
--conscientiousness 0.6 \
|
||||
--extraversion 0.5 \
|
||||
--agreeableness 0.7 \
|
||||
--neuroticism 0.3 \
|
||||
--bias-strength 0.7
|
||||
```
|
||||
|
||||
#### background
|
||||
|
||||
Add or merge background:
|
||||
|
||||
```bash
|
||||
# Set/merge background
|
||||
memora background <agent_id> "I have expertise in distributed systems"
|
||||
```
|
||||
|
||||
### MCP Server
|
||||
|
||||
Start the MCP server:
|
||||
|
||||
```bash
|
||||
memora mcp-server
|
||||
|
||||
# With custom configuration
|
||||
MEMORA_API_URL=http://api.example.com memora mcp-server
|
||||
```
|
||||
|
||||
## Output Formats
|
||||
|
||||
### Pretty (Default)
|
||||
|
||||
Human-readable formatted output:
|
||||
|
||||
```bash
|
||||
memora search <agent_id> "query"
|
||||
```
|
||||
|
||||
### JSON
|
||||
|
||||
Machine-readable JSON output:
|
||||
|
||||
```bash
|
||||
memora search <agent_id> "query" -o json
|
||||
```
|
||||
|
||||
### YAML
|
||||
|
||||
YAML formatted output:
|
||||
|
||||
```bash
|
||||
memora search <agent_id> "query" -o yaml
|
||||
```
|
||||
|
||||
## Verbose Mode
|
||||
|
||||
Add `-v` or `--verbose` for detailed output:
|
||||
|
||||
```bash
|
||||
memora search <agent_id> "query" -v
|
||||
```
|
||||
|
||||
Shows:
|
||||
- Request payload
|
||||
- Response details
|
||||
- Timing information
|
||||
|
||||
## Global Options
|
||||
|
||||
| Flag | Description |
|
||||
|------|-------------|
|
||||
| `-v, --verbose` | Verbose output |
|
||||
| `-o, --output <format>` | Output format: pretty, json, yaml |
|
||||
| `--api-url <url>` | Override API URL |
|
||||
| `--help` | Show help |
|
||||
| `--version` | Show version |
|
||||
|
||||
## Examples
|
||||
|
||||
### Full Workflow
|
||||
|
||||
```bash
|
||||
# Create an agent
|
||||
curl -X PUT http://localhost:8080/api/agents/demo-agent \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"background": "Demo agent"}'
|
||||
|
||||
# Store memories
|
||||
memora put demo-agent "Alice works at Google"
|
||||
memora put demo-agent "Bob is a data scientist"
|
||||
memora put demo-agent "Alice and Bob are colleagues"
|
||||
|
||||
# Search
|
||||
memora search demo-agent "Who works with Alice?"
|
||||
|
||||
# Think (with opinions)
|
||||
memora think demo-agent "What do you know about the team?"
|
||||
|
||||
# Update personality
|
||||
memora set-personality demo-agent \
|
||||
--openness 0.9 \
|
||||
--conscientiousness 0.7 \
|
||||
--extraversion 0.6 \
|
||||
--agreeableness 0.8 \
|
||||
--neuroticism 0.2 \
|
||||
--bias-strength 0.6
|
||||
|
||||
# Check profile
|
||||
memora profile demo-agent
|
||||
```
|
||||
138
memora-docs/docs/sdks/langgraph.md
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# LangGraph
|
||||
|
||||
Memora provides a `BaseStore` implementation for LangGraph's memory system.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
cd memora-langmem && uv pip install -e .
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
```python
|
||||
from memora_langmem import MemoraStore
|
||||
|
||||
# Create store
|
||||
store = MemoraStore(
|
||||
base_url="http://localhost:8080",
|
||||
default_agent_id="my-agent",
|
||||
)
|
||||
|
||||
# Store data
|
||||
store.put(
|
||||
namespace=("user", "preferences"),
|
||||
key="language",
|
||||
value={"language": "Python", "reason": "data science"}
|
||||
)
|
||||
|
||||
# Retrieve data
|
||||
item = store.get(namespace=("user", "preferences"), key="language")
|
||||
print(item.value) # {"language": "Python", "reason": "data science"}
|
||||
|
||||
# Search
|
||||
results = store.search(
|
||||
namespace_prefix=("user",),
|
||||
query="programming language",
|
||||
limit=10
|
||||
)
|
||||
```
|
||||
|
||||
## How It Works
|
||||
|
||||
`MemoraStore` implements LangGraph's `BaseStore` interface:
|
||||
|
||||
- **Namespaces** map to Memora agent IDs (joined with `__`)
|
||||
- **Keys** map to document IDs
|
||||
- **Values** are stored as JSON in memory content
|
||||
|
||||
## BaseStore Interface
|
||||
|
||||
### put
|
||||
|
||||
Store an item:
|
||||
|
||||
```python
|
||||
store.put(
|
||||
namespace=("user", "session-123"),
|
||||
key="preferences",
|
||||
value={"theme": "dark", "language": "en"}
|
||||
)
|
||||
```
|
||||
|
||||
### get
|
||||
|
||||
Retrieve an item:
|
||||
|
||||
```python
|
||||
item = store.get(namespace=("user", "session-123"), key="preferences")
|
||||
if item:
|
||||
print(item.value) # {"theme": "dark", "language": "en"}
|
||||
print(item.created_at)
|
||||
print(item.updated_at)
|
||||
```
|
||||
|
||||
### search
|
||||
|
||||
Search within a namespace:
|
||||
|
||||
```python
|
||||
results = store.search(
|
||||
namespace_prefix=("user",),
|
||||
query="theme preferences",
|
||||
limit=10,
|
||||
offset=0
|
||||
)
|
||||
|
||||
for item in results:
|
||||
print(f"{item.key}: {item.value}")
|
||||
```
|
||||
|
||||
### delete
|
||||
|
||||
Delete an item:
|
||||
|
||||
```python
|
||||
store.delete(namespace=("user", "session-123"), key="preferences")
|
||||
```
|
||||
|
||||
## Async Support
|
||||
|
||||
All operations have async variants:
|
||||
|
||||
```python
|
||||
await store.aput(namespace, key, value)
|
||||
item = await store.aget(namespace, key)
|
||||
results = await store.asearch(namespace_prefix, query)
|
||||
await store.adelete(namespace, key)
|
||||
```
|
||||
|
||||
## With LangGraph
|
||||
|
||||
```python
|
||||
from langgraph.graph import StateGraph
|
||||
from memora_langmem import MemoraStore
|
||||
|
||||
store = MemoraStore(base_url="http://localhost:8080")
|
||||
|
||||
# Use store in your graph
|
||||
graph = StateGraph()
|
||||
# ... configure graph with store
|
||||
```
|
||||
|
||||
## Namespace Mapping
|
||||
|
||||
Namespaces are converted to Memora agent IDs:
|
||||
|
||||
| Namespace | Agent ID |
|
||||
|-----------|----------|
|
||||
| `("user",)` | `user` |
|
||||
| `("user", "session")` | `user__session` |
|
||||
| `("app", "v1", "data")` | `app__v1__data` |
|
||||
| `()` | `default_agent_id` |
|
||||
|
||||
Agents are created automatically if they don't exist.
|
||||
125
memora-docs/docs/sdks/mcp.md
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
---
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# MCP Server
|
||||
|
||||
Model Context Protocol server for AI assistants like Claude Desktop.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
cd memora-cli && cargo build --release
|
||||
```
|
||||
|
||||
## Claude Desktop Setup
|
||||
|
||||
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"memora": {
|
||||
"command": "/path/to/memora",
|
||||
"args": ["mcp-server"],
|
||||
"env": {
|
||||
"MEMORA_API_URL": "http://localhost:8080",
|
||||
"MEMORA_AGENT_ID": "claude-agent"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `MEMORA_API_URL` | Memora API URL | `http://localhost:8080` |
|
||||
| `MEMORA_AGENT_ID` | Default agent ID | Required |
|
||||
|
||||
## Available Tools
|
||||
|
||||
### memora_search
|
||||
|
||||
Search memories:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_search",
|
||||
"arguments": {
|
||||
"query": "What does Alice do for work?",
|
||||
"top_k": 5
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### memora_think
|
||||
|
||||
Generate response using memories:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_think",
|
||||
"arguments": {
|
||||
"query": "What should I recommend to Alice?"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### memora_store
|
||||
|
||||
Store new memory:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_store",
|
||||
"arguments": {
|
||||
"content": "User prefers Python for data analysis",
|
||||
"context": "programming discussion"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### memora_agents
|
||||
|
||||
List available agents:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "memora_agents",
|
||||
"arguments": {}
|
||||
}
|
||||
```
|
||||
|
||||
## Usage Example
|
||||
|
||||
Once configured, Claude can use Memora naturally:
|
||||
|
||||
**User**: "Remember that I prefer morning meetings"
|
||||
|
||||
**Claude**: *Uses memora_store*
|
||||
|
||||
> "I've noted that you prefer morning meetings."
|
||||
|
||||
---
|
||||
|
||||
**User**: "What do you know about my preferences?"
|
||||
|
||||
**Claude**: *Uses memora_search*
|
||||
|
||||
> "Based on our conversations, you prefer morning meetings and like Python for data analysis."
|
||||
|
||||
## Testing
|
||||
|
||||
Run standalone:
|
||||
|
||||
```bash
|
||||
memora mcp-server
|
||||
```
|
||||
|
||||
Debug mode:
|
||||
|
||||
```bash
|
||||
RUST_LOG=debug memora mcp-server
|
||||
```
|
||||
231
memora-docs/docs/sdks/nodejs.md
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Node.js Client
|
||||
|
||||
Official TypeScript/JavaScript client for the Memora API.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
npm install @memora/client
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
```typescript
|
||||
import { OpenAPI, MemoryStorageService, SearchService } from '@memora/client';
|
||||
|
||||
// Configure base URL
|
||||
OpenAPI.BASE = 'http://localhost:8080';
|
||||
|
||||
// Store a memory
|
||||
await MemoryStorageService.putApiPutPost({
|
||||
agent_id: 'my-agent',
|
||||
content: 'Alice works at Google as a software engineer',
|
||||
});
|
||||
|
||||
// Search memories
|
||||
const results = await SearchService.searchApiSearchPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'What does Alice do?',
|
||||
});
|
||||
|
||||
console.log(results);
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
```typescript
|
||||
import { OpenAPI } from '@memora/client';
|
||||
|
||||
OpenAPI.BASE = 'http://localhost:8080';
|
||||
OpenAPI.TOKEN = 'your-api-token'; // If authentication is enabled
|
||||
```
|
||||
|
||||
## Memory Operations
|
||||
|
||||
### Store Memory
|
||||
|
||||
```typescript
|
||||
import { MemoryStorageService } from '@memora/client';
|
||||
|
||||
await MemoryStorageService.putApiPutPost({
|
||||
agent_id: 'my-agent',
|
||||
content: 'Alice works at Google as a software engineer',
|
||||
context: 'career discussion',
|
||||
event_date: '2024-01-15T10:00:00Z',
|
||||
});
|
||||
```
|
||||
|
||||
### Store Batch
|
||||
|
||||
```typescript
|
||||
await MemoryStorageService.batchApiMemoriesBatchPost({
|
||||
agent_id: 'my-agent',
|
||||
items: [
|
||||
{ content: 'Alice works at Google', context: 'career' },
|
||||
{ content: 'Bob is a data scientist', context: 'career' },
|
||||
],
|
||||
document_id: 'conversation_001',
|
||||
});
|
||||
```
|
||||
|
||||
## Search Operations
|
||||
|
||||
### Basic Search
|
||||
|
||||
```typescript
|
||||
import { SearchService } from '@memora/client';
|
||||
|
||||
const results = await SearchService.searchApiSearchPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'What does Alice do?',
|
||||
});
|
||||
|
||||
for (const r of results.results) {
|
||||
console.log(`${r.text} (weight: ${r.weight})`);
|
||||
}
|
||||
```
|
||||
|
||||
### Advanced Search
|
||||
|
||||
```typescript
|
||||
const results = await SearchService.searchApiSearchPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'What does Alice do?',
|
||||
thinking_budget: 100,
|
||||
top_k: 10,
|
||||
});
|
||||
```
|
||||
|
||||
### Search World Facts
|
||||
|
||||
```typescript
|
||||
const worldFacts = await SearchService.worldSearchApiWorldSearchPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'Who works at Google?',
|
||||
});
|
||||
```
|
||||
|
||||
### Search Opinions
|
||||
|
||||
```typescript
|
||||
const opinions = await SearchService.opinionSearchApiOpinionSearchPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'What do I think about Python?',
|
||||
});
|
||||
```
|
||||
|
||||
## Think (Generate Response)
|
||||
|
||||
```typescript
|
||||
import { ReasoningService } from '@memora/client';
|
||||
|
||||
const response = await ReasoningService.thinkApiThinkPost({
|
||||
agent_id: 'my-agent',
|
||||
query: 'What should I know about Alice?',
|
||||
thinking_budget: 100,
|
||||
});
|
||||
|
||||
console.log(response.text); // Generated response
|
||||
console.log(response.based_on); // Memories used
|
||||
console.log(response.new_opinions); // New opinions formed
|
||||
```
|
||||
|
||||
## Agent Management
|
||||
|
||||
### Create Agent
|
||||
|
||||
```typescript
|
||||
import { ManagementService } from '@memora/client';
|
||||
|
||||
await ManagementService.createAgentApiAgentsAgentIdPut('my-agent', {
|
||||
name: 'Assistant',
|
||||
background: 'I am a helpful AI assistant',
|
||||
personality: {
|
||||
openness: 0.7,
|
||||
conscientiousness: 0.8,
|
||||
extraversion: 0.5,
|
||||
agreeableness: 0.6,
|
||||
neuroticism: 0.3,
|
||||
bias_strength: 0.5,
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
### Get Profile
|
||||
|
||||
```typescript
|
||||
const profile = await ManagementService.getProfileApiAgentsAgentIdProfileGet('my-agent');
|
||||
console.log(profile.personality);
|
||||
console.log(profile.background);
|
||||
```
|
||||
|
||||
### List Agents
|
||||
|
||||
```typescript
|
||||
const agents = await ManagementService.listAgentsApiAgentsGet();
|
||||
for (const agent of agents.agents) {
|
||||
console.log(agent.agent_id);
|
||||
}
|
||||
```
|
||||
|
||||
### Update Personality
|
||||
|
||||
```typescript
|
||||
await ManagementService.updatePersonalityApiAgentsAgentIdProfilePut('my-agent', {
|
||||
openness: 0.9,
|
||||
conscientiousness: 0.7,
|
||||
});
|
||||
```
|
||||
|
||||
### Merge Background
|
||||
|
||||
```typescript
|
||||
await ManagementService.mergeBackgroundApiAgentsAgentIdBackgroundPost('my-agent', {
|
||||
background: 'Additional context to merge',
|
||||
});
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
```typescript
|
||||
import { ApiError } from '@memora/client';
|
||||
|
||||
try {
|
||||
await SearchService.searchApiSearchPost({
|
||||
agent_id: 'unknown-agent',
|
||||
query: 'test',
|
||||
});
|
||||
} catch (error) {
|
||||
if (error instanceof ApiError) {
|
||||
console.log(`Error: ${error.message}`);
|
||||
console.log(`Status: ${error.status}`);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## TypeScript Types
|
||||
|
||||
The client exports all types for full TypeScript support:
|
||||
|
||||
```typescript
|
||||
import type {
|
||||
AgentProfile,
|
||||
SearchResult,
|
||||
ThinkResponse,
|
||||
MemoryItem,
|
||||
PersonalityTraits,
|
||||
} from '@memora/client';
|
||||
|
||||
const personality: PersonalityTraits = {
|
||||
openness: 0.7,
|
||||
conscientiousness: 0.8,
|
||||
extraversion: 0.5,
|
||||
agreeableness: 0.6,
|
||||
neuroticism: 0.3,
|
||||
bias_strength: 0.5,
|
||||
};
|
||||
```
|
||||
112
memora-docs/docs/sdks/openai.md
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# OpenAI
|
||||
|
||||
Drop-in replacement for the OpenAI Python client with automatic memory integration.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
cd memora-openai && uv pip install -e .
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
```python
|
||||
from memora_openai import configure, OpenAI
|
||||
|
||||
# Configure once
|
||||
configure(
|
||||
memora_api_url="http://localhost:8080",
|
||||
agent_id="my-agent",
|
||||
)
|
||||
|
||||
# Use OpenAI client normally
|
||||
client = OpenAI(api_key="sk-...")
|
||||
|
||||
response = client.chat.completions.create(
|
||||
model="gpt-4",
|
||||
messages=[{"role": "user", "content": "What did we discuss about AI?"}]
|
||||
)
|
||||
```
|
||||
|
||||
## How It Works
|
||||
|
||||
The wrapper intercepts OpenAI calls:
|
||||
|
||||
1. **Before**: Retrieves relevant memories and injects as system message
|
||||
2. **After**: Stores conversation to Memora
|
||||
|
||||
Your code works exactly as before, but now has memory.
|
||||
|
||||
## Configuration
|
||||
|
||||
```python
|
||||
configure(
|
||||
memora_api_url="http://localhost:8080", # Memora API
|
||||
agent_id="my-agent", # Required
|
||||
store_conversations=True, # Store conversations
|
||||
inject_memories=True, # Inject memories into prompts
|
||||
document_id="session-123", # Group by document
|
||||
enabled=True, # Master switch
|
||||
)
|
||||
```
|
||||
|
||||
## Memory Injection
|
||||
|
||||
When enabled, memories are automatically injected:
|
||||
|
||||
```python
|
||||
# Your code
|
||||
messages = [{"role": "user", "content": "What trails did Alice recommend?"}]
|
||||
|
||||
# What gets sent to OpenAI
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Relevant context:\n- Alice loves hiking in Yosemite\n- Alice recommended Half Dome trail"
|
||||
},
|
||||
{"role": "user", "content": "What trails did Alice recommend?"}
|
||||
]
|
||||
```
|
||||
|
||||
## Async Support
|
||||
|
||||
```python
|
||||
from memora_openai import configure, AsyncOpenAI
|
||||
|
||||
configure(memora_api_url="http://localhost:8080", agent_id="my-agent")
|
||||
|
||||
client = AsyncOpenAI(api_key="sk-...")
|
||||
|
||||
response = await client.chat.completions.create(
|
||||
model="gpt-4",
|
||||
messages=[{"role": "user", "content": "Tell me about my preferences"}]
|
||||
)
|
||||
```
|
||||
|
||||
## Streaming
|
||||
|
||||
Fully supported:
|
||||
|
||||
```python
|
||||
stream = client.chat.completions.create(
|
||||
model="gpt-4",
|
||||
messages=[{"role": "user", "content": "Tell me a story"}],
|
||||
stream=True,
|
||||
)
|
||||
|
||||
for chunk in stream:
|
||||
print(chunk.choices[0].delta.content or "", end="")
|
||||
```
|
||||
|
||||
## Disable Temporarily
|
||||
|
||||
```python
|
||||
from memora_openai import configure
|
||||
|
||||
configure(enabled=False) # Disable
|
||||
configure(enabled=True) # Re-enable
|
||||
```
|
||||
217
memora-docs/docs/sdks/python.md
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Python Client
|
||||
|
||||
Official Python client for the Memora API.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install memora-client
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
# Store a memory
|
||||
client.store(agent_id="my-agent", content="Alice works at Google")
|
||||
|
||||
# Search memories
|
||||
results = client.search(agent_id="my-agent", query="What does Alice do?")
|
||||
for r in results:
|
||||
print(r["text"], r["weight"])
|
||||
|
||||
# Generate response with personality
|
||||
answer = client.think(agent_id="my-agent", query="Tell me about Alice")
|
||||
print(answer["text"])
|
||||
```
|
||||
|
||||
## Client Initialization
|
||||
|
||||
```python
|
||||
from memora_client import Memora
|
||||
|
||||
client = Memora(
|
||||
base_url="http://localhost:8080", # Memora API URL
|
||||
timeout=30.0, # Request timeout in seconds
|
||||
)
|
||||
```
|
||||
|
||||
## Memory Operations
|
||||
|
||||
### Store Single Memory
|
||||
|
||||
```python
|
||||
client.store(
|
||||
agent_id="my-agent",
|
||||
content="Alice works at Google as a software engineer",
|
||||
context="career discussion", # Optional context
|
||||
event_date="2024-01-15T10:00:00Z", # Optional event date
|
||||
)
|
||||
```
|
||||
|
||||
### Store Batch
|
||||
|
||||
```python
|
||||
client.store_batch(
|
||||
agent_id="my-agent",
|
||||
items=[
|
||||
{"content": "Alice works at Google", "context": "career"},
|
||||
{"content": "Bob is a data scientist", "context": "career"},
|
||||
],
|
||||
document_id="conversation_001", # Optional grouping
|
||||
)
|
||||
```
|
||||
|
||||
## Search Operations
|
||||
|
||||
### Basic Search
|
||||
|
||||
```python
|
||||
results = client.search(
|
||||
agent_id="my-agent",
|
||||
query="What does Alice do?",
|
||||
)
|
||||
|
||||
for r in results:
|
||||
print(f"{r['text']} (weight: {r['weight']})")
|
||||
```
|
||||
|
||||
### Advanced Search
|
||||
|
||||
```python
|
||||
results = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="What does Alice do?",
|
||||
fact_type=["world", "agent"], # Filter by type
|
||||
max_tokens=4096, # Token budget for results
|
||||
top_k=10, # Max results
|
||||
)
|
||||
```
|
||||
|
||||
### Search by Fact Type
|
||||
|
||||
```python
|
||||
# Search only world facts
|
||||
world_facts = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="Who works at Google?",
|
||||
fact_type=["world"],
|
||||
)
|
||||
|
||||
# Search only opinions
|
||||
opinions = client.search_memories(
|
||||
agent_id="my-agent",
|
||||
query="What do I think about Python?",
|
||||
fact_type=["opinion"],
|
||||
)
|
||||
```
|
||||
|
||||
## Think (Generate Response)
|
||||
|
||||
Generate personality-aware responses using retrieved memories:
|
||||
|
||||
```python
|
||||
answer = client.think(
|
||||
agent_id="my-agent",
|
||||
query="What should I know about Alice?",
|
||||
thinking_budget=100, # Tokens for query understanding
|
||||
)
|
||||
|
||||
print(answer["text"]) # Generated response
|
||||
print(answer["based_on"]) # Memories used
|
||||
print(answer["new_opinions"]) # New opinions formed
|
||||
```
|
||||
|
||||
## Agent Management
|
||||
|
||||
### Create Agent
|
||||
|
||||
```python
|
||||
client.create_agent(
|
||||
agent_id="my-agent",
|
||||
name="Assistant",
|
||||
background="I am a helpful AI assistant",
|
||||
personality={
|
||||
"openness": 0.7,
|
||||
"conscientiousness": 0.8,
|
||||
"extraversion": 0.5,
|
||||
"agreeableness": 0.6,
|
||||
"neuroticism": 0.3,
|
||||
"bias_strength": 0.5,
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
### Get Profile
|
||||
|
||||
```python
|
||||
profile = client.get_profile(agent_id="my-agent")
|
||||
print(profile["personality"])
|
||||
print(profile["background"])
|
||||
```
|
||||
|
||||
### List Agents
|
||||
|
||||
```python
|
||||
agents = client.list_agents()
|
||||
for agent in agents:
|
||||
print(agent["agent_id"])
|
||||
```
|
||||
|
||||
### Update Personality
|
||||
|
||||
```python
|
||||
client.update_personality(
|
||||
agent_id="my-agent",
|
||||
openness=0.9,
|
||||
conscientiousness=0.7,
|
||||
)
|
||||
```
|
||||
|
||||
### Update Background
|
||||
|
||||
```python
|
||||
client.update_background(
|
||||
agent_id="my-agent",
|
||||
background="Additional context to merge with existing background",
|
||||
)
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
```python
|
||||
from memora_client import Memora, MemoraError
|
||||
|
||||
client = Memora(base_url="http://localhost:8080")
|
||||
|
||||
try:
|
||||
results = client.search(agent_id="unknown", query="test")
|
||||
except MemoraError as e:
|
||||
print(f"Error: {e.message}")
|
||||
print(f"Status: {e.status}")
|
||||
```
|
||||
|
||||
## Async Support
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
from memora_client import AsyncMemora
|
||||
|
||||
async def main():
|
||||
client = AsyncMemora(base_url="http://localhost:8080")
|
||||
|
||||
# All methods have async versions
|
||||
await client.store(agent_id="my-agent", content="Hello world")
|
||||
results = await client.search(agent_id="my-agent", query="Hello")
|
||||
|
||||
print(results)
|
||||
|
||||
asyncio.run(main())
|
||||
```
|
||||
191
memora-docs/docusaurus.config.ts
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
import {themes as prismThemes} from 'prism-react-renderer';
|
||||
import type {Config} from '@docusaurus/types';
|
||||
import type * as Preset from '@docusaurus/preset-classic';
|
||||
import type * as OpenApiPlugin from 'docusaurus-plugin-openapi-docs';
|
||||
|
||||
const config: Config = {
|
||||
title: 'Memora',
|
||||
tagline: 'Entity-Aware Memory System for AI Agents',
|
||||
favicon: 'img/favicon.ico',
|
||||
|
||||
future: {
|
||||
v4: true,
|
||||
},
|
||||
|
||||
markdown: {
|
||||
mermaid: true,
|
||||
},
|
||||
|
||||
url: 'https://memora.dev',
|
||||
baseUrl: '/',
|
||||
|
||||
organizationName: 'memora',
|
||||
projectName: 'memora',
|
||||
|
||||
onBrokenLinks: 'throw',
|
||||
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
|
||||
headTags: [
|
||||
{
|
||||
tagName: 'link',
|
||||
attributes: {
|
||||
rel: 'preconnect',
|
||||
href: 'https://fonts.googleapis.com',
|
||||
},
|
||||
},
|
||||
{
|
||||
tagName: 'link',
|
||||
attributes: {
|
||||
rel: 'preconnect',
|
||||
href: 'https://fonts.gstatic.com',
|
||||
crossorigin: 'anonymous',
|
||||
},
|
||||
},
|
||||
{
|
||||
tagName: 'link',
|
||||
attributes: {
|
||||
rel: 'stylesheet',
|
||||
href: 'https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Nunito+Sans:wght@400;500;600;700;800&display=swap',
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
{
|
||||
docs: {
|
||||
sidebarPath: './sidebars.ts',
|
||||
editUrl: 'https://github.com/memora/memora/tree/main/memora-docs/',
|
||||
routeBasePath: '/',
|
||||
docItemComponent: '@theme/ApiItem',
|
||||
},
|
||||
blog: false,
|
||||
theme: {
|
||||
customCss: './src/css/custom.css',
|
||||
},
|
||||
} satisfies Preset.Options,
|
||||
],
|
||||
],
|
||||
|
||||
plugins: [
|
||||
[
|
||||
'docusaurus-plugin-openapi-docs',
|
||||
{
|
||||
id: 'api',
|
||||
docsPluginId: 'default',
|
||||
config: {
|
||||
memora: {
|
||||
specPath: 'openapi.json',
|
||||
outputDir: 'docs/api-reference/endpoints',
|
||||
sidebarOptions: {
|
||||
groupPathsBy: 'tag',
|
||||
},
|
||||
} satisfies OpenApiPlugin.Options,
|
||||
},
|
||||
},
|
||||
],
|
||||
],
|
||||
|
||||
themes: ['docusaurus-theme-openapi-docs', '@docusaurus/theme-mermaid'],
|
||||
|
||||
themeConfig: {
|
||||
image: 'img/memora-social-card.jpg',
|
||||
colorMode: {
|
||||
defaultMode: 'dark',
|
||||
respectPrefersColorScheme: true,
|
||||
},
|
||||
navbar: {
|
||||
title: 'Memora',
|
||||
logo: {
|
||||
alt: 'Memora Logo',
|
||||
src: 'img/logo.svg',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'custom-iconLink',
|
||||
position: 'left',
|
||||
icon: 'code',
|
||||
label: 'Developer',
|
||||
to: '/',
|
||||
},
|
||||
{
|
||||
type: 'custom-iconLink',
|
||||
position: 'left',
|
||||
icon: 'package',
|
||||
label: 'SDKs',
|
||||
to: '/sdks/python',
|
||||
},
|
||||
{
|
||||
type: 'custom-iconLink',
|
||||
position: 'left',
|
||||
icon: 'file-code',
|
||||
label: 'API Reference',
|
||||
to: '/api-reference',
|
||||
},
|
||||
{
|
||||
type: 'custom-iconLink',
|
||||
position: 'left',
|
||||
icon: 'book-open',
|
||||
label: 'Cookbook',
|
||||
to: '/cookbook',
|
||||
},
|
||||
{
|
||||
type: 'custom-iconLink',
|
||||
position: 'left',
|
||||
icon: 'clock',
|
||||
label: 'Changelog',
|
||||
to: '/changelog',
|
||||
},
|
||||
{
|
||||
href: 'https://github.com/memora/memora',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Documentation',
|
||||
items: [
|
||||
{
|
||||
label: 'Introduction',
|
||||
to: '/',
|
||||
},
|
||||
{
|
||||
label: 'SDKs',
|
||||
to: '/sdks/python',
|
||||
},
|
||||
{
|
||||
label: 'API Reference',
|
||||
to: '/api-reference',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
items: [
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/memora/memora',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
copyright: `Copyright © ${new Date().getFullYear()} Memora. Built with Docusaurus.`,
|
||||
},
|
||||
prism: {
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.dracula,
|
||||
additionalLanguages: ['bash', 'json', 'python', 'rust'],
|
||||
},
|
||||
} satisfies Preset.ThemeConfig,
|
||||
};
|
||||
|
||||
export default config;
|
||||
2156
memora-docs/openapi.json
Normal file
23331
memora-docs/package-lock.json
generated
Normal file
52
memora-docs/package.json
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"name": "memora-docs",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
"start": "docusaurus start",
|
||||
"build": "docusaurus build",
|
||||
"swizzle": "docusaurus swizzle",
|
||||
"deploy": "docusaurus deploy",
|
||||
"clear": "docusaurus clear",
|
||||
"serve": "docusaurus serve",
|
||||
"write-translations": "docusaurus write-translations",
|
||||
"write-heading-ids": "docusaurus write-heading-ids",
|
||||
"typecheck": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.9.2",
|
||||
"@docusaurus/preset-classic": "3.9.2",
|
||||
"@docusaurus/theme-common": "^3.9.2",
|
||||
"@docusaurus/theme-mermaid": "^3.9.2",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"@phosphor-icons/react": "^2.1.10",
|
||||
"clsx": "^2.0.0",
|
||||
"docusaurus-plugin-openapi-docs": "^4.5.1",
|
||||
"docusaurus-theme-openapi-docs": "^4.5.1",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "3.9.2",
|
||||
"@docusaurus/tsconfig": "3.9.2",
|
||||
"@docusaurus/types": "3.9.2",
|
||||
"typescript": "~5.6.2"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.5%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 3 chrome version",
|
||||
"last 3 firefox version",
|
||||
"last 5 safari version"
|
||||
]
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0"
|
||||
}
|
||||
}
|
||||
170
memora-docs/sidebars.ts
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
import apiSidebar from './docs/api-reference/endpoints/sidebar';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
developerSidebar: [
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Concepts',
|
||||
collapsible: false,
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/index',
|
||||
label: 'Overview',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/architecture',
|
||||
label: 'Architecture',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/retrieval',
|
||||
label: 'Retrieval',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/personality',
|
||||
label: 'Personality',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'API',
|
||||
collapsible: false,
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/api/ingest',
|
||||
label: 'Ingest Data',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/api/search',
|
||||
label: 'Search Facts',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/api/think',
|
||||
label: 'Think',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/api/think-vs-search',
|
||||
label: 'Think vs Search',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/api/opinions',
|
||||
label: 'Opinions',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/api/agent-identity',
|
||||
label: 'Agent Identity',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Server',
|
||||
collapsible: false,
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'developer/server',
|
||||
label: 'Administration',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
sdksSidebar: [
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Clients',
|
||||
collapsible: false,
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'sdks/python',
|
||||
label: 'Python',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'sdks/nodejs',
|
||||
label: 'Node.js',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'sdks/cli',
|
||||
label: 'CLI',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Integrations',
|
||||
collapsible: false,
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'sdks/openai',
|
||||
label: 'OpenAI',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'sdks/langgraph',
|
||||
label: 'LangGraph',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'sdks/mcp',
|
||||
label: 'MCP Server',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
apiReferenceSidebar: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'api-reference/index',
|
||||
label: 'Overview',
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'HTTP API',
|
||||
collapsible: false,
|
||||
items: apiSidebar,
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'MCP API',
|
||||
collapsible: false,
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'api-reference/mcp',
|
||||
label: 'Tools Reference',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
cookbookSidebar: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'cookbook/index',
|
||||
label: 'Cookbook',
|
||||
},
|
||||
],
|
||||
changelogSidebar: [
|
||||
{
|
||||
type: 'doc',
|
||||
id: 'changelog/index',
|
||||
label: 'Changelog',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
42
memora-docs/src/components/NavbarIconLink.tsx
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import React from 'react';
|
||||
import Link from '@docusaurus/Link';
|
||||
import {
|
||||
House,
|
||||
Code,
|
||||
Package,
|
||||
FileCode,
|
||||
BookOpen,
|
||||
ClockCounterClockwise,
|
||||
} from '@phosphor-icons/react';
|
||||
|
||||
const iconMap = {
|
||||
house: House,
|
||||
code: Code,
|
||||
package: Package,
|
||||
'file-code': FileCode,
|
||||
'book-open': BookOpen,
|
||||
clock: ClockCounterClockwise,
|
||||
};
|
||||
|
||||
export default function NavbarIconLink({
|
||||
icon,
|
||||
label,
|
||||
to,
|
||||
className,
|
||||
}: {
|
||||
icon: keyof typeof iconMap;
|
||||
label: string;
|
||||
to: string;
|
||||
className?: string;
|
||||
}) {
|
||||
const IconComponent = iconMap[icon];
|
||||
|
||||
return (
|
||||
<Link to={to} className={`navbar__link ${className || ''}`}>
|
||||
{IconComponent && (
|
||||
<IconComponent size={16} weight="bold" style={{ marginRight: '6px', verticalAlign: 'middle' }} />
|
||||
)}
|
||||
<span style={{ verticalAlign: 'middle' }}>{label}</span>
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
333
memora-docs/src/css/custom.css
Normal file
|
|
@ -0,0 +1,333 @@
|
|||
/**
|
||||
* Memora custom theme - Modern, clean style
|
||||
*/
|
||||
|
||||
/* Primary colors - Teal/Cyan theme */
|
||||
:root {
|
||||
--ifm-color-primary: #0d9488;
|
||||
--ifm-color-primary-dark: #0f766e;
|
||||
--ifm-color-primary-darker: #115e59;
|
||||
--ifm-color-primary-darkest: #134e4a;
|
||||
--ifm-color-primary-light: #14b8a6;
|
||||
--ifm-color-primary-lighter: #2dd4bf;
|
||||
--ifm-color-primary-lightest: #5eead4;
|
||||
|
||||
--ifm-code-font-size: 90%;
|
||||
--docusaurus-highlighted-code-line-bg: rgba(13, 148, 136, 0.1);
|
||||
|
||||
/* Typography - Avenir Book */
|
||||
--ifm-font-family-base: 'Avenir Book', 'Avenir', 'Nunito Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||
--ifm-heading-font-family: 'Avenir', 'Avenir Book', 'Nunito Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||
--ifm-font-family-monospace: 'JetBrains Mono', 'Fira Code', 'SF Mono', Monaco, 'Cascadia Code', Consolas, monospace;
|
||||
--ifm-font-weight-semibold: 600;
|
||||
--ifm-font-size-base: 96%;
|
||||
|
||||
/* Spacing */
|
||||
--ifm-spacing-horizontal: 1.5rem;
|
||||
--ifm-navbar-height: 3.5rem;
|
||||
|
||||
/* Borders */
|
||||
--ifm-global-radius: 0.5rem;
|
||||
}
|
||||
|
||||
[data-theme='dark'] {
|
||||
--ifm-color-primary: #2dd4bf;
|
||||
--ifm-color-primary-dark: #14b8a6;
|
||||
--ifm-color-primary-darker: #0d9488;
|
||||
--ifm-color-primary-darkest: #0f766e;
|
||||
--ifm-color-primary-light: #5eead4;
|
||||
--ifm-color-primary-lighter: #99f6e4;
|
||||
--ifm-color-primary-lightest: #ccfbf1;
|
||||
--docusaurus-highlighted-code-line-bg: rgba(45, 212, 191, 0.15);
|
||||
|
||||
--ifm-background-color: #09090b;
|
||||
--ifm-background-surface-color: #18181b;
|
||||
--ifm-navbar-background-color: #09090b;
|
||||
--ifm-footer-background-color: #09090b;
|
||||
--ifm-toc-border-color: #27272a;
|
||||
}
|
||||
|
||||
/* Navbar styling */
|
||||
.navbar {
|
||||
box-shadow: none;
|
||||
border-bottom: 1px solid var(--ifm-toc-border-color);
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.navbar__title {
|
||||
font-weight: 700;
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
.navbar__items {
|
||||
gap: 0.25rem;
|
||||
}
|
||||
|
||||
.navbar__link {
|
||||
font-weight: 500;
|
||||
font-size: 0.8125rem;
|
||||
padding: 0.5rem 0.75rem;
|
||||
border-radius: 0.375rem;
|
||||
transition: background-color 0.15s ease;
|
||||
}
|
||||
|
||||
.navbar__link:hover {
|
||||
background-color: var(--ifm-background-surface-color);
|
||||
}
|
||||
|
||||
.navbar__link--active {
|
||||
color: var(--ifm-color-primary);
|
||||
}
|
||||
|
||||
[data-theme='dark'] .navbar__link:hover {
|
||||
background-color: #27272a;
|
||||
}
|
||||
|
||||
/* Hero section */
|
||||
.hero {
|
||||
padding: 4rem 0;
|
||||
}
|
||||
|
||||
.hero--primary {
|
||||
background: linear-gradient(135deg, var(--ifm-color-primary-darkest) 0%, var(--ifm-color-primary-dark) 100%);
|
||||
}
|
||||
|
||||
[data-theme='dark'] .hero--primary {
|
||||
background: linear-gradient(135deg, #0f1419 0%, #0d1117 100%);
|
||||
}
|
||||
|
||||
.hero__title {
|
||||
font-size: 3rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.hero__subtitle {
|
||||
font-size: 1.125rem;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
.button {
|
||||
border-radius: 0.5rem;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.button--primary {
|
||||
background: var(--ifm-color-primary);
|
||||
border-color: var(--ifm-color-primary);
|
||||
}
|
||||
|
||||
.button--primary:hover {
|
||||
background: var(--ifm-color-primary-dark);
|
||||
border-color: var(--ifm-color-primary-dark);
|
||||
}
|
||||
|
||||
.button--secondary {
|
||||
background: transparent;
|
||||
border: 2px solid currentColor;
|
||||
}
|
||||
|
||||
/* Sidebar */
|
||||
.menu__link {
|
||||
border-radius: 0.375rem;
|
||||
font-weight: 500;
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
|
||||
.menu__link--active {
|
||||
background: var(--ifm-color-primary-lightest);
|
||||
color: var(--ifm-color-primary-darkest);
|
||||
}
|
||||
|
||||
[data-theme='dark'] .menu__link--active {
|
||||
background: rgba(45, 212, 191, 0.12);
|
||||
color: var(--ifm-color-primary-light);
|
||||
}
|
||||
|
||||
/* Non-collapsible category styling */
|
||||
.menu__list-item-collapsible {
|
||||
font-weight: 600;
|
||||
font-size: 0.6875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
color: var(--ifm-color-emphasis-600);
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.menu__list-item-collapsible:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.menu__list-item-collapsible .menu__link {
|
||||
padding: 0.25rem 0.75rem;
|
||||
}
|
||||
|
||||
.menu__list-item-collapsible .menu__link:hover {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
[data-theme='dark'] .menu__list-item-collapsible {
|
||||
color: var(--ifm-color-emphasis-500);
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
.prism-code {
|
||||
border-radius: 0.5rem;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.6;
|
||||
font-family: var(--ifm-font-family-monospace);
|
||||
padding: 1rem !important;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
code {
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.2rem 0.45rem;
|
||||
font-size: 0.875em;
|
||||
font-family: var(--ifm-font-family-monospace);
|
||||
background-color: #f1f5f9;
|
||||
color: #0f172a;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
[data-theme='dark'] code {
|
||||
background-color: #1e293b;
|
||||
color: #e2e8f0;
|
||||
}
|
||||
|
||||
/* Don't apply inline styles to code inside pre blocks */
|
||||
pre code {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Code block container */
|
||||
div[class*="codeBlockContainer"] {
|
||||
border-radius: 0.5rem;
|
||||
border: 1px solid var(--ifm-toc-border-color);
|
||||
overflow: hidden;
|
||||
background: #f8fafc;
|
||||
}
|
||||
|
||||
[data-theme='dark'] div[class*="codeBlockContainer"] {
|
||||
background: #0f172a;
|
||||
}
|
||||
|
||||
div[class*="codeBlockTitle"] {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.5rem 1rem;
|
||||
border-bottom: 1px solid var(--ifm-toc-border-color);
|
||||
font-family: var(--ifm-font-family-monospace);
|
||||
}
|
||||
|
||||
/* Code block content area */
|
||||
div[class*="codeBlockContent"] {
|
||||
background: #f8fafc;
|
||||
}
|
||||
|
||||
[data-theme='dark'] div[class*="codeBlockContent"] {
|
||||
background: #0f172a;
|
||||
}
|
||||
|
||||
/* Cards/Features */
|
||||
.features {
|
||||
padding: 4rem 0;
|
||||
}
|
||||
|
||||
/* Docs page */
|
||||
.theme-doc-markdown {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
article h1 {
|
||||
font-size: 2.25rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
article h2 {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 0.75rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 1px solid var(--ifm-toc-border-color);
|
||||
}
|
||||
|
||||
article h3 {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 600;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
article p {
|
||||
font-size: 0.9375rem;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Admonitions */
|
||||
.admonition {
|
||||
border-radius: 0.5rem;
|
||||
border-left-width: 4px;
|
||||
}
|
||||
|
||||
/* Tables - Compact styling */
|
||||
table {
|
||||
display: table;
|
||||
width: 100%;
|
||||
font-size: 0.8125rem;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid var(--ifm-toc-border-color);
|
||||
padding: 0.5rem 0.75rem;
|
||||
}
|
||||
|
||||
th {
|
||||
background: var(--ifm-background-surface-color);
|
||||
font-weight: 600;
|
||||
font-size: 0.75rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.025em;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
border-top: 1px solid var(--ifm-toc-border-color);
|
||||
}
|
||||
|
||||
.footer__title {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* Tabs styling */
|
||||
.tabs-container {
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
.tabs__item {
|
||||
font-size: 0.8125rem;
|
||||
padding: 0.5rem 1rem;
|
||||
}
|
||||
|
||||
/* Smooth scrolling */
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
/* List styling */
|
||||
article ul, article ol {
|
||||
font-size: 0.9375rem;
|
||||
}
|
||||
|
||||
article li {
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
7
memora-docs/src/theme/NavbarItem/ComponentTypes.tsx
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import ComponentTypes from '@theme-original/NavbarItem/ComponentTypes';
|
||||
import NavbarIconLink from '@site/src/components/NavbarIconLink';
|
||||
|
||||
export default {
|
||||
...ComponentTypes,
|
||||
'custom-iconLink': NavbarIconLink,
|
||||
};
|
||||
0
memora-docs/static/.nojekyll
Normal file
BIN
memora-docs/static/img/docusaurus-social-card.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
memora-docs/static/img/docusaurus.png
Normal file
|
After Width: | Height: | Size: 5 KiB |
BIN
memora-docs/static/img/favicon.ico
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
17
memora-docs/static/img/logo.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#7c3aed;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#a78bfa;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="45" fill="url(#grad)"/>
|
||||
<circle cx="50" cy="35" r="12" fill="white" opacity="0.9"/>
|
||||
<circle cx="35" cy="55" r="8" fill="white" opacity="0.7"/>
|
||||
<circle cx="65" cy="55" r="8" fill="white" opacity="0.7"/>
|
||||
<circle cx="50" cy="70" r="6" fill="white" opacity="0.5"/>
|
||||
<line x1="50" y1="47" x2="35" y2="55" stroke="white" stroke-width="2" opacity="0.6"/>
|
||||
<line x1="50" y1="47" x2="65" y2="55" stroke="white" stroke-width="2" opacity="0.6"/>
|
||||
<line x1="35" y1="55" x2="50" y2="70" stroke="white" stroke-width="2" opacity="0.5"/>
|
||||
<line x1="65" y1="55" x2="50" y2="70" stroke="white" stroke-width="2" opacity="0.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 968 B |
171
memora-docs/static/img/undraw_docusaurus_mountain.svg
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962">
|
||||
<title>Easy to Use</title>
|
||||
<g id="Group_12" data-name="Group 12" transform="translate(-57 -56)">
|
||||
<g id="Group_11" data-name="Group 11" transform="translate(57 56)">
|
||||
<path id="Path_83" data-name="Path 83" d="M1017.81,560.461c-5.27,45.15-16.22,81.4-31.25,110.31-20,38.52-54.21,54.04-84.77,70.28a193.275,193.275,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.282,657.282,0,0,0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07,5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12,52.29-235.46,134.74-296.47,155.97-115.41,369.76-110.57,523.43,7.88C941.15,276.621,1036.99,396.031,1017.81,560.461Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||
<path id="Path_84" data-name="Path 84" d="M986.56,670.771c-20,38.52-47.21,64.04-77.77,80.28a193.272,193.272,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.3,657.3,0,0,0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25,1.72c-100.17,7.36-253.82-6.43-321.42-143.29L382,283.981,444.95,445.6l20.09,51.59,55.37-75.98L549,381.981l130.2,149.27,36.8-81.27L970.78,657.9l14.21,11.59Z" transform="translate(-56 -106.019)" fill="#f2f2f2"/>
|
||||
<path id="Path_85" data-name="Path 85" d="M302,282.962l26-57,36,83-31-60Z" opacity="0.1"/>
|
||||
<path id="Path_86" data-name="Path 86" d="M610.5,753.821q-14.97-.675-29.97-.67L465.04,497.191Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||
<path id="Path_87" data-name="Path 87" d="M464.411,315.191,493,292.962l130,150-132-128Z" opacity="0.1"/>
|
||||
<path id="Path_88" data-name="Path 88" d="M908.79,751.051a193.265,193.265,0,0,1-27.46,11.94L679.2,531.251Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||
<circle id="Ellipse_11" data-name="Ellipse 11" cx="3" cy="3" r="3" transform="translate(479 98.962)" fill="#f2f2f2"/>
|
||||
<circle id="Ellipse_12" data-name="Ellipse 12" cx="3" cy="3" r="3" transform="translate(396 201.962)" fill="#f2f2f2"/>
|
||||
<circle id="Ellipse_13" data-name="Ellipse 13" cx="2" cy="2" r="2" transform="translate(600 220.962)" fill="#f2f2f2"/>
|
||||
<circle id="Ellipse_14" data-name="Ellipse 14" cx="2" cy="2" r="2" transform="translate(180 265.962)" fill="#f2f2f2"/>
|
||||
<circle id="Ellipse_15" data-name="Ellipse 15" cx="2" cy="2" r="2" transform="translate(612 96.962)" fill="#f2f2f2"/>
|
||||
<circle id="Ellipse_16" data-name="Ellipse 16" cx="2" cy="2" r="2" transform="translate(736 192.962)" fill="#f2f2f2"/>
|
||||
<circle id="Ellipse_17" data-name="Ellipse 17" cx="2" cy="2" r="2" transform="translate(858 344.962)" fill="#f2f2f2"/>
|
||||
<path id="Path_89" data-name="Path 89" d="M306,121.222h-2.76v-2.76h-1.48v2.76H299V122.7h2.76v2.759h1.48V122.7H306Z" fill="#f2f2f2"/>
|
||||
<path id="Path_90" data-name="Path 90" d="M848,424.222h-2.76v-2.76h-1.48v2.76H841V425.7h2.76v2.759h1.48V425.7H848Z" fill="#f2f2f2"/>
|
||||
<path id="Path_91" data-name="Path 91" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||
<path id="Path_92" data-name="Path 92" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||
<ellipse id="Ellipse_18" data-name="Ellipse 18" cx="544" cy="30" rx="544" ry="30" transform="translate(0 583.962)" fill="#3f3d56"/>
|
||||
<path id="Path_93" data-name="Path 93" d="M624,677.981c0,33.137-14.775,24-33,24s-33,9.137-33-24,33-96,33-96S624,644.844,624,677.981Z" transform="translate(-56 -106.019)" fill="#ff6584"/>
|
||||
<path id="Path_94" data-name="Path 94" d="M606,690.66c0,15.062-6.716,10.909-15,10.909s-15,4.153-15-10.909,15-43.636,15-43.636S606,675.6,606,690.66Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||
<rect id="Rectangle_97" data-name="Rectangle 97" width="92" height="18" rx="9" transform="translate(489 604.962)" fill="#2f2e41"/>
|
||||
<rect id="Rectangle_98" data-name="Rectangle 98" width="92" height="18" rx="9" transform="translate(489 586.962)" fill="#2f2e41"/>
|
||||
<path id="Path_95" data-name="Path 95" d="M193,596.547c0,55.343,34.719,100.126,77.626,100.126" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||
<path id="Path_96" data-name="Path 96" d="M270.626,696.673c0-55.965,38.745-101.251,86.626-101.251" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||
<path id="Path_97" data-name="Path 97" d="M221.125,601.564c0,52.57,22.14,95.109,49.5,95.109" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||
<path id="Path_98" data-name="Path 98" d="M270.626,696.673c0-71.511,44.783-129.377,100.126-129.377" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||
<path id="Path_99" data-name="Path 99" d="M254.3,697.379s11.009-.339,14.326-2.7,16.934-5.183,17.757-1.395,16.544,18.844,4.115,18.945-28.879-1.936-32.19-3.953S254.3,697.379,254.3,697.379Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||
<path id="Path_100" data-name="Path 100" d="M290.716,710.909c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7,8.879,4.009,10.9,19.761,4.053,32.19,3.953c3.588-.029,4.827-1.305,4.759-3.2C294.755,710.174,293.386,710.887,290.716,710.909Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||
<path id="Path_101" data-name="Path 101" d="M777.429,633.081c0,38.029,23.857,68.8,53.341,68.8" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||
<path id="Path_102" data-name="Path 102" d="M830.769,701.882c0-38.456,26.623-69.575,59.525-69.575" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||
<path id="Path_103" data-name="Path 103" d="M796.755,636.528c0,36.124,15.213,65.354,34.014,65.354" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||
<path id="Path_104" data-name="Path 104" d="M830.769,701.882c0-49.139,30.773-88.9,68.8-88.9" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||
<path id="Path_105" data-name="Path 105" d="M819.548,702.367s7.565-.233,9.844-1.856,11.636-3.562,12.2-.958,11.368,12.949,2.828,13.018-19.844-1.33-22.119-2.716S819.548,702.367,819.548,702.367Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||
<path id="Path_106" data-name="Path 106" d="M844.574,711.664c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479,6.1,2.755,7.487,13.579,2.785,22.119,2.716c2.465-.02,3.317-.9,3.27-2.2C847.349,711.159,846.409,711.649,844.574,711.664Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||
<path id="Path_107" data-name="Path 107" d="M949.813,724.718s11.36-1.729,14.5-4.591,16.89-7.488,18.217-3.667,19.494,17.447,6.633,19.107-30.153,1.609-33.835-.065S949.813,724.718,949.813,724.718Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||
<path id="Path_108" data-name="Path 108" d="M989.228,734.173c-12.86,1.659-30.153,1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833,9.109,5.516,10.783,20.975,1.725,33.835.065c3.712-.479,4.836-1.956,4.529-3.906C993.319,732.907,991.991,733.817,989.228,734.173Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||
<path id="Path_109" data-name="Path 109" d="M670.26,723.9s9.587-1.459,12.237-3.875,14.255-6.32,15.374-3.095,16.452,14.725,5.6,16.125-25.448,1.358-28.555-.055S670.26,723.9,670.26,723.9Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||
<path id="Path_110" data-name="Path 110" d="M703.524,731.875c-10.853,1.4-25.448,1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547,7.687,4.655,9.1,17.7,1.456,28.555.055c3.133-.4,4.081-1.651,3.822-3.3C706.977,730.807,705.856,731.575,703.524,731.875Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||
<path id="Path_111" data-name="Path 111" d="M178.389,719.109s7.463-1.136,9.527-3.016,11.1-4.92,11.969-2.409,12.808,11.463,4.358,12.553-19.811,1.057-22.23-.043S178.389,719.109,178.389,719.109Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||
<path id="Path_112" data-name="Path 112" d="M204.285,725.321c-8.449,1.09-19.811,1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2,5.984,3.624,7.085,13.781,1.133,22.23.043c2.439-.315,3.177-1.285,2.976-2.566C206.973,724.489,206.1,725.087,204.285,725.321Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||
<path id="Path_113" data-name="Path 113" d="M439.7,707.337c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873,42.118-36.793,93.694-36.793S439.7,677.117,439.7,707.337Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||
<path id="Path_114" data-name="Path 114" d="M439.7,699.9c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873S295.04,663.1,346.616,663.1,439.7,669.676,439.7,699.9Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||
</g>
|
||||
<g id="docusaurus_keytar" transform="translate(312.271 493.733)">
|
||||
<path id="Path_40" data-name="Path 40" d="M99,52h91.791V89.153H99Z" transform="translate(5.904 -14.001)" fill="#fff" fill-rule="evenodd"/>
|
||||
<path id="Path_41" data-name="Path 41" d="M24.855,163.927A21.828,21.828,0,0,1,5.947,153a21.829,21.829,0,0,0,18.908,32.782H46.71V163.927Z" transform="translate(-3 -4.634)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_42" data-name="Path 42" d="M121.861,61.1l76.514-4.782V45.39A21.854,21.854,0,0,0,176.52,23.535H78.173L75.441,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L64.513,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L53.586,18.8a3.154,3.154,0,0,0-5.464,0L45.39,23.535c-.024,0-.046,0-.071,0l-4.526-4.525a3.153,3.153,0,0,0-5.276,1.414l-1.5,5.577-5.674-1.521a3.154,3.154,0,0,0-3.863,3.864L26,34.023l-5.575,1.494a3.155,3.155,0,0,0-1.416,5.278l4.526,4.526c0,.023,0,.046,0,.07L18.8,48.122a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,59.05a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,69.977a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,80.9a3.154,3.154,0,0,0,0,5.464L23.535,89.1,18.8,91.832a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,102.76a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,113.687a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,124.615a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,135.542a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,146.469a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,157.4a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,168.324a3.154,3.154,0,0,0,0,5.464l4.732,2.732A21.854,21.854,0,0,0,45.39,198.375H176.52a21.854,21.854,0,0,0,21.855-21.855V89.1l-76.514-4.782a11.632,11.632,0,0,1,0-23.219" transform="translate(-1.681 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_43" data-name="Path 43" d="M143,186.71h32.782V143H143Z" transform="translate(9.984 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_44" data-name="Path 44" d="M196.71,159.855a5.438,5.438,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(10.912 -6.025)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_45" data-name="Path 45" d="M153,124.855h32.782V103H153Z" transform="translate(10.912 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_46" data-name="Path 46" d="M194.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.814,2.814,0,0,0,.349.035" transform="translate(12.767 -9.377)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_47" data-name="Path 47" d="M65.087,56.891a2.732,2.732,0,0,1-2.732-2.732,8.2,8.2,0,0,0-16.391,0,2.732,2.732,0,0,1-5.464,0,13.659,13.659,0,0,1,27.319,0,2.732,2.732,0,0,1-2.732,2.732" transform="translate(0.478 -15.068)" fill-rule="evenodd"/>
|
||||
<path id="Path_48" data-name="Path 48" d="M103,191.347h65.565a21.854,21.854,0,0,0,21.855-21.855V93H124.855A21.854,21.854,0,0,0,103,114.855Z" transform="translate(6.275 -10.199)" fill="#ffff50" fill-rule="evenodd"/>
|
||||
<path id="Path_49" data-name="Path 49" d="M173.216,129.787H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0-54.434H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.652H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186M189.585,61.611c-.013,0-.024-.007-.037-.005-3.377.115-4.974,3.492-6.384,6.472-1.471,3.114-2.608,5.139-4.473,5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932,3.053-6.346,5.646-1.5,2.762-2.529,4.442-4.5,4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879,2.606-6.3,4.808-1.5,2.328-2.552,3.746-4.551,3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807,2.153-6.224,3.954-1.346,1.709-2.4,3.062-4.621,2.977a1.093,1.093,0,0,0-.079,2.186c3.3.11,4.967-1.967,6.417-3.81,1.286-1.635,2.4-3.045,4.582-3.12,2.1-.09,3.091,1.218,4.584,3.327,1.417,2,3.026,4.277,6.263,4.394,3.391.114,5.022-2.42,6.467-4.663,1.292-2,2.406-3.734,4.535-3.807,1.959-.073,3.026,1.475,4.529,4.022,1.417,2.4,3.023,5.121,6.324,5.241,3.415.118,5.064-2.863,6.5-5.5,1.245-2.282,2.419-4.437,4.5-4.509,1.959-.046,2.981,1.743,4.492,4.732,1.412,2.79,3.013,5.95,6.365,6.071l.185,0c3.348,0,4.937-3.36,6.343-6.331,1.245-2.634,2.423-5.114,4.444-5.216Z" transform="translate(7.109 -13.11)" fill-rule="evenodd"/>
|
||||
<path id="Path_50" data-name="Path 50" d="M83,186.71h43.71V143H83Z" transform="translate(4.42 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 109.327, 91.085)">
|
||||
<rect id="Rectangle_3" data-name="Rectangle 3" width="92.361" height="36.462" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
|
||||
<g id="Group_2" data-name="Group 2" transform="translate(1.531 23.03)">
|
||||
<rect id="Rectangle_4" data-name="Rectangle 4" width="5.336" height="5.336" rx="1" transform="translate(16.797 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_5" data-name="Rectangle 5" width="5.336" height="5.336" rx="1" transform="translate(23.12 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_6" data-name="Rectangle 6" width="5.336" height="5.336" rx="1" transform="translate(29.444 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_7" data-name="Rectangle 7" width="5.336" height="5.336" rx="1" transform="translate(35.768 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_8" data-name="Rectangle 8" width="5.336" height="5.336" rx="1" transform="translate(42.091 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_9" data-name="Rectangle 9" width="5.336" height="5.336" rx="1" transform="translate(48.415 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_10" data-name="Rectangle 10" width="5.336" height="5.336" rx="1" transform="translate(54.739 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_11" data-name="Rectangle 11" width="5.336" height="5.336" rx="1" transform="translate(61.063 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_12" data-name="Rectangle 12" width="5.336" height="5.336" rx="1" transform="translate(67.386 0)" fill="#4a4a4a"/>
|
||||
<path id="Path_51" data-name="Path 51" d="M1.093,0H14.518a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0ZM75,0H88.426a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H75a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,75,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
</g>
|
||||
<g id="Group_3" data-name="Group 3" transform="translate(1.531 10.261)">
|
||||
<path id="Path_52" data-name="Path 52" d="M1.093,0H6.218A1.093,1.093,0,0,1,7.31,1.093V4.242A1.093,1.093,0,0,1,6.218,5.335H1.093A1.093,1.093,0,0,1,0,4.242V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<rect id="Rectangle_13" data-name="Rectangle 13" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_14" data-name="Rectangle 14" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_15" data-name="Rectangle 15" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_16" data-name="Rectangle 16" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_17" data-name="Rectangle 17" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_18" data-name="Rectangle 18" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_19" data-name="Rectangle 19" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_20" data-name="Rectangle 20" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_21" data-name="Rectangle 21" width="5.336" height="5.336" rx="1" transform="translate(58.888 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_22" data-name="Rectangle 22" width="5.336" height="5.336" rx="1" transform="translate(65.212 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_23" data-name="Rectangle 23" width="5.336" height="5.336" rx="1" transform="translate(71.536 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_24" data-name="Rectangle 24" width="5.336" height="5.336" rx="1" transform="translate(77.859 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_25" data-name="Rectangle 25" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<g id="Group_4" data-name="Group 4" transform="translate(91.05 9.546) rotate(180)">
|
||||
<path id="Path_53" data-name="Path 53" d="M1.093,0H6.219A1.093,1.093,0,0,1,7.312,1.093v3.15A1.093,1.093,0,0,1,6.219,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<rect id="Rectangle_26" data-name="Rectangle 26" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_27" data-name="Rectangle 27" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_28" data-name="Rectangle 28" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_29" data-name="Rectangle 29" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_30" data-name="Rectangle 30" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_31" data-name="Rectangle 31" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_32" data-name="Rectangle 32" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_33" data-name="Rectangle 33" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_34" data-name="Rectangle 34" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_35" data-name="Rectangle 35" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_36" data-name="Rectangle 36" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_37" data-name="Rectangle 37" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_38" data-name="Rectangle 38" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_39" data-name="Rectangle 39" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_40" data-name="Rectangle 40" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_41" data-name="Rectangle 41" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_42" data-name="Rectangle 42" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_43" data-name="Rectangle 43" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_44" data-name="Rectangle 44" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_45" data-name="Rectangle 45" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_46" data-name="Rectangle 46" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_47" data-name="Rectangle 47" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_48" data-name="Rectangle 48" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_49" data-name="Rectangle 49" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_50" data-name="Rectangle 50" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_51" data-name="Rectangle 51" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<g id="Group_6" data-name="Group 6" transform="translate(1.531 16.584)">
|
||||
<path id="Path_54" data-name="Path 54" d="M1.093,0h7.3A1.093,1.093,0,0,1,9.485,1.093v3.15A1.093,1.093,0,0,1,8.392,5.336h-7.3A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<g id="Group_5" data-name="Group 5" transform="translate(10.671 0)">
|
||||
<rect id="Rectangle_52" data-name="Rectangle 52" width="5.336" height="5.336" rx="1" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_53" data-name="Rectangle 53" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_54" data-name="Rectangle 54" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_55" data-name="Rectangle 55" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_56" data-name="Rectangle 56" width="5.336" height="5.336" rx="1" transform="translate(25.295 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_57" data-name="Rectangle 57" width="5.336" height="5.336" rx="1" transform="translate(31.619 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_58" data-name="Rectangle 58" width="5.336" height="5.336" rx="1" transform="translate(37.942 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_59" data-name="Rectangle 59" width="5.336" height="5.336" rx="1" transform="translate(44.265 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_60" data-name="Rectangle 60" width="5.336" height="5.336" rx="1" transform="translate(50.589 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_61" data-name="Rectangle 61" width="5.336" height="5.336" rx="1" transform="translate(56.912 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_62" data-name="Rectangle 62" width="5.336" height="5.336" rx="1" transform="translate(63.236 0)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<path id="Path_55" data-name="Path 55" d="M1.094,0H8A1.093,1.093,0,0,1,9.091,1.093v3.15A1.093,1.093,0,0,1,8,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(80.428 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
</g>
|
||||
<g id="Group_7" data-name="Group 7" transform="translate(1.531 29.627)">
|
||||
<rect id="Rectangle_63" data-name="Rectangle 63" width="5.336" height="5.336" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_64" data-name="Rectangle 64" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_65" data-name="Rectangle 65" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_66" data-name="Rectangle 66" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
|
||||
<path id="Path_56" data-name="Path 56" d="M1.093,0H31.515a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.244V1.093A1.093,1.093,0,0,1,1.093,0ZM34.687,0h3.942a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H34.687a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,34.687,0Z" transform="translate(25.294 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<rect id="Rectangle_67" data-name="Rectangle 67" width="5.336" height="5.336" rx="1" transform="translate(66.003 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_68" data-name="Rectangle 68" width="5.336" height="5.336" rx="1" transform="translate(72.327 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_69" data-name="Rectangle 69" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||
<path id="Path_57" data-name="Path 57" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(83.59 2.273) rotate(180)" fill="#4a4a4a"/>
|
||||
<path id="Path_58" data-name="Path 58" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(78.255 3.063)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<rect id="Rectangle_70" data-name="Rectangle 70" width="88.927" height="2.371" rx="1.085" transform="translate(1.925 1.17)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_71" data-name="Rectangle 71" width="4.986" height="1.581" rx="0.723" transform="translate(4.1 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_72" data-name="Rectangle 72" width="4.986" height="1.581" rx="0.723" transform="translate(10.923 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_73" data-name="Rectangle 73" width="4.986" height="1.581" rx="0.723" transform="translate(16.173 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_74" data-name="Rectangle 74" width="4.986" height="1.581" rx="0.723" transform="translate(21.421 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_75" data-name="Rectangle 75" width="4.986" height="1.581" rx="0.723" transform="translate(26.671 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_76" data-name="Rectangle 76" width="4.986" height="1.581" rx="0.723" transform="translate(33.232 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_77" data-name="Rectangle 77" width="4.986" height="1.581" rx="0.723" transform="translate(38.48 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_78" data-name="Rectangle 78" width="4.986" height="1.581" rx="0.723" transform="translate(43.73 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_79" data-name="Rectangle 79" width="4.986" height="1.581" rx="0.723" transform="translate(48.978 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_80" data-name="Rectangle 80" width="4.986" height="1.581" rx="0.723" transform="translate(55.54 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_81" data-name="Rectangle 81" width="4.986" height="1.581" rx="0.723" transform="translate(60.788 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_82" data-name="Rectangle 82" width="4.986" height="1.581" rx="0.723" transform="translate(66.038 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_83" data-name="Rectangle 83" width="4.986" height="1.581" rx="0.723" transform="translate(72.599 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_84" data-name="Rectangle 84" width="4.986" height="1.581" rx="0.723" transform="translate(77.847 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_85" data-name="Rectangle 85" width="4.986" height="1.581" rx="0.723" transform="translate(83.097 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||
</g>
|
||||
<path id="Path_59" data-name="Path 59" d="M146.71,159.855a5.439,5.439,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(6.275 -6.025)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_60" data-name="Path 60" d="M83,124.855h43.71V103H83Z" transform="translate(4.42 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_61" data-name="Path 61" d="M134.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.811,2.811,0,0,0,.349.035" transform="translate(7.202 -9.377)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_62" data-name="Path 62" d="M143.232,42.33a2.967,2.967,0,0,1-.535-.055,2.754,2.754,0,0,1-.514-.153,2.838,2.838,0,0,1-.471-.251,4.139,4.139,0,0,1-.415-.339,3.2,3.2,0,0,1-.338-.415A2.7,2.7,0,0,1,140.5,39.6a2.968,2.968,0,0,1,.055-.535,3.152,3.152,0,0,1,.152-.514,2.874,2.874,0,0,1,.252-.47,2.633,2.633,0,0,1,.753-.754,2.837,2.837,0,0,1,.471-.251,2.753,2.753,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,4.019,4.019,0,0,1,.339.415,2.786,2.786,0,0,1,.251.47,2.864,2.864,0,0,1,.208,1.049,2.77,2.77,0,0,1-.8,1.934,4.139,4.139,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459m21.855-1.366a2.789,2.789,0,0,1-1.935-.8,4.162,4.162,0,0,1-.338-.415,2.7,2.7,0,0,1-.459-1.519,2.789,2.789,0,0,1,.8-1.934,4.139,4.139,0,0,1,.415-.339,2.838,2.838,0,0,1,.471-.251,2.752,2.752,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,2.79,2.79,0,0,1,.8,1.934,3.069,3.069,0,0,1-.055.535,2.779,2.779,0,0,1-.153.514,3.885,3.885,0,0,1-.251.47,4.02,4.02,0,0,1-.339.415,4.138,4.138,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459" transform="translate(9.753 -15.532)" fill-rule="evenodd"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 31 KiB |
170
memora-docs/static/img/undraw_docusaurus_react.svg
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="1041.277" height="554.141" viewBox="0 0 1041.277 554.141">
|
||||
<title>Powered by React</title>
|
||||
<g id="Group_24" data-name="Group 24" transform="translate(-440 -263)">
|
||||
<g id="Group_23" data-name="Group 23" transform="translate(439.989 262.965)">
|
||||
<path id="Path_299" data-name="Path 299" d="M1040.82,611.12q-1.74,3.75-3.47,7.4-2.7,5.67-5.33,11.12c-.78,1.61-1.56,3.19-2.32,4.77-8.6,17.57-16.63,33.11-23.45,45.89A73.21,73.21,0,0,1,942.44,719l-151.65,1.65h-1.6l-13,.14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107,1.16-95.51,1-11.11.12-69,.75H429l-44.75.48h-.48l-141.5,1.53-42.33.46a87.991,87.991,0,0,1-10.79-.54h0c-1.22-.14-2.44-.3-3.65-.49a87.38,87.38,0,0,1-51.29-27.54C116,678.37,102.75,655,93.85,629.64q-1.93-5.49-3.6-11.12C59.44,514.37,97,380,164.6,290.08q4.25-5.64,8.64-11l.07-.08c20.79-25.52,44.1-46.84,68.93-62,44-26.91,92.75-34.49,140.7-11.9,40.57,19.12,78.45,28.11,115.17,30.55,3.71.24,7.42.42,11.11.53,84.23,2.65,163.17-27.7,255.87-47.29,3.69-.78,7.39-1.55,11.12-2.28,66.13-13.16,139.49-20.1,226.73-5.51a189.089,189.089,0,0,1,26.76,6.4q5.77,1.86,11.12,4c41.64,16.94,64.35,48.24,74,87.46q1.37,5.46,2.37,11.11C1134.3,384.41,1084.19,518.23,1040.82,611.12Z" transform="translate(-79.34 -172.91)" fill="#f2f2f2"/>
|
||||
<path id="Path_300" data-name="Path 300" d="M576.36,618.52a95.21,95.21,0,0,1-1.87,11.12h93.7V618.52Zm-78.25,62.81,11.11-.09V653.77c-3.81-.17-7.52-.34-11.11-.52ZM265.19,618.52v11.12h198.5V618.52ZM1114.87,279h-74V191.51q-5.35-2.17-11.12-4V279H776.21V186.58c-3.73.73-7.43,1.5-11.12,2.28V279H509.22V236.15c-3.69-.11-7.4-.29-11.11-.53V279H242.24V217c-24.83,15.16-48.14,36.48-68.93,62h-.07v.08q-4.4,5.4-8.64,11h8.64V618.52h-83q1.66,5.63,3.6,11.12h79.39v93.62a87,87,0,0,0,12.2,2.79c1.21.19,2.43.35,3.65.49h0a87.991,87.991,0,0,0,10.79.54l42.33-.46v-97H498.11v94.21l11.11-.12V629.64H765.09V721l11.12-.12V629.64H1029.7v4.77c.76-1.58,1.54-3.16,2.32-4.77q2.63-5.45,5.33-11.12,1.73-3.64,3.47-7.4v-321h76.42Q1116.23,284.43,1114.87,279ZM242.24,618.52V290.08H498.11V618.52Zm267,0V290.08H765.09V618.52Zm520.48,0H776.21V290.08H1029.7Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_301" data-name="Path 301" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" fill="#65617d"/>
|
||||
<path id="Path_302" data-name="Path 302" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" opacity="0.2"/>
|
||||
<path id="Path_303" data-name="Path 303" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||
<path id="Path_304" data-name="Path 304" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_305" data-name="Path 305" d="M377.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||
<rect id="Rectangle_137" data-name="Rectangle 137" width="47.17" height="31.5" transform="translate(680.92 483.65)" fill="#3f3d56"/>
|
||||
<rect id="Rectangle_138" data-name="Rectangle 138" width="47.17" height="31.5" transform="translate(680.92 483.65)" opacity="0.1"/>
|
||||
<rect id="Rectangle_139" data-name="Rectangle 139" width="47.17" height="31.5" transform="translate(678.92 483.65)" fill="#3f3d56"/>
|
||||
<path id="Path_306" data-name="Path 306" d="M298.09,483.65v4.97l-47.17,1.26v-6.23Z" opacity="0.1"/>
|
||||
<path id="Path_307" data-name="Path 307" d="M460.69,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6a4,4,0,0,1,3.95,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
|
||||
<path id="Path_308" data-name="Path 308" d="M265.19,481.32v181.2h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_309" data-name="Path 309" d="M194.59,319.15h177.5V467.4l-177.5,4Z" fill="#39374d"/>
|
||||
<path id="Path_310" data-name="Path 310" d="M726.09,483.65v6.41l-47.17-1.26v-5.15Z" opacity="0.1"/>
|
||||
<path id="Path_311" data-name="Path 311" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0L672,657.42a4,4,0,0,1-3.85-3.95V485.27a4,4,0,0,1,3.95-3.95H863.7a4,4,0,0,1,3.99,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
|
||||
<path id="Path_312" data-name="Path 312" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0V481.32h0a4,4,0,0,1,4,3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_313" data-name="Path 313" d="M775.59,319.15H598.09V467.4l177.5,4Z" fill="#39374d"/>
|
||||
<path id="Path_314" data-name="Path 314" d="M663.19,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h0a4,4,0,0,1-4-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6A4,4,0,0,1,663.19,485.27Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
|
||||
<path id="Path_315" data-name="Path 315" d="M397.09,319.15h177.5V467.4l-177.5,4Z" fill="#4267b2"/>
|
||||
<path id="Path_316" data-name="Path 316" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5,4.4-.02.98-.01Z" opacity="0.1"/>
|
||||
<circle id="Ellipse_111" data-name="Ellipse 111" cx="51.33" cy="51.33" r="51.33" transform="translate(435.93 246.82)" fill="#fbbebe"/>
|
||||
<path id="Path_317" data-name="Path 317" d="M617.94,550.07s-99.5,12-90,0c3.44-4.34,4.39-17.2,4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41,77-8.5c-4,13.13-2.69,31.57.35,48.88.89,5.05,1.92,10,3,14.7a344.66,344.66,0,0,0,9.65,33.92Z" transform="translate(-79.34 -172.91)" fill="#fbbebe"/>
|
||||
<path id="Path_318" data-name="Path 318" d="M585.47,546c11.51-2.13,23.7-6,34.53-1.54,2.85,1.17,5.47,2.88,8.39,3.86s6.12,1.22,9.16,1.91c10.68,2.42,19.34,10.55,24.9,20s8.44,20.14,11.26,30.72l6.9,25.83c6,22.45,12,45.09,13.39,68.3a2437.506,2437.506,0,0,1-250.84,1.43c5.44-10.34,11-21.31,10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34,6.57-13.39,9.64-20.22,8.75-19.52,1.94-45.79,17.32-60.65,6.92-6.68,17-9.21,26.63-8.89,12.28.41,24.85,4.24,37,6.11C555.09,547.48,569.79,548.88,585.47,546Z" transform="translate(-79.34 -172.91)" fill="#ff6584"/>
|
||||
<path id="Path_319" data-name="Path 319" d="M716.37,657.17l-.1,1.43v.1l-.17,2.3-1.33,18.51-1.61,22.3-.46,6.28-1,13.44v.17l-107,1-175.59,1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53,10.53,0,0,1,11.42-10.17c4.72.4,10.85.89,18.18,1.41l3,.22c42.33,2.94,120.56,6.74,199.5,2,1.66-.09,3.33-.19,5-.31,12.24-.77,24.47-1.76,36.58-3a10.53,10.53,0,0,1,11.6,11.23Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_320" data-name="Path 320" d="M429.08,725.44v-.84l175.62-1.91,107-1h.3v-.17l1-13.44.43-6,1.64-22.61,1.29-17.9v-.44a10.617,10.617,0,0,0-.11-2.47.3.3,0,0,0,0-.1,10.391,10.391,0,0,0-2-4.64,10.54,10.54,0,0,0-9.42-4c-12.11,1.24-24.34,2.23-36.58,3-1.67.12-3.34.22-5,.31-78.94,4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54,10.54,0,0,0-11.24,8.53,11,11,0,0,0-.18,1.64l-.68,22.16L429.54,710l-.44,14.36v1.12Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||
<path id="Path_321" data-name="Path 321" d="M716.67,664.18l-1.23,15.33-1.83,22.85-.46,5.72-1,12.81-.06.64v.17h0l-.15,1.48.11-1.48h-.29l-107,1-175.65,1.9v-.28l.49-14.36,1-28.06.64-18.65A6.36,6.36,0,0,1,434.3,658a6.25,6.25,0,0,1,3.78-.9c2.1.17,4.68.37,7.69.59,4.89.36,10.92.78,17.94,1.22,13,.82,29.31,1.7,48,2.42,52,2,122.2,2.67,188.88-3.17,3-.26,6.1-.55,9.13-.84a6.26,6.26,0,0,1,3.48.66,5.159,5.159,0,0,1,.86.54,6.14,6.14,0,0,1,2,2.46,3.564,3.564,0,0,1,.25.61A6.279,6.279,0,0,1,716.67,664.18Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_322" data-name="Path 322" d="M377.44,677.87v3.19a6.13,6.13,0,0,1-3.5,5.54l-40.1.77a6.12,6.12,0,0,1-3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_323" data-name="Path 323" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
|
||||
<path id="Path_324" data-name="Path 324" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" opacity="0.1"/>
|
||||
<path id="Path_325" data-name="Path 325" d="M300.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
|
||||
<path id="Path_326" data-name="Path 326" d="M758.56,679.87v3.19a6.13,6.13,0,0,0,3.5,5.54l40.1.77a6.12,6.12,0,0,0,3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||
<path id="Path_327" data-name="Path 327" d="M678.72,517.57l52.25,1V509.9l-52.25-1Z" opacity="0.1"/>
|
||||
<path id="Path_328" data-name="Path 328" d="M676.72,517.57l52.25,1V509.9l-52.25-1Z" fill="#3f3d56"/>
|
||||
<path id="Path_329" data-name="Path 329" d="M534.13,486.79c.08,7-3.16,13.6-5.91,20.07a163.491,163.491,0,0,0-12.66,74.71c.73,11,2.58,22,.73,32.9s-8.43,21.77-19,24.9c17.53,10.45,41.26,9.35,57.76-2.66,8.79-6.4,15.34-15.33,21.75-24.11a97.86,97.86,0,0,1-13.31,44.75A103.43,103.43,0,0,0,637,616.53c4.31-5.81,8.06-12.19,9.72-19.23,3.09-13-1.22-26.51-4.51-39.5a266.055,266.055,0,0,1-6.17-33c-.43-3.56-.78-7.22.1-10.7,1-4.07,3.67-7.51,5.64-11.22,5.6-10.54,5.73-23.3,2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47,1.48-16.14,8.32-22,15.34-4.59,5.46-15.81,15.71-16.6,22.86-.72,6.59,5.1,17.63,6.09,24.58,1.3,9,2.22,6,7.3,11.52C532,478.05,534.07,482,534.13,486.79Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||
</g>
|
||||
<g id="docusaurus_keytar" transform="translate(670.271 615.768)">
|
||||
<path id="Path_40" data-name="Path 40" d="M99,52h43.635V69.662H99Z" transform="translate(-49.132 -33.936)" fill="#fff" fill-rule="evenodd"/>
|
||||
<path id="Path_41" data-name="Path 41" d="M13.389,158.195A10.377,10.377,0,0,1,4.4,153a10.377,10.377,0,0,0,8.988,15.584H23.779V158.195Z" transform="translate(-3 -82.47)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_42" data-name="Path 42" d="M66.967,38.083l36.373-2.273V30.615A10.389,10.389,0,0,0,92.95,20.226H46.2l-1.3-2.249a1.5,1.5,0,0,0-2.6,0L41,20.226l-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-.034,0-2.152-2.151a1.5,1.5,0,0,0-2.508.672L25.21,21.4l-2.7-.723a1.5,1.5,0,0,0-1.836,1.837l.722,2.7-2.65.71a1.5,1.5,0,0,0-.673,2.509l2.152,2.152c0,.011,0,.022,0,.033l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6L20.226,41l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3A10.389,10.389,0,0,0,30.615,103.34H92.95A10.389,10.389,0,0,0,103.34,92.95V51.393L66.967,49.12a5.53,5.53,0,0,1,0-11.038" transform="translate(-9.836 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_43" data-name="Path 43" d="M143,163.779h15.584V143H143Z" transform="translate(-70.275 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_44" data-name="Path 44" d="M173.779,148.389a2.582,2.582,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-75.08 -75.262)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_45" data-name="Path 45" d="M153,113.389h15.584V103H153Z" transform="translate(-75.08 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_46" data-name="Path 46" d="M183.389,108.944a1.3,1.3,0,1,0,0-2.6,1.336,1.336,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.337,1.337,0,0,0,.166.017" transform="translate(-84.691 -57.894)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_47" data-name="Path 47" d="M52.188,48.292a1.3,1.3,0,0,1-1.3-1.3,3.9,3.9,0,0,0-7.792,0,1.3,1.3,0,1,1-2.6,0,6.493,6.493,0,0,1,12.987,0,1.3,1.3,0,0,1-1.3,1.3" transform="translate(-21.02 -28.41)" fill-rule="evenodd"/>
|
||||
<path id="Path_48" data-name="Path 48" d="M103,139.752h31.168a10.389,10.389,0,0,0,10.389-10.389V93H113.389A10.389,10.389,0,0,0,103,103.389Z" transform="translate(-51.054 -53.638)" fill="#ffff50" fill-rule="evenodd"/>
|
||||
<path id="Path_49" data-name="Path 49" d="M141.1,94.017H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0-25.877H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.293H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m7.782-47.993c-.006,0-.011,0-.018,0-1.605.055-2.365,1.66-3.035,3.077-.7,1.48-1.24,2.443-2.126,2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344,1.451-3.017,2.684-.715,1.313-1.2,2.112-2.141,2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319,1.239-2.994,2.286-.713,1.106-1.213,1.781-2.164,1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815,3.815,0,0,0-2.959,1.879c-.64.812-1.14,1.456-2.2,1.415a.52.52,0,0,0-.037,1.039,3.588,3.588,0,0,0,3.05-1.811c.611-.777,1.139-1.448,2.178-1.483,1-.043,1.47.579,2.179,1.582.674.953,1.438,2.033,2.977,2.089,1.612.054,2.387-1.151,3.074-2.217.614-.953,1.144-1.775,2.156-1.81.931-.035,1.438.7,2.153,1.912.674,1.141,1.437,2.434,3.006,2.491,1.623.056,2.407-1.361,3.09-2.616.592-1.085,1.15-2.109,2.14-2.143.931-.022,1.417.829,2.135,2.249.671,1.326,1.432,2.828,3.026,2.886l.088,0c1.592,0,2.347-1.6,3.015-3.01.592-1.252,1.152-2.431,2.113-2.479Z" transform="translate(-55.378 -38.552)" fill-rule="evenodd"/>
|
||||
<path id="Path_50" data-name="Path 50" d="M83,163.779h20.779V143H83Z" transform="translate(-41.443 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 51.971, 43.3)">
|
||||
<rect id="Rectangle_3" data-name="Rectangle 3" width="43.906" height="17.333" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
|
||||
<g id="Group_2" data-name="Group 2" transform="translate(0.728 10.948)">
|
||||
<rect id="Rectangle_4" data-name="Rectangle 4" width="2.537" height="2.537" rx="1" transform="translate(7.985 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_5" data-name="Rectangle 5" width="2.537" height="2.537" rx="1" transform="translate(10.991 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_6" data-name="Rectangle 6" width="2.537" height="2.537" rx="1" transform="translate(13.997 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_7" data-name="Rectangle 7" width="2.537" height="2.537" rx="1" transform="translate(17.003 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_8" data-name="Rectangle 8" width="2.537" height="2.537" rx="1" transform="translate(20.009 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_9" data-name="Rectangle 9" width="2.537" height="2.537" rx="1" transform="translate(23.015 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_10" data-name="Rectangle 10" width="2.537" height="2.537" rx="1" transform="translate(26.021 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_11" data-name="Rectangle 11" width="2.537" height="2.537" rx="1" transform="translate(29.028 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_12" data-name="Rectangle 12" width="2.537" height="2.537" rx="1" transform="translate(32.034 0)" fill="#4a4a4a"/>
|
||||
<path id="Path_51" data-name="Path 51" d="M.519,0H6.9A.519.519,0,0,1,7.421.52v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0ZM35.653,0h6.383a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H35.652a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,35.652,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
</g>
|
||||
<g id="Group_3" data-name="Group 3" transform="translate(0.728 4.878)">
|
||||
<path id="Path_52" data-name="Path 52" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<rect id="Rectangle_13" data-name="Rectangle 13" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_14" data-name="Rectangle 14" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_15" data-name="Rectangle 15" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_16" data-name="Rectangle 16" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_17" data-name="Rectangle 17" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_18" data-name="Rectangle 18" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_19" data-name="Rectangle 19" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_20" data-name="Rectangle 20" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_21" data-name="Rectangle 21" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_22" data-name="Rectangle 22" width="2.537" height="2.537" rx="1" transform="translate(31 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_23" data-name="Rectangle 23" width="2.537" height="2.537" rx="1" transform="translate(34.006 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_24" data-name="Rectangle 24" width="2.537" height="2.537" rx="1" transform="translate(37.012 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_25" data-name="Rectangle 25" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<g id="Group_4" data-name="Group 4" transform="translate(43.283 4.538) rotate(180)">
|
||||
<path id="Path_53" data-name="Path 53" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<rect id="Rectangle_26" data-name="Rectangle 26" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_27" data-name="Rectangle 27" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_28" data-name="Rectangle 28" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_29" data-name="Rectangle 29" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_30" data-name="Rectangle 30" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_31" data-name="Rectangle 31" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_32" data-name="Rectangle 32" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_33" data-name="Rectangle 33" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_34" data-name="Rectangle 34" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_35" data-name="Rectangle 35" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_36" data-name="Rectangle 36" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_37" data-name="Rectangle 37" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_38" data-name="Rectangle 38" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_39" data-name="Rectangle 39" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_40" data-name="Rectangle 40" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_41" data-name="Rectangle 41" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_42" data-name="Rectangle 42" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_43" data-name="Rectangle 43" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_44" data-name="Rectangle 44" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_45" data-name="Rectangle 45" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_46" data-name="Rectangle 46" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_47" data-name="Rectangle 47" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_48" data-name="Rectangle 48" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_49" data-name="Rectangle 49" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_50" data-name="Rectangle 50" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_51" data-name="Rectangle 51" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<g id="Group_6" data-name="Group 6" transform="translate(0.728 7.883)">
|
||||
<path id="Path_54" data-name="Path 54" d="M.519,0h3.47a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<g id="Group_5" data-name="Group 5" transform="translate(5.073 0)">
|
||||
<rect id="Rectangle_52" data-name="Rectangle 52" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_53" data-name="Rectangle 53" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_54" data-name="Rectangle 54" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_55" data-name="Rectangle 55" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_56" data-name="Rectangle 56" width="2.537" height="2.537" rx="1" transform="translate(12.025 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_57" data-name="Rectangle 57" width="2.537" height="2.537" rx="1" transform="translate(15.031 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_58" data-name="Rectangle 58" width="2.537" height="2.537" rx="1" transform="translate(18.037 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_59" data-name="Rectangle 59" width="2.537" height="2.537" rx="1" transform="translate(21.042 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_60" data-name="Rectangle 60" width="2.537" height="2.537" rx="1" transform="translate(24.049 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_61" data-name="Rectangle 61" width="2.537" height="2.537" rx="1" transform="translate(27.055 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_62" data-name="Rectangle 62" width="2.537" height="2.537" rx="1" transform="translate(30.061 0)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<path id="Path_55" data-name="Path 55" d="M.52,0H3.8a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(38.234 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
</g>
|
||||
<g id="Group_7" data-name="Group 7" transform="translate(0.728 14.084)">
|
||||
<rect id="Rectangle_63" data-name="Rectangle 63" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_64" data-name="Rectangle 64" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_65" data-name="Rectangle 65" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_66" data-name="Rectangle 66" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
|
||||
<path id="Path_56" data-name="Path 56" d="M.519,0H14.981A.519.519,0,0,1,15.5.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.018V.519A.519.519,0,0,1,.519,0Zm15.97,0h1.874a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H16.489a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,16.489,0Z" transform="translate(12.024 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||
<rect id="Rectangle_67" data-name="Rectangle 67" width="2.537" height="2.537" rx="1" transform="translate(31.376 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_68" data-name="Rectangle 68" width="2.537" height="2.537" rx="1" transform="translate(34.382 0)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_69" data-name="Rectangle 69" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||
<path id="Path_57" data-name="Path 57" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(39.736 1.08) rotate(180)" fill="#4a4a4a"/>
|
||||
<path id="Path_58" data-name="Path 58" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(37.2 1.456)" fill="#4a4a4a"/>
|
||||
</g>
|
||||
<rect id="Rectangle_70" data-name="Rectangle 70" width="42.273" height="1.127" rx="0.564" transform="translate(0.915 0.556)" fill="#4a4a4a"/>
|
||||
<rect id="Rectangle_71" data-name="Rectangle 71" width="2.37" height="0.752" rx="0.376" transform="translate(1.949 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_72" data-name="Rectangle 72" width="2.37" height="0.752" rx="0.376" transform="translate(5.193 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_73" data-name="Rectangle 73" width="2.37" height="0.752" rx="0.376" transform="translate(7.688 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_74" data-name="Rectangle 74" width="2.37" height="0.752" rx="0.376" transform="translate(10.183 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_75" data-name="Rectangle 75" width="2.37" height="0.752" rx="0.376" transform="translate(12.679 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_76" data-name="Rectangle 76" width="2.37" height="0.752" rx="0.376" transform="translate(15.797 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_77" data-name="Rectangle 77" width="2.37" height="0.752" rx="0.376" transform="translate(18.292 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_78" data-name="Rectangle 78" width="2.37" height="0.752" rx="0.376" transform="translate(20.788 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_79" data-name="Rectangle 79" width="2.37" height="0.752" rx="0.376" transform="translate(23.283 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_80" data-name="Rectangle 80" width="2.37" height="0.752" rx="0.376" transform="translate(26.402 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_81" data-name="Rectangle 81" width="2.37" height="0.752" rx="0.376" transform="translate(28.897 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_82" data-name="Rectangle 82" width="2.37" height="0.752" rx="0.376" transform="translate(31.393 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_83" data-name="Rectangle 83" width="2.37" height="0.752" rx="0.376" transform="translate(34.512 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_84" data-name="Rectangle 84" width="2.37" height="0.752" rx="0.376" transform="translate(37.007 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
<rect id="Rectangle_85" data-name="Rectangle 85" width="2.37" height="0.752" rx="0.376" transform="translate(39.502 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||
</g>
|
||||
<path id="Path_59" data-name="Path 59" d="M123.779,148.389a2.583,2.583,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-51.054 -75.262)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_60" data-name="Path 60" d="M83,113.389h20.779V103H83Z" transform="translate(-41.443 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||
<path id="Path_61" data-name="Path 61" d="M123.389,108.944a1.3,1.3,0,1,0,0-2.6,1.338,1.338,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.335,1.335,0,0,0,.166.017" transform="translate(-55.859 -57.894)" fill="#44d860" fill-rule="evenodd"/>
|
||||
<path id="Path_62" data-name="Path 62" d="M141.8,38.745a1.41,1.41,0,0,1-.255-.026,1.309,1.309,0,0,1-.244-.073,1.349,1.349,0,0,1-.224-.119,1.967,1.967,0,0,1-.2-.161,1.52,1.52,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.41,1.41,0,0,1,.026-.255,1.5,1.5,0,0,1,.072-.244,1.364,1.364,0,0,1,.12-.223,1.252,1.252,0,0,1,.358-.358,1.349,1.349,0,0,1,.224-.119,1.309,1.309,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.968,1.968,0,0,1,.2.161,1.908,1.908,0,0,1,.161.2,1.322,1.322,0,0,1,.12.223,1.361,1.361,0,0,1,.1.5,1.317,1.317,0,0,1-.379.919,1.968,1.968,0,0,1-.2.161,1.346,1.346,0,0,1-.223.119,1.332,1.332,0,0,1-.5.1m10.389-.649a1.326,1.326,0,0,1-.92-.379,1.979,1.979,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.326,1.326,0,0,1,.379-.919,1.967,1.967,0,0,1,.2-.161,1.351,1.351,0,0,1,.224-.119,1.308,1.308,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.967,1.967,0,0,1,.2.161,1.326,1.326,0,0,1,.379.919,1.461,1.461,0,0,1-.026.255,1.323,1.323,0,0,1-.073.244,1.847,1.847,0,0,1-.119.223,1.911,1.911,0,0,1-.161.2,1.967,1.967,0,0,1-.2.161,1.294,1.294,0,0,1-.722.218" transform="translate(-69.074 -26.006)" fill-rule="evenodd"/>
|
||||
</g>
|
||||
<g id="React-icon" transform="translate(906.3 541.56)">
|
||||
<path id="Path_330" data-name="Path 330" d="M263.668,117.179c0-5.827-7.3-11.35-18.487-14.775,2.582-11.4,1.434-20.477-3.622-23.382a7.861,7.861,0,0,0-4.016-1v4a4.152,4.152,0,0,1,2.044.466c2.439,1.4,3.5,6.724,2.672,13.574-.2,1.685-.52,3.461-.914,5.272a86.9,86.9,0,0,0-11.386-1.954,87.469,87.469,0,0,0-7.459-8.965c5.845-5.433,11.332-8.41,15.062-8.41V78h0c-4.931,0-11.386,3.514-17.913,9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712,0,9.216,2.959,15.062,8.356a84.687,84.687,0,0,0-7.405,8.947,83.732,83.732,0,0,0-11.4,1.972c-.412-1.793-.717-3.532-.932-5.2-.843-6.85.2-12.175,2.618-13.592a3.991,3.991,0,0,1,2.062-.466v-4h0a8,8,0,0,0-4.052,1c-5.039,2.9-6.168,11.96-3.568,23.328-11.153,3.443-18.415,8.947-18.415,14.757,0,5.828,7.3,11.35,18.487,14.775-2.582,11.4-1.434,20.477,3.622,23.382a7.882,7.882,0,0,0,4.034,1c4.931,0,11.386-3.514,17.913-9.611,6.527,6.061,12.982,9.539,17.913,9.539a8,8,0,0,0,4.052-1c5.039-2.9,6.168-11.96,3.568-23.328C256.406,128.511,263.668,122.988,263.668,117.179Zm-23.346-11.96c-.663,2.313-1.488,4.7-2.421,7.083-.735-1.434-1.506-2.869-2.349-4.3-.825-1.434-1.7-2.833-2.582-4.2C235.517,104.179,237.974,104.645,240.323,105.219Zm-8.212,19.1c-1.4,2.421-2.833,4.716-4.321,6.85-2.672.233-5.379.359-8.1.359-2.708,0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136c1.112-2.4,2.367-4.805,3.712-7.154,1.4-2.421,2.833-4.716,4.321-6.85,2.672-.233,5.379-.359,8.1-.359,2.708,0,5.415.126,8.069.341q2.232,3.2,4.339,6.814,2.044,3.523,3.73,7.136C234.692,119.564,233.455,121.966,232.11,124.315Zm5.792-2.331c.968,2.4,1.793,4.805,2.474,7.136-2.349.574-4.823,1.058-7.387,1.434.879-1.381,1.757-2.8,2.582-4.25C236.4,124.871,237.167,123.419,237.9,121.984ZM219.72,141.116a73.921,73.921,0,0,1-4.985-5.738c1.614.072,3.263.126,4.931.126,1.685,0,3.353-.036,4.985-.126A69.993,69.993,0,0,1,219.72,141.116ZM206.38,130.555c-2.546-.377-5-.843-7.352-1.417.663-2.313,1.488-4.7,2.421-7.083.735,1.434,1.506,2.869,2.349,4.3S205.5,129.192,206.38,130.555ZM219.63,93.241a73.924,73.924,0,0,1,4.985,5.738c-1.614-.072-3.263-.126-4.931-.126-1.686,0-3.353.036-4.985.126A69.993,69.993,0,0,1,219.63,93.241ZM206.362,103.8c-.879,1.381-1.757,2.8-2.582,4.25-.825,1.434-1.6,2.869-2.331,4.3-.968-2.4-1.793-4.805-2.474-7.136C201.323,104.663,203.8,104.179,206.362,103.8Zm-16.227,22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383,10.454-9.073c1.542-.663,3.228-1.255,4.967-1.811a86.122,86.122,0,0,0,4.034,10.92,84.9,84.9,0,0,0-3.981,10.866C193.38,127.525,191.694,126.915,190.134,126.252Zm9.647,25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9,86.9,0,0,0,11.386,1.954,87.465,87.465,0,0,0,7.459,8.965c-5.845,5.433-11.332,8.41-15.062,8.41A4.279,4.279,0,0,1,199.781,151.875Zm42.532-13.663c.843,6.85-.2,12.175-2.618,13.592a3.99,3.99,0,0,1-2.062.466c-3.712,0-9.216-2.959-15.062-8.356a84.689,84.689,0,0,0,7.405-8.947,83.731,83.731,0,0,0,11.4-1.972A50.194,50.194,0,0,1,242.313,138.212Zm6.9-11.96c-1.542.663-3.228,1.255-4.967,1.811a86.12,86.12,0,0,0-4.034-10.92,84.9,84.9,0,0,0,3.981-10.866c1.775.556,3.461,1.165,5.039,1.829,6.348,2.708,10.454,6.258,10.454,9.073C259.67,119.994,255.564,123.562,249.216,126.252Z" fill="#61dafb"/>
|
||||
<path id="Path_331" data-name="Path 331" d="M320.8,78.4Z" transform="translate(-119.082 -0.328)" fill="#61dafb"/>
|
||||
<circle id="Ellipse_112" data-name="Ellipse 112" cx="8.194" cy="8.194" r="8.194" transform="translate(211.472 108.984)" fill="#61dafb"/>
|
||||
<path id="Path_332" data-name="Path 332" d="M520.5,78.1Z" transform="translate(-282.975 -0.082)" fill="#61dafb"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 35 KiB |
40
memora-docs/static/img/undraw_docusaurus_tree.svg
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="1129" height="663" viewBox="0 0 1129 663">
|
||||
<title>Focus on What Matters</title>
|
||||
<circle cx="321" cy="321" r="321" fill="#f2f2f2" />
|
||||
<ellipse cx="559" cy="635.49998" rx="514" ry="27.50002" fill="#3f3d56" />
|
||||
<ellipse cx="558" cy="627" rx="460" ry="22" opacity="0.2" />
|
||||
<rect x="131" y="152.5" width="840" height="50" fill="#3f3d56" />
|
||||
<path d="M166.5,727.3299A21.67009,21.67009,0,0,0,188.1701,749H984.8299A21.67009,21.67009,0,0,0,1006.5,727.3299V296h-840Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
|
||||
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
|
||||
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" opacity="0.2" />
|
||||
<circle cx="181" cy="147.5" r="13" fill="#3f3d56" />
|
||||
<circle cx="217" cy="147.5" r="13" fill="#3f3d56" />
|
||||
<circle cx="253" cy="147.5" r="13" fill="#3f3d56" />
|
||||
<rect x="168" y="213.5" width="337" height="386" rx="5.33505" fill="#606060" />
|
||||
<rect x="603" y="272.5" width="284" height="22" rx="5.47638" fill="#2e8555" />
|
||||
<rect x="537" y="352.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
||||
<rect x="537" y="396.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
||||
<rect x="537" y="440.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
||||
<rect x="537" y="484.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
|
||||
<rect x="865" y="552.5" width="88" height="26" rx="7.02756" fill="#3ecc5f" />
|
||||
<path d="M1088.60287,624.61594a30.11371,30.11371,0,0,0,3.98291-15.266c0-13.79652-8.54358-24.98081-19.08256-24.98081s-19.08256,11.18429-19.08256,24.98081a30.11411,30.11411,0,0,0,3.98291,15.266,31.248,31.248,0,0,0,0,30.53213,31.248,31.248,0,0,0,0,30.53208,31.248,31.248,0,0,0,0,30.53208,30.11408,30.11408,0,0,0-3.98291,15.266c0,13.79652,8.54353,24.98081,19.08256,24.98081s19.08256-11.18429,19.08256-24.98081a30.11368,30.11368,0,0,0-3.98291-15.266,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53213Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
|
||||
<ellipse cx="1038.00321" cy="460.31783" rx="19.08256" ry="24.9808" fill="#3f3d56" />
|
||||
<ellipse cx="1038.00321" cy="429.78574" rx="19.08256" ry="24.9808" fill="#3f3d56" />
|
||||
<path d="M1144.93871,339.34489a91.61081,91.61081,0,0,0,7.10658-10.46092l-50.141-8.23491,54.22885.4033a91.566,91.566,0,0,0,1.74556-72.42605l-72.75449,37.74139,67.09658-49.32086a91.41255,91.41255,0,1,0-150.971,102.29805,91.45842,91.45842,0,0,0-10.42451,16.66946l65.0866,33.81447-69.40046-23.292a91.46011,91.46011,0,0,0,14.73837,85.83669,91.40575,91.40575,0,1,0,143.68892,0,91.41808,91.41808,0,0,0,0-113.02862Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
||||
<path d="M981.6885,395.8592a91.01343,91.01343,0,0,0,19.56129,56.51431,91.40575,91.40575,0,1,0,143.68892,0C1157.18982,436.82067,981.6885,385.60008,981.6885,395.8592Z" transform="translate(-35.5 -118.5)" opacity="0.1" />
|
||||
<path d="M365.62,461.43628H477.094v45.12043H365.62Z" transform="translate(-35.5 -118.5)" fill="#fff" fill-rule="evenodd" />
|
||||
<path d="M264.76252,608.74122a26.50931,26.50931,0,0,1-22.96231-13.27072,26.50976,26.50976,0,0,0,22.96231,39.81215H291.304V608.74122Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
||||
<path d="M384.17242,468.57061l92.92155-5.80726V449.49263a26.54091,26.54091,0,0,0-26.54143-26.54143H331.1161l-3.31768-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622-3.31767-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622L301.257,417.205a3.83043,3.83043,0,0,0-6.63536,0L291.304,422.9512c-.02919,0-.05573.004-.08625.004l-5.49674-5.49541a3.8293,3.8293,0,0,0-6.4071,1.71723l-1.81676,6.77338L270.607,424.1031a3.82993,3.82993,0,0,0-4.6912,4.69253l1.84463,6.89148-6.77072,1.81411a3.8315,3.8315,0,0,0-1.71988,6.40975l5.49673,5.49673c0,.02787-.004.05574-.004.08493l-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74621,3.31768L259.0163,466.081a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768L259.0163,558.976a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768A26.54091,26.54091,0,0,0,291.304,635.28265H450.55254A26.5409,26.5409,0,0,0,477.094,608.74122V502.5755l-92.92155-5.80727a14.12639,14.12639,0,0,1,0-28.19762" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
||||
<path d="M424.01111,635.28265h39.81214V582.19979H424.01111Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
||||
<path d="M490.36468,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15393-.59852A6.62668,6.62668,0,1,0,482.80568,590.21q-.2203-.22491-.44457-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39414-.10218-.59056-.15262a6.63957,6.63957,0,1,0-13.10086,0c-.1964.05042-.39414.09687-.59056.15262a6.62767,6.62767,0,1,0-11.39688,6.56369,26.52754,26.52754,0,1,0,44.23127,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
||||
<path d="M437.28182,555.65836H477.094V529.11693H437.28182Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
||||
<path d="M490.36468,545.70532a3.31768,3.31768,0,0,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
||||
<path d="M317.84538,466.081a3.31768,3.31768,0,0,1-3.31767-3.31768,9.953,9.953,0,1,0-19.90608,0,3.31768,3.31768,0,1,1-6.63535,0,16.58839,16.58839,0,1,1,33.17678,0,3.31768,3.31768,0,0,1-3.31768,3.31768" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
|
||||
<path d="M370.92825,635.28265h79.62429A26.5409,26.5409,0,0,0,477.094,608.74122v-92.895H397.46968a26.54091,26.54091,0,0,0-26.54143,26.54143Z" transform="translate(-35.5 -118.5)" fill="#ffff50" fill-rule="evenodd" />
|
||||
<path d="M457.21444,556.98543H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0-66.10674H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.29459H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414M477.094,474.19076c-.01592,0-.0292-.008-.04512-.00663-4.10064.13934-6.04083,4.24132-7.75274,7.86024-1.78623,3.78215-3.16771,6.24122-5.43171,6.16691-2.50685-.09024-3.94007-2.92222-5.45825-5.91874-1.74377-3.44243-3.73438-7.34667-7.91333-7.20069-4.04227.138-5.98907,3.70784-7.70631,6.857-1.82738,3.35484-3.07084,5.39455-5.46887,5.30033-2.55727-.09289-3.91619-2.39536-5.48877-5.06013-1.75306-2.96733-3.77951-6.30359-7.8775-6.18946-3.97326.13669-5.92537,3.16507-7.64791,5.83912-1.82207,2.82666-3.09872,4.5492-5.52725,4.447-2.61832-.09289-3.9706-2.00388-5.53522-4.21611-1.757-2.4856-3.737-5.299-7.82308-5.16231-3.88567.13271-5.83779,2.61434-7.559,4.80135-1.635,2.07555-2.9116,3.71846-5.61218,3.615a1.32793,1.32793,0,1,0-.09555,2.65414c4.00377.134,6.03154-2.38873,7.79257-4.6275,1.562-1.9853,2.91027-3.69855,5.56441-3.78879,2.55594-.10882,3.75429,1.47968,5.56707,4.04093,1.7212,2.43385,3.67465,5.19416,7.60545,5.33616,4.11789.138,6.09921-2.93946,7.8536-5.66261,1.56861-2.43385,2.92221-4.53461,5.50734-4.62352,2.37944-.08892,3.67466,1.79154,5.50072,4.885,1.72121,2.91557,3.67069,6.21865,7.67977,6.36463,4.14709.14332,6.14965-3.47693,7.89475-6.68181,1.51155-2.77092,2.93814-5.38791,5.46621-5.4755,2.37944-.05573,3.62025,2.11668,5.45558,5.74622,1.71459,3.388,3.65875,7.22591,7.73019,7.37321l.22429.004c4.06614,0,5.99571-4.08074,7.70364-7.68905,1.51154-3.19825,2.94211-6.21069,5.3972-6.33411Z" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
|
||||
<path d="M344.38682,635.28265h53.08286V582.19979H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
||||
<path d="M424.01111,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15394-.59852A6.62667,6.62667,0,1,0,416.45211,590.21q-.2203-.22491-.44458-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39413-.10218-.59054-.15262a6.63957,6.63957,0,1,0-13.10084,0c-.19641.05042-.39414.09687-.59055.15262a6.62767,6.62767,0,1,0-11.39689,6.56369,26.52755,26.52755,0,1,0,44.2313,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
||||
<path d="M344.38682,555.65836h53.08286V529.11693H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
|
||||
<path d="M410.74039,545.70532a3.31768,3.31768,0,1,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
|
||||
<path d="M424.01111,447.8338a3.60349,3.60349,0,0,1-.65028-.06636,3.34415,3.34415,0,0,1-.62372-.18579,3.44679,3.44679,0,0,1-.572-.30522,5.02708,5.02708,0,0,1-.50429-.4114,3.88726,3.88726,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.60248,3.60248,0,0,1,.06636-.65027,3.82638,3.82638,0,0,1,.18447-.62373,3.48858,3.48858,0,0,1,.30656-.57064,3.197,3.197,0,0,1,.91436-.91568,3.44685,3.44685,0,0,1,.572-.30523,3.344,3.344,0,0,1,.62372-.18578,3.06907,3.06907,0,0,1,1.30053,0,3.22332,3.22332,0,0,1,1.19436.491,5.02835,5.02835,0,0,1,.50429.41139,4.8801,4.8801,0,0,1,.41139.50429,3.38246,3.38246,0,0,1,.30522.57064,3.47806,3.47806,0,0,1,.25215,1.274A3.36394,3.36394,0,0,1,426.36,446.865a5.02708,5.02708,0,0,1-.50429.4114,3.3057,3.3057,0,0,1-1.84463.55737m26.54143-1.65884a3.38754,3.38754,0,0,1-2.35024-.96877,5.04185,5.04185,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.38659,3.38659,0,0,1,.96744-2.34892,5.02559,5.02559,0,0,1,.50429-.41139,3.44685,3.44685,0,0,1,.572-.30523,3.3432,3.3432,0,0,1,.62373-.18579,3.06952,3.06952,0,0,1,1.30052,0,3.22356,3.22356,0,0,1,1.19436.491,5.02559,5.02559,0,0,1,.50429.41139,3.38792,3.38792,0,0,1,.96876,2.34892,3.72635,3.72635,0,0,1-.06636.65026,3.37387,3.37387,0,0,1-.18579.62373,4.71469,4.71469,0,0,1-.30522.57064,4.8801,4.8801,0,0,1-.41139.50429,5.02559,5.02559,0,0,1-.50429.41139,3.30547,3.30547,0,0,1-1.84463.55737" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
8
memora-docs/tsconfig.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
// This file is not used in compilation. It is here just for a nice editor experience.
|
||||
"extends": "@docusaurus/tsconfig",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "."
|
||||
},
|
||||
"exclude": [".docusaurus", "build"]
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
"""add metadata to memory_units
|
||||
|
||||
Revision ID: 4a8b3c5d6e7f
|
||||
Revises: 217b2227771f
|
||||
Create Date: 2025-11-21 10:00:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '4a8b3c5d6e7f'
|
||||
down_revision: Union[str, Sequence[str], None] = '217b2227771f'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Add metadata column to memory_units table."""
|
||||
op.add_column(
|
||||
'memory_units',
|
||||
sa.Column('metadata', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False)
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Remove metadata column from memory_units table."""
|
||||
op.drop_column('memory_units', 'metadata')
|
||||