Skip to content

Commit e07dce7

Browse files
authored
Merge branch 'master' into dependabot/pip/master/packaging-25.0
Signed-off-by: rakekniven <[email protected]>
2 parents 6c373a0 + 497e836 commit e07dce7

File tree

1,089 files changed

+35878
-89481
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,089 files changed

+35878
-89481
lines changed

.github/workflows/openapi.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
submodules: true
2121

2222
- name: Set up php
23-
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2
23+
uses: shivammathur/setup-php@ccf2c627fe61b1b4d924adfcbd19d661a18133a0 # v2
2424
with:
2525
php-version: '8.1'
2626
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation

README.rst

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,17 @@ Using venv
143143
5. Now you can use ``make ...`` to build all the stuff - for example ``make html`` to build the HTML flavor of all manuals
144144
The build assets will be put into the individual documentation subdirectories like ``developer_manual/_build/html/com``
145145

146+
Building translated versions
147+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
148+
149+
Only available in user_manual:
150+
151+
1. Build the english version as described above before
152+
2. Create translation files: ``../build/change_file_extension.sh``
153+
3. Create German (``de``) version: ``make html-lang-de``
154+
4. Find the HTML files in ``_build/html/de/index.html``
155+
5. Before building another language you have to delete the complete ``_build`` directory
156+
146157
Autobuilding
147158
^^^^^^^^^^^^
148159

@@ -157,6 +168,27 @@ When editing the documentation installing ``sphinx-autobuild`` though pip can be
157168
Building PDF
158169
============
159170

171+
Building inside docker
172+
^^^^^^^^^^^^^^^^^^^^^^
173+
174+
1. Create a docker:: ``docker run --platform linux/amd64 --volume .:/docs --interactive --tty --name nextcloud-docs ghcr.io/nextcloud/continuous-integration-documentation:documentation-15 bash``
175+
2. Change into the documentation directory: ``cd /docs``
176+
3. Only once: Create a venv: ``python -m venv venv``
177+
4. Activate the environment: ``source venv/bin/activate``
178+
5. Install the dependencies ``pip install -r requirements.txt``
179+
6. Change into the documentation of choice (admin, developer, user): ``cd /docs/user_manual``
180+
7. To build the English version: ``make latexpdf``
181+
8. To build the translated version (only available in user_manual):
182+
1. Create translation files: ``../build/change_file_extension.sh``
183+
2. Create German (``de``) version: ``make latexpdf-lang-de``
184+
3. Find the file in ``_build/latex/Nextcloud_User_Manual.pdf``
185+
4. Before building another language you have to delete the complete ``_build`` directory
186+
187+
Building locally
188+
^^^^^^^^^^^^^^^^
189+
190+
.. note:: Because of the many dependencies LaTeX and the other tools bring in, it is not recommended to install the tools locally.
191+
160192
1. Follow instructions for "Building HTML" above
161193
2. Install ``latexmk`` and ``texlive-latex-extra`` - https://pipenv.readthedocs.io/en/latest/
162194
3. Create a Python environment (typically inside this repository): ``pipenv --python 3.9``

admin_manual/_templates/versions.html

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,22 @@
22
{# Add rst-badge after rst-versions for small badge style. #}
33
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
44
<span class="rst-current-version" data-toggle="rst-current-version">
5-
<span class="fa fa-book"> Read the Docs</span>
6-
v: {{ current_version }}
5+
☁️ {{ current_version }}
76
<span class="fa fa-caret-down"></span>
87
</span>
98
<div class="rst-other-versions">
109
<dl>
11-
<dt>{{ _('Versions') }}</dt>
12-
{% for slug, url in versions %}
13-
<dd><a href="{{ url }}">{{ slug }}</a></dd>
10+
<dt>☁️ {{ _('Versions') }}</dt>
11+
{% for slug, url in versions|reverse %}
12+
<dd style="width: 32%">
13+
<a href="{{ url }}"
14+
{% if current_version == slug %}
15+
style="color: var(--dark-link-color);"
16+
{% endif %}
17+
>
18+
{{ slug }}
19+
</a>
20+
</dd>
1421
{% endfor %}
1522
</dl>
1623
</div>

admin_manual/ai/app_assistant.rst

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,8 @@ These apps currently implement the following Assistant Tasks:
7474
* *Summarize* (Tested with OpenAI GPT-3.5 and Llama 3.1 8B)
7575
* *Generate headline* (Tested with OpenAI GPT-3.5 and Llama 3.1 8B)
7676
* *Extract topics* (Tested with OpenAI GPT-3.5 and Llama 3.1 8B)
77-
78-
Additionally, *integration_openai* also implements the following Assistant Tasks:
79-
80-
* *Context write* (Tested with OpenAI GPT-3.5)
81-
* *Reformulate text* (Tested with OpenAI GPT-3.5)
77+
* *Context write* (Tested with OpenAI GPT-3.5 and Llama 3.1 8B)
78+
* *Reformulate text* (Tested with OpenAI GPT-3.5 and Llama 3.1 8B)
8279

8380
These tasks may work with other models, but we can give no guarantees.
8481

@@ -98,7 +95,7 @@ In order to make use of our special Context Chat feature, offering in-context in
9895

9996
* :ref:`context_chat + context_chat_backend<ai-app-context_chat>` - (Customer support available upon request)
10097

101-
You will also need a text processing provider as specified above (ie. llm2 or integration_openai).
98+
You will also need a text processing provider as specified above (ie. llm2, integration_openai or integration_watsonx).
10299

103100
Context Agent
104101
~~~~~~~~~~~~~
@@ -117,6 +114,7 @@ Text-To-Speech
117114
In order to make use of Text-To-Speech, you will need an app that provides a Text-To-Speech backend:
118115

119116
* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
117+
* *text2speech_kokoro* - Runs a local model
120118

121119
Configuration
122120
-------------

admin_manual/ai/app_context_agent.rst

Lines changed: 97 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,30 @@ App: Context Agent (context_agent)
77
The *context_agent* app is the app that provides AI agent functionality in Nextcloud and acts as a backend for the :ref:`Nextcloud Assistant app<ai-app-assistant>`. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities.
88

99
When the Context Agent app is installed the AI Chat in Nextcloud Assistant will be able to interact with your Nextcloud apps via virtual integrations that are called "tools". They allow the Assistant to perform actions in your Nextcloud upon sending instructions in a chat message.
10+
Tool groups are only available if their requirements are met. They can be en- and disabled in the AI admin settings.
1011

1112
Currently implemented tools:
1213

1314
* List the user's calendars
1415

1516
* Example prompt: *"List my calendars"*
1617

17-
* List the user's talk conversations
18+
* List the user's talk conversations (requires `Talk <https://apps.nextcloud.com/apps/spreed>`_)
1819

1920
* Example prompt: *"List my talk conversations"*
2021

21-
* List messages in a talk conversation
22+
* List messages in a talk conversation (requires `Talk <https://apps.nextcloud.com/apps/spreed>`_)
2223

2324
* Example prompt: *"List the latest messages in my conversation with Andrew"*
2425

26+
* Send a message to a talk conversation (requires `Talk <https://apps.nextcloud.com/apps/spreed>`_)
27+
28+
* Example prompt: *"Can you send a joke to Andrew in talk?"*
29+
30+
* Create a public talk conversation (requires `Talk <https://apps.nextcloud.com/apps/spreed>`_)
31+
32+
* Example prompt: *"Can you create a new public talk conversation titled 'Press conference'?"*
33+
2534
* Find a person in the user's contacts
2635

2736
* Example prompt: *"What is Andrew's Email address?"*
@@ -30,31 +39,49 @@ Currently implemented tools:
3039

3140
* Example prompt: *"Where do I live?"*
3241

33-
* Ask a question to context chat
42+
* Ask a question to context chat (requires :ref:`Context Chat<ai-app-context_chat>`)
3443

3544
* Example prompt: *"What is the company's sick leave process?"*
3645

46+
* Transcribe a media file (requires Transcribe audio task type enabled)
47+
48+
* Example prompt: *"Can you transcribe the following file? https://mycloud.com/f/9825679"* (Can be selected via smart picker.)
49+
50+
* Generate documents (requires `Nextcloud Office <https://apps.nextcloud.com/apps/richdocuments>`_)
51+
52+
* Example prompt: *"Can you generate me a slide deck for my presentation about cats?"*
53+
* Example prompt: *"Can you generate me a spreadsheet with some plausible numbers for countries and their population count?"*
54+
* Example prompt: *"Can you generate me a pdf with an outline about what to see in Berlin?"*
55+
56+
* Generate images (requires Image generation task type enabled)
57+
58+
* Example prompt: *"Can you generate me an image of a cartoon drawing of a roman soldier typing something on a laptop?"*
59+
3760
* Get coordinates for an Address from Open Street Maps Nomatim
3861

39-
* Example prompt: *"List my calendars"*
62+
* Example prompt: *"What are the coordinates for Berlin, Germany?"*
63+
64+
* Get the URL for a map of a location using Open Street Maps
65+
66+
* Example prompt: *"Can you show me a map of New York, please"*
4067

4168
* Get the current weather at a location
4269

4370
* Example prompt: *"How is the weather in Berlin?"*
4471

4572
* Schedule an event in the user's calendar
4673

47-
* Example prompt: *"Make schedule an event with Andrew tomorrow at noon."*
74+
* Example prompt: *"Schedule an event with Andrew tomorrow at noon."*
4875

49-
* Send a message to a talk conversation
76+
* Find free times in users' calendar
5077

51-
* Example prompt: *"Can you send a joke to Andrew in talk?"*
78+
* Example prompt: *"Find a free 1-hour slot for a meeting with me and Marco next week."*
5279

53-
* Create a deck card
80+
* Create a deck card (requires `Deck <https://apps.nextcloud.com/apps/deck>`_)
5481

5582
* Example prompt: *"Create a deck card for 'Buy Groceries' in my Personal board."*
5683

57-
* Access information in deck boards
84+
* Access information in deck boards (requires `Deck <https://apps.nextcloud.com/apps/deck>`_)
5885

5986
* Example prompt: *"Which deck cards are currently in the To do list in my Personal board?"*
6087

@@ -66,10 +93,41 @@ Currently implemented tools:
6693

6794
* Example prompt: *"Show me the youtube video of the Nextcloud hub 10 launch."*
6895

69-
* Send an email via Nextcloud Mail
96+
* Search Duckduckgo
97+
98+
* Example prompt: *"Show me search results for quick pasta recipes, please."*
99+
100+
* Send an email via Nextcloud Mail (requires `Mail <https://apps.nextcloud.com/apps/mail>`_)
101+
102+
* Example prompt: *"Send a test email from my [email protected] account to [email protected]"*
103+
104+
* Get contents of a file
105+
106+
* Example prompt: *"Can you summarize the following file in my documents? Design/Planning.md"*
107+
108+
* Generate a public share link for a file
109+
110+
* Example prompt: *"Can create a share link for the following file in my documents? Design/Planning.md"*
111+
112+
* Get the folder tree of the user's files
113+
114+
* Example prompt: *"Can you show me the folder tree of my files?"*
115+
116+
* Determine public transport routes (requires a `HERE <https://www.here.com/>`_ API key configured in the admin settings)
117+
118+
* Example prompt: *"How can I get from Würzburg Hauptbahnhof to Berlin Hauptbahnhof?"*
119+
120+
* List all projects in OpenProject (requires the `OpenProject integration <https://apps.nextcloud.com/apps/integration_openproject>`_)
121+
122+
* Example prompt: *"List all my projects in OpenProject, please"*
123+
124+
* List all available assignees of a project in OpenProject (requires the `OpenProject integration <https://apps.nextcloud.com/apps/integration_openproject>`_)
125+
126+
* Example prompt: *"List all available assignees for the 'Product launch' project in OpenProject"*
127+
128+
* Create a new work package in a given project in OpenProject (requires the `OpenProject integration <https://apps.nextcloud.com/apps/integration_openproject>`_)
129+
* Example prompt: *"Create a work package called 'Publish release video' in the 'Product launch' project in OpenProject"*
70130

71-
* Example prompt *"Send a test email from [email protected] to [email protected] from my account with id 12"*
72-
* (The account ID will soon be irrelevant)
73131

74132
These tools can also be combined by the agent to fulfil tasks like the following:
75133

@@ -85,6 +143,21 @@ These tools can also be combined by the agent to fulfil tasks like the following
85143

86144
* Uses contacts to look up Andrew's email and then sends an email
87145

146+
Custom Tools using MCP
147+
-----------------------
148+
149+
Model Context Protocol (MCP) is a protocol that enables Large Language Models (LLMs) to interact with external data sources and tools.
150+
The Context Agent app allows administrators to extend its capabilities by adding custom services via MCP. This can be configured in the admin settings under "MCP Config," where you can provide a JSON configuration in the following format:
151+
152+
.. code-block:: json
153+
154+
{
155+
"service-name": {
156+
"url": "https://service-url.com/endpoint",
157+
"transport": "streamable_http"
158+
}
159+
}
160+
88161
Requirements
89162
------------
90163

@@ -118,6 +191,13 @@ Other models that may give good results are:
118191

119192
See :ref:`llm2 documentation <ai-app-llm2>` on how to configure alternate models.
120193

194+
Using Nextcloud MCP Server
195+
--------------------------
196+
197+
Context Agent exposes an MCP server that can be used by other large language models or applications to access the tools provided by Context Agent.
198+
The server will be available at `https://your-nextcloud-domain.com/index.php/apps/app_api/proxy/context_agent/mcp/`, and
199+
it requires authentication via an app password passed in the `Authorization` header. Ex: `Authorization: Bearer <app-password>`.
200+
121201
Scaling
122202
-------
123203

@@ -139,4 +219,8 @@ Known Limitations
139219
-----------------
140220
* Make sure to test the language model you are using in concert with this app for whether they meet the use-case's quality requirements
141221
* Most models have difficulties with languages other than English. Some sometimes answer in another language than used by the user.
142-
* Customer support is available upon request, however we can't solve false or problematic output, most performance issues, or other problems caused by the underlying model. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI)
222+
* Customer support is available upon request, however we can't solve false or problematic output, most performance issues, or other problems caused by the underlying model.
223+
Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI). We still try to optimize this as far as possible, so if you encounter any false or problematic output, you can report it `in a dedicated Github issue <https://github.com/nextcloud/context_agent/issues/51>`_ to help us improve this app.
224+
* When multiple MCP services are configured that have tools with the same name undefined behavior will occur.
225+
* Only remote MCP services are supported (streamable_http transport).
226+
* MCP services that require different access tokens for each user are not currently supported.

0 commit comments

Comments
 (0)