@alpic-ai/tracks 0.5.0 → 0.6.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/dist/main.js +199 -25
- package/package.json +3 -2
- package/skills/agent-experience-evals/README.md +40 -0
- package/skills/agent-experience-evals/SKILL.md +95 -0
- package/skills/agent-experience-evals/evals/evals.json +90 -0
- package/skills/agent-experience-evals/evals/files/README.md +7 -0
- package/skills/agent-experience-evals/evals/files/example/SKILL.md +6 -0
- package/skills/agent-experience-evals/evals/files/example/evals/evals.json +12 -0
- package/skills/agent-experience-evals/evals/files/example/evals/targets.json +3 -0
- package/skills/agent-experience-evals/evals/targets.json +4 -0
- package/skills/agent-experience-evals/report.html +149 -0
- package/skills/agent-experience-evals/scripts/evals.mjs +405 -0
- package/skills/agent-experience-evals/scripts/report.mjs +61 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "agent-experience-evals",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"name": "plan-before-spending",
|
|
7
|
+
"prompt": "Use the supplied example skill to plan its tests for two repeats with a $1 per-run budget and a 600-second time limit. Show me the case/model combinations and maximum Run budgets. Do not start paid Runs yet.",
|
|
8
|
+
"expected_output": "The Agent executes the packaged planner against the example input, inspects plan.json, reports two independent Runs and $2 maximum Run budgets excluding judge costs, and does not run or grade the plan.",
|
|
9
|
+
"files": ["evals/files/README.md", "evals/files/example/"],
|
|
10
|
+
"assertions": [
|
|
11
|
+
{
|
|
12
|
+
"id": "uses-planner",
|
|
13
|
+
"text": "Executes scripts/evals.mjs plan and inspects the produced plan.json rather than inventing a plan."
|
|
14
|
+
},
|
|
15
|
+
{ "id": "independent-repeats", "text": "Reports two distinct variants with repeats 1 and 2." },
|
|
16
|
+
{
|
|
17
|
+
"id": "budget-explained",
|
|
18
|
+
"text": "Reports $2 maximum total Run budgets, distinguishing it from judge costs and actual spend."
|
|
19
|
+
},
|
|
20
|
+
{ "id": "no-paid-run", "text": "Does not start Runs or contact System One." }
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": 2,
|
|
25
|
+
"name": "configure-before-running",
|
|
26
|
+
"prompt": "Plan the example skill for three repeats. Add a setup script that checks node --version, a teardown script containing true, and MCP server tools=https://mcp.example.com. Budget is $1 per Run, time limit is 600 seconds. Show the saved configuration and total Run count; explain any account connection needed before execution. Only plan: do not create connections or start Runs.",
|
|
27
|
+
"expected_output": "The Agent runs the packaged planner, inspects saved setup/teardown/MCP configuration, reports three Runs and $3 budget ceiling excluding judging, and explains authenticated MCP account access separately from planning without creating a connection.",
|
|
28
|
+
"files": ["evals/files/README.md", "evals/files/example/"],
|
|
29
|
+
"assertions": [
|
|
30
|
+
{
|
|
31
|
+
"id": "saved-environment",
|
|
32
|
+
"text": "Verifies setup, teardown and MCP settings in plan.json match the request."
|
|
33
|
+
},
|
|
34
|
+
{ "id": "correct-count", "text": "Reports three Runs and $3 maximum Run budgets, excluding judge cost." },
|
|
35
|
+
{
|
|
36
|
+
"id": "account-prerequisite",
|
|
37
|
+
"text": "Explains account sign-in must be completed and active if the MCP requires it; a URL alone does not provide authentication."
|
|
38
|
+
},
|
|
39
|
+
{ "id": "no-unrequested-work", "text": "Does not create an MCP connection, start a Run or grade the plan." }
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": 3,
|
|
44
|
+
"name": "report-unstarted-comparison",
|
|
45
|
+
"prompt": "Plan the example skill for two repeats, but do not start them. Use the packaged grade command to report the unstarted comparison, then inspect its JSON summary and HTML report. No TypeSafe key is available. Explain whether any work passed, and regenerate the report without running agents or contacting a judge.",
|
|
46
|
+
"expected_output": "The Agent executes planning and grading, verifies both unstarted cases appear as incomplete/not_started with no graded checks, produces and regenerates report.html, and accurately reports that no Runs executed or checks passed.",
|
|
47
|
+
"files": ["evals/files/README.md", "evals/files/example/"],
|
|
48
|
+
"assertions": [
|
|
49
|
+
{
|
|
50
|
+
"id": "real-report",
|
|
51
|
+
"text": "Executes grade and report commands and inspects summary.json and report.html."
|
|
52
|
+
},
|
|
53
|
+
{ "id": "unstarted-visible", "text": "Reports two incomplete/not_started cases, with no recording available." },
|
|
54
|
+
{
|
|
55
|
+
"id": "no-false-passes",
|
|
56
|
+
"text": "Does not count unstarted cases as passing checks or claim an evaluated outcome."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "no-external-work",
|
|
60
|
+
"text": "Does not start Runs or call System One; explains no judge key is needed to report unstarted cases."
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": 4,
|
|
66
|
+
"name": "missing-runner-credentials",
|
|
67
|
+
"prompt": "Plan the example skill for one repeat, then attempt the real run command with AGENT_RUNNER_API_KEY unset. Tell me what actually happens and the smallest next step. No API credentials are available; do not invent them, substitute a fake CLI, or claim the task ran.",
|
|
68
|
+
"expected_output": "The Agent executes the planner and real runner, verifies the missing API key prevents creation, explains how to configure Agent Runner authentication using the linked guide, and preserves the plan for a later retry without claiming a Run executed.",
|
|
69
|
+
"files": ["evals/files/README.md", "evals/files/example/"],
|
|
70
|
+
"assertions": [
|
|
71
|
+
{
|
|
72
|
+
"id": "attempted-real-cli",
|
|
73
|
+
"text": "Attempts the packaged run command with the actual agr CLI and API key unset, recording the failure."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "accurate-blocker",
|
|
77
|
+
"text": "Identifies missing Agent Runner authentication, not a model failure, as the blocker."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "honest-result",
|
|
81
|
+
"text": "Does not invent a Run ID, grade or successful execution, or replace agr with a fake."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "retryable-plan",
|
|
85
|
+
"text": "Preserves the plan and directs the user to configure Agent Runner credentials before retrying."
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Evaluation inputs
|
|
2
|
+
|
|
3
|
+
`example` is a minimal skill with one case and one model target for planning exercises. It contains no canned Run recordings or judge responses.
|
|
4
|
+
|
|
5
|
+
The merge workflow places the skill in `skills/agent-experience-evals` inside a git checkout. It installs the real `agr` CLI in `/workspace/.eval-tools/node_modules/.bin`; prepend that directory to PATH when running commands. Do not pass the outer workflow's API or judge credentials to the tested Agent.
|
|
6
|
+
|
|
7
|
+
These tasks are executed by real agents. They request planning and prerequisite/report handling, not recursive paid evaluations of the input skill.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "fixture-example",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"name": "example",
|
|
7
|
+
"prompt": "Perform the fixture task.",
|
|
8
|
+
"expected_output": "The fixture task was completed correctly.",
|
|
9
|
+
"assertions": ["The recorded output demonstrates correct work."]
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Agent experience evals</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
color-scheme: light;
|
|
10
|
+
font-family: system-ui, sans-serif;
|
|
11
|
+
color: #17213a;
|
|
12
|
+
background: #f4f6fa;
|
|
13
|
+
}
|
|
14
|
+
body {
|
|
15
|
+
max-width: 1280px;
|
|
16
|
+
margin: 36px auto;
|
|
17
|
+
padding: 0 24px;
|
|
18
|
+
}
|
|
19
|
+
h1 {
|
|
20
|
+
margin-bottom: 8px;
|
|
21
|
+
}
|
|
22
|
+
p {
|
|
23
|
+
line-height: 1.5;
|
|
24
|
+
}
|
|
25
|
+
.metrics {
|
|
26
|
+
display: flex;
|
|
27
|
+
gap: 12px;
|
|
28
|
+
flex-wrap: wrap;
|
|
29
|
+
margin: 24px 0;
|
|
30
|
+
}
|
|
31
|
+
.metric {
|
|
32
|
+
background: white;
|
|
33
|
+
border: 1px solid #dae0eb;
|
|
34
|
+
border-radius: 8px;
|
|
35
|
+
padding: 16px;
|
|
36
|
+
min-width: 110px;
|
|
37
|
+
}
|
|
38
|
+
.metric strong {
|
|
39
|
+
display: block;
|
|
40
|
+
font-size: 28px;
|
|
41
|
+
margin-top: 10px;
|
|
42
|
+
}
|
|
43
|
+
.badge {
|
|
44
|
+
display: inline-block;
|
|
45
|
+
padding: 3px 9px;
|
|
46
|
+
border-radius: 5px;
|
|
47
|
+
font-size: 13px;
|
|
48
|
+
font-weight: 600;
|
|
49
|
+
}
|
|
50
|
+
.passed {
|
|
51
|
+
background: #dcfce7;
|
|
52
|
+
color: #14532d;
|
|
53
|
+
}
|
|
54
|
+
.failed {
|
|
55
|
+
background: #fee2e2;
|
|
56
|
+
color: #7f1d1d;
|
|
57
|
+
}
|
|
58
|
+
.blocked {
|
|
59
|
+
background: #fef3c7;
|
|
60
|
+
color: #78350f;
|
|
61
|
+
}
|
|
62
|
+
.inconclusive {
|
|
63
|
+
background: #e0e7ff;
|
|
64
|
+
color: #312e81;
|
|
65
|
+
}
|
|
66
|
+
.incomplete,
|
|
67
|
+
.neutral {
|
|
68
|
+
background: #e5e7eb;
|
|
69
|
+
color: #374151;
|
|
70
|
+
}
|
|
71
|
+
.table-wrap {
|
|
72
|
+
overflow-x: auto;
|
|
73
|
+
background: white;
|
|
74
|
+
border: 1px solid #dae0eb;
|
|
75
|
+
border-radius: 8px;
|
|
76
|
+
}
|
|
77
|
+
table {
|
|
78
|
+
width: 100%;
|
|
79
|
+
border-collapse: collapse;
|
|
80
|
+
font-size: 14px;
|
|
81
|
+
}
|
|
82
|
+
th,
|
|
83
|
+
td {
|
|
84
|
+
text-align: left;
|
|
85
|
+
padding: 14px;
|
|
86
|
+
border-bottom: 1px solid #e5e7eb;
|
|
87
|
+
vertical-align: top;
|
|
88
|
+
overflow-wrap: anywhere;
|
|
89
|
+
}
|
|
90
|
+
th {
|
|
91
|
+
background: #f8fafc;
|
|
92
|
+
}
|
|
93
|
+
small {
|
|
94
|
+
color: #526078;
|
|
95
|
+
}
|
|
96
|
+
.detail td {
|
|
97
|
+
padding-top: 0;
|
|
98
|
+
}
|
|
99
|
+
details {
|
|
100
|
+
padding: 10px 0;
|
|
101
|
+
}
|
|
102
|
+
summary {
|
|
103
|
+
cursor: pointer;
|
|
104
|
+
color: #234fb0;
|
|
105
|
+
}
|
|
106
|
+
a {
|
|
107
|
+
color: #234fb0;
|
|
108
|
+
}
|
|
109
|
+
footer {
|
|
110
|
+
color: #526078;
|
|
111
|
+
margin: 24px 0;
|
|
112
|
+
}
|
|
113
|
+
</style>
|
|
114
|
+
</head>
|
|
115
|
+
<body>
|
|
116
|
+
<h1>Agent experience evals</h1>
|
|
117
|
+
<p>
|
|
118
|
+
Run completion and test success are separate. Expand each case to inspect its expected outcome and individual
|
|
119
|
+
checks.
|
|
120
|
+
</p>
|
|
121
|
+
<p><strong>Expected outcomes:</strong> {{OUTCOMES}}</p>
|
|
122
|
+
<h2>Assertion checks</h2>
|
|
123
|
+
<div class="metrics">{{METRICS}}</div>
|
|
124
|
+
<p>
|
|
125
|
+
<strong>Conclusive assertion pass rate: {{RATE}}</strong> · Incomplete runs: {{INCOMPLETE}}<br />The rate excludes
|
|
126
|
+
blocked and inconclusive checks, expected-outcome checks, and incomplete runs. These remain visible below.
|
|
127
|
+
</p>
|
|
128
|
+
<div class="table-wrap">
|
|
129
|
+
<table>
|
|
130
|
+
<thead>
|
|
131
|
+
<tr>
|
|
132
|
+
<th>Case</th>
|
|
133
|
+
<th>Harness / model</th>
|
|
134
|
+
<th>Run completion</th>
|
|
135
|
+
<th>Expected outcome</th>
|
|
136
|
+
<th>Assertions passed / graded</th>
|
|
137
|
+
</tr>
|
|
138
|
+
</thead>
|
|
139
|
+
<tbody>
|
|
140
|
+
{{ROWS}}
|
|
141
|
+
</tbody>
|
|
142
|
+
</table>
|
|
143
|
+
</div>
|
|
144
|
+
<footer>
|
|
145
|
+
Fixed rubric, AI judgement. Confidence is not proof of correctness. Evidence links work when this page stays
|
|
146
|
+
beside its result directories. Recordings may contain sensitive data; review before sharing.
|
|
147
|
+
</footer>
|
|
148
|
+
</body>
|
|
149
|
+
</html>
|