@netlify/axis 1.14.0 → 1.15.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 +21 -0
- package/README.md +43 -30
- package/dist/ui/LiveStatus.d.ts.map +1 -1
- package/dist/ui/LiveStatus.js +26 -6
- package/dist/ui/LiveStatus.js.map +1 -1
- package/package.json +3 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Netlify
|
|
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
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
AXIS
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<a href="https://axis.run">
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/76547bab-3a2e-498a-b556-99c58b3c553b">
|
|
5
|
+
<img alt="AXIS logo" src="https://github.com/user-attachments/assets/76547bab-3a2e-498a-b556-99c58b3c553b" height="128">
|
|
6
|
+
</picture>
|
|
7
|
+
</a>
|
|
8
|
+
<h1>AXIS — Agent Experience Index Score</h1>
|
|
9
|
+
<a href="https://www.npmjs.com/package/@netlify/axis"><img alt="NPM version" src="https://img.shields.io/npm/v/@netlify/axis?style=for-the-badge&labelColor=000000"></a>
|
|
10
|
+
<a href="https://github.com/netlify/axis/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/netlify/axis?style=for-the-badge&labelColor=000000"></a>
|
|
11
|
+
<a href="https://github.com/netlify/axis/issues"><img alt="Contribute" src="https://img.shields.io/badge/CONTRIBUTE-blueviolet.svg?style=for-the-badge&labelColor=000000"></a>
|
|
12
|
+
</div>
|
|
13
|
+
<br />
|
|
14
|
+
|
|
15
|
+
AXIS is an open source tooling and a scoring framework to measure how well services work for AI agents. Think [Lighthouse](https://developer.chrome.com/docs/lighthouse), but for agent experience.
|
|
16
|
+
|
|
17
|
+
Give AXIS a scenario, an agent, and a prompt. It runs the agent, captures a full transcript, and produces a graded score across four independent dimensions: Goal Achievement, Environment, Service, and Agent.
|
|
8
18
|
|
|
9
19
|
## Why AXIS
|
|
10
20
|
|
|
11
|
-
The web has Lighthouse. APIs have contract testing. Performance has k6. But there's no standardized way to answer:
|
|
21
|
+
The web has Lighthouse. APIs have contract testing. Performance has k6. But there's no standardized way to answer: "How well does my system work when an AI agent tries to use it?".
|
|
12
22
|
|
|
13
|
-
As agents become a primary interface for interacting with
|
|
23
|
+
As agents become a primary interface for interacting with sites, APIs, and developer platforms, the systems they interact with need to be measured and optimized for that experience — just like we optimize for page load time or accessibility. AXIS is that measurement.
|
|
14
24
|
|
|
15
|
-
## Quick
|
|
25
|
+
## Quick start
|
|
16
26
|
|
|
17
27
|
```bash
|
|
18
28
|
npm install @netlify/axis
|
|
@@ -31,7 +41,7 @@ npm install @netlify/axis
|
|
|
31
41
|
|
|
32
42
|
```json
|
|
33
43
|
{
|
|
34
|
-
"name": "Hello
|
|
44
|
+
"name": "Hello world",
|
|
35
45
|
"prompt": "Navigate to https://example.com and describe what you see on the page.",
|
|
36
46
|
"judge": [
|
|
37
47
|
{ "check": "Agent visited the target URL", "weight": 0.5 },
|
|
@@ -48,29 +58,17 @@ AXIS executes the scenario, scores the result, and writes a report to `.axis/rep
|
|
|
48
58
|
|
|
49
59
|
## Documentation
|
|
50
60
|
|
|
51
|
-
Full documentation lives at **https://axis.run**:
|
|
61
|
+
Full documentation lives at **[axis.run](https://axis.run)**:
|
|
52
62
|
|
|
53
|
-
- [
|
|
54
|
-
- [Quick Start](https://axis.run/quickstart) - install through your first scored run
|
|
63
|
+
- [Quick start](https://axis.run/quickstart) - install through your first scored run
|
|
55
64
|
- [Configuration](https://axis.run/configuration) - `axis.config.json`, scenarios, MCP servers, skills
|
|
56
|
-
- [CLI
|
|
57
|
-
- [Running
|
|
58
|
-
- [Scoring
|
|
65
|
+
- [CLI reference](https://axis.run/cli) - `axis run`, `axis reports`, `axis baseline`
|
|
66
|
+
- [Running tests](https://axis.run/running) - execution model, workspace isolation, custom adapters, CI integration
|
|
67
|
+
- [Scoring framework](https://axis.run/scoring) - the four dimensions, signals, calibration
|
|
59
68
|
|
|
60
69
|
## Programmatic API
|
|
61
70
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
import { run, scoreResults } from "@netlify/axis";
|
|
66
|
-
|
|
67
|
-
const output = await run({ configPath: "axis.config.json" });
|
|
68
|
-
const scored = await scoreResults(output);
|
|
69
|
-
|
|
70
|
-
console.log(`Average AXIS Result: ${scored.summary.averageAxisScore}`);
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
The package also exports `loadConfig`, `discoverScenarios`, `setBaseline`, `compareBaseline`, `createAgentAdapter`, `registerAdapter`, and the underlying scoring primitives (`buildSparseIndex`, `categorizeInteraction`, `normalizeTranscript`). See [`src/index.ts`](./src/index.ts) for the full surface.
|
|
71
|
+
Use the programmatic API when you want to integrate AXIS into an existing test runner, build tool, or CI pipeline rather than calling the CLI directly.
|
|
74
72
|
|
|
75
73
|
## Roadmap
|
|
76
74
|
|
|
@@ -79,7 +77,22 @@ Delivered: scenario runner, four-dimension scoring pipeline, baselines with regr
|
|
|
79
77
|
Planned:
|
|
80
78
|
|
|
81
79
|
- **Historical trending** - score regression detection over time
|
|
82
|
-
- **AXIS
|
|
80
|
+
- **AXIS badge** - embeddable score badge for READMEs
|
|
83
81
|
- **Configurable judge** - separate adapter/model for scoring, independent of the agent under test
|
|
84
82
|
- **Score thresholds** - CI gating with configurable pass/fail thresholds
|
|
85
83
|
- **Human interruption detection** - penalize agent requests for human intervention
|
|
84
|
+
|
|
85
|
+
## Contributing
|
|
86
|
+
|
|
87
|
+
AXIS is built in the open. Contributions are welcome. New scenarios, agent adapters,
|
|
88
|
+
bug fixes, and documentation improvements all help.
|
|
89
|
+
<br />
|
|
90
|
+
<br />
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
AXIS is open source under the MIT license, created by [Netlify](https://www.netlify.com)
|
|
95
|
+
and developed with founding contributors including [Auth0](https://auth0.com) and
|
|
96
|
+
[Resend](https://resend.com).
|
|
97
|
+
|
|
98
|
+
Full docs: [axis.run](https://axis.run)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStatus.d.ts","sourceRoot":"","sources":["../../src/ui/LiveStatus.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKnD,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"LiveStatus.d.ts","sourceRoot":"","sources":["../../src/ui/LiveStatus.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKnD,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAQD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,YAAgB,EAAE,EAAE,eAAe,2CA8CrE"}
|
package/dist/ui/LiveStatus.js
CHANGED
|
@@ -1,23 +1,43 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import { getBaseKey, getVariantName, STATUS_ICONS, STATUS_LABELS } from "./format.js";
|
|
4
4
|
import { AnimatedTokens } from "./AnimatedTokens.js";
|
|
5
5
|
import { LiveDuration } from "./LiveDuration.js";
|
|
6
|
+
/** A job is "active" when it's mid-flight — counts toward the live scenario list. */
|
|
7
|
+
function isActive(job) {
|
|
8
|
+
if (job.inTeardown)
|
|
9
|
+
return true;
|
|
10
|
+
return job.status === "setup" || job.status === "running" || job.status === "teardown" || job.status === "scoring";
|
|
11
|
+
}
|
|
6
12
|
export function LiveStatus({ jobs, skippedCount = 0 }) {
|
|
7
13
|
const done = jobs.filter((j) => j.status === "done").length;
|
|
8
14
|
const failed = jobs.filter((j) => j.status === "failed").length;
|
|
15
|
+
const pending = jobs.filter((j) => j.status === "pending").length;
|
|
9
16
|
const scoring = jobs.filter((j) => j.status === "scoring").length;
|
|
10
17
|
const tearingDown = jobs.filter((j) => j.inTeardown).length;
|
|
11
18
|
const total = jobs.length;
|
|
12
|
-
const
|
|
13
|
-
const scenarioCount = scenarios.length;
|
|
19
|
+
const scenarioCount = new Set(jobs.map((j) => getBaseKey(j.scenarioKey))).size;
|
|
14
20
|
const agentCount = new Set(jobs.map((j) => j.agentName)).size;
|
|
21
|
+
const activeScenarios = groupByScenario(jobs.filter(isActive));
|
|
15
22
|
const allFinished = done + failed === total && total > 0;
|
|
16
23
|
const scoredJobs = jobs.filter((j) => j.axisScore !== undefined);
|
|
17
24
|
const avgScore = scoredJobs.length > 0 ? Math.round(scoredJobs.reduce((sum, j) => sum + j.axisScore, 0) / scoredJobs.length) : null;
|
|
18
|
-
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(Text, { children: " " }), _jsxs(Text, { bold: true, children: ["AXIS \u2014 ", scenarioCount, " scenario", scenarioCount !== 1 ? "s" : "", " \u00B7 ", agentCount, " agent", agentCount !== 1 ? "s" : ""] }), _jsx(Text, { children: "─".repeat(50) }),
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(Text, { children: " " }), _jsxs(Text, { bold: true, children: ["AXIS \u2014 ", scenarioCount, " scenario", scenarioCount !== 1 ? "s" : "", " \u00B7 ", agentCount, " agent", agentCount !== 1 ? "s" : ""] }), _jsx(Text, { children: "─".repeat(50) }), activeScenarios.length > 0 ? (activeScenarios.map(({ scenarioKey, agents }) => (_jsx(ScenarioGroup, { scenarioKey: scenarioKey, agents: agents }, scenarioKey)))) : allFinished ? null : (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: "Waiting for scenarios to start\u2026" }), _jsx(Text, { children: " " })] })), _jsx(Text, { children: "─".repeat(50) }), allFinished && avgScore !== null ? (_jsxs(Text, { bold: true, children: ["Average AXIS Result: ", avgScore, " / 100"] })) : (_jsx(Text, { children: formatProgress({ done, failed, pending, total, scoring, tearingDown }) })), skippedCount > 0 ? _jsxs(Text, { dimColor: true, children: [skippedCount, " marked to be skipped"] }) : null, _jsx(Text, { children: " " })] }));
|
|
26
|
+
}
|
|
27
|
+
function formatProgress(counts) {
|
|
28
|
+
const { done, failed, pending, total, scoring, tearingDown } = counts;
|
|
29
|
+
const parts = [`${done + failed}/${total} complete`];
|
|
30
|
+
if (done > 0)
|
|
31
|
+
parts.push(`${done} passed`);
|
|
32
|
+
if (failed > 0)
|
|
33
|
+
parts.push(`${failed} failed`);
|
|
34
|
+
if (pending > 0)
|
|
35
|
+
parts.push(`${pending} pending`);
|
|
36
|
+
if (scoring > 0)
|
|
37
|
+
parts.push(`scoring ${scoring}…`);
|
|
38
|
+
if (tearingDown > 0)
|
|
39
|
+
parts.push(`tearing down ${tearingDown}…`);
|
|
40
|
+
return parts.join(" · ");
|
|
21
41
|
}
|
|
22
42
|
function ScenarioGroup({ scenarioKey, agents }) {
|
|
23
43
|
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: scenarioKey }), agents.map((job) => (_jsx(AgentRow, { job: job }, `${job.scenarioKey}:${job.agentName}`))), _jsx(Text, { children: " " })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStatus.js","sourceRoot":"","sources":["../../src/ui/LiveStatus.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,CAAC,EAAmB;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAE1B,MAAM,
|
|
1
|
+
{"version":3,"file":"LiveStatus.js","sourceRoot":"","sources":["../../src/ui/LiveStatus.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD,qFAAqF;AACrF,SAAS,QAAQ,CAAC,GAAa;IAC7B,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;AACrH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,CAAC,EAAmB;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAE1B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9D,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,KAAK,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACjE,MAAM,QAAQ,GACZ,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAU,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtH,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,aACxC,KAAC,IAAI,oBAAS,EACd,MAAC,IAAI,IAAC,IAAI,mCACA,aAAa,eAAW,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAK,UAAU,YAC5E,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IACvB,EACP,KAAC,IAAI,cAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC5B,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC5B,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC/C,KAAC,aAAa,IAAmB,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAArD,WAAW,CAA8C,CAC9E,CAAC,CACH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACvB,8BACE,KAAC,IAAI,IAAC,QAAQ,2DAAuC,EACrD,KAAC,IAAI,oBAAS,IACb,CACJ,EACD,KAAC,IAAI,cAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC5B,WAAW,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAClC,MAAC,IAAI,IAAC,IAAI,4CAAuB,QAAQ,cAAc,CACxD,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,cAAE,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,GAAQ,CACtF,EACA,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,MAAC,IAAI,IAAC,QAAQ,mBAAE,YAAY,6BAA6B,CAAC,CAAC,CAAC,IAAI,EACpF,KAAC,IAAI,oBAAS,IACV,CACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAOvB;IACC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACtE,MAAM,KAAK,GAAa,CAAC,GAAG,IAAI,GAAG,MAAM,IAAI,KAAK,WAAW,CAAC,CAAC;IAC/D,IAAI,IAAI,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,GAAG,CAAC,CAAC;IACnD,IAAI,WAAW,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,WAAW,GAAG,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,WAAW,EAAE,MAAM,EAA+C;IACzF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,kBAAE,WAAW,GAAQ,EAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACnB,KAAC,QAAQ,IAA6C,GAAG,EAAE,GAAG,IAA/C,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,EAAE,CAAc,CACnE,CAAC,EACF,KAAC,IAAI,oBAAS,IACV,CACP,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,SAAS,QAAQ,CAAC,EAAE,GAAG,EAAqB;IAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,KAAK,GACT,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAC/E,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,QAAQ;QAC1B,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,KAAK,GACT,GAAG,CAAC,MAAM,KAAK,MAAM;QACnB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ;YACvB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;gBACpD,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,SAAS,CAAC;IAEpB,yEAAyE;IACzE,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;IACpE,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC;IAC/E,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE5C,4DAA4D;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IAE9E,OAAO,CACL,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,aACf,IAAI,EACJ,IAAI,OAAG,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,OAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IACzD,EACN,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YACjB,KAAC,YAAY,IAAC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAI,GAChG,CACP,CAAC,CAAC,CAAC,IAAI,EACP,SAAS,CAAC,CAAC,CAAC,KAAC,cAAc,IAAC,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,GAAI,CAAC,CAAC,CAAC,IAAI,IACzG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAgB;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
package/package.json
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
"workspaces": [
|
|
4
4
|
"src/docs-site"
|
|
5
5
|
],
|
|
6
|
-
"version": "1.
|
|
7
|
-
"description": "
|
|
6
|
+
"version": "1.15.0",
|
|
7
|
+
"description": "Open source tooling and scoring framework to measure how well services work for AI agents.",
|
|
8
|
+
"license": "MIT",
|
|
8
9
|
"type": "module",
|
|
9
10
|
"main": "./dist/index.js",
|
|
10
11
|
"types": "./dist/index.d.ts",
|