@cursor/july 0.1.5 → 0.1.6
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/ab.d.ts +8 -95
- package/dist/ab.d.ts.map +1 -1
- package/dist/ab.js +9 -150
- package/dist/bin/agent-serve.js +14 -6
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.DabPG-io.js → app.DMboGKUD.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.O6eP7QZr.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.jmyr0bU0.js → VPLocalSearchBox.DkEqEnJU.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DysN9-VN.js → theme.ASugdMNm.js} +2 -2
- package/dist/docs/assets/deployment.md.BtfEsc9S.js +55 -0
- package/dist/docs/assets/deployment.md.BtfEsc9S.lean.js +1 -0
- package/dist/docs/assets/example-agents_approval-buddy.md.8R5phXb5.js +10 -0
- package/dist/docs/assets/example-agents_approval-buddy.md.8R5phXb5.lean.js +1 -0
- package/dist/docs/assets/example-agents_benny.md.B0gjhI-p.js +7 -0
- package/dist/docs/assets/example-agents_benny.md.B0gjhI-p.lean.js +1 -0
- package/dist/docs/assets/example-agents_bugbot.md.DelIdhxB.js +11 -0
- package/dist/docs/assets/example-agents_bugbot.md.DelIdhxB.lean.js +1 -0
- package/dist/docs/assets/example-agents_codebase-wiki.md.DC6sgwn0.js +8 -0
- package/dist/docs/assets/example-agents_codebase-wiki.md.DC6sgwn0.lean.js +1 -0
- package/dist/docs/assets/example-agents_codeowners-review.md.Ku_tG2RY.js +8 -0
- package/dist/docs/assets/example-agents_codeowners-review.md.Ku_tG2RY.lean.js +1 -0
- package/dist/docs/assets/example-agents_concierge.md.4rQTSMXt.js +23 -0
- package/dist/docs/assets/example-agents_concierge.md.4rQTSMXt.lean.js +1 -0
- package/dist/docs/assets/example-agents_fsd.md.CzgUrDfi.js +15 -0
- package/dist/docs/assets/example-agents_fsd.md.CzgUrDfi.lean.js +1 -0
- package/dist/docs/assets/example-agents_index.md.CRqJlnIf.js +2 -0
- package/dist/docs/assets/example-agents_index.md.CRqJlnIf.lean.js +1 -0
- package/dist/docs/assets/example-agents_knowledge-base.md.BPJiVueF.js +11 -0
- package/dist/docs/assets/example-agents_knowledge-base.md.BPJiVueF.lean.js +1 -0
- package/dist/docs/assets/example-agents_security-reviewer.md.D2rtwDTO.js +19 -0
- package/dist/docs/assets/example-agents_security-reviewer.md.D2rtwDTO.lean.js +1 -0
- package/dist/docs/assets/example-agents_slack-agent.md.buLbgvBf.js +5 -0
- package/dist/docs/assets/example-agents_slack-agent.md.buLbgvBf.lean.js +1 -0
- package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.js +24 -0
- package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.lean.js +1 -0
- package/dist/docs/assets/index.md.COiu-1jL.js +20 -0
- package/dist/docs/assets/{index.md.Cylk70gg.lean.js → index.md.COiu-1jL.lean.js} +1 -1
- package/dist/docs/assets/reference_cli.md.D189RBCH.js +60 -0
- package/dist/docs/assets/reference_cli.md.D189RBCH.lean.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +58 -17
- package/dist/docs/evals.html +4 -4
- package/dist/docs/example-agents/approval-buddy.html +34 -0
- package/dist/docs/example-agents/benny.html +31 -0
- package/dist/docs/example-agents/bugbot.html +35 -0
- package/dist/docs/example-agents/codebase-wiki.html +32 -0
- package/dist/docs/example-agents/codeowners-review.html +32 -0
- package/dist/docs/example-agents/concierge.html +47 -0
- package/dist/docs/example-agents/fsd.html +39 -0
- package/dist/docs/example-agents/index.html +26 -0
- package/dist/docs/example-agents/knowledge-base.html +35 -0
- package/dist/docs/example-agents/security-reviewer.html +43 -0
- package/dist/docs/example-agents/slack-agent.html +29 -0
- package/dist/docs/example-agents/weather-agent.html +48 -0
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +5 -5
- package/dist/docs/guides/github.html +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/slack.html +4 -4
- package/dist/docs/guides/webhooks.html +4 -4
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +4 -4
- package/dist/docs/index.html +7 -7
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +52 -30
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +4 -4
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +4 -4
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/evals.d.ts +4 -61
- package/dist/evals.d.ts.map +1 -1
- package/dist/evals.js +3 -66
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/internal/ab-collector.d.ts +7 -5
- package/dist/internal/ab-collector.d.ts.map +1 -1
- package/dist/internal/ab-collector.js +3 -14
- package/dist/internal/ab-snapshot.d.ts +2 -4
- package/dist/internal/ab-snapshot.d.ts.map +1 -1
- package/dist/internal/cli-ax.d.ts +18 -3
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +80 -42
- package/dist/internal/cli-deploy.js +1 -1
- package/dist/internal/discovery.js +3 -3
- package/dist/internal/eval-run-store.d.ts +33 -30
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +84 -96
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +3 -2
- package/dist/internal/playground-proxy.d.ts +5 -5
- package/dist/internal/playground-proxy.js +3 -3
- package/dist/internal/resolve-prod-target.d.ts +30 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +74 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +5 -3
- package/dist/internal/session-engine.d.ts +1 -2
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +14 -31
- package/dist/internal/storage-coordinator.d.ts +16 -15
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +73 -80
- package/dist/playground/assets/cursor-icons-16-CQ50JpfO.woff2 +0 -0
- package/dist/playground/assets/index-7GJIUFQj.css +1 -0
- package/dist/playground/assets/index-mux9aj5P.js +319 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage.d.ts +51 -10
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +27 -10
- package/docs/README.md +34 -5
- package/docs/deployment.md +352 -149
- package/docs/example-agents/approval-buddy.md +270 -0
- package/docs/example-agents/benny.md +186 -0
- package/docs/example-agents/bugbot.md +231 -0
- package/docs/example-agents/codebase-wiki.md +174 -0
- package/docs/example-agents/codeowners-review.md +195 -0
- package/docs/example-agents/concierge.md +205 -0
- package/docs/example-agents/fsd.md +330 -0
- package/docs/example-agents/index.md +102 -0
- package/docs/example-agents/knowledge-base.md +171 -0
- package/docs/example-agents/security-reviewer.md +296 -0
- package/docs/example-agents/slack-agent.md +146 -0
- package/docs/example-agents/weather-agent.md +302 -0
- package/docs/reference/cli.md +546 -147
- package/package.json +1 -1
- package/src/ab.ts +9 -261
- package/src/bin/agent-serve.ts +14 -6
- package/src/evals.ts +4 -118
- package/src/index.ts +2 -0
- package/src/internal/ab-collector.ts +12 -22
- package/src/internal/ab-snapshot.ts +2 -4
- package/src/internal/cli-ax.ts +101 -45
- package/src/internal/cli-deploy.ts +1 -1
- package/src/internal/discovery.ts +2 -2
- package/src/internal/eval-run-store.ts +86 -100
- package/src/internal/init-project.ts +3 -2
- package/src/internal/playground-proxy.ts +5 -5
- package/src/internal/resolve-prod-target.ts +101 -3
- package/src/internal/server.ts +5 -3
- package/src/internal/session-engine.ts +9 -29
- package/src/internal/storage-coordinator.ts +109 -101
- package/src/storage.ts +79 -14
- package/dist/docs/assets/chunks/@localSearchIndexroot.QwK5BtEH.js +0 -1
- package/dist/docs/assets/deployment.md.DTKwE15Z.js +0 -14
- package/dist/docs/assets/deployment.md.DTKwE15Z.lean.js +0 -1
- package/dist/docs/assets/index.md.Cylk70gg.js +0 -20
- package/dist/docs/assets/reference_cli.md.Bv6pOxcF.js +0 -38
- package/dist/docs/assets/reference_cli.md.Bv6pOxcF.lean.js +0 -1
- package/dist/internal/json-dir-store.d.ts +0 -32
- package/dist/internal/json-dir-store.d.ts.map +0 -1
- package/dist/internal/json-dir-store.js +0 -100
- package/dist/playground/assets/cursor-icons-outline-BxTT_FVJ.woff2 +0 -0
- package/dist/playground/assets/index-BEauYlII.css +0 -1
- package/dist/playground/assets/index-BtM0wEGg.js +0 -319
- package/src/internal/json-dir-store.ts +0 -109
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Store for playground-triggered eval batches.
|
|
3
3
|
*
|
|
4
|
-
* Default: process memory only, capped by `maxPlaygroundRuns` (see
|
|
5
|
-
*
|
|
4
|
+
* Default: process memory only, capped by `maxPlaygroundRuns` (see
|
|
5
|
+
* `defineEvalConfig`). When `agent/storage.ts` (`defineStorage`) declares an
|
|
6
|
+
* `evals` table, runs are mirrored there and survive restart.
|
|
6
7
|
* Runs against the live mount's loopback URL so case sessions appear in
|
|
7
8
|
* the playground session list.
|
|
8
9
|
*/
|
|
@@ -22,23 +23,13 @@ const INTERRUPTED_BATCH_ERROR = "Eval run interrupted (serve process exited befo
|
|
|
22
23
|
const INTERRUPTED_CASE_ERROR = "Eval case interrupted (serve process exited before completion)";
|
|
23
24
|
export class EvalRunStore {
|
|
24
25
|
constructor(projectRoot, logger,
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
* used when `evals.config.ts` sets no `persistRuns` of its own.
|
|
28
|
-
*/
|
|
29
|
-
fallbackPersistence) {
|
|
26
|
+
/** `defineStorage` evals-table adapter; undefined ⇒ memory only. */
|
|
27
|
+
storage) {
|
|
30
28
|
this.projectRoot = projectRoot;
|
|
31
29
|
this.logger = logger;
|
|
32
|
-
this.
|
|
30
|
+
this.storage = storage;
|
|
33
31
|
this.runs = new Map();
|
|
34
32
|
this.hydrated = false;
|
|
35
|
-
/** Per-run persist chain so intermediate saves cannot overwrite a later final write. */
|
|
36
|
-
this.persistChains = new Map();
|
|
37
|
-
}
|
|
38
|
-
/** `evals.config.ts` `persistRuns` wins; `defineStorage` is fallback. */
|
|
39
|
-
resolvePersist(config) {
|
|
40
|
-
var _a;
|
|
41
|
-
return (_a = config.persistRuns) !== null && _a !== void 0 ? _a : this.fallbackPersistence;
|
|
42
33
|
}
|
|
43
34
|
list() {
|
|
44
35
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -48,7 +39,7 @@ export class EvalRunStore {
|
|
|
48
39
|
evals: evals.map((e) => (Object.assign(Object.assign({ id: e.id, fileId: e.fileId }, (e.definition.description === undefined
|
|
49
40
|
? {}
|
|
50
41
|
: { description: e.definition.description })), (e.definition.tags === undefined ? {} : { tags: e.definition.tags })))),
|
|
51
|
-
config: snapshotListConfig(config, this.
|
|
42
|
+
config: snapshotListConfig(config, this.storage !== undefined),
|
|
52
43
|
};
|
|
53
44
|
});
|
|
54
45
|
}
|
|
@@ -114,12 +105,12 @@ export class EvalRunStore {
|
|
|
114
105
|
done: 0,
|
|
115
106
|
},
|
|
116
107
|
cases,
|
|
117
|
-
config: snapshotRunConfig(config, this.
|
|
108
|
+
config: snapshotRunConfig(config, this.storage !== undefined),
|
|
118
109
|
};
|
|
119
110
|
this.runs.set(runId, snapshot);
|
|
120
111
|
this.activeRunId = runId;
|
|
121
|
-
|
|
122
|
-
|
|
112
|
+
this.pruneOldRuns(config);
|
|
113
|
+
this.persist(snapshot);
|
|
123
114
|
this.logger(`[agentkit] eval run ${runId}: starting ${cases.length} case(s)`);
|
|
124
115
|
void this.execute(runId, Object.assign(Object.assign({ baseUrl: loopbackUrl, evals: selected, config }, (input.bearerToken === undefined
|
|
125
116
|
? {}
|
|
@@ -131,11 +122,10 @@ export class EvalRunStore {
|
|
|
131
122
|
return [...this.runs.values()].sort((a, b) => b.startedAt.localeCompare(a.startedAt));
|
|
132
123
|
}
|
|
133
124
|
/**
|
|
134
|
-
* Hydrate playground eval history from
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
* Idempotent; concurrent callers share one pass.
|
|
125
|
+
* Hydrate playground eval history from the `defineStorage` evals table.
|
|
126
|
+
* Called eagerly from the serve startup restore step — alongside session
|
|
127
|
+
* restore — and lazily as a safety net by every read. Idempotent;
|
|
128
|
+
* concurrent callers share one pass.
|
|
139
129
|
*/
|
|
140
130
|
hydrate() {
|
|
141
131
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -143,27 +133,19 @@ export class EvalRunStore {
|
|
|
143
133
|
return;
|
|
144
134
|
}
|
|
145
135
|
if (this.hydratePromise === undefined) {
|
|
146
|
-
this.hydratePromise = this.
|
|
136
|
+
this.hydratePromise = this.hydrateFromStorage();
|
|
147
137
|
}
|
|
148
138
|
yield this.hydratePromise;
|
|
149
139
|
});
|
|
150
140
|
}
|
|
151
|
-
|
|
141
|
+
hydrateFromStorage() {
|
|
152
142
|
return __awaiter(this, void 0, void 0, function* () {
|
|
153
143
|
try {
|
|
154
|
-
|
|
155
|
-
const persist = this.resolvePersist(config);
|
|
156
|
-
if (persist === undefined) {
|
|
157
|
-
this.hydrated = true;
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
const loaded = yield persist.load({ projectRoot: this.projectRoot });
|
|
161
|
-
if (!Array.isArray(loaded)) {
|
|
162
|
-
this.logger("[agentkit] eval persistRuns.load() did not return an array; ignoring");
|
|
144
|
+
if (this.storage === undefined) {
|
|
163
145
|
this.hydrated = true;
|
|
164
146
|
return;
|
|
165
147
|
}
|
|
166
|
-
const
|
|
148
|
+
const loaded = yield this.storage.list();
|
|
167
149
|
for (const run of loaded) {
|
|
168
150
|
if (run === null ||
|
|
169
151
|
typeof run !== "object" ||
|
|
@@ -174,15 +156,22 @@ export class EvalRunStore {
|
|
|
174
156
|
// Incomplete batches from a killed process should not block a new run.
|
|
175
157
|
if (run.status === "running") {
|
|
176
158
|
markInterruptedRun(run);
|
|
177
|
-
|
|
159
|
+
this.persist(run);
|
|
178
160
|
}
|
|
179
161
|
this.runs.set(run.runId, run);
|
|
180
162
|
}
|
|
181
|
-
|
|
182
|
-
|
|
163
|
+
// Prune with the defaults even when eval discovery fails — loaded
|
|
164
|
+
// history must not stay unpruned for the process lifetime just
|
|
165
|
+
// because an eval file has a syntax error at boot.
|
|
166
|
+
let config = {};
|
|
167
|
+
try {
|
|
168
|
+
config = (yield discoverEvals(this.projectRoot)).config;
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
this.logger(`[agentkit] eval discovery failed during hydrate (pruning with defaults): ${error instanceof Error ? error.message : String(error)}`);
|
|
183
172
|
}
|
|
184
|
-
|
|
185
|
-
this.logger(`[agentkit] hydrated ${this.runs.size} playground eval run(s) from
|
|
173
|
+
this.pruneOldRuns(config);
|
|
174
|
+
this.logger(`[agentkit] hydrated ${this.runs.size} playground eval run(s) from storage`);
|
|
186
175
|
}
|
|
187
176
|
catch (error) {
|
|
188
177
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -194,63 +183,44 @@ export class EvalRunStore {
|
|
|
194
183
|
});
|
|
195
184
|
}
|
|
196
185
|
pruneOldRuns(config) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
this.runs.delete(stale.runId);
|
|
208
|
-
yield this.persistDelete(stale.runId, this.resolvePersist(config));
|
|
186
|
+
var _a;
|
|
187
|
+
const limit = resolveEvalMaxPlaygroundRuns(config.maxPlaygroundRuns);
|
|
188
|
+
const ordered = this.sortedRuns();
|
|
189
|
+
if (ordered.length <= limit) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
for (const stale of ordered.slice(limit)) {
|
|
193
|
+
if (stale.runId === this.activeRunId) {
|
|
194
|
+
continue;
|
|
209
195
|
}
|
|
210
|
-
|
|
196
|
+
this.runs.delete(stale.runId);
|
|
197
|
+
(_a = this.storage) === null || _a === void 0 ? void 0 : _a.delete(stale.runId);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/** Mirror the run onto durable storage (coordinator clones + serializes). */
|
|
201
|
+
persist(run) {
|
|
202
|
+
var _a;
|
|
203
|
+
(_a = this.storage) === null || _a === void 0 ? void 0 : _a.save(run);
|
|
211
204
|
}
|
|
212
205
|
/**
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
206
|
+
* Serve is draining: durably mark any in-flight batch as interrupted
|
|
207
|
+
* while the storage queue can still deliver. Late `execute` writes are
|
|
208
|
+
* dropped by the closed coordinator, so without this a batch that was
|
|
209
|
+
* running at shutdown would look "running" (or silently lose its final
|
|
210
|
+
* completion write) until the next hydrate repairs it.
|
|
216
211
|
*/
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (
|
|
220
|
-
return
|
|
212
|
+
close() {
|
|
213
|
+
const activeRunId = this.activeRunId;
|
|
214
|
+
if (activeRunId === undefined) {
|
|
215
|
+
return;
|
|
221
216
|
}
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
this.
|
|
228
|
-
|
|
229
|
-
}
|
|
230
|
-
persistSave(run, persist) {
|
|
231
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
232
|
-
try {
|
|
233
|
-
yield persist.save(run, { projectRoot: this.projectRoot });
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
237
|
-
this.logger(`[agentkit] persistRuns.save(${run.runId}) failed: ${message}`);
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
persistDelete(runId, persist) {
|
|
242
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
243
|
-
if (persist === undefined) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
try {
|
|
247
|
-
yield persist.delete(runId, { projectRoot: this.projectRoot });
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
251
|
-
this.logger(`[agentkit] persistRuns.delete(${runId}) failed: ${message}`);
|
|
252
|
-
}
|
|
253
|
-
});
|
|
217
|
+
const run = this.runs.get(activeRunId);
|
|
218
|
+
if (run === undefined || run.status !== "running") {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
markInterruptedRun(run);
|
|
222
|
+
this.persist(run);
|
|
223
|
+
this.activeRunId = undefined;
|
|
254
224
|
}
|
|
255
225
|
execute(runId, opts) {
|
|
256
226
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -302,7 +272,7 @@ export class EvalRunStore {
|
|
|
302
272
|
this.applyCaseResult(runId, result);
|
|
303
273
|
const run = this.runs.get(runId);
|
|
304
274
|
if (run !== undefined) {
|
|
305
|
-
|
|
275
|
+
this.persist(run);
|
|
306
276
|
}
|
|
307
277
|
} }));
|
|
308
278
|
const run = this.runs.get(runId);
|
|
@@ -311,7 +281,7 @@ export class EvalRunStore {
|
|
|
311
281
|
}
|
|
312
282
|
run.status = "completed";
|
|
313
283
|
run.finishedAt = new Date().toISOString();
|
|
314
|
-
|
|
284
|
+
this.persist(run);
|
|
315
285
|
this.logger(`[agentkit] eval run ${runId}: done — ${run.summary.passed} passed, ${run.summary.failed} failed`);
|
|
316
286
|
}
|
|
317
287
|
catch (error) {
|
|
@@ -322,7 +292,7 @@ export class EvalRunStore {
|
|
|
322
292
|
run.status = "failed";
|
|
323
293
|
run.finishedAt = new Date().toISOString();
|
|
324
294
|
run.error = error instanceof Error ? error.message : String(error);
|
|
325
|
-
|
|
295
|
+
this.persist(run);
|
|
326
296
|
this.logger(`[agentkit] eval run ${runId}: failed — ${run.error}`);
|
|
327
297
|
}
|
|
328
298
|
finally {
|
|
@@ -383,6 +353,24 @@ function markInterruptedRun(run) {
|
|
|
383
353
|
c.error = (_c = c.error) !== null && _c !== void 0 ? _c : INTERRUPTED_CASE_ERROR;
|
|
384
354
|
}
|
|
385
355
|
}
|
|
356
|
+
// Reconcile the summary with the repaired case rows so a persisted
|
|
357
|
+
// interrupted batch never claims pre-interruption pass counts.
|
|
358
|
+
let passed = 0;
|
|
359
|
+
let failed = 0;
|
|
360
|
+
for (const c of run.cases) {
|
|
361
|
+
if (c.ok === true) {
|
|
362
|
+
passed += 1;
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
failed += 1;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
run.summary = {
|
|
369
|
+
passed,
|
|
370
|
+
failed,
|
|
371
|
+
total: run.cases.length,
|
|
372
|
+
done: run.cases.length,
|
|
373
|
+
};
|
|
386
374
|
}
|
|
387
375
|
function snapshotListConfig(config, durableRuns) {
|
|
388
376
|
return Object.assign(Object.assign(Object.assign({}, (config.maxConcurrency === undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/internal/init-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA2BD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAgH5B;AAWD,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,yDAAyD;IACzD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;KAC3B,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,iCAAiC,CAAC,CAW5C;AAkDD,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG,0BAA0B,GACzD,oBAAoB,CAAC;AAMvB;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAgBzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAErE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAQpB;AAwBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,EAAE,CAEX;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/internal/init-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA2BD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAgH5B;AAWD,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,yDAAyD;IACzD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;KAC3B,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,iCAAiC,CAAC,CAW5C;AAkDD,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG,0BAA0B,GACzD,oBAAoB,CAAC;AAMvB;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAgBzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAErE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAQpB;AAwBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,EAAE,CAEX;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAuBrC"}
|
|
@@ -301,14 +301,15 @@ Recommended loop once the project exists:
|
|
|
301
301
|
1. Edit agent/ + tools under agent/tools/
|
|
302
302
|
2. ${CLI_COMMAND_NAME} info --dir . --json
|
|
303
303
|
3. ${CLI_COMMAND_NAME} run --dir . --message "..."
|
|
304
|
-
4. ${CLI_COMMAND_NAME} eval --dir .
|
|
304
|
+
4. ${CLI_COMMAND_NAME} eval --local --dir .
|
|
305
305
|
|
|
306
306
|
Evals:
|
|
307
307
|
Create evals/**/*.eval.ts using defineEval from ${PACKAGE_NAME}/evals
|
|
308
308
|
Case id is the path: evals/weather/nyc.eval.ts → weather/nyc
|
|
309
309
|
Required: evals/evals.config.ts with defineEvalConfig({ maxConcurrency })
|
|
310
310
|
(hard-capped at 200 due to model provider request limits)
|
|
311
|
-
Run: ${CLI_COMMAND_NAME} eval [--json] [evalId...]
|
|
311
|
+
Run: ${CLI_COMMAND_NAME} eval --local [--json] [evalId...]
|
|
312
|
+
(omit --local to run against the hosted deployment)
|
|
312
313
|
|
|
313
314
|
See AGENTS.md in the ${PACKAGE_NAME} package for the full loop.
|
|
314
315
|
`);
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
* request-targets are rejected so injected headers never leave the configured
|
|
15
15
|
* upstream.
|
|
16
16
|
*
|
|
17
|
-
* When `refreshUpstream` is provided (
|
|
18
|
-
* re-minted shortly before `expiresAt` and once on upstream
|
|
19
|
-
* playground session does not require restarting the CLI.
|
|
17
|
+
* When `refreshUpstream` is provided (e.g. short-lived upstream tokens),
|
|
18
|
+
* credentials are re-minted shortly before `expiresAt` and once on upstream
|
|
19
|
+
* 401 so a long playground session does not require restarting the CLI.
|
|
20
20
|
*/
|
|
21
21
|
import { createServer } from "node:http";
|
|
22
22
|
import { openBrowser } from "./open-browser.js";
|
|
@@ -49,8 +49,8 @@ export interface StartPlaygroundProxyArgs {
|
|
|
49
49
|
/** Initial engineAccess expiry (ISO); enables proactive refresh. */
|
|
50
50
|
expiresAt?: string;
|
|
51
51
|
/**
|
|
52
|
-
* Re-mint upstream URL + headers
|
|
53
|
-
*
|
|
52
|
+
* Re-mint upstream URL + headers. Single-flighted across concurrent browser
|
|
53
|
+
* requests; called near expiry and once on 401.
|
|
54
54
|
*/
|
|
55
55
|
refreshUpstream?: () => Promise<PlaygroundUpstreamAccess>;
|
|
56
56
|
/** Bind port; `0` = ephemeral. */
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
* request-targets are rejected so injected headers never leave the configured
|
|
15
15
|
* upstream.
|
|
16
16
|
*
|
|
17
|
-
* When `refreshUpstream` is provided (
|
|
18
|
-
* re-minted shortly before `expiresAt` and once on upstream
|
|
19
|
-
* playground session does not require restarting the CLI.
|
|
17
|
+
* When `refreshUpstream` is provided (e.g. short-lived upstream tokens),
|
|
18
|
+
* credentials are re-minted shortly before `expiresAt` and once on upstream
|
|
19
|
+
* 401 so a long playground session does not require restarting the CLI.
|
|
20
20
|
*/
|
|
21
21
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
22
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -30,11 +30,41 @@ export interface ResolvedProdTarget {
|
|
|
30
30
|
slug: string;
|
|
31
31
|
expiresAt: string;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Thrown when a hosted deployment cannot be resolved. `notFound` is true
|
|
35
|
+
* when the deployment does not exist, so callers can suggest deploying
|
|
36
|
+
* (or running locally) instead of surfacing a bare API error.
|
|
37
|
+
*/
|
|
38
|
+
export declare class ProdTargetError extends Error {
|
|
39
|
+
readonly options: {
|
|
40
|
+
slug: string;
|
|
41
|
+
notFound?: boolean;
|
|
42
|
+
};
|
|
43
|
+
constructor(message: string, options?: {
|
|
44
|
+
slug: string;
|
|
45
|
+
notFound?: boolean;
|
|
46
|
+
});
|
|
47
|
+
get slug(): string;
|
|
48
|
+
get notFound(): boolean;
|
|
49
|
+
}
|
|
33
50
|
/**
|
|
34
51
|
* Look up a running deployment and return its engineAccess URL/headers.
|
|
35
52
|
* Throws {@link Error} with a CLI-ready message on failure.
|
|
36
53
|
*/
|
|
37
54
|
export declare function resolveProdTarget(options: ResolveProdTargetOptions): Promise<ResolvedProdTarget>;
|
|
55
|
+
export interface ResolvedProdAliasPlayground {
|
|
56
|
+
/** Hosted playground URL on the API alias (SPA owns alias-token sign-in). */
|
|
57
|
+
playgroundUrl: string;
|
|
58
|
+
slug: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Look up a running deployment and return its stable alias playground URL.
|
|
62
|
+
* Does not mint `engineAccess` — the browser signs in with the alias token.
|
|
63
|
+
* Throws {@link Error} with a CLI-ready message on failure.
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveProdAliasPlaygroundUrl(options: ResolveProdTargetOptions & {
|
|
66
|
+
sessionId?: string;
|
|
67
|
+
}): Promise<ResolvedProdAliasPlayground>;
|
|
38
68
|
/** Resolve the deployment slug the same way `deploy` does for a single dir. */
|
|
39
69
|
export declare function resolveProdSlug(options: {
|
|
40
70
|
dir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-prod-target.d.ts","sourceRoot":"","sources":["../../src/internal/resolve-prod-target.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGrE,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,gDAAgD;IAChD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"resolve-prod-target.d.ts","sourceRoot":"","sources":["../../src/internal/resolve-prod-target.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGrE,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,gDAAgD;IAChD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAGtC,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;IAFxD,YACE,OAAO,EAAE,MAAM,EACN,OAAO,GAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAiB,EAItE;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA0F7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,wBAAwB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,2BAA2B,CAAC,CAyDtC;AAiBD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAgBT"}
|
|
@@ -29,6 +29,24 @@ export const PROD_ENGINE_WAKE_HEADERS = {
|
|
|
29
29
|
"x-anyrun-hibernation-lower-bound-s": "1800",
|
|
30
30
|
"x-anyrun-hibernation-upper-bound-s": "3600",
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Thrown when a hosted deployment cannot be resolved. `notFound` is true
|
|
34
|
+
* when the deployment does not exist, so callers can suggest deploying
|
|
35
|
+
* (or running locally) instead of surfacing a bare API error.
|
|
36
|
+
*/
|
|
37
|
+
export class ProdTargetError extends Error {
|
|
38
|
+
constructor(message, options = { slug: "" }) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.options = options;
|
|
41
|
+
this.name = "ProdTargetError";
|
|
42
|
+
}
|
|
43
|
+
get slug() {
|
|
44
|
+
return this.options.slug;
|
|
45
|
+
}
|
|
46
|
+
get notFound() {
|
|
47
|
+
return this.options.notFound === true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
32
50
|
/**
|
|
33
51
|
* Look up a running deployment and return its engineAccess URL/headers.
|
|
34
52
|
* Throws {@link Error} with a CLI-ready message on failure.
|
|
@@ -45,7 +63,9 @@ export function resolveProdTarget(options) {
|
|
|
45
63
|
err,
|
|
46
64
|
});
|
|
47
65
|
if (typeof auth === "number") {
|
|
48
|
-
|
|
66
|
+
// Not "--prod": `eval` resolves the hosted deployment by default,
|
|
67
|
+
// without any flag.
|
|
68
|
+
throw new Error(`Could not resolve Cursor credentials/team for the hosted deployment (see above).`);
|
|
49
69
|
}
|
|
50
70
|
// A hibernated engine can briefly omit engineAccess while getPod fails
|
|
51
71
|
// during wake. Retry a few times before surfacing "not reachable yet".
|
|
@@ -61,7 +81,7 @@ export function resolveProdTarget(options) {
|
|
|
61
81
|
}
|
|
62
82
|
catch (error) {
|
|
63
83
|
if (error instanceof DeployApiError) {
|
|
64
|
-
throw new
|
|
84
|
+
throw new ProdTargetError(`Deployment "${slug}" (team ${auth.teamId}): ${error.message}`, { slug, notFound: error.status === 404 });
|
|
65
85
|
}
|
|
66
86
|
throw error;
|
|
67
87
|
}
|
|
@@ -102,6 +122,58 @@ export function resolveProdTarget(options) {
|
|
|
102
122
|
};
|
|
103
123
|
});
|
|
104
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Look up a running deployment and return its stable alias playground URL.
|
|
127
|
+
* Does not mint `engineAccess` — the browser signs in with the alias token.
|
|
128
|
+
* Throws {@link Error} with a CLI-ready message on failure.
|
|
129
|
+
*/
|
|
130
|
+
export function resolveProdAliasPlaygroundUrl(options) {
|
|
131
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
+
var _a;
|
|
133
|
+
const err = (_a = options.err) !== null && _a !== void 0 ? _a : ((text) => void process.stderr.write(text));
|
|
134
|
+
const slug = resolveProdSlug(options);
|
|
135
|
+
const auth = yield resolveDeployAuth({
|
|
136
|
+
team: options.team,
|
|
137
|
+
apiKey: options.apiKey,
|
|
138
|
+
fetchImpl: options.fetchImpl,
|
|
139
|
+
err,
|
|
140
|
+
});
|
|
141
|
+
if (typeof auth === "number") {
|
|
142
|
+
throw new Error(`Could not resolve Cursor credentials/team for the hosted deployment (see above).`);
|
|
143
|
+
}
|
|
144
|
+
let detail;
|
|
145
|
+
try {
|
|
146
|
+
detail = yield auth.client.getDeployment({
|
|
147
|
+
teamId: auth.teamId,
|
|
148
|
+
slug,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (error instanceof DeployApiError) {
|
|
153
|
+
throw new Error(`Deployment "${slug}" (team ${auth.teamId}): ${error.message}`);
|
|
154
|
+
}
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
const statusOk = detail.status === "running" || detail.status === "degraded";
|
|
158
|
+
if (!statusOk) {
|
|
159
|
+
const lastError = detail.lastError === null || detail.lastError === undefined
|
|
160
|
+
? ""
|
|
161
|
+
: ` ${sanitizeCustomerFacingDetail(detail.lastError)}`;
|
|
162
|
+
throw new Error(`Deployment "${slug}" is ${detail.status}, not running.${lastError}\n` +
|
|
163
|
+
`Deploy or wait: \`${CLI} deploy --slug ${slug}\` / \`${CLI} deployment ${slug}\``);
|
|
164
|
+
}
|
|
165
|
+
const aliasBase = auth.client.aliasUrl(detail.engineAlias).replace(/\/$/, "");
|
|
166
|
+
const base = `${aliasBase}/playground`;
|
|
167
|
+
const sessionId = options.sessionId !== undefined && options.sessionId.trim() !== ""
|
|
168
|
+
? options.sessionId.trim()
|
|
169
|
+
: undefined;
|
|
170
|
+
const playgroundUrl = sessionId === undefined
|
|
171
|
+
? base
|
|
172
|
+
: `${base}?sessionId=${encodeURIComponent(sessionId)}`;
|
|
173
|
+
err(`${stderrPalette().dim(`Using hosted deployment "${slug}".`)}\n`);
|
|
174
|
+
return { playgroundUrl, slug };
|
|
175
|
+
});
|
|
176
|
+
}
|
|
105
177
|
/** Strip obvious hosting internals from customer-facing error fragments. */
|
|
106
178
|
function sanitizeCustomerFacingDetail(message) {
|
|
107
179
|
return message
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAOhB,YAAY,EACb,MAAM,aAAa,CAAC;AAoFrB,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAapE,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAYD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAOhB,YAAY,EACb,MAAM,aAAa,CAAC;AAoFrB,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAapE,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAYD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CA2lB3B"}
|
package/dist/internal/server.js
CHANGED
|
@@ -223,9 +223,8 @@ export function startServer(mounts_1) {
|
|
|
223
223
|
const scheduleRunner = new ScheduleRunner(engine, project, logger);
|
|
224
224
|
const reminderRunner = new ReminderRunner(engine, logger);
|
|
225
225
|
const evalRuns = new EvalRunStore(project.rootDir, logger,
|
|
226
|
-
//
|
|
227
|
-
|
|
228
|
-
(_b = engine.storage) === null || _b === void 0 ? void 0 : _b.asEvalRunPersistence());
|
|
226
|
+
// Playground eval history mirrors onto the defineStorage evals table.
|
|
227
|
+
(_b = engine.storage) === null || _b === void 0 ? void 0 : _b.evalRuns());
|
|
229
228
|
// Eval history restores with the same startup step as sessions (reads
|
|
230
229
|
// also hydrate lazily, but doing it here surfaces store problems at
|
|
231
230
|
// boot and makes /v1/dev/evals complete from the first request).
|
|
@@ -561,6 +560,9 @@ export function startServer(mounts_1) {
|
|
|
561
560
|
for (const runtime of runtimes) {
|
|
562
561
|
runtime.scheduleRunner.stop();
|
|
563
562
|
runtime.reminderRunner.stop();
|
|
563
|
+
// Before the engines close their storage coordinators, so the
|
|
564
|
+
// interrupted-batch write can still reach the sink.
|
|
565
|
+
runtime.evalRuns.close();
|
|
564
566
|
}
|
|
565
567
|
for (const stop of channelStopHooks) {
|
|
566
568
|
try {
|
|
@@ -87,8 +87,7 @@ export declare class SessionEngine {
|
|
|
87
87
|
* Runtime for `agent/storage.ts` (`defineStorage`), when
|
|
88
88
|
* authored. All durable state changes funnel through it (session
|
|
89
89
|
* records, event chunks, A/B samples/snapshots); the eval run store
|
|
90
|
-
* attaches via {@link StorageCoordinator.
|
|
91
|
-
* serve start.
|
|
90
|
+
* attaches via {@link StorageCoordinator.evalRuns} at serve start.
|
|
92
91
|
*/
|
|
93
92
|
readonly storage: StorageCoordinator | undefined;
|
|
94
93
|
/** In-flight lazy restores, deduped per channel + continuation key. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"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"}
|