@jrpool/kilotest 57.0.1 → 57.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/capability.md +4 -0
- package/docs/AI-TOOLS.md +1 -0
- package/index.html +1 -0
- package/index.ts +3 -0
- package/llms.txt +1 -0
- package/openapi.yaml +1 -1
- package/package.json +1 -1
- package/sitemap.xml +1 -0
- package/web/privacy/index.html +37 -0
- package/web/privacy/index.ts +20 -0
- package/web/privacy/privacy.test.ts +18 -0
- package/web/tutorialAI/index.html +48 -42
package/capability.md
CHANGED
package/docs/AI-TOOLS.md
CHANGED
|
@@ -49,6 +49,7 @@ The external features that support the use of Kilotest as a collection of AI too
|
|
|
49
49
|
- Registration of Kilotest with the [RapidAPI](https://rapidapi.com/jrpool/api/kilotest/playground/apiendpoint_0f03577a-ff9a-472a-a0ed-533bd198981a) Hub.
|
|
50
50
|
- Registration of Kilotest with the [LobeHub MCP Market](https://lobehub.com/mcp) (identifier: `jrpool-kilotest`), enabled with an `lhm.plugin.json` file.
|
|
51
51
|
- Deployment of an MCP server in HTTP mode on the Kilotest service host.
|
|
52
|
+
- Submission of the MCP server to the [Claude directory of plugins and connectors](https://claude.ai/directory/manage).
|
|
52
53
|
- Configuration of Claude Desktop on the local development host and the `claude.ai` web application to connect Claude Desktop models to the Kilotest MCP server. The configuration was performed in the UI of each platform with the addition of Kilotest as a _connector_. The user used the `Customize/Connectors/Add connector/Add custom connector` interface, providing these data before activating the `Add` button:
|
|
53
54
|
|
|
54
55
|
- Name: Kilotest
|
package/index.html
CHANGED
|
@@ -90,6 +90,7 @@
|
|
|
90
90
|
<li><a href="listReports.html">Which web pages have been tested?</a></li>
|
|
91
91
|
<li><a href="listTopIssues.html">Which issues have been reported?</a></li>
|
|
92
92
|
<li><a href="manage.html">What can Kilotest managers do?</a></li>
|
|
93
|
+
<li><a href="privacy.html">What is the privacy policy?</a></li>
|
|
93
94
|
</ul>
|
|
94
95
|
</main>
|
|
95
96
|
</body>
|
package/index.ts
CHANGED
|
@@ -41,6 +41,7 @@ import {handleMCP, mcpPath} from './mcp.ts';
|
|
|
41
41
|
import fs from 'node:fs/promises';
|
|
42
42
|
import {handleComment as handleTutorialWebComment} from './web/tutorialWeb/index.ts';
|
|
43
43
|
import {answer as tutorialWeb} from './web/tutorialWeb/index.ts';
|
|
44
|
+
import {answer as privacy} from './web/privacy/index.ts';
|
|
44
45
|
import {answer as tutorialAI, handleComment as handleTutorialAIComment} from './web/tutorialAI/index.ts';
|
|
45
46
|
import http, {type IncomingMessage, type ServerResponse} from 'node:http';
|
|
46
47
|
import https from 'node:https';
|
|
@@ -119,6 +120,7 @@ const answer: {
|
|
|
119
120
|
manage: PageHandler;
|
|
120
121
|
metrics: PageHandler;
|
|
121
122
|
pruneReportsForm: PageHandler;
|
|
123
|
+
privacy: PageHandler;
|
|
122
124
|
tutorialWeb: PageHandler;
|
|
123
125
|
tutorialAI: PageHandler;
|
|
124
126
|
reannotate: PageHandler;
|
|
@@ -149,6 +151,7 @@ const answer: {
|
|
|
149
151
|
manage,
|
|
150
152
|
metrics,
|
|
151
153
|
pruneReportsForm,
|
|
154
|
+
privacy,
|
|
152
155
|
tutorialWeb,
|
|
153
156
|
tutorialAI,
|
|
154
157
|
reannotate,
|
package/llms.txt
CHANGED
|
@@ -37,6 +37,7 @@ Kilotest helps language models and AI platforms to give thorough, accurate and t
|
|
|
37
37
|
|
|
38
38
|
- [Detailed explanation of Kilotest and its capabilities for LLMs](https://kilotest.com/llms-full.txt)
|
|
39
39
|
- [Summary of Kilotest capabilities](https://kilotest.com/capability.md)
|
|
40
|
+
- [Privacy policy](https://kilotest.com/privacy.html)
|
|
40
41
|
- [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml)
|
|
41
42
|
- [Kilotest as connector to and collection of AI Tools](https://github.com/jrpool/kilotest/blob/main/docs/AI-TOOLS.md)
|
|
42
43
|
- [Tutorial on authorizing language models to use Kilotest](https://kilotest.com/qai/)
|
package/openapi.yaml
CHANGED
|
@@ -2,7 +2,7 @@ openapi: 3.1.0
|
|
|
2
2
|
info:
|
|
3
3
|
title: Kilotest API
|
|
4
4
|
description: 'Kilotest is an ensemble testing and reporting service for front-end web quality. It uses an ensemble of 12 rule engines to test web pages for front-end quality (accessibility, usability, and standards conformity). Kilotest acts as a web server for human users, an MCP server for AI platforms, and an API for programmatic access. With this API you can request that a page be tested or retested, discover available reports, incrementally retrieve facts from a report: from what reports are available, to what issues were reported in one report, to what elements violated one issue, to what diagnoses rule engines gave for one violation.'
|
|
5
|
-
version: 57.
|
|
5
|
+
version: 57.2.0
|
|
6
6
|
license:
|
|
7
7
|
name: MIT
|
|
8
8
|
identifier: MIT
|
package/package.json
CHANGED
package/sitemap.xml
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
<url><loc>https://kilotest.com/requestNewTestForm.html</loc></url>
|
|
7
7
|
<url><loc>https://kilotest.com/manage.html</loc></url>
|
|
8
8
|
<url><loc>https://kilotest.com/tutorial.html</loc></url>
|
|
9
|
+
<url><loc>https://kilotest.com/privacy.html</loc></url>
|
|
9
10
|
<url><loc>https://kilotest.com/openapi.yaml</loc></url>
|
|
10
11
|
<url><loc>https://kilotest.com/llms.txt</loc></url>
|
|
11
12
|
<url><loc>https://kilotest.com/llms-full.txt</loc></url>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<meta name="publisher" content="Jonathan Robert Pool">
|
|
7
|
+
<meta name="creator" content="Jonathan Robert Pool">
|
|
8
|
+
<meta name="description" content="Kilotest privacy policy: what information Kilotest collects, uses, shares, and keeps">
|
|
9
|
+
<title>Privacy policy | Kilotest</title>
|
|
10
|
+
<link rel="icon" href="/favicon.ico">
|
|
11
|
+
<link rel="stylesheet" href="/style.css">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<main>
|
|
15
|
+
<h1><a href="/">Kilotest</a>: Privacy policy</h1>
|
|
16
|
+
<p>This policy applies to the Kilotest web site, API, and MCP server at <code>kilotest.com</code>, and does not apply to any other deployment of Kilotest. Kilotest does not require an account, does not ask for your name or email address, and does not use advertising or tracking cookies.</p>
|
|
17
|
+
<h2>What Kilotest collects</h2>
|
|
18
|
+
<ul>
|
|
19
|
+
<li><strong>Request logs.</strong> For every request, Kilotest and its reverse proxy log the IP address, user agent, HTTP method, path (without any query string), response status, and time. This applies to requests made by AI platforms on your behalf as well as to requests from your browser.</li>
|
|
20
|
+
<li><strong>Submissions.</strong> If you request testing of a web page, request retesting, comment on a tutorial, or request a feature, Kilotest stores what you submit, such as the URL of the page and the text of the comment.</li>
|
|
21
|
+
<li><strong>Usage counts.</strong> Kilotest keeps aggregate counts of page views, MCP tool calls, and API operations. The counts are not linked to any person.</li>
|
|
22
|
+
</ul>
|
|
23
|
+
<h2>How Kilotest uses the information</h2>
|
|
24
|
+
<p>Request logs are used to keep the service available and to detect abuse. Submissions are reviewed by the Kilotest maintainer and used to run tests and improve Kilotest. Kilotest does not sell information, use it for advertising, or build profiles of users.</p>
|
|
25
|
+
<h2>What is public</h2>
|
|
26
|
+
<p>Test reports are public. A report contains the URL that was tested and the test results, and anyone can retrieve it. If you control a web page and Kilotest gets a request from you (or anybody else) to test it, the report will be public. Kilotest does not need or request passwords or other secrets.</p>
|
|
27
|
+
<h2>Who else receives information</h2>
|
|
28
|
+
<p>Kilotest sends its maintainer an email notice, through the transactional email service <a href="https://resend.com/">Resend</a>, when a submission arrives. The notice contains the submission. The site is hosted on a server of <a href="https://www.vultr.com/">Vultr</a>, and the site root is checked periodically by <a href="https://uptimerobot.com/">UptimeRobot</a>, which receives no user data. Kilotest discloses information to others only if the law requires it.</p>
|
|
29
|
+
<h2>How long Kilotest keeps information</h2>
|
|
30
|
+
<p>Request logs are rotated and deleted automatically. The application log keeps about 14 files of up to 20 MB each, and the proxy log keeps at most 10 files of up to 50 MB each for at most 30 days. Reports and submissions are kept until the maintainer deletes them.</p>
|
|
31
|
+
<h2>Your choices</h2>
|
|
32
|
+
<p>To ask what Kilotest holds about you, or to ask for deletion of a submission or report about a web page that you own, email <a href="mailto:info@kilotest.com">info@kilotest.com</a> and identify the item.</p>
|
|
33
|
+
<h2>Changes and contact</h2>
|
|
34
|
+
<p>Changes to this policy are recorded in the <a href="https://github.com/jrpool/kilotest">public repository</a>. Questions can be sent to <a href="mailto:info@kilotest.com">info@kilotest.com</a>.</p>
|
|
35
|
+
</main>
|
|
36
|
+
</body>
|
|
37
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
index.ts
|
|
3
|
+
Serves the privacy policy.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// IMPORTS
|
|
7
|
+
|
|
8
|
+
import fs from 'node:fs/promises';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
|
|
11
|
+
// FUNCTIONS
|
|
12
|
+
|
|
13
|
+
// Returns the privacy policy page.
|
|
14
|
+
export const answer = async () => {
|
|
15
|
+
const answerPage = await fs.readFile(path.join(import.meta.dirname, 'index.html'), 'utf8');
|
|
16
|
+
return {
|
|
17
|
+
status: 'ok',
|
|
18
|
+
answerPage
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
privacy.test.ts
|
|
3
|
+
Unit tests for web/privacy/index.ts, covering the answer export.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// IMPORTS
|
|
7
|
+
|
|
8
|
+
import {test} from 'node:test';
|
|
9
|
+
import assert from 'node:assert/strict';
|
|
10
|
+
import {answer} from './index.ts';
|
|
11
|
+
|
|
12
|
+
// TESTS
|
|
13
|
+
|
|
14
|
+
test('answer returns the privacy policy page', async () => {
|
|
15
|
+
const result = await answer();
|
|
16
|
+
assert.equal(result.status, 'ok');
|
|
17
|
+
assert.ok(result.answerPage.includes('does not sell information'));
|
|
18
|
+
});
|
|
@@ -7,59 +7,65 @@
|
|
|
7
7
|
<meta name="creator" content="Jonathan Robert Pool">
|
|
8
8
|
<meta name="keywords" content="large language models,tools,model context protocol">
|
|
9
9
|
<meta name="description" content="Kilotest tutorial: how to connect an AI platform to Kilotest for technical analysis">
|
|
10
|
-
<title>
|
|
10
|
+
<title>Connect an AI Platform | Kilotest</title>
|
|
11
11
|
<link rel="icon" href="/favicon.ico">
|
|
12
12
|
<link rel="stylesheet" href="/style.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<main>
|
|
16
|
-
<h1>Connect an AI Platform
|
|
17
|
-
<h2>
|
|
16
|
+
<h1><a href="/">Kilotest</a>: Connect an AI Platform</h1>
|
|
17
|
+
<h2>Purpose</h2>
|
|
18
|
+
<p>This tutorial shows you how to make Kilotest available to AI assistants. Suppose:</p>
|
|
18
19
|
<ul>
|
|
19
|
-
<li>
|
|
20
|
-
<li>
|
|
20
|
+
<li>You use an AI platform, like Claude, ChatGPT, Perplexity, or Mistral Vibe.</li>
|
|
21
|
+
<li>You want to audit the quality of a web page.</li>
|
|
21
22
|
</ul>
|
|
22
|
-
<p>
|
|
23
|
-
<h2>AI
|
|
24
|
-
<p>When you get AI help, you use AI platforms to interact with large language models (LLMs). LLMs are superb at understanding your questions, fetching information for you, and formulating answers from that information. But LLMs are <strong>not</strong> good at performing technical tasks to produce the accurate information they need. For those tasks, LLMs use <em>tools</em>. If you ask an LLM a question that requires a tool, you <strong>cannot assume</strong> that the LLM will know how to discover that tool. Typically, the LLM will try to answer you without the tool and will give you an inferior answer: superficial, vague, incomplete, inaccurate, or even fabricated. To ensure that the LLM uses the right tool, you can tell the AI platform to make the tool available to its LLMs.</p>
|
|
25
|
-
<p>This tutorial shows you how to do that.</p>
|
|
26
|
-
<h2>Let us begin with a concrete example</h2>
|
|
27
|
-
<p>Suppose the AI platform you want to use is Claude, and you will use it in a web browser.</p>
|
|
28
|
-
<p>Also suppose you will be asking an LLM on that platform to give you technical details about software quality: specifically, about the quality of a particular web page.</p>
|
|
29
|
-
<p>For that task, the LLM will need a tool that can test a web page to discover quality defects and report those defects to the LLM.</p>
|
|
30
|
-
<p>Finally, suppose you know about a tool that has that capability: Kilotest. You also know the URL that Kilotest makes available to LLMs: <code>https://kilotest.com/mcp</code>.</p>
|
|
31
|
-
<h2>What to do</h2>
|
|
32
|
-
<p>You can solve this problem with two steps.</p>
|
|
33
|
-
<h3>Step 1: Become a user</h3>
|
|
34
|
-
<p>If you are not already a user of the Claude AI platform, register yourself on it as a user. You can do this for free. Navigate to <a href="https://claude.ai/login">https://claude.ai/login</a> and use either Google or your email address to create an account. After you proceed through the substeps of creating a <q>Free plan</q> account, you are on the <a href="https://claude.ai/new">home page of a new task</a>.</p>
|
|
35
|
-
<h3>Step 2: Add a connector</h3>
|
|
36
|
-
<p>Now you are ready to add a connector to the Claude AI platform.</p>
|
|
37
|
-
<p>The page has a toolbar on the left side. Click it to expand it, so you can see labels, not only icons.</p>
|
|
38
|
-
<p>Now click the <q>Customize</q> tool.</p>
|
|
39
|
-
<p>A dialog opens. In the <q>Customize</q> list, click <q>Connectors</q>.</p>
|
|
40
|
-
<p>The dialog changes to a <q>Connectors</q> view.</p>
|
|
41
|
-
<p>In the <q>Add</q> dropdown list, click <q>Add custom connector</q>.</p>
|
|
42
|
-
<p>A subdialog opens, titled <q>Add custom connector</q>. It contains 4 inputs.</p>
|
|
23
|
+
<p>Then the models on your AI platform can use Kilotest <strong>if</strong> you make Kilotest available on the platform.</p>
|
|
24
|
+
<h2>What AI platform do you use?</h2>
|
|
43
25
|
<ul>
|
|
26
|
+
<li><a href="#claude">Claude.ai in a browser or Claude Desktop</a></li>
|
|
27
|
+
<li><a href="#chatgpt">ChatGPT</a></li>
|
|
28
|
+
<li><a href="#perplexity">Perplexity</a></li>
|
|
29
|
+
<li><a href="#vibe">Mistral Vibe</a></li>
|
|
30
|
+
</ul>
|
|
31
|
+
<h2 id="claude">Claude.ai <a href="https://claude.ai">in a browser</a> or <a href="https://downloads.claude.com">Claude Desktop</a></h2>
|
|
32
|
+
<p>To make Kilotest available on either Claude platform:</p>
|
|
33
|
+
<ol>
|
|
34
|
+
<li><a href="https://claude.ai/new">Start a new task</a>.</li>
|
|
35
|
+
<li>Expand the left sidebar to see the labels.</li>
|
|
36
|
+
<li>Click <q>Customize</q>.</li>
|
|
37
|
+
<li>Click <q>Connectors</q>.</li>
|
|
38
|
+
<li>In the <q>Add</q> list, click <q>Add custom connector</q>.</li>
|
|
44
39
|
<li>Enter <q>Kilotest</q> into the <q>Name</q> input.</li>
|
|
45
40
|
<li>Enter <q>https://kilotest.com/mcp</q> into the <q>Remote MCP server URL</q> input.</li>
|
|
46
41
|
<li>Leave the OAuth inputs empty.</li>
|
|
47
|
-
<li>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
<h2>
|
|
52
|
-
<p>
|
|
53
|
-
<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<
|
|
62
|
-
<p>
|
|
42
|
+
<li>Click <q>Add</q>.</li>
|
|
43
|
+
<li>For maximum autonomy, click <q>Always allow</q> for each tool.</li>
|
|
44
|
+
<li>Click the <code>x</code> button or press the <code>Escape</code> key to close the dialog.</li>
|
|
45
|
+
</ol>
|
|
46
|
+
<h2 id="chatgpt">ChatGPT</h2>
|
|
47
|
+
<p>To make Kilotest available on ChatGPT:</p>
|
|
48
|
+
<ol>
|
|
49
|
+
<li>Forthcoming</li>
|
|
50
|
+
</ol>
|
|
51
|
+
<h2 id="perplexity">Perplexity</h2>
|
|
52
|
+
<p>To make Kilotest available on Perplexity:</p>
|
|
53
|
+
<ol>
|
|
54
|
+
<li>Forthcoming</li>
|
|
55
|
+
</ol>
|
|
56
|
+
<h2 id="Vibe">Mistral Vibe</h2>
|
|
57
|
+
<p>To make Kilotest available on Mistral Vibe:</p>
|
|
58
|
+
<ol>
|
|
59
|
+
<li>Choose the <a href="https://chat.mistral.ai/work">Work tab</a>.</li>
|
|
60
|
+
<li>Click <q>Connect your apps for better answers</q></li>
|
|
61
|
+
<li>Click the <q>+ Add connector</q> button.</li>
|
|
62
|
+
<li>Click the <q>Add a custom connector</q> button.</li>
|
|
63
|
+
<li>Enter <q>Kilotest</q> into the <q>Connector name</q> input.</li>
|
|
64
|
+
<li>Enter <q>https://kilotest.com/mcp</q> into the <q>Server</q> input.</li>
|
|
65
|
+
<li>Click the <q>Add connector</q> button.</li>
|
|
66
|
+
<li>Toggle the <q>Ask/Allow</q> buttons to show <q>Allow</q>.</li>
|
|
67
|
+
</ol>
|
|
68
|
+
<p>What if this did not work? Use the comment form below to tell us about it.</p>
|
|
63
69
|
<p>You can also submit an issue on the <a href="https://github.com/jrpool/kilotest/issues">Kilotest GitHub repository</a>.</p>
|
|
64
70
|
<section id="suggest-improvement" class="main">
|
|
65
71
|
<h2>Suggest improvements</h2>
|