rigorrun 0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 RigorRun
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,87 @@
1
+ # RigorRun
2
+
3
+ **Acceptance testing for tool-using AI agents.**
4
+
5
+ Connect your system. Show RigorRun how one job is done. Connect your agent.
6
+ RigorRun proves whether the agent can do that job safely — by reading the
7
+ system it changed, never by trusting what it says about itself.
8
+
9
+ ```bash
10
+ npx rigorrun
11
+ ```
12
+
13
+ Open the URL it prints. That is the whole install.
14
+
15
+ **Early Access · v0.1.** It does what this page says and it is young. The
16
+ limits are written down and marked one by one, rather than left for you to
17
+ find: [the v1 gap audit](https://github.com/Konuktor/rigorrun/blob/master/docs/V1_GAP_AUDIT.md).
18
+
19
+ ## What it does
20
+
21
+ You have an agent that calls tools. You need to know whether it can do a real
22
+ job in your real system without doing something unsafe — and you need to know
23
+ again next week, after somebody changes a prompt.
24
+
25
+ RigorRun watches a person do that job once, reads the system before and after,
26
+ works out what the rules must be, asks about what it can only guess, and turns
27
+ the answers into an executable acceptance suite. Then it runs your agent against
28
+ it and reads your system to find out what actually happened.
29
+
30
+ ```
31
+ most tools: you write the tests → the tool runs them
32
+ RigorRun: you do the job once → RigorRun writes the tests
33
+ ```
34
+
35
+ ## Why it runs locally
36
+
37
+ Your MCP server, your internal API and your staging box are usually not
38
+ reachable from the public internet, and a page served over `https` cannot fetch
39
+ `http://127.0.0.1`. So RigorRun's interface is served by this process, on your
40
+ machine. Your credentials, recordings and systems never touch anybody's
41
+ infrastructure, because there is no path by which they could.
42
+
43
+ ## What you need
44
+
45
+ - **Node 20.11 or newer.**
46
+ - **A way in to the system you want to test**: an MCP server, or an OpenAPI
47
+ document and the address it is served from. Ideally staging or a scratch
48
+ instance, with a way to reset it.
49
+ - **An agent.** If it speaks MCP it works unchanged; RigorRun hands it a URL —
50
+ whether your agent listens on an address or is a command RigorRun runs. If it
51
+ does not speak MCP, about ten lines of the agent SDK.
52
+
53
+ ## Commands
54
+
55
+ ```bash
56
+ npx rigorrun # start the runner and open the interface
57
+ npx rigorrun doctor # check this machine and every project
58
+ npx rigorrun projects # what is on this machine
59
+ npx rigorrun run --project <id> # run the suite
60
+ npx rigorrun gate --project <id> # run it, and exit non-zero if it misses the bar
61
+ npx rigorrun compare-runs --project <id> <runId>
62
+ npx rigorrun feedback export # a sanitised bundle for a bug report
63
+ ```
64
+
65
+ ## This is early access
66
+
67
+ It connects to MCP servers, to HTTP APIs with an OpenAPI document, and to web
68
+ applications through a browser — though a browser cannot verify itself, so a
69
+ verdict from one is OBSERVATIONAL unless something readable is attached.
70
+ Setting a project up needs the interface; running and gating it does not. It has
71
+ been used successfully by the people who wrote it and is now looking for people
72
+ who did not.
73
+
74
+ Every capability is marked WORKING, PARTIAL or MISSING in
75
+ [the v1 gap audit](https://github.com/Konuktor/rigorrun/blob/master/docs/V1_GAP_AUDIT.md),
76
+ with how each one was checked. Read it before you rely on this for anything
77
+ that matters.
78
+
79
+ If it goes wrong, `npx rigorrun feedback export` produces a bundle that contains
80
+ no credentials, no tool arguments and no results — only what is needed to work
81
+ out where it broke.
82
+
83
+ ## Documentation
84
+
85
+ <https://github.com/Konuktor/rigorrun/tree/master/docs>
86
+
87
+ MIT licensed.
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * The executable, and nothing else.
4
+ *
5
+ * This file exists to be *parseable by every Node that might run it*. `engines`
6
+ * in package.json produces a warning that npm prints and nobody reads, and if
7
+ * the real bundle is loaded directly on an old runtime the failure is a syntax
8
+ * error pointing at a minified line — which tells somebody nothing about what
9
+ * to do.
10
+ *
11
+ * So: no optional chaining, no nullish coalescing, no top-level await, and the
12
+ * bundle is reached through a dynamic import that only happens after the check
13
+ * has passed.
14
+ */
15
+ var MINIMUM = [20, 11];
16
+
17
+ function tooOld() {
18
+ var parts = String(process.versions.node).split('.');
19
+ var major = parseInt(parts[0], 10);
20
+ var minor = parseInt(parts[1], 10);
21
+ if (isNaN(major)) return false;
22
+ if (major > MINIMUM[0]) return false;
23
+ if (major < MINIMUM[0]) return true;
24
+ return isNaN(minor) ? false : minor < MINIMUM[1];
25
+ }
26
+
27
+ if (tooOld()) {
28
+ process.stderr.write(
29
+ '\nRigorRun needs Node ' +
30
+ MINIMUM.join('.') +
31
+ ' or newer, and this is Node ' +
32
+ process.versions.node +
33
+ '.\n\n' +
34
+ 'Node 20 is the oldest release still receiving security fixes, and\n' +
35
+ 'RigorRun uses its built-in test-friendly fetch and stream APIs.\n\n' +
36
+ 'Install a newer Node from https://nodejs.org, or with a version manager:\n' +
37
+ ' nvm install 22 && nvm use 22\n' +
38
+ ' fnm install 22 && fnm use 22\n\n',
39
+ );
40
+ process.exit(2);
41
+ }
42
+
43
+ import('../dist/rigorrun.mjs').catch(function (error) {
44
+ process.stderr.write('\nRigorRun could not start: ' + error.message + '\n');
45
+ if (process.env.RIGORRUN_DEBUG) console.error(error);
46
+ process.exit(2);
47
+ });