28219e00e7
Prevents users from having to re-authorize Astrolabe after periods of inactivity by proactively refreshing OAuth tokens before they expire. Changes: - Add RefreshUserTokens background job that runs every 15 minutes - Add on-demand token refresh in SemanticSearchProvider (Unified Search) - Store issued_at timestamp for accurate token lifetime calculation - Add getAllUsersWithTokens() to query users needing refresh The job dynamically calculates refresh threshold based on actual token lifetime (50% remaining), working with any IdP (Nextcloud OIDC, Keycloak, etc.) rather than relying on IdP-specific configuration. Closes #510 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
64 lines
3.1 KiB
XML
64 lines
3.1 KiB
XML
<?xml version="1.0"?>
|
|
<info xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
|
|
<id>astrolabe</id>
|
|
<name>Astrolabe</name>
|
|
<summary>AI-powered semantic search across your Nextcloud</summary>
|
|
<description>< for configuration details.
|
|
]]></description>
|
|
<version>0.9.0</version>
|
|
<licence>agpl</licence>
|
|
<author homepage="https://github.com/cbcoutinho">Chris Coutinho</author>
|
|
<namespace>Astrolabe</namespace>
|
|
<category>ai</category>
|
|
<bugs>https://github.com/cbcoutinho/nextcloud-mcp-server/issues</bugs>
|
|
<repository type="git">https://github.com/cbcoutinho/nextcloud-mcp-server</repository>
|
|
<screenshot>https://github.com/cbcoutinho/nextcloud-mcp-server/blob/master/third_party/astrolabe/screenshots/02-semantic-search-with-plot.png?raw=1</screenshot>
|
|
<screenshot>https://github.com/cbcoutinho/nextcloud-mcp-server/blob/master/third_party/astrolabe/screenshots/01-unified-search-astrolabe.png?raw=1</screenshot>
|
|
<screenshot>https://github.com/cbcoutinho/nextcloud-mcp-server/blob/master/third_party/astrolabe/screenshots/03-chunk-viewer-open.png?raw=1</screenshot>
|
|
<dependencies>
|
|
<nextcloud min-version="31" max-version="32"/>
|
|
</dependencies>
|
|
<settings>
|
|
<personal>OCA\Astrolabe\Settings\Personal</personal>
|
|
<personal-section>OCA\Astrolabe\Settings\PersonalSection</personal-section>
|
|
<admin>OCA\Astrolabe\Settings\Admin</admin>
|
|
<admin-section>OCA\Astrolabe\Settings\AdminSection</admin-section>
|
|
</settings>
|
|
<navigations>
|
|
<navigation>
|
|
<id>astrolabe</id>
|
|
<name>Astrolabe</name>
|
|
<route>astrolabe.page.index</route>
|
|
<icon>app.svg</icon>
|
|
<type>link</type>
|
|
</navigation>
|
|
</navigations>
|
|
<background-jobs>
|
|
<job>OCA\Astrolabe\BackgroundJob\RefreshUserTokens</job>
|
|
</background-jobs>
|
|
</info>
|