@jrpool/kilotest 60.0.1 → 60.0.2
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/docs/AI-TOOLS.md +6 -4
- package/lhm.plugin.json +1 -1
- package/openapi-3.0.yaml +1 -1
- package/openapi.yaml +1 -1
- package/package.json +1 -4
- package/scripts/postPR.ts +2 -1
- package/scripts/prePR.ts +2 -1
- package/server.json +1 -1
package/docs/AI-TOOLS.md
CHANGED
|
@@ -29,7 +29,7 @@ The internal features that make Kilotest a collection of tools for language mode
|
|
|
29
29
|
- A `server.json` file, conforming to the [MCP server schema](https://modelcontextprotocol.io/), and a GitHub Actions workflow (`publish-mcp.yml`) that authenticates via GitHub OIDC and publishes that file to the official MCP Registry whenever `server.json` or `api/version.ts` changes on the `main` branch.
|
|
30
30
|
- A `capability.md` file with a URL, summarizing what Kilotest tools can do.
|
|
31
31
|
- `mcp`, `mcp-server`, and `modelcontextprotocol` keywords in `package.json`, supporting discovery of the `@jrpool/kilotest` npm package by tools and humans searching the npm registry for MCP servers.
|
|
32
|
-
- An `lhm.plugin.json` file, conforming to the [LobeHub plugin manifest format](https://market.lobehub.com/s/publish-mcp/references/manifest), declaring Kilotest as a plugin in the [LobeHub MCP Market](https://lobehub.com/mcp). Publishing and updating are non-automated (`lhm plugin publish` for the initial listing; thereafter `npm run publish:lhm`, which wraps `lhm plugin update` and
|
|
32
|
+
- An `lhm.plugin.json` file, conforming to the [LobeHub plugin manifest format](https://market.lobehub.com/s/publish-mcp/references/manifest), declaring Kilotest as a plugin in the [LobeHub MCP Market](https://lobehub.com/mcp). Publishing and updating are non-automated (`lhm plugin publish` for the initial listing; thereafter `npm run publish:lhm`, which wraps `lhm plugin update` and is run by `npm run postPR`), because LobeHub requires browser-based OAuth and does not support machine-to-machine publishing.
|
|
33
33
|
- A `sitemap.xml` file.
|
|
34
34
|
- Documentation in the `README.md` file.
|
|
35
35
|
- This `AI-TOOLS.md` file.
|
|
@@ -64,9 +64,11 @@ The external features that support the use of Kilotest as a collection of AI too
|
|
|
64
64
|
|
|
65
65
|
Releasing a new version is a two-script procedure:
|
|
66
66
|
|
|
67
|
-
- On a feature branch, commit all substantive changes, then execute `npm run prePR -- <level>` (`major`, `minor`, or `patch`). The script bumps `package.json` and `package-lock.json`, regenerates `openapi.yaml` and the versions of `server.json` and `lhm.plugin.json`
|
|
67
|
+
- On a feature branch, commit all substantive changes, then execute `npm run prePR -- <level>` (`major`, `minor`, or `patch`). The script bumps `package.json` and `package-lock.json`, regenerates `openapi.yaml`, `openapi-3.0.yaml`, and the versions of `server.json` and `lhm.plugin.json` by explicitly running `npm run generate`, commits and pushes the result, and records the branch name for the next step.
|
|
68
68
|
- Submit a pull request and merge it to `main` (triggers `publish-mcp.yml`, which publishes `server.json` to the MCP Registry).
|
|
69
|
-
- Execute `npm run postPR`. The script checks out and pulls `main`, verifies that the merge landed, publishes to npm
|
|
69
|
+
- Execute `npm run postPR`. The script checks out and pulls `main`, verifies that the merge landed, publishes to npm, updates the LobeHub listing via `npm run publish:lhm`, deletes the feature branch, and prunes remote-tracking branches. If the LobeHub update fails, retry it alone with `npm run publish:lhm`.
|
|
70
|
+
|
|
71
|
+
The project’s `.npmrc` sets `ignore-scripts=true` for supply-chain safety, which disables all npm lifecycle hooks. Do not rely on `version`, `postpublish`, `prepublishOnly`, or other hook scripts: anything a release must do must be run explicitly by `prePR`, `postPR`, or a maintainer command.
|
|
70
72
|
|
|
71
73
|
### Contract changes and external registries
|
|
72
74
|
|
|
@@ -90,7 +92,7 @@ A change to the tool or API contract (tool names, parameter names, schemas, resp
|
|
|
90
92
|
|
|
91
93
|
#### External registries requiring maintainer action
|
|
92
94
|
|
|
93
|
-
- The LobeHub MCP Market listing is published from `lhm.plugin.json` and is non-automated, because LobeHub requires browser-based OAuth. A normal release pushes the updated file
|
|
95
|
+
- The LobeHub MCP Market listing is published from `lhm.plugin.json` and is non-automated, because LobeHub requires browser-based OAuth. A normal release pushes the updated file when `npm run postPR` runs `npm run publish:lhm`; to push a contract update without a release, run `npm run publish:lhm` manually.
|
|
94
96
|
- The RapidAPI Hub listing stores a copy of the API endpoints. Its importer accepts only OpenAPI 3.0 documents, so after releasing a contract change, update the definition in Studio: `My APIs` → the Kilotest API project → `Hub Listing` → `Definitions` → `CI/CD` → `Import OpenAPI`, and upload the regenerated `openapi-3.0.yaml` (not `openapi.yaml`, which is 3.1 and is rejected). The `/publish/…` pages contain only listing metadata, not the spec.
|
|
95
97
|
|
|
96
98
|
#### Step by step
|
package/lhm.plugin.json
CHANGED
package/openapi-3.0.yaml
CHANGED
|
@@ -2,7 +2,7 @@ openapi: 3.0.3
|
|
|
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 web standards, including HTML, CSS, ARIA, and WCAG). 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:
|
|
5
|
+
version: 60.0.2
|
|
6
6
|
license:
|
|
7
7
|
name: MIT
|
|
8
8
|
url: https://github.com/jrpool/kilotest/blob/main/LICENSE
|
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 web standards, including HTML, CSS, ARIA, and WCAG). 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:
|
|
5
|
+
version: 60.0.2
|
|
6
6
|
license:
|
|
7
7
|
name: MIT
|
|
8
8
|
identifier: MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jrpool/kilotest",
|
|
3
|
-
"version": "60.0.
|
|
3
|
+
"version": "60.0.2",
|
|
4
4
|
"description": "Ensemble testing for front-end web quality",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.ts",
|
|
@@ -15,9 +15,6 @@
|
|
|
15
15
|
"test:smoke": "node smokeTest.ts",
|
|
16
16
|
"checkinfo": "node checkinfo.ts",
|
|
17
17
|
"generate": "node scripts/generate-openapi.ts && node scripts/update-versions.ts",
|
|
18
|
-
"version": "npm run generate",
|
|
19
|
-
"prepublishOnly": "test \"$(git branch --show-current)\" = main",
|
|
20
|
-
"postpublish": "npm run publish:lhm",
|
|
21
18
|
"publish:lhm": "npx -y @lobehub/market-cli plugin update --dir .",
|
|
22
19
|
"prePR": "node scripts/prePR.ts",
|
|
23
20
|
"postPR": "node scripts/postPR.ts"
|
package/scripts/postPR.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
postPR.ts
|
|
3
|
-
Finalizes a release after the prePR pull request has been merged: checks out main, pulls, verifies that the merge landed, publishes to npm
|
|
3
|
+
Finalizes a release after the prePR pull request has been merged: checks out main, pulls, verifies that the merge landed, publishes to npm, updates the LobeHub listing, deletes the feature branch, and prunes remote-tracking branches. The feature-branch name is read from the marker file written by prePR.ts, or from an optional command-line argument. Publishing to npm and to LobeHub are run explicitly because the project's .npmrc sets ignore-scripts=true, which disables the npm "postpublish" lifecycle hook that would otherwise update LobeHub.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// IMPORTS
|
|
@@ -77,6 +77,7 @@ if (branchVersion !== mainVersion) {
|
|
|
77
77
|
process.exit(1);
|
|
78
78
|
}
|
|
79
79
|
run('npm', ['publish']);
|
|
80
|
+
run('npm', ['run', 'publish:lhm']);
|
|
80
81
|
// Branch cleanup is best-effort: deletion must precede pruning, because "git branch -d" checks mergedness against the upstream ref, which pruning would remove.
|
|
81
82
|
const deleted = spawnSync('git', ['branch', '-d', branch], {stdio: 'inherit'});
|
|
82
83
|
if (deleted.status !== 0) {
|
package/scripts/prePR.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
prePR.ts
|
|
3
|
-
Prepares a release pull request on the current feature branch: verifies a clean working tree, bumps the package version
|
|
3
|
+
Prepares a release pull request on the current feature branch: verifies a clean working tree, bumps the package version, regenerates the generated files (openapi.yaml, openapi-3.0.yaml, server.json, and lhm.plugin.json), commits and pushes the result, records the branch name for postPR.ts, and prints the remaining manual steps. The generation is run explicitly because the project's .npmrc sets ignore-scripts=true, which disables the npm "version" lifecycle hook that would otherwise run it.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// IMPORTS
|
|
@@ -57,6 +57,7 @@ if (!branch || branch === 'main') {
|
|
|
57
57
|
}
|
|
58
58
|
requireCleanTree();
|
|
59
59
|
run('npm', ['version', level, '--no-git-tag-version']);
|
|
60
|
+
run('npm', ['run', 'generate']);
|
|
60
61
|
run('git', ['add', '-A']);
|
|
61
62
|
run('git', ['commit', '-m', 'update version and generated files']);
|
|
62
63
|
run('git', ['push', '-u', 'origin', branch]);
|