@jrpool/kilotest 57.0.1 → 57.1.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/index.html +1 -0
- package/index.ts +3 -0
- package/llms.txt +1 -0
- 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 +26 -39
package/capability.md
CHANGED
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/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
|
+
});
|
|
@@ -14,52 +14,39 @@
|
|
|
14
14
|
<body>
|
|
15
15
|
<main>
|
|
16
16
|
<h1>Connect an AI Platform to Kilotest</h1>
|
|
17
|
-
<h2>
|
|
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.ai, Claude Code, Claude Desktop, Perplexity, Cursor, Gemini, or ChatGPT.</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-ai">Claude.ai</a></li>
|
|
27
|
+
<li><a href="#claude-code">Claude Code</a></li>
|
|
28
|
+
<li><a href="#claude-desktop">Claude Desktop</a></li>
|
|
29
|
+
<li><a href="#perplexity">Perplexity</a></li>
|
|
30
|
+
<li><a href="#cursor">Cursor</a></li>
|
|
31
|
+
<li><a href="#gemini">Gemini</a></li>
|
|
32
|
+
<li><a href="#chatgpt">ChatGPT</a></li>
|
|
33
|
+
</ul>
|
|
34
|
+
<h2 id="claude-ai">Claude.ai</h2>
|
|
35
|
+
<p><a href="https://claude.ai/login">Claude.ai</a> is an AI platform that you can use for free in any web browser. To make Kilotest available on Claude.ai:</p>
|
|
36
|
+
<ul>
|
|
37
|
+
<li><a href="https://claude.ai/new">Start a new task</a>.</li>
|
|
38
|
+
<li>Expand the left sidebar to see the labels.</li>
|
|
39
|
+
<li>Click <q>Customize</q>.</li>
|
|
40
|
+
<li>Click <q>Connectors</q>.</li>
|
|
41
|
+
<li>In the <q>Add</q> list, click <q>Add custom connector</q>.</li>
|
|
44
42
|
<li>Enter <q>Kilotest</q> into the <q>Name</q> input.</li>
|
|
45
43
|
<li>Enter <q>https://kilotest.com/mcp</q> into the <q>Remote MCP server URL</q> input.</li>
|
|
46
44
|
<li>Leave the OAuth inputs empty.</li>
|
|
47
|
-
<li>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<p>Close the dialog by clicking the <code>x</code> button in the top-right corner or by pressing the <code>Escape</code> key.</p>
|
|
51
|
-
<h2>Finished!</h2>
|
|
52
|
-
<p>Now the platform will make the connector available to its LLMs.</p>
|
|
53
|
-
<p>Here is a simple test for you to verify that your configuration works:</p>
|
|
54
|
-
<ul>
|
|
55
|
-
<li>In the <q>How can I help you today?</q> input, choose which model you want to use.</li>
|
|
56
|
-
<li>Enter the question: <q>What quality issues exist on the World Wide Web Consortium home page?</q></li>
|
|
57
|
-
<li>Click the <q>Send message</q> up-arrow button or press the <code>Enter</code> key to submit your question.</li>
|
|
58
|
-
<li>From the answer that you get, determine whether the model used any Kilotest tools for this task.</li>
|
|
45
|
+
<li>Click <q>Add</q>.</li>
|
|
46
|
+
<li>Decide whether Claude.ai needs your approval to use each Kilotesw tool.</li>
|
|
47
|
+
<li>Clicking the <code>x</code> button or by press the <code>Escape</code> key to close the dialog.</li>
|
|
59
48
|
</ul>
|
|
60
|
-
<
|
|
61
|
-
<p>If the model used any Kilotest tools, congratulations! You know how to add tool power to the LLMs on one of the major AI platforms.</p>
|
|
62
|
-
<p>But what if it did <strong>not</strong> work? If an LLM fails to use the Kilotest connector when it should, or if you need to explicitly tell the LLM to use the connector, something is wrong, and we want to know about your experience. Please use the <a href="tutorialAIComment.html">comment form</a> to tell us about it.</p>
|
|
49
|
+
<p>What if this did not work? Use the comment form below to tell us about it.</p>
|
|
63
50
|
<p>You can also submit an issue on the <a href="https://github.com/jrpool/kilotest/issues">Kilotest GitHub repository</a>.</p>
|
|
64
51
|
<section id="suggest-improvement" class="main">
|
|
65
52
|
<h2>Suggest improvements</h2>
|