@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
package/dist/evals.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evals.d.ts","sourceRoot":"","sources":["../src/evals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;
|
|
1
|
+
{"version":3,"file":"evals.d.ts","sourceRoot":"","sources":["../src/evals.ts"],"names":[],"mappings":"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"}
|
package/dist/evals.js
CHANGED
|
@@ -45,18 +45,8 @@
|
|
|
45
45
|
* });
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
49
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
50
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
51
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
52
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
53
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
54
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
48
|
import { normalizePositiveInt } from "./internal/bounded-int.js";
|
|
58
49
|
import { brandDefinition } from "./internal/brand.js";
|
|
59
|
-
import { assertNonEmptyDir, deleteFileInDir, readJsonDir, resolveProjectRelativeDir, writeJsonFile, } from "./internal/json-dir-store.js";
|
|
60
50
|
export function includes(value) {
|
|
61
51
|
return { kind: "includes", value };
|
|
62
52
|
}
|
|
@@ -160,13 +150,12 @@ export const EVAL_MAX_PLAYGROUND_RUNS = 500;
|
|
|
160
150
|
* Defaults for every eval under `evals/` (`evals/evals.config.ts`).
|
|
161
151
|
* `maxConcurrency` is required (1–{@link EVAL_MAX_CONCURRENCY_LIMIT}).
|
|
162
152
|
*
|
|
163
|
-
* Playground batches default to **in-memory only
|
|
164
|
-
*
|
|
153
|
+
* Playground batches default to **in-memory only**; author an `evals`
|
|
154
|
+
* table in `agent/storage.ts` (`defineStorage`) to survive serve restart.
|
|
165
155
|
*/
|
|
166
156
|
export function defineEvalConfig(config) {
|
|
167
157
|
var _a;
|
|
168
|
-
|
|
169
|
-
return Object.assign(Object.assign(Object.assign({}, (config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs })), { maxConcurrency: normalizeEvalMaxConcurrency(config.maxConcurrency), maxPlaygroundRuns: normalizeEvalMaxPlaygroundRuns((_a = config.maxPlaygroundRuns) !== null && _a !== void 0 ? _a : EVAL_DEFAULT_MAX_PLAYGROUND_RUNS) }), (persistRuns === undefined ? {} : { persistRuns }));
|
|
158
|
+
return Object.assign(Object.assign({}, (config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs })), { maxConcurrency: normalizeEvalMaxConcurrency(config.maxConcurrency), maxPlaygroundRuns: normalizeEvalMaxPlaygroundRuns((_a = config.maxPlaygroundRuns) !== null && _a !== void 0 ? _a : EVAL_DEFAULT_MAX_PLAYGROUND_RUNS) });
|
|
170
159
|
}
|
|
171
160
|
/**
|
|
172
161
|
* Validate and enforce the hard concurrency ceiling.
|
|
@@ -200,55 +189,3 @@ export function resolveEvalMaxPlaygroundRuns(value) {
|
|
|
200
189
|
return EVAL_DEFAULT_MAX_PLAYGROUND_RUNS;
|
|
201
190
|
}
|
|
202
191
|
}
|
|
203
|
-
function normalizePersistRuns(value) {
|
|
204
|
-
if (value === undefined) {
|
|
205
|
-
return undefined;
|
|
206
|
-
}
|
|
207
|
-
if (typeof value !== "object" ||
|
|
208
|
-
value === null ||
|
|
209
|
-
typeof value.load !== "function" ||
|
|
210
|
-
typeof value.save !== "function" ||
|
|
211
|
-
typeof value.delete !== "function") {
|
|
212
|
-
throw new Error("evals.config.ts: persistRuns must define load(ctx), save(run, ctx), and delete(runId, ctx)");
|
|
213
|
-
}
|
|
214
|
-
return value;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Filesystem {@link EvalRunPersistence}: one JSON file per run under `dir`
|
|
218
|
-
* (relative paths resolve against the agent project root).
|
|
219
|
-
*
|
|
220
|
-
* ```ts
|
|
221
|
-
* export default defineEvalConfig({
|
|
222
|
-
* maxConcurrency: 20,
|
|
223
|
-
* persistRuns: persistEvalRunsToDir(".agent-serve/eval-runs"),
|
|
224
|
-
* });
|
|
225
|
-
* ```
|
|
226
|
-
*/
|
|
227
|
-
export function persistEvalRunsToDir(dir) {
|
|
228
|
-
const relativeDir = assertNonEmptyDir(dir, "persistEvalRunsToDir");
|
|
229
|
-
const resolveDir = (projectRoot) => resolveProjectRelativeDir({ dir: relativeDir, projectRoot });
|
|
230
|
-
return {
|
|
231
|
-
load(ctx) {
|
|
232
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
233
|
-
return readJsonDir(resolveDir(ctx.projectRoot));
|
|
234
|
-
});
|
|
235
|
-
},
|
|
236
|
-
save(run, ctx) {
|
|
237
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
238
|
-
yield writeJsonFile({
|
|
239
|
-
root: resolveDir(ctx.projectRoot),
|
|
240
|
-
fileName: `${run.runId}.json`,
|
|
241
|
-
value: run,
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
},
|
|
245
|
-
delete(runId, ctx) {
|
|
246
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
247
|
-
yield deleteFileInDir({
|
|
248
|
-
root: resolveDir(ctx.projectRoot),
|
|
249
|
-
fileName: `${runId}.json`,
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
},
|
|
253
|
-
};
|
|
254
|
-
}
|
package/dist/index.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export { SessionBusyError, ToolInputError, ToolNotDirectlyCallableError, Unknown
|
|
|
29
29
|
export type { ReminderBusyPolicy, ReminderCreateInput, ReminderFireContext, ReminderFireResult, ReminderHostApi, ReminderInfo, ReminderReschedule, ReminderScheduleKind, ReminderStatus, ReminderTarget, ReminderUntilContext, } from "./reminders.js";
|
|
30
30
|
export { defineSchedule } from "./schedules.js";
|
|
31
31
|
export { defineSkill } from "./skills.js";
|
|
32
|
-
export type { StorageConfig, StorageContext, StorageDefinition, StorageEntry, StoragePolicy, StorageRestorePolicy, } from "./storage.js";
|
|
32
|
+
export type { StorageABTable, StorageConfig, StorageContext, StorageDefinition, StorageEntry, StorageEvalsTable, StoragePolicy, StorageRestorePolicy, } from "./storage.js";
|
|
33
33
|
export { defineStorage, STORAGE_KEY_ROOT, storageKeys, } from "./storage.js";
|
|
34
34
|
export { defineTool } from "./tools.js";
|
|
35
35
|
export type * from "./types.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EACL,QAAQ,EACR,UAAU,EACV,MAAM,EACN,aAAa,EACb,GAAG,EACH,WAAW,EACX,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,GAAG,GACJ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,mBAAmB,YAAY,CAAC;AAChC,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,qBAAqB,CAEtE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,GACzB,sBAAsB,CAExB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,KAAK,CACzB,YAAY,EAAE,MAAM,GAAG,YAAY,EACnC,OAAO,GAAE,YAAY,GAAG;IACtB,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,gBAAgB,CAAC,CAqB3B"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,15 @@
|
|
|
13
13
|
* replay already includes the current event — after rebuild we return
|
|
14
14
|
* without folding it again (and without re-firing `onSample`).
|
|
15
15
|
*/
|
|
16
|
-
import { type
|
|
16
|
+
import { type ABMetricSample } from "../ab.js";
|
|
17
17
|
import type { DiscoveredAB, SessionEvent, SessionInfo } from "../types.js";
|
|
18
18
|
export type { DiscoveredAB };
|
|
19
19
|
export interface ABCollectorOptions {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Durable sample export (the `defineStorage` `abs` table, via the
|
|
22
|
+
* coordinator). Fire-and-forget; must never throw.
|
|
23
|
+
*/
|
|
24
|
+
persistSample?: (sample: ABMetricSample) => void;
|
|
22
25
|
}
|
|
23
26
|
export declare class ABCollector {
|
|
24
27
|
private readonly experiments;
|
|
@@ -26,8 +29,7 @@ export declare class ABCollector {
|
|
|
26
29
|
private readonly loadEvents;
|
|
27
30
|
private readonly state;
|
|
28
31
|
private readonly hydrated;
|
|
29
|
-
private readonly
|
|
30
|
-
private readonly persistSamples;
|
|
32
|
+
private readonly persistSample;
|
|
31
33
|
constructor(experiments: readonly DiscoveredAB[], logger: (line: string) => void, loadEvents: (sessionId: string) => Promise<SessionEvent[]>, options?: ABCollectorOptions);
|
|
32
34
|
get enabled(): boolean;
|
|
33
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ab-collector.d.ts","sourceRoot":"","sources":["../../src/internal/ab-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,
|
|
1
|
+
{"version":3,"file":"ab-collector.d.ts","sourceRoot":"","sources":["../../src/internal/ab-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU3E,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CAClD;AASD,qBAAa,WAAW;IAQpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAT7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAEhB;IAEd,YACmB,WAAW,EAAE,SAAS,YAAY,EAAE,EACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,EAC3E,OAAO,CAAC,EAAE,kBAAkB,EAG7B;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACG,OAAO,CACX,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAuBf;IAED,OAAO,CAAC,IAAI;YAKE,IAAI;IA6ElB,OAAO,CAAC,YAAY;CAQrB"}
|
|
@@ -38,8 +38,7 @@ export class ABCollector {
|
|
|
38
38
|
this.loadEvents = loadEvents;
|
|
39
39
|
this.state = new Map();
|
|
40
40
|
this.hydrated = new Set();
|
|
41
|
-
this.
|
|
42
|
-
this.persistSamples = options === null || options === void 0 ? void 0 : options.persistSamples;
|
|
41
|
+
this.persistSample = options === null || options === void 0 ? void 0 : options.persistSample;
|
|
43
42
|
}
|
|
44
43
|
get enabled() {
|
|
45
44
|
return this.experiments.length > 0;
|
|
@@ -78,7 +77,7 @@ export class ABCollector {
|
|
|
78
77
|
}
|
|
79
78
|
fold(event, sessionInfo, agentName, options) {
|
|
80
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
var _a;
|
|
80
|
+
var _a, _b;
|
|
82
81
|
const session = this.sessionAccum(event.sessionId);
|
|
83
82
|
if (event.type === "ab.assigned") {
|
|
84
83
|
foldABEvent(session, event);
|
|
@@ -121,17 +120,7 @@ export class ABCollector {
|
|
|
121
120
|
catch (error) {
|
|
122
121
|
this.logger(`[agentkit] ab "${experiment.name}" onSample threw: ${describeError(error)}`);
|
|
123
122
|
}
|
|
124
|
-
|
|
125
|
-
this.projectRoot !== undefined) {
|
|
126
|
-
try {
|
|
127
|
-
yield this.persistSamples.save(sample, {
|
|
128
|
-
projectRoot: this.projectRoot,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
this.logger(`[agentkit] ab persistSamples.save threw: ${describeError(error)}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
123
|
+
(_b = this.persistSample) === null || _b === void 0 ? void 0 : _b.call(this, sample);
|
|
135
124
|
}
|
|
136
125
|
}
|
|
137
126
|
});
|
|
@@ -38,12 +38,10 @@ export interface ABSnapshotExperiment {
|
|
|
38
38
|
export interface ABSnapshotConfig {
|
|
39
39
|
/** Newest-first session fold window for this snapshot (`GET /v1/abs`). */
|
|
40
40
|
maxPlaygroundSessions?: number;
|
|
41
|
-
/** True when `
|
|
41
|
+
/** True when the `defineStorage` `abs` table is configured. */
|
|
42
42
|
durableSamples?: boolean;
|
|
43
|
-
/** True when `
|
|
43
|
+
/** True when the `abs` table also stores the aggregate snapshot. */
|
|
44
44
|
durableSnapshots?: boolean;
|
|
45
|
-
/** Set when writing via filesystem snapshot persistence helpers. */
|
|
46
|
-
snapshotId?: string;
|
|
47
45
|
}
|
|
48
46
|
export interface ABSnapshot {
|
|
49
47
|
experiments: ABSnapshotExperiment[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ab-snapshot.d.ts","sourceRoot":"","sources":["../../src/internal/ab-snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,aAAa,EAGnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACf,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B
|
|
1
|
+
{"version":3,"file":"ab-snapshot.d.ts","sourceRoot":"","sources":["../../src/internal/ab-snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,aAAa,EAGnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACf,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3D,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,WAAW,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAiOrB;AAiBD,gFAAgF;AAChF,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -48,8 +48,15 @@ export interface AxCliOptions {
|
|
|
48
48
|
* Route chat/resume/run/call/eval/logs/sessions at the team's hosted
|
|
49
49
|
* deployment
|
|
50
50
|
* instead of a local ephemeral server. Mutually exclusive with `--url`.
|
|
51
|
+
* `eval` targets the deployment by default, so there `--prod` is just
|
|
52
|
+
* being explicit.
|
|
51
53
|
*/
|
|
52
54
|
prod?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* `eval`: run against an ephemeral local server instead of the hosted
|
|
57
|
+
* deployment (the eval default). Mutually exclusive with `--url`/`--prod`.
|
|
58
|
+
*/
|
|
59
|
+
local?: boolean;
|
|
53
60
|
/** Cursor team id for `--prod` (defaults to the account's team). */
|
|
54
61
|
team?: string;
|
|
55
62
|
/** Cursor API key override for `--prod` management calls. */
|
|
@@ -112,6 +119,14 @@ export declare function cmdRun(options: AxCliOptions): Promise<number>;
|
|
|
112
119
|
*/
|
|
113
120
|
export declare function cmdCall(options: AxCliOptions): Promise<number>;
|
|
114
121
|
export declare function cmdTrajectory(options: AxCliOptions): Promise<number>;
|
|
122
|
+
/**
|
|
123
|
+
* Which surface `eval` should target. Deployment is the default; `--local`
|
|
124
|
+
* opts into an ephemeral local server, `--url` into a running one.
|
|
125
|
+
* Exported for tests.
|
|
126
|
+
*/
|
|
127
|
+
export declare function resolveEvalTargetMode(options: Pick<AxCliOptions, "local" | "prod" | "url">): "local" | "url" | "deployment" | {
|
|
128
|
+
error: string;
|
|
129
|
+
};
|
|
115
130
|
export declare function cmdEval(options: AxCliOptions): Promise<number>;
|
|
116
131
|
/**
|
|
117
132
|
* `logs` — follow deploy progress (`--prod`) then runtime agent logs.
|
|
@@ -131,9 +146,9 @@ export declare function cmdSession(sessionId: string | undefined, options: AxCli
|
|
|
131
146
|
/**
|
|
132
147
|
* `playground` — open the web UI against local / `--url` / `--prod`.
|
|
133
148
|
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
149
|
+
* `--prod` opens the stable hosted alias playground URL; the SPA collects
|
|
150
|
+
* the alias token. `--bearer-token` (and other injected headers) still run a
|
|
151
|
+
* loopback reverse proxy — Ctrl-C stops that proxy.
|
|
137
152
|
*/
|
|
138
153
|
export declare function cmdPlayground(options: AxCliOptions): Promise<number>;
|
|
139
154
|
//# sourceMappingURL=cli-ax.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-ax.d.ts","sourceRoot":"","sources":["../../src/internal/cli-ax.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"cli-ax.d.ts","sourceRoot":"","sources":["../../src/internal/cli-ax.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/cli-ax.js
CHANGED
|
@@ -30,7 +30,7 @@ import { offerInstallCursorSkills } from "./install-cursor-skills.js";
|
|
|
30
30
|
import { runLogsTail, sanitizeCustomerError } from "./logs-client.js";
|
|
31
31
|
import { openBrowser } from "./open-browser.js";
|
|
32
32
|
import { startPlaygroundProxy } from "./playground-proxy.js";
|
|
33
|
-
import { resolveProdSlug, resolveProdTarget } from "./resolve-prod-target.js";
|
|
33
|
+
import { ProdTargetError, resolveProdAliasPlaygroundUrl, resolveProdSlug, resolveProdTarget, } from "./resolve-prod-target.js";
|
|
34
34
|
import { runSession } from "./run-client.js";
|
|
35
35
|
import { fetchSessionEvents, formatSessionsTable, listSessions, resolvePreviousSessionId, } from "./sessions-client.js";
|
|
36
36
|
import { createStreamProgress } from "./stream-progress.js";
|
|
@@ -475,6 +475,70 @@ export function cmdTrajectory(options) {
|
|
|
475
475
|
return trajectory.ok ? 0 : 1;
|
|
476
476
|
});
|
|
477
477
|
}
|
|
478
|
+
/**
|
|
479
|
+
* Which surface `eval` should target. Deployment is the default; `--local`
|
|
480
|
+
* opts into an ephemeral local server, `--url` into a running one.
|
|
481
|
+
* Exported for tests.
|
|
482
|
+
*/
|
|
483
|
+
export function resolveEvalTargetMode(options) {
|
|
484
|
+
const flags = [
|
|
485
|
+
options.local === true ? "--local" : undefined,
|
|
486
|
+
options.prod === true ? "--prod" : undefined,
|
|
487
|
+
options.url !== undefined ? "--url" : undefined,
|
|
488
|
+
].filter((flag) => flag !== undefined);
|
|
489
|
+
if (flags.length > 1) {
|
|
490
|
+
return { error: `${flags.join(" and ")} are mutually exclusive` };
|
|
491
|
+
}
|
|
492
|
+
if (options.local === true) {
|
|
493
|
+
return "local";
|
|
494
|
+
}
|
|
495
|
+
if (options.url !== undefined) {
|
|
496
|
+
return "url";
|
|
497
|
+
}
|
|
498
|
+
return "deployment";
|
|
499
|
+
}
|
|
500
|
+
/** Resolve the eval target; prints a CLI-ready error and returns an exit code on failure. */
|
|
501
|
+
function resolveEvalTarget(options) {
|
|
502
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
503
|
+
const mode = resolveEvalTargetMode(options);
|
|
504
|
+
if (typeof mode === "object") {
|
|
505
|
+
process.stderr.write(`${mode.error}\n`);
|
|
506
|
+
return 2;
|
|
507
|
+
}
|
|
508
|
+
if (mode === "url") {
|
|
509
|
+
return { agentUrl: options.url.replace(/\/$/, "") };
|
|
510
|
+
}
|
|
511
|
+
if (mode === "local") {
|
|
512
|
+
return startEphemeral(options);
|
|
513
|
+
}
|
|
514
|
+
try {
|
|
515
|
+
const prod = yield resolveProdTarget({
|
|
516
|
+
dir: options.dir,
|
|
517
|
+
cwd: options.cwd,
|
|
518
|
+
slug: options.slug,
|
|
519
|
+
team: options.team,
|
|
520
|
+
apiKey: options.apiKey,
|
|
521
|
+
fetchImpl: options.fetchImpl,
|
|
522
|
+
});
|
|
523
|
+
return { agentUrl: prod.agentUrl, headers: prod.headers };
|
|
524
|
+
}
|
|
525
|
+
catch (error) {
|
|
526
|
+
if (error instanceof ProdTargetError && error.notFound) {
|
|
527
|
+
// Keep the API error text: a 404 can also mean a wrong API host or a
|
|
528
|
+
// disabled feature gate, and the message distinguishes those from a
|
|
529
|
+
// genuinely missing deployment.
|
|
530
|
+
process.stderr.write(`${sanitizeCustomerError(error.message)}\n` +
|
|
531
|
+
`Evals run on the hosted deployment by default.\n` +
|
|
532
|
+
` deploy it first: ${CLI_COMMAND_NAME} deploy --slug ${error.slug}\n` +
|
|
533
|
+
` or run locally: ${CLI_COMMAND_NAME} eval --local --dir ${options.dir}\n`);
|
|
534
|
+
return 1;
|
|
535
|
+
}
|
|
536
|
+
process.stderr.write(`${sanitizeCustomerError(error instanceof Error ? error.message : String(error))}\n` +
|
|
537
|
+
`Evals run on the hosted deployment by default; pass --local to run on an ephemeral local server.\n`);
|
|
538
|
+
return 1;
|
|
539
|
+
}
|
|
540
|
+
});
|
|
541
|
+
}
|
|
478
542
|
export function cmdEval(options) {
|
|
479
543
|
return __awaiter(this, void 0, void 0, function* () {
|
|
480
544
|
var _a;
|
|
@@ -510,7 +574,10 @@ export function cmdEval(options) {
|
|
|
510
574
|
}
|
|
511
575
|
return 0;
|
|
512
576
|
}
|
|
513
|
-
const target = yield
|
|
577
|
+
const target = yield resolveEvalTarget(options);
|
|
578
|
+
if (typeof target === "number") {
|
|
579
|
+
return target;
|
|
580
|
+
}
|
|
514
581
|
const stream = shouldStreamProgress(options);
|
|
515
582
|
const progress = stream ? createStreamProgress() : undefined;
|
|
516
583
|
try {
|
|
@@ -770,9 +837,9 @@ export function cmdSession(sessionId, options) {
|
|
|
770
837
|
/**
|
|
771
838
|
* `playground` — open the web UI against local / `--url` / `--prod`.
|
|
772
839
|
*
|
|
773
|
-
*
|
|
774
|
-
*
|
|
775
|
-
*
|
|
840
|
+
* `--prod` opens the stable hosted alias playground URL; the SPA collects
|
|
841
|
+
* the alias token. `--bearer-token` (and other injected headers) still run a
|
|
842
|
+
* loopback reverse proxy — Ctrl-C stops that proxy.
|
|
776
843
|
*/
|
|
777
844
|
export function cmdPlayground(options) {
|
|
778
845
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -783,58 +850,29 @@ export function cmdPlayground(options) {
|
|
|
783
850
|
const sessionId = options.sessionId !== undefined && options.sessionId.trim() !== ""
|
|
784
851
|
? options.sessionId.trim()
|
|
785
852
|
: undefined;
|
|
786
|
-
// Hosted:
|
|
853
|
+
// Hosted: open the alias playground; SPA owns alias-token sign-in.
|
|
787
854
|
if (options.prod === true) {
|
|
788
|
-
let
|
|
855
|
+
let resolved;
|
|
789
856
|
try {
|
|
790
|
-
|
|
857
|
+
resolved = yield resolveProdAliasPlaygroundUrl({
|
|
791
858
|
dir: options.dir,
|
|
792
859
|
cwd: options.cwd,
|
|
793
860
|
slug: options.slug,
|
|
794
861
|
team: options.team,
|
|
795
862
|
apiKey: options.apiKey,
|
|
796
863
|
fetchImpl: options.fetchImpl,
|
|
864
|
+
sessionId,
|
|
797
865
|
});
|
|
798
866
|
}
|
|
799
867
|
catch (error) {
|
|
800
868
|
process.stderr.write(`${sanitizeCustomerError(error instanceof Error ? error.message : String(error))}\n`);
|
|
801
869
|
return 1;
|
|
802
870
|
}
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
upstreamUrl: initial.agentUrl,
|
|
807
|
-
headers: initial.headers,
|
|
808
|
-
expiresAt: initial.expiresAt,
|
|
809
|
-
refreshUpstream: () => __awaiter(this, void 0, void 0, function* () {
|
|
810
|
-
var _a;
|
|
811
|
-
const next = yield resolveProdTarget({
|
|
812
|
-
dir: options.dir,
|
|
813
|
-
cwd: options.cwd,
|
|
814
|
-
slug: (_a = options.slug) !== null && _a !== void 0 ? _a : initial.slug,
|
|
815
|
-
team: options.team,
|
|
816
|
-
apiKey: options.apiKey,
|
|
817
|
-
fetchImpl: options.fetchImpl,
|
|
818
|
-
err: () => { },
|
|
819
|
-
});
|
|
820
|
-
return {
|
|
821
|
-
upstreamUrl: next.agentUrl,
|
|
822
|
-
headers: next.headers,
|
|
823
|
-
expiresAt: next.expiresAt,
|
|
824
|
-
};
|
|
825
|
-
}),
|
|
826
|
-
});
|
|
827
|
-
}
|
|
828
|
-
catch (error) {
|
|
829
|
-
process.stderr.write(`${sanitizeCustomerError(error instanceof Error ? error.message : String(error))}\n`);
|
|
830
|
-
return 1;
|
|
871
|
+
process.stdout.write(`${resolved.playgroundUrl}\n`);
|
|
872
|
+
if (options.print !== true) {
|
|
873
|
+
openBrowser(resolved.playgroundUrl);
|
|
831
874
|
}
|
|
832
|
-
return
|
|
833
|
-
proxy,
|
|
834
|
-
sessionId,
|
|
835
|
-
print: options.print === true,
|
|
836
|
-
signal: options.signal,
|
|
837
|
-
});
|
|
875
|
+
return 0;
|
|
838
876
|
}
|
|
839
877
|
const target = yield resolveSessionTarget(options);
|
|
840
878
|
if (typeof target === "number") {
|
|
@@ -464,7 +464,7 @@ function deployOne(ctx, options, target, extras) {
|
|
|
464
464
|
` kind: ${detail.deploymentKind}\n` +
|
|
465
465
|
` alias: ${aliasUrl}\n` +
|
|
466
466
|
` playground: ${aliasUrl}/playground (sign in with the alias token)\n` +
|
|
467
|
-
`
|
|
467
|
+
` open: ${CLI} playground --prod --slug ${slug} --team ${ctx.teamId}\n`);
|
|
468
468
|
return 0;
|
|
469
469
|
});
|
|
470
470
|
}
|
|
@@ -1226,7 +1226,7 @@ function loadSeedFiles(ctx, agentDir) {
|
|
|
1226
1226
|
// Info projection
|
|
1227
1227
|
// ============================================================================
|
|
1228
1228
|
export function projectInfo(project) {
|
|
1229
|
-
var _a, _b, _c;
|
|
1229
|
+
var _a, _b, _c, _d;
|
|
1230
1230
|
const agent = project.agent;
|
|
1231
1231
|
const httpRoutes = [
|
|
1232
1232
|
{ method: "POST", path: "/v1/session", url: "/v1/session" },
|
|
@@ -1324,8 +1324,8 @@ export function projectInfo(project) {
|
|
|
1324
1324
|
: {
|
|
1325
1325
|
abConfig: {
|
|
1326
1326
|
maxPlaygroundSessions: resolveABMaxPlaygroundSessions((_a = project.abConfig) === null || _a === void 0 ? void 0 : _a.maxPlaygroundSessions),
|
|
1327
|
-
durableSamples: ((_b = project.
|
|
1328
|
-
durableSnapshots: ((_c = project.
|
|
1327
|
+
durableSamples: ((_b = project.storage) === null || _b === void 0 ? void 0 : _b.abs) !== undefined,
|
|
1328
|
+
durableSnapshots: ((_d = (_c = project.storage) === null || _c === void 0 ? void 0 : _c.abs) === null || _d === void 0 ? void 0 : _d.putSnapshot) !== undefined,
|
|
1329
1329
|
},
|
|
1330
1330
|
})), { storage: project.storage === undefined
|
|
1331
1331
|
? undefined
|
|
@@ -1,13 +1,25 @@
|
|
|
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
|
*/
|
|
9
|
-
import { type
|
|
10
|
+
import { type EvalRunSnapshot } from "../evals.js";
|
|
10
11
|
export type { EvalBatchStatus, EvalCaseRunStatus as EvalCaseStatus, EvalCaseSnapshot, EvalRunSnapshot, } from "../evals.js";
|
|
12
|
+
/**
|
|
13
|
+
* Durable mirror for playground eval batches — the `StorageCoordinator`
|
|
14
|
+
* adapter over the `defineStorage` `evals` table. Writes are
|
|
15
|
+
* fire-and-forget (the coordinator serializes and isolates failures);
|
|
16
|
+
* `list` is the serve-start hydrate read.
|
|
17
|
+
*/
|
|
18
|
+
export interface EvalRunStorage {
|
|
19
|
+
save(run: EvalRunSnapshot): void;
|
|
20
|
+
delete(runId: string): void;
|
|
21
|
+
list(): Promise<EvalRunSnapshot[]>;
|
|
22
|
+
}
|
|
11
23
|
export interface StartEvalRunInput {
|
|
12
24
|
filterIds?: string[];
|
|
13
25
|
tags?: string[];
|
|
@@ -18,33 +30,23 @@ export type EvalListConfig = {
|
|
|
18
30
|
maxConcurrency?: number;
|
|
19
31
|
timeoutMs?: number;
|
|
20
32
|
maxPlaygroundRuns: number;
|
|
21
|
-
/** True when `
|
|
33
|
+
/** True when `agent/storage.ts` declares an `evals` table. */
|
|
22
34
|
durableRuns: boolean;
|
|
23
35
|
};
|
|
24
36
|
export declare class EvalRunStore {
|
|
25
37
|
private readonly projectRoot;
|
|
26
38
|
private readonly logger;
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
* used when `evals.config.ts` sets no `persistRuns` of its own.
|
|
30
|
-
*/
|
|
31
|
-
private readonly fallbackPersistence?;
|
|
39
|
+
/** `defineStorage` evals-table adapter; undefined ⇒ memory only. */
|
|
40
|
+
private readonly storage?;
|
|
32
41
|
private readonly runs;
|
|
33
42
|
private activeRunId;
|
|
34
43
|
private hydratePromise;
|
|
35
44
|
private hydrated;
|
|
36
|
-
/** Per-run persist chain so intermediate saves cannot overwrite a later final write. */
|
|
37
|
-
private readonly persistChains;
|
|
38
45
|
/** Filled after listen — e.g. `http://127.0.0.1:3000/weather-agent`. */
|
|
39
46
|
loopbackUrl: string | undefined;
|
|
40
47
|
constructor(projectRoot: string, logger: (line: string) => void,
|
|
41
|
-
/**
|
|
42
|
-
|
|
43
|
-
* used when `evals.config.ts` sets no `persistRuns` of its own.
|
|
44
|
-
*/
|
|
45
|
-
fallbackPersistence?: EvalRunPersistence | undefined);
|
|
46
|
-
/** `evals.config.ts` `persistRuns` wins; `defineStorage` is fallback. */
|
|
47
|
-
private resolvePersist;
|
|
48
|
+
/** `defineStorage` evals-table adapter; undefined ⇒ memory only. */
|
|
49
|
+
storage?: EvalRunStorage | undefined);
|
|
48
50
|
list(): Promise<{
|
|
49
51
|
evals: Array<{
|
|
50
52
|
id: string;
|
|
@@ -70,23 +72,24 @@ export declare class EvalRunStore {
|
|
|
70
72
|
start(input?: StartEvalRunInput): Promise<EvalRunSnapshot>;
|
|
71
73
|
private sortedRuns;
|
|
72
74
|
/**
|
|
73
|
-
* Hydrate playground eval history from
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* Idempotent; concurrent callers share one pass.
|
|
75
|
+
* Hydrate playground eval history from the `defineStorage` evals table.
|
|
76
|
+
* Called eagerly from the serve startup restore step — alongside session
|
|
77
|
+
* restore — and lazily as a safety net by every read. Idempotent;
|
|
78
|
+
* concurrent callers share one pass.
|
|
78
79
|
*/
|
|
79
80
|
hydrate(): Promise<void>;
|
|
80
|
-
private
|
|
81
|
+
private hydrateFromStorage;
|
|
81
82
|
private pruneOldRuns;
|
|
83
|
+
/** Mirror the run onto durable storage (coordinator clones + serializes). */
|
|
84
|
+
private persist;
|
|
82
85
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
+
* Serve is draining: durably mark any in-flight batch as interrupted
|
|
87
|
+
* while the storage queue can still deliver. Late `execute` writes are
|
|
88
|
+
* dropped by the closed coordinator, so without this a batch that was
|
|
89
|
+
* running at shutdown would look "running" (or silently lose its final
|
|
90
|
+
* completion write) until the next hydrate repairs it.
|
|
86
91
|
*/
|
|
87
|
-
|
|
88
|
-
private persistSave;
|
|
89
|
-
private persistDelete;
|
|
92
|
+
close(): void;
|
|
90
93
|
private execute;
|
|
91
94
|
private applyCaseResult;
|
|
92
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-run-store.d.ts","sourceRoot":"","sources":["../../src/internal/eval-run-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"eval-run-store.d.ts","sourceRoot":"","sources":["../../src/internal/eval-run-store.ts"],"names":[],"mappings":"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"}
|