Plugin Directory

Changeset 3798534


Ignore:
Timestamp:
11/12/2026 02:39:05 PM (13 hours ago)
Author:
xplicator
Message:

Release 2.3.2

Location:
knowscapes-ai-client
Files:
2 added
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • knowscapes-ai-client/tags/2.3.2/assets/js/admin.js

    r3758580 r3798534  
    425425        } );
    426426} )();
     427
     428/**
     429 * Follows the build of the connected site's assistant until it is ready or
     430 * needs attention. Reads through the plugin's own admin route, so no key
     431 * reaches the browser.
     432 */
     433( function () {
     434        'use strict';
     435
     436        var cfg = window.knowscapesAIClientAdmin;
     437        var box = document.getElementById( 'ksaic-connect-status' );
     438        if ( ! cfg || ! box || ! cfg.statusUrl ) {
     439                return;
     440        }
     441        var t = cfg.connectI18n;
     442
     443        function show( text, link ) {
     444                var p = document.createElement( 'p' );
     445                p.textContent = text;
     446                if ( link ) {
     447                        var a = document.createElement( 'a' );
     448                        a.href = link;
     449                        a.target = '_blank';
     450                        a.rel = 'noopener noreferrer';
     451                        a.textContent = t.configure;
     452                        p.appendChild( document.createTextNode( ' ' ) );
     453                        p.appendChild( a );
     454                }
     455                box.replaceChildren( p );
     456        }
     457
     458        function describe( s ) {
     459                if ( 'ready' === s.state ) {
     460                        return t.ready.replace( '%d', s.indexed );
     461                }
     462                if ( 'attention' === s.state ) {
     463                        return t[ s.reason ] || t.attention;
     464                }
     465                if ( 'indexing' === s.state ) {
     466                        return t.indexing.replace( '%1$d', s.indexed ).replace( '%2$d', s.total );
     467                }
     468                return t[ s.state ] || t.reading;
     469        }
     470
     471        function poll() {
     472                fetch( cfg.statusUrl, {
     473                        headers: { 'X-WP-Nonce': cfg.nonce },
     474                        credentials: 'same-origin',
     475                } )
     476                        .then( function ( r ) {
     477                                if ( 404 === r.status ) {
     478                                        show( t.notConnected );
     479                                        return null;
     480                                }
     481                                if ( ! r.ok ) {
     482                                        throw new Error( String( r.status ) );
     483                                }
     484                                return r.json();
     485                        } )
     486                        .then( function ( s ) {
     487                                if ( ! s ) {
     488                                        return;
     489                                }
     490                                var settled = 'ready' === s.state || 'attention' === s.state;
     491                                show( describe( s ), settled ? s.configure_url : null );
     492                                if ( ! settled ) {
     493                                        setTimeout( poll, 5000 );
     494                                }
     495                        } )
     496                        .catch( function () {
     497                                show( t.unavailable );
     498                                setTimeout( poll, 15000 );
     499                        } );
     500        }
     501
     502        poll();
     503} )();
  • knowscapes-ai-client/tags/2.3.2/includes/class-free-key.php

    r3758580 r3798534  
    270270                // there is nothing left to choose and the next step is simply consenting and
    271271                // switching the widget on. A failure here is not a failure of the claim.
    272                 $this->redirect( $this->ensure_model() ? 'claimed_ready' : 'claimed' );
     272                $this->redirect( self::ensure_model() ? 'claimed_ready' : 'claimed' );
    273273        }
    274274
    … …  
    278278         * @return bool True when an agent is now set, however it got there.
    279279         */
    280         private function ensure_model() {
     280        public static function ensure_model() {
    281281                $settings = knowscapes_ai_client_get_settings();
    282282
  • knowscapes-ai-client/tags/2.3.2/includes/class-providers.php

    r3758580 r3798534  
    132132         */
    133133        public static function base_url( $provider, $custom_base_url = '' ) {
     134                // Development only: wp-config.php can point both KnowScapes entries at a
     135                // local backend. Plain http is accepted here because only someone who can
     136                // edit wp-config.php can set it.
     137                if ( defined( 'KNOWSCAPES_AI_CLIENT_API_URL' ) && in_array( $provider, array( 'knowscapes', 'knowscapes_paid' ), true ) ) {
     138                        return untrailingslashit( (string) KNOWSCAPES_AI_CLIENT_API_URL );
     139                }
     140
    134141                $definition = self::get( $provider );
    135142
  • knowscapes-ai-client/tags/2.3.2/includes/class-settings.php

    r3758580 r3798534  
    364364                $out['widget_enabled'] = ! empty( $input['widget_enabled'] ) && $out['consent'];
    365365
     366                // Set only by the connect flow's programmatic write; a form save keeps it.
     367                if ( isset( $input['connected'] ) ) {
     368                        $out['connected'] = (bool) $input['connected'];
     369                } elseif ( ( $out['api_keys']['knowscapes'] ?? '' ) !== ( $current['api_keys']['knowscapes'] ?? '' ) ) {
     370                        // A key installed by hand or by the e-mail link is not a connected account.
     371                        $out['connected'] = false;
     372                }
    366373                unset( $out['api_key'], $out['backend_url'], $out['agent_id'], $out['agent_label'], $out['_ts'] );
    367374
    … …  
    401408                                'restUrl'   => esc_url_raw( rest_url( KnowScapes_AI_Client_REST_Proxy::REST_NS . '/models' ) ),
    402409                                'nonce'     => wp_create_nonce( 'wp_rest' ),
     410                                'statusUrl' => esc_url_raw( rest_url( KnowScapes_AI_Client_REST_Proxy::REST_NS . '/connect-status' ) ),
     411                                'connectI18n' => array(
     412                                        'reading'           => __( 'Reading the pages of your site…', 'knowscapes-ai-client' ),
     413                                        /* translators: 1: pages indexed so far, 2: pages found. */
     414                                        'indexing'          => __( 'Indexing pages: %1$d of %2$d.', 'knowscapes-ai-client' ),
     415                                        'finishing'         => __( 'Finishing the assistant…', 'knowscapes-ai-client' ),
     416                                        /* translators: %d: number of pages indexed. */
     417                                        'ready'             => __( 'Your assistant is ready. %d pages indexed.', 'knowscapes-ai-client' ),
     418                                        'attention'         => __( 'The assistant needs your attention.', 'knowscapes-ai-client' ),
     419                                        'no_pages'          => __( 'No pages could be read from your site. Check that it is public and not behind a password page.', 'knowscapes-ai-client' ),
     420                                        'source_error'      => __( 'Reading your site failed.', 'knowscapes-ai-client' ),
     421                                        'processing_failed' => __( 'Building the assistant failed.', 'knowscapes-ai-client' ),
     422                                        'unavailable'       => __( 'Progress is unavailable right now. Retrying…', 'knowscapes-ai-client' ),
     423                                        'configure'         => __( 'Open in KnowScapes', 'knowscapes-ai-client' ),
     424                                        'notConnected'      => __( 'No assistant is linked to this key yet. Pick the agent above and save, or reconnect.', 'knowscapes-ai-client' ),
     425                                ),
    403426                                'providers' => KnowScapes_AI_Client_Providers::all(),
    404427                                // Booleans only. No key material is ever sent to the browser, not
    … …  
    574597
    575598                                        <?php $this->render_key_request_row( $settings, '' !== $stored_key ); ?>
     599                                        <?php if ( KnowScapes_AI_Client_Connect::available( $settings ) ) : ?>
     600                                                <tr>
     601                                                        <th scope="row"><?php esc_html_e( 'KnowScapes account', 'knowscapes-ai-client' ); ?></th>
     602                                                        <td>
     603                                                                <?php if ( ! empty( $settings['connected'] ) ) : ?>
     604                                                                        <div id="ksaic-connect-status" class="ksaic-connect-status" aria-live="polite">
     605                                                                                <p><?php esc_html_e( 'Loading progress…', 'knowscapes-ai-client' ); ?></p>
     606                                                                        </div>
     607                                                                <?php endif; ?>
     608                                                                <p>
     609                                                                        <a class="button button-secondary" href="<?php echo esc_url( KnowScapes_AI_Client_Connect::start_url() ); ?>">
     610                                                                                <?php
     611                                                                                empty( $settings['connected'] )
     612                                                                                        ? esc_html_e( 'Connect KnowScapes account', 'knowscapes-ai-client' )
     613                                                                                        : esc_html_e( 'Reconnect KnowScapes account', 'knowscapes-ai-client' );
     614                                                                                ?>
     615                                                                        </a>
     616                                                                </p>
     617                                                                <p class="description">
     618                                                                        <?php esc_html_e( 'Builds an assistant from the pages of this site in your own KnowScapes account and switches this plugin to it. The address of this site is sent to knowscapes.com when you connect.', 'knowscapes-ai-client' ); ?>
     619                                                                </p>
     620                                                        </td>
     621                                                </tr>
     622                                        <?php endif; ?>
    576623
    577624                                        <tr>
    … …  
    14771524
    14781525                $notice = KnowScapes_AI_Client_Free_Key::notice_for( $code, $query );
     1526                if ( null === $notice ) {
     1527                        $notice = KnowScapes_AI_Client_Connect::notice_for( $code );
     1528                }
    14791529
    14801530                if ( null === $notice ) {
  • knowscapes-ai-client/tags/2.3.2/knowscapes-ai-client.php

    r3758580 r3798534  
    44 * Plugin URI:        https://knowscapes.org/
    55 * Description:       AI chat for your site, as a floating launcher or a shortcode. Works with your own OpenAI, Anthropic or OpenRouter key, or with a free fair-use key from KnowScapes. API keys stay server-side and are never exposed to visitors.
    6  * Version:           2.3.1
     6 * Version:           2.3.2
    77 * Requires at least: 6.5
    88 * Requires PHP:      7.4
    … …  
    1818defined( 'ABSPATH' ) || exit;
    1919
    20 define( 'KNOWSCAPES_AI_CLIENT_VERSION', '2.3.1' );
     20define( 'KNOWSCAPES_AI_CLIENT_VERSION', '2.3.2' );
    2121
    2222/**
    … …  
    4646define( 'KNOWSCAPES_AI_CLIENT_OPTION', 'knowscapes_ai_client_settings' );
    4747
     48/**
     49 * Where the KnowScapes account site lives (the "Connect KnowScapes account"
     50 * consent page). Overridable in wp-config.php for development only.
     51 */
     52if ( ! defined( 'KNOWSCAPES_AI_CLIENT_ACCOUNT_URL' ) ) {
     53        define( 'KNOWSCAPES_AI_CLIENT_ACCOUNT_URL', 'https://knowscapes.com' );
     54}
     55
    4856require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-providers.php';
    4957require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-api-client.php';
    5058require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-context.php';
    5159require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-free-key.php';
     60require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-connect.php';
    5261require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-settings.php';
    5362require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-rate-limiter.php';
    … …  
    104113                'consent'         => false,
    105114                'widget_enabled'  => false,
     115                // True once the key came from "Connect KnowScapes account": the settings
     116                // screen then follows the build of the site's assistant.
     117                'connected'       => false,
    106118        );
    107119}
    … …  
    217229        new KnowScapes_AI_Client_Settings();
    218230        new KnowScapes_AI_Client_Free_Key();
     231        new KnowScapes_AI_Client_Connect();
    219232        new KnowScapes_AI_Client_REST_Proxy();
    220233        new KnowScapes_AI_Client_Widget();
  • knowscapes-ai-client/tags/2.3.2/readme.txt

    r3758580 r3798534  
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 2.3.1
     7Stable tag: 2.3.2
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    140140* Privacy policy: https://xplicator.com/legal-service-privacy/
    141141
     142= KnowScapes account connect (xplicator GmbH) =
     143
     144Used only when a free KnowScapes key is stored and you press **Connect
     145KnowScapes account**. It is never called automatically.
     146
     147* **What is sent:** your browser is sent to the KnowScapes account site with the address of this site and the address of this plugin's return page in your WordPress admin area. After you allow the connection there, this site sends a one-time code to KnowScapes and receives an API key for an assistant built from the public pages of this site. KnowScapes then reads those public pages to build it.
     148* **When:** once per press of the button; while the assistant is being built, the settings screen asks KnowScapes for its progress every few seconds, authorised with that key.
     149* **Endpoints:** `https://knowscapes.com/plugin/connect` (in your browser), `https://knowscapes.com/api/connect/exchange`, `https://knowscapes.com/api/connect/status/<agent>`
     150* **Stored locally:** the API key, as with any key you enter, and for ten minutes a random value that ties the return to the button press.
     151* Terms of use: https://xplicator.com/legal-terms-of-use/
     152* Privacy policy: https://xplicator.com/legal-service-privacy/
     153
    142154= OpenAI =
    143155
    … …  
    384396
    385397== Changelog ==
     398
     399= 2.3.2 =
     400* Added connection button for Knowscapes Platform
    386401
    387402= 2.3.1 =
  • knowscapes-ai-client/trunk/assets/js/admin.js

    r3758580 r3798534  
    425425        } );
    426426} )();
     427
     428/**
     429 * Follows the build of the connected site's assistant until it is ready or
     430 * needs attention. Reads through the plugin's own admin route, so no key
     431 * reaches the browser.
     432 */
     433( function () {
     434        'use strict';
     435
     436        var cfg = window.knowscapesAIClientAdmin;
     437        var box = document.getElementById( 'ksaic-connect-status' );
     438        if ( ! cfg || ! box || ! cfg.statusUrl ) {
     439                return;
     440        }
     441        var t = cfg.connectI18n;
     442
     443        function show( text, link ) {
     444                var p = document.createElement( 'p' );
     445                p.textContent = text;
     446                if ( link ) {
     447                        var a = document.createElement( 'a' );
     448                        a.href = link;
     449                        a.target = '_blank';
     450                        a.rel = 'noopener noreferrer';
     451                        a.textContent = t.configure;
     452                        p.appendChild( document.createTextNode( ' ' ) );
     453                        p.appendChild( a );
     454                }
     455                box.replaceChildren( p );
     456        }
     457
     458        function describe( s ) {
     459                if ( 'ready' === s.state ) {
     460                        return t.ready.replace( '%d', s.indexed );
     461                }
     462                if ( 'attention' === s.state ) {
     463                        return t[ s.reason ] || t.attention;
     464                }
     465                if ( 'indexing' === s.state ) {
     466                        return t.indexing.replace( '%1$d', s.indexed ).replace( '%2$d', s.total );
     467                }
     468                return t[ s.state ] || t.reading;
     469        }
     470
     471        function poll() {
     472                fetch( cfg.statusUrl, {
     473                        headers: { 'X-WP-Nonce': cfg.nonce },
     474                        credentials: 'same-origin',
     475                } )
     476                        .then( function ( r ) {
     477                                if ( 404 === r.status ) {
     478                                        show( t.notConnected );
     479                                        return null;
     480                                }
     481                                if ( ! r.ok ) {
     482                                        throw new Error( String( r.status ) );
     483                                }
     484                                return r.json();
     485                        } )
     486                        .then( function ( s ) {
     487                                if ( ! s ) {
     488                                        return;
     489                                }
     490                                var settled = 'ready' === s.state || 'attention' === s.state;
     491                                show( describe( s ), settled ? s.configure_url : null );
     492                                if ( ! settled ) {
     493                                        setTimeout( poll, 5000 );
     494                                }
     495                        } )
     496                        .catch( function () {
     497                                show( t.unavailable );
     498                                setTimeout( poll, 15000 );
     499                        } );
     500        }
     501
     502        poll();
     503} )();
  • knowscapes-ai-client/trunk/includes/class-free-key.php

    r3758580 r3798534  
    270270                // there is nothing left to choose and the next step is simply consenting and
    271271                // switching the widget on. A failure here is not a failure of the claim.
    272                 $this->redirect( $this->ensure_model() ? 'claimed_ready' : 'claimed' );
     272                $this->redirect( self::ensure_model() ? 'claimed_ready' : 'claimed' );
    273273        }
    274274
    … …  
    278278         * @return bool True when an agent is now set, however it got there.
    279279         */
    280         private function ensure_model() {
     280        public static function ensure_model() {
    281281                $settings = knowscapes_ai_client_get_settings();
    282282
  • knowscapes-ai-client/trunk/includes/class-providers.php

    r3758580 r3798534  
    132132         */
    133133        public static function base_url( $provider, $custom_base_url = '' ) {
     134                // Development only: wp-config.php can point both KnowScapes entries at a
     135                // local backend. Plain http is accepted here because only someone who can
     136                // edit wp-config.php can set it.
     137                if ( defined( 'KNOWSCAPES_AI_CLIENT_API_URL' ) && in_array( $provider, array( 'knowscapes', 'knowscapes_paid' ), true ) ) {
     138                        return untrailingslashit( (string) KNOWSCAPES_AI_CLIENT_API_URL );
     139                }
     140
    134141                $definition = self::get( $provider );
    135142
  • knowscapes-ai-client/trunk/includes/class-settings.php

    r3758580 r3798534  
    364364                $out['widget_enabled'] = ! empty( $input['widget_enabled'] ) && $out['consent'];
    365365
     366                // Set only by the connect flow's programmatic write; a form save keeps it.
     367                if ( isset( $input['connected'] ) ) {
     368                        $out['connected'] = (bool) $input['connected'];
     369                } elseif ( ( $out['api_keys']['knowscapes'] ?? '' ) !== ( $current['api_keys']['knowscapes'] ?? '' ) ) {
     370                        // A key installed by hand or by the e-mail link is not a connected account.
     371                        $out['connected'] = false;
     372                }
    366373                unset( $out['api_key'], $out['backend_url'], $out['agent_id'], $out['agent_label'], $out['_ts'] );
    367374
    … …  
    401408                                'restUrl'   => esc_url_raw( rest_url( KnowScapes_AI_Client_REST_Proxy::REST_NS . '/models' ) ),
    402409                                'nonce'     => wp_create_nonce( 'wp_rest' ),
     410                                'statusUrl' => esc_url_raw( rest_url( KnowScapes_AI_Client_REST_Proxy::REST_NS . '/connect-status' ) ),
     411                                'connectI18n' => array(
     412                                        'reading'           => __( 'Reading the pages of your site…', 'knowscapes-ai-client' ),
     413                                        /* translators: 1: pages indexed so far, 2: pages found. */
     414                                        'indexing'          => __( 'Indexing pages: %1$d of %2$d.', 'knowscapes-ai-client' ),
     415                                        'finishing'         => __( 'Finishing the assistant…', 'knowscapes-ai-client' ),
     416                                        /* translators: %d: number of pages indexed. */
     417                                        'ready'             => __( 'Your assistant is ready. %d pages indexed.', 'knowscapes-ai-client' ),
     418                                        'attention'         => __( 'The assistant needs your attention.', 'knowscapes-ai-client' ),
     419                                        'no_pages'          => __( 'No pages could be read from your site. Check that it is public and not behind a password page.', 'knowscapes-ai-client' ),
     420                                        'source_error'      => __( 'Reading your site failed.', 'knowscapes-ai-client' ),
     421                                        'processing_failed' => __( 'Building the assistant failed.', 'knowscapes-ai-client' ),
     422                                        'unavailable'       => __( 'Progress is unavailable right now. Retrying…', 'knowscapes-ai-client' ),
     423                                        'configure'         => __( 'Open in KnowScapes', 'knowscapes-ai-client' ),
     424                                        'notConnected'      => __( 'No assistant is linked to this key yet. Pick the agent above and save, or reconnect.', 'knowscapes-ai-client' ),
     425                                ),
    403426                                'providers' => KnowScapes_AI_Client_Providers::all(),
    404427                                // Booleans only. No key material is ever sent to the browser, not
    … …  
    574597
    575598                                        <?php $this->render_key_request_row( $settings, '' !== $stored_key ); ?>
     599                                        <?php if ( KnowScapes_AI_Client_Connect::available( $settings ) ) : ?>
     600                                                <tr>
     601                                                        <th scope="row"><?php esc_html_e( 'KnowScapes account', 'knowscapes-ai-client' ); ?></th>
     602                                                        <td>
     603                                                                <?php if ( ! empty( $settings['connected'] ) ) : ?>
     604                                                                        <div id="ksaic-connect-status" class="ksaic-connect-status" aria-live="polite">
     605                                                                                <p><?php esc_html_e( 'Loading progress…', 'knowscapes-ai-client' ); ?></p>
     606                                                                        </div>
     607                                                                <?php endif; ?>
     608                                                                <p>
     609                                                                        <a class="button button-secondary" href="<?php echo esc_url( KnowScapes_AI_Client_Connect::start_url() ); ?>">
     610                                                                                <?php
     611                                                                                empty( $settings['connected'] )
     612                                                                                        ? esc_html_e( 'Connect KnowScapes account', 'knowscapes-ai-client' )
     613                                                                                        : esc_html_e( 'Reconnect KnowScapes account', 'knowscapes-ai-client' );
     614                                                                                ?>
     615                                                                        </a>
     616                                                                </p>
     617                                                                <p class="description">
     618                                                                        <?php esc_html_e( 'Builds an assistant from the pages of this site in your own KnowScapes account and switches this plugin to it. The address of this site is sent to knowscapes.com when you connect.', 'knowscapes-ai-client' ); ?>
     619                                                                </p>
     620                                                        </td>
     621                                                </tr>
     622                                        <?php endif; ?>
    576623
    577624                                        <tr>
    … …  
    14771524
    14781525                $notice = KnowScapes_AI_Client_Free_Key::notice_for( $code, $query );
     1526                if ( null === $notice ) {
     1527                        $notice = KnowScapes_AI_Client_Connect::notice_for( $code );
     1528                }
    14791529
    14801530                if ( null === $notice ) {
  • knowscapes-ai-client/trunk/knowscapes-ai-client.php

    r3758580 r3798534  
    44 * Plugin URI:        https://knowscapes.org/
    55 * Description:       AI chat for your site, as a floating launcher or a shortcode. Works with your own OpenAI, Anthropic or OpenRouter key, or with a free fair-use key from KnowScapes. API keys stay server-side and are never exposed to visitors.
    6  * Version:           2.3.1
     6 * Version:           2.3.2
    77 * Requires at least: 6.5
    88 * Requires PHP:      7.4
    … …  
    1818defined( 'ABSPATH' ) || exit;
    1919
    20 define( 'KNOWSCAPES_AI_CLIENT_VERSION', '2.3.1' );
     20define( 'KNOWSCAPES_AI_CLIENT_VERSION', '2.3.2' );
    2121
    2222/**
    … …  
    4646define( 'KNOWSCAPES_AI_CLIENT_OPTION', 'knowscapes_ai_client_settings' );
    4747
     48/**
     49 * Where the KnowScapes account site lives (the "Connect KnowScapes account"
     50 * consent page). Overridable in wp-config.php for development only.
     51 */
     52if ( ! defined( 'KNOWSCAPES_AI_CLIENT_ACCOUNT_URL' ) ) {
     53        define( 'KNOWSCAPES_AI_CLIENT_ACCOUNT_URL', 'https://knowscapes.com' );
     54}
     55
    4856require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-providers.php';
    4957require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-api-client.php';
    5058require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-context.php';
    5159require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-free-key.php';
     60require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-connect.php';
    5261require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-settings.php';
    5362require_once KNOWSCAPES_AI_CLIENT_DIR . 'includes/class-rate-limiter.php';
    … …  
    104113                'consent'         => false,
    105114                'widget_enabled'  => false,
     115                // True once the key came from "Connect KnowScapes account": the settings
     116                // screen then follows the build of the site's assistant.
     117                'connected'       => false,
    106118        );
    107119}
    … …  
    217229        new KnowScapes_AI_Client_Settings();
    218230        new KnowScapes_AI_Client_Free_Key();
     231        new KnowScapes_AI_Client_Connect();
    219232        new KnowScapes_AI_Client_REST_Proxy();
    220233        new KnowScapes_AI_Client_Widget();
  • knowscapes-ai-client/trunk/readme.txt

    r3758580 r3798534  
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 2.3.1
     7Stable tag: 2.3.2
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    140140* Privacy policy: https://xplicator.com/legal-service-privacy/
    141141
     142= KnowScapes account connect (xplicator GmbH) =
     143
     144Used only when a free KnowScapes key is stored and you press **Connect
     145KnowScapes account**. It is never called automatically.
     146
     147* **What is sent:** your browser is sent to the KnowScapes account site with the address of this site and the address of this plugin's return page in your WordPress admin area. After you allow the connection there, this site sends a one-time code to KnowScapes and receives an API key for an assistant built from the public pages of this site. KnowScapes then reads those public pages to build it.
     148* **When:** once per press of the button; while the assistant is being built, the settings screen asks KnowScapes for its progress every few seconds, authorised with that key.
     149* **Endpoints:** `https://knowscapes.com/plugin/connect` (in your browser), `https://knowscapes.com/api/connect/exchange`, `https://knowscapes.com/api/connect/status/<agent>`
     150* **Stored locally:** the API key, as with any key you enter, and for ten minutes a random value that ties the return to the button press.
     151* Terms of use: https://xplicator.com/legal-terms-of-use/
     152* Privacy policy: https://xplicator.com/legal-service-privacy/
     153
    142154= OpenAI =
    143155
    … …  
    384396
    385397== Changelog ==
     398
     399= 2.3.2 =
     400* Added connection button for Knowscapes Platform
    386401
    387402= 2.3.1 =
Note: See TracChangeset for help on using the changeset viewer.