@cursor/july 0.1.27 → 0.1.29
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/bin/agent-serve.js +32 -5
- package/dist/channels/slack/auth.d.ts +13 -13
- package/dist/channels/slack/auth.d.ts.map +1 -1
- package/dist/channels/slack/auth.js +19 -10
- package/dist/channels/slack/cursor-account.d.ts.map +1 -1
- package/dist/channels/slack/cursor-account.js +3 -1
- package/dist/channels/slack/defaults.d.ts +7 -4
- package/dist/channels/slack/defaults.d.ts.map +1 -1
- package/dist/channels/slack/defaults.js +14 -4
- package/dist/channels/slack/dispatch.d.ts +6 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +59 -21
- package/dist/channels/slack/external-policy.d.ts +27 -0
- package/dist/channels/slack/external-policy.d.ts.map +1 -0
- package/dist/channels/slack/external-policy.js +53 -0
- package/dist/channels/slack/index.d.ts +1 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +1 -0
- package/dist/channels/slack/interactive.d.ts +6 -0
- package/dist/channels/slack/interactive.d.ts.map +1 -1
- package/dist/channels/slack/interactive.js +42 -15
- package/dist/channels/slack/slack-channel.d.ts +19 -1
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +48 -6
- package/dist/channels/slack/types.d.ts +10 -0
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.BICLoJYF.js → app.QdunVQKg.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DGe61XHA.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.wN4Ko9dT.js → VPLocalSearchBox.B6EpUXYf.js} +1 -1
- package/dist/docs/assets/chunks/{theme.dnnTE-Co.js → theme.BOTJVqh7.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.D_xFKlnF.js → guides_slack.md.CjmJSvZS.js} +8 -4
- package/dist/docs/assets/guides_slack.md.CjmJSvZS.lean.js +1 -0
- package/dist/docs/assets/guides_webhooks.md.wSOYas3X.js +183 -0
- package/dist/docs/assets/{guides_webhooks.md.B1EswtUu.lean.js → guides_webhooks.md.wSOYas3X.lean.js} +1 -1
- package/dist/docs/assets/{index.md.Dfv5ic9t.js → index.md.CH_s5uZe.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.DdmiKgqf.js → reference_channels.md.CDhTRfUz.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.DdmiKgqf.lean.js → reference_channels.md.CDhTRfUz.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +3 -3
- package/dist/docs/concepts.html +3 -3
- package/dist/docs/deployment.html +3 -3
- package/dist/docs/evals.html +3 -3
- package/dist/docs/example-agents/approval-buddy.html +3 -3
- package/dist/docs/example-agents/benny.html +3 -3
- package/dist/docs/example-agents/bugbot.html +3 -3
- package/dist/docs/example-agents/codebase-wiki.html +3 -3
- package/dist/docs/example-agents/codeowners-review.html +3 -3
- package/dist/docs/example-agents/concierge.html +3 -3
- package/dist/docs/example-agents/fsd.html +3 -3
- package/dist/docs/example-agents/index.html +3 -3
- package/dist/docs/example-agents/knowledge-base.html +3 -3
- package/dist/docs/example-agents/oncall.html +3 -3
- package/dist/docs/example-agents/security-reviewer.html +3 -3
- package/dist/docs/example-agents/slack-agent.html +3 -3
- package/dist/docs/example-agents/weather-agent.html +3 -3
- package/dist/docs/guides/agent-to-agent.html +3 -3
- package/dist/docs/guides/cloud-runtime.html +3 -3
- package/dist/docs/guides/github.html +3 -3
- package/dist/docs/guides/human-in-the-loop.html +3 -3
- package/dist/docs/guides/mcp-oauth.html +3 -3
- package/dist/docs/guides/slack.html +11 -7
- package/dist/docs/guides/webhooks.html +138 -5
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +5 -5
- package/dist/docs/quickstart.html +3 -3
- package/dist/docs/reference/agent-config.html +3 -3
- package/dist/docs/reference/channels.html +5 -5
- package/dist/docs/reference/cli.html +3 -3
- package/dist/docs/reference/connections.html +3 -3
- package/dist/docs/reference/hooks.html +3 -3
- package/dist/docs/reference/http-api.html +3 -3
- package/dist/docs/reference/instructions.html +3 -3
- package/dist/docs/reference/playground.html +3 -3
- package/dist/docs/reference/project-layout.html +3 -3
- package/dist/docs/reference/prompt.html +3 -3
- package/dist/docs/reference/schedules.html +3 -3
- package/dist/docs/reference/sessions.html +3 -3
- package/dist/docs/reference/skills.html +3 -3
- package/dist/docs/reference/subagents.html +3 -3
- package/dist/docs/reference/tools.html +3 -3
- package/dist/docs/scaffolding-agents.html +3 -3
- package/dist/docs/storage.html +3 -3
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/internal/cli-ax.d.ts +8 -0
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +116 -57
- package/dist/internal/cloud-turn-cost.d.ts +34 -0
- package/dist/internal/cloud-turn-cost.d.ts.map +1 -0
- package/dist/internal/cloud-turn-cost.js +106 -0
- package/dist/internal/cursor-slack-relay.d.ts +2 -0
- package/dist/internal/cursor-slack-relay.d.ts.map +1 -1
- package/dist/internal/cursor-slack-relay.js +1 -0
- package/dist/internal/deploy-client.d.ts +2 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +1 -0
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +9 -2
- package/dist/internal/event-log.d.ts +6 -0
- package/dist/internal/event-log.d.ts.map +1 -1
- package/dist/internal/event-log.js +16 -0
- package/dist/internal/host-platforms.d.ts +13 -0
- package/dist/internal/host-platforms.d.ts.map +1 -1
- package/dist/internal/host-platforms.js +25 -16
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +3 -1
- package/dist/internal/local-control-plane.d.ts +25 -0
- package/dist/internal/local-control-plane.d.ts.map +1 -0
- package/dist/internal/local-control-plane.js +172 -0
- package/dist/internal/platform-schedule-sync.d.ts +17 -0
- package/dist/internal/platform-schedule-sync.d.ts.map +1 -0
- package/dist/internal/platform-schedule-sync.js +72 -0
- package/dist/internal/platform-timers.d.ts +28 -0
- package/dist/internal/platform-timers.d.ts.map +1 -0
- package/dist/internal/platform-timers.js +120 -0
- package/dist/internal/reminder-runner.d.ts +16 -12
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +112 -61
- package/dist/internal/reminder-store.d.ts +5 -4
- package/dist/internal/reminder-store.d.ts.map +1 -1
- package/dist/internal/reminder-store.js +5 -4
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +44 -1
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +115 -16
- package/dist/internal/session-engine.d.ts +22 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +110 -4
- package/dist/internal/storage-coordinator.d.ts +4 -15
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +4 -30
- package/dist/playground/assets/index-CquRB-l0.js +85 -0
- package/dist/playground/assets/{index-Bul1WfrB.css → index-Dj0bWpkn.css} +1 -1
- package/dist/playground/index.html +2 -2
- package/dist/storage.d.ts +0 -3
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +0 -3
- package/dist/types.d.ts +11 -2
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +1 -0
- package/docs/guides/slack.md +32 -7
- package/docs/guides/webhooks.md +183 -0
- package/docs/reference/channels.md +2 -1
- package/package.json +1 -1
- package/skills/setup-slack/SKILL.md +3 -0
- package/src/bin/agent-serve.ts +33 -5
- package/src/channels/slack/auth.ts +29 -22
- package/src/channels/slack/cursor-account.ts +2 -0
- package/src/channels/slack/defaults.ts +24 -4
- package/src/channels/slack/dispatch.ts +42 -1
- package/src/channels/slack/external-policy.ts +62 -0
- package/src/channels/slack/index.ts +1 -0
- package/src/channels/slack/interactive.ts +42 -10
- package/src/channels/slack/slack-channel.ts +66 -3
- package/src/channels/slack/types.ts +12 -0
- package/src/internal/cli-ax.ts +110 -34
- package/src/internal/cloud-turn-cost.ts +158 -0
- package/src/internal/cursor-slack-relay.ts +3 -0
- package/src/internal/deploy-client.ts +3 -0
- package/src/internal/discovery.ts +9 -1
- package/src/internal/event-log.ts +17 -0
- package/src/internal/host-platforms.ts +40 -18
- package/src/internal/http-channel.ts +3 -1
- package/src/internal/local-control-plane.ts +188 -0
- package/src/internal/platform-schedule-sync.ts +81 -0
- package/src/internal/platform-timers.ts +173 -0
- package/src/internal/reminder-runner.ts +131 -67
- package/src/internal/reminder-store.ts +5 -4
- package/src/internal/sdk-runner.ts +49 -1
- package/src/internal/server.ts +130 -11
- package/src/internal/session-engine.ts +138 -3
- package/src/internal/storage-coordinator.ts +4 -41
- package/src/storage.ts +0 -5
- package/src/types.ts +11 -2
- package/dist/docs/assets/chunks/@localSearchIndexroot.CQJytDwU.js +0 -1
- package/dist/docs/assets/guides_slack.md.D_xFKlnF.lean.js +0 -1
- package/dist/docs/assets/guides_webhooks.md.B1EswtUu.js +0 -50
- package/dist/playground/assets/index-BDCeW4uc.js +0 -86
- /package/dist/docs/assets/{index.md.Dfv5ic9t.lean.js → index.md.CH_s5uZe.lean.js} +0 -0
package/dist/internal/cli-ax.js
CHANGED
|
@@ -17,7 +17,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
17
17
|
};
|
|
18
18
|
import { mkdir, mkdtemp, writeFile } from "node:fs/promises";
|
|
19
19
|
import { tmpdir } from "node:os";
|
|
20
|
-
import { join, resolve } from "node:path";
|
|
20
|
+
import { dirname, join, resolve } from "node:path";
|
|
21
21
|
import { Artifacts, JUnit } from "../evals/reporters.js";
|
|
22
22
|
import { serve } from "../index.js";
|
|
23
23
|
import { lookupSessionContinuation, runChat } from "./chat-client.js";
|
|
@@ -561,6 +561,16 @@ export function cmdEval(options) {
|
|
|
561
561
|
return 2;
|
|
562
562
|
}
|
|
563
563
|
}
|
|
564
|
+
if (trimNonEmpty(options.out) !== undefined) {
|
|
565
|
+
if (options.list === true) {
|
|
566
|
+
process.stderr.write("--out and --list are mutually exclusive\n");
|
|
567
|
+
return 2;
|
|
568
|
+
}
|
|
569
|
+
if (options.noWait === true) {
|
|
570
|
+
process.stderr.write(`--out needs the finished results; drop --no-wait, or poll later with ${CLI_COMMAND_NAME} eval status <evalId> --out <path>\n`);
|
|
571
|
+
return 2;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
564
574
|
const filterIds = options.evalIds === undefined || options.evalIds.length === 0
|
|
565
575
|
? undefined
|
|
566
576
|
: options.evalIds;
|
|
@@ -641,7 +651,7 @@ export function cmdEval(options) {
|
|
|
641
651
|
process.stderr.write("No matching evals found.\n");
|
|
642
652
|
return 2;
|
|
643
653
|
}
|
|
644
|
-
return printEvalResults(results, options, undefined, artifactsDir);
|
|
654
|
+
return yield printEvalResults(results, options, undefined, artifactsDir);
|
|
645
655
|
}
|
|
646
656
|
finally {
|
|
647
657
|
progress === null || progress === void 0 ? void 0 : progress.close();
|
|
@@ -694,7 +704,7 @@ export function cmdEval(options) {
|
|
|
694
704
|
process.stderr.write("No matching evals found.\n");
|
|
695
705
|
return 2;
|
|
696
706
|
}
|
|
697
|
-
return printEvalResults(results, options, {
|
|
707
|
+
return yield printEvalResults(results, options, {
|
|
698
708
|
runId: snapshot.runId,
|
|
699
709
|
status: snapshot.status,
|
|
700
710
|
error: snapshot.error,
|
|
@@ -764,7 +774,7 @@ function printEvalAccepted(started, options, agentUrl) {
|
|
|
764
774
|
const statusFlags = formatEvalStatusFlags(options);
|
|
765
775
|
const playgroundUrl = yield resolveEvalPlaygroundDeepLink(options, started.runId, agentUrl);
|
|
766
776
|
if (options.json) {
|
|
767
|
-
|
|
777
|
+
process.stdout.write(`${JSON.stringify(Object.assign({ ok: true, accepted: true, evalId: started.runId, runId: started.runId, status: started.status, summary: started.summary, pollUrl: pollPath, durableRuns: started.config.durableRuns === true }, (playgroundUrl === undefined ? {} : { playgroundUrl })), null, 2)}\n`);
|
|
768
778
|
}
|
|
769
779
|
else {
|
|
770
780
|
const durable = started.config.durableRuns === true ? " (persisted)" : "";
|
|
@@ -855,7 +865,7 @@ export function cmdEvalCancel(runId, options) {
|
|
|
855
865
|
fetchImpl: options.fetchImpl,
|
|
856
866
|
});
|
|
857
867
|
if (options.json) {
|
|
858
|
-
|
|
868
|
+
process.stdout.write(`${JSON.stringify(snap, null, 2)}\n`);
|
|
859
869
|
}
|
|
860
870
|
else {
|
|
861
871
|
process.stdout.write(`Cancelled Eval ID ${snap.runId} (${snap.summary.done}/${snap.summary.total} cases finalized)\n`);
|
|
@@ -894,6 +904,11 @@ export function cmdEvalStatus(runId, options) {
|
|
|
894
904
|
process.stderr.write("eval status does not accept --list or --no-wait\n");
|
|
895
905
|
return 2;
|
|
896
906
|
}
|
|
907
|
+
if (trimNonEmpty(options.out) !== undefined &&
|
|
908
|
+
(runId === undefined || runId === "")) {
|
|
909
|
+
process.stderr.write("eval status --out requires an eval id\n");
|
|
910
|
+
return 2;
|
|
911
|
+
}
|
|
897
912
|
const target = yield resolveEvalTarget(options);
|
|
898
913
|
if (typeof target === "number") {
|
|
899
914
|
return target;
|
|
@@ -910,7 +925,7 @@ export function cmdEvalStatus(runId, options) {
|
|
|
910
925
|
fetchImpl: options.fetchImpl,
|
|
911
926
|
});
|
|
912
927
|
if (options.json) {
|
|
913
|
-
|
|
928
|
+
process.stdout.write(`${JSON.stringify({ runs, activeRunId }, null, 2)}\n`);
|
|
914
929
|
}
|
|
915
930
|
else if (runs.length === 0) {
|
|
916
931
|
process.stdout.write("No eval runs on this agent.\n");
|
|
@@ -931,8 +946,12 @@ export function cmdEvalStatus(runId, options) {
|
|
|
931
946
|
auth,
|
|
932
947
|
fetchImpl: options.fetchImpl,
|
|
933
948
|
});
|
|
949
|
+
const outPath = yield writeJsonOutFile(options.out, snap);
|
|
934
950
|
if (options.json) {
|
|
935
|
-
|
|
951
|
+
process.stdout.write(`${JSON.stringify(snap, null, 2)}\n`);
|
|
952
|
+
if (outPath !== undefined) {
|
|
953
|
+
process.stderr.write(`results: ${outPath}\n`);
|
|
954
|
+
}
|
|
936
955
|
}
|
|
937
956
|
else {
|
|
938
957
|
process.stdout.write(`${formatEvalRunSummaryLine(snap)}\n`);
|
|
@@ -949,6 +968,9 @@ export function cmdEvalStatus(runId, options) {
|
|
|
949
968
|
process.stdout.write(` error: ${c.error}\n`);
|
|
950
969
|
}
|
|
951
970
|
}
|
|
971
|
+
if (outPath !== undefined) {
|
|
972
|
+
process.stdout.write(`results: ${outPath}\n`);
|
|
973
|
+
}
|
|
952
974
|
}
|
|
953
975
|
if (snap.status === "running") {
|
|
954
976
|
return 3;
|
|
@@ -989,7 +1011,7 @@ function listLocalEvals(projectRoot, options, filterIds, tags) {
|
|
|
989
1011
|
}
|
|
990
1012
|
function printListedEvals(listed, options, emptyMessage) {
|
|
991
1013
|
if (options.json) {
|
|
992
|
-
|
|
1014
|
+
process.stdout.write(`${JSON.stringify(listed, null, 2)}\n`);
|
|
993
1015
|
}
|
|
994
1016
|
else if (listed.length === 0) {
|
|
995
1017
|
process.stdout.write(`${emptyMessage}\n`);
|
|
@@ -1079,64 +1101,91 @@ const EVAL_VERDICT_LABEL = {
|
|
|
1079
1101
|
skipped: "SKIP",
|
|
1080
1102
|
};
|
|
1081
1103
|
function printEvalResults(results, options, batch, artifactsDir) {
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1104
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1105
|
+
var _a, _b;
|
|
1106
|
+
const strict = options.strict === true;
|
|
1107
|
+
const counts = { passed: 0, failed: 0, scored: 0, skipped: 0 };
|
|
1108
|
+
for (const result of results) {
|
|
1109
|
+
counts[evalVerdictOf(result)]++;
|
|
1110
|
+
}
|
|
1111
|
+
const batchFailed = (batch === null || batch === void 0 ? void 0 : batch.status) === "failed";
|
|
1112
|
+
const ok = counts.failed === 0 && !(strict && counts.scored > 0) && !batchFailed;
|
|
1113
|
+
if ((batch === null || batch === void 0 ? void 0 : batch.error) !== undefined && batch.error !== "" && !options.json) {
|
|
1114
|
+
// Always surface harness-level failures (not only --verbose).
|
|
1115
|
+
process.stderr.write(`eval run error: ${batch.error}\n`);
|
|
1116
|
+
}
|
|
1117
|
+
const payload = Object.assign(Object.assign(Object.assign(Object.assign({ ok, passed: counts.passed, failed: counts.failed, scored: counts.scored, skipped: counts.skipped, strict,
|
|
1096
1118
|
results }, (artifactsDir === undefined ? {} : { artifactsDir })), ((batch === null || batch === void 0 ? void 0 : batch.runId) === undefined ? {} : { runId: batch.runId })), ((batch === null || batch === void 0 ? void 0 : batch.status) === undefined ? {} : { status: batch.status })), ((batch === null || batch === void 0 ? void 0 : batch.error) === undefined || batch.error === ""
|
|
1097
1119
|
? {}
|
|
1098
|
-
: { error: batch.error }))
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
process.stdout.write(` — ${r.description}`);
|
|
1106
|
-
}
|
|
1107
|
-
process.stdout.write("\n");
|
|
1108
|
-
if (r.skipReason !== undefined) {
|
|
1109
|
-
process.stdout.write(` skipped: ${r.skipReason}\n`);
|
|
1120
|
+
: { error: batch.error }));
|
|
1121
|
+
const outPath = yield writeJsonOutFile(options.out, payload);
|
|
1122
|
+
if (options.json) {
|
|
1123
|
+
process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
|
|
1124
|
+
if (outPath !== undefined) {
|
|
1125
|
+
// stdout stays pure JSON; report the file on stderr.
|
|
1126
|
+
process.stderr.write(`results: ${outPath}\n`);
|
|
1110
1127
|
}
|
|
1111
|
-
|
|
1112
|
-
|
|
1128
|
+
}
|
|
1129
|
+
else {
|
|
1130
|
+
for (const r of results) {
|
|
1131
|
+
const verdict = evalVerdictOf(r);
|
|
1132
|
+
process.stdout.write(`${EVAL_VERDICT_LABEL[verdict]} ${r.id} (${(r.durationMs / 1000).toFixed(1)}s)`);
|
|
1133
|
+
if (r.description !== undefined) {
|
|
1134
|
+
process.stdout.write(` — ${r.description}`);
|
|
1135
|
+
}
|
|
1136
|
+
process.stdout.write("\n");
|
|
1137
|
+
if (r.skipReason !== undefined) {
|
|
1138
|
+
process.stdout.write(` skipped: ${r.skipReason}\n`);
|
|
1139
|
+
}
|
|
1140
|
+
for (const a of r.assertions) {
|
|
1141
|
+
process.stdout.write(` ${formatEvalAssertionLine(a)}\n`);
|
|
1142
|
+
}
|
|
1143
|
+
for (const [name, value] of Object.entries((_a = r.metrics) !== null && _a !== void 0 ? _a : {})) {
|
|
1144
|
+
process.stdout.write(` metric ${name}=${String(value)}\n`);
|
|
1145
|
+
}
|
|
1146
|
+
for (const line of (_b = r.logs) !== null && _b !== void 0 ? _b : []) {
|
|
1147
|
+
process.stdout.write(` ${line}\n`);
|
|
1148
|
+
}
|
|
1149
|
+
if (r.error !== undefined) {
|
|
1150
|
+
process.stdout.write(` error: ${r.error}\n`);
|
|
1151
|
+
}
|
|
1152
|
+
if (options.verbose && r.finalText !== undefined) {
|
|
1153
|
+
process.stdout.write(` reply: ${r.finalText.slice(0, 200).replace(/\s+/g, " ")}\n`);
|
|
1154
|
+
}
|
|
1113
1155
|
}
|
|
1114
|
-
|
|
1115
|
-
|
|
1156
|
+
const extra = [];
|
|
1157
|
+
if (counts.scored > 0) {
|
|
1158
|
+
extra.push(`${counts.scored} scored${strict ? " (fatal: --strict)" : ""}`);
|
|
1116
1159
|
}
|
|
1117
|
-
|
|
1118
|
-
|
|
1160
|
+
if (counts.skipped > 0) {
|
|
1161
|
+
extra.push(`${counts.skipped} skipped`);
|
|
1119
1162
|
}
|
|
1120
|
-
|
|
1121
|
-
|
|
1163
|
+
process.stdout.write(`\n${counts.passed} passed, ${counts.failed} failed${extra.length === 0 ? "" : `, ${extra.join(", ")}`}, ${results.length} total\n`);
|
|
1164
|
+
if (artifactsDir !== undefined) {
|
|
1165
|
+
process.stdout.write(`artifacts: ${artifactsDir}\n`);
|
|
1122
1166
|
}
|
|
1123
|
-
if (
|
|
1124
|
-
process.stdout.write(`
|
|
1167
|
+
if (outPath !== undefined) {
|
|
1168
|
+
process.stdout.write(`results: ${outPath}\n`);
|
|
1125
1169
|
}
|
|
1126
1170
|
}
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1171
|
+
return ok ? 0 : 1;
|
|
1172
|
+
});
|
|
1173
|
+
}
|
|
1174
|
+
/**
|
|
1175
|
+
* `--out <path>`: write a JSON payload (results / run snapshot), creating
|
|
1176
|
+
* parent directories. Returns the resolved path, or undefined when unset.
|
|
1177
|
+
*/
|
|
1178
|
+
function writeJsonOutFile(out, payload) {
|
|
1179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1180
|
+
const trimmed = trimNonEmpty(out);
|
|
1181
|
+
if (trimmed === undefined) {
|
|
1182
|
+
return undefined;
|
|
1137
1183
|
}
|
|
1138
|
-
|
|
1139
|
-
|
|
1184
|
+
const target = resolve(trimmed);
|
|
1185
|
+
yield mkdir(dirname(target), { recursive: true });
|
|
1186
|
+
yield writeFile(target, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
|
|
1187
|
+
return target;
|
|
1188
|
+
});
|
|
1140
1189
|
}
|
|
1141
1190
|
/**
|
|
1142
1191
|
* One assertion line. Soft assertions read `~` rather than `✗` when they miss,
|
|
@@ -1309,12 +1358,14 @@ export function cmdSessions(options) {
|
|
|
1309
1358
|
/**
|
|
1310
1359
|
* `session <id>` — view a full session (trajectory text by default).
|
|
1311
1360
|
* `--json` → trajectory JSON; `--events` (`rawEvents`) → raw event list.
|
|
1361
|
+
* `--out <path>` → write the raw NDJSON trace to a file instead of printing
|
|
1362
|
+
* (same format as `run --events` and the playground download).
|
|
1312
1363
|
* Interactive reattach: `resume [id]` / `chat --resume` (or `chat --session`).
|
|
1313
1364
|
*/
|
|
1314
1365
|
export function cmdSession(sessionId, options) {
|
|
1315
1366
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1316
1367
|
if (sessionId === undefined || sessionId.trim() === "") {
|
|
1317
|
-
process.stderr.write(`Usage: ${CLI_COMMAND_NAME} session <sessionId> [--url | --prod] [--json | --text | --events]\n`);
|
|
1368
|
+
process.stderr.write(`Usage: ${CLI_COMMAND_NAME} session <sessionId> [--url | --prod] [--json | --text | --events] [--out <file.ndjson>]\n`);
|
|
1318
1369
|
return 2;
|
|
1319
1370
|
}
|
|
1320
1371
|
if (options.rawEvents === true && options.json === true) {
|
|
@@ -1335,6 +1386,14 @@ export function cmdSession(sessionId, options) {
|
|
|
1335
1386
|
},
|
|
1336
1387
|
fetchImpl: options.fetchImpl,
|
|
1337
1388
|
});
|
|
1389
|
+
const outPath = trimNonEmpty(options.out);
|
|
1390
|
+
if (outPath !== undefined) {
|
|
1391
|
+
const targetPath = resolve(outPath);
|
|
1392
|
+
yield mkdir(dirname(targetPath), { recursive: true });
|
|
1393
|
+
yield writeFile(targetPath, `${events.map((e) => JSON.stringify(e)).join("\n")}\n`, "utf8");
|
|
1394
|
+
process.stdout.write(`trace: ${targetPath} (${events.length} events)\n`);
|
|
1395
|
+
return 0;
|
|
1396
|
+
}
|
|
1338
1397
|
if (options.rawEvents === true) {
|
|
1339
1398
|
process.stdout.write(`${JSON.stringify({ sessionId, events }, null, 2)}\n`);
|
|
1340
1399
|
return 0;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recover token usage / estimated cost for cloud turns that finished without
|
|
3
|
+
* either field on `turn.completed`.
|
|
4
|
+
*
|
|
5
|
+
* Cloud `run.wait()` often drops streamed usage after SSE reconnect, and
|
|
6
|
+
* older engines never persisted cost. The playground Trace tab only renders
|
|
7
|
+
* what is on the event, so historical sessions stay blank unless we backfill
|
|
8
|
+
* from `Agent.getUsage` when the stream is read.
|
|
9
|
+
*/
|
|
10
|
+
import type { ModelSetting, SessionEvent, TurnUsage } from "../types.js";
|
|
11
|
+
export interface CloudRunUsage {
|
|
12
|
+
runId: string;
|
|
13
|
+
usage: TurnUsage;
|
|
14
|
+
}
|
|
15
|
+
export interface CloudAgentUsage {
|
|
16
|
+
usage: TurnUsage;
|
|
17
|
+
runs: CloudRunUsage[];
|
|
18
|
+
}
|
|
19
|
+
export declare function usageTokenSum(usage: TurnUsage | undefined): number;
|
|
20
|
+
export declare function isUnpricedCompletedTurn(event: SessionEvent): boolean;
|
|
21
|
+
export declare function cloudSdkAgentIdFromEvents(events: ReadonlyArray<SessionEvent>): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Copy usage/cost onto unpriced `turn.completed` events. Returns undefined
|
|
24
|
+
* when the snapshot cannot be attributed safely (multiple unmatched turns).
|
|
25
|
+
*/
|
|
26
|
+
export declare function applyCloudUsageToEvents(events: ReadonlyArray<SessionEvent>, billed: CloudAgentUsage, model: ModelSetting): SessionEvent[] | undefined;
|
|
27
|
+
export declare function mapSdkTokenUsage(usage: {
|
|
28
|
+
inputTokens: number;
|
|
29
|
+
outputTokens: number;
|
|
30
|
+
cacheReadTokens: number;
|
|
31
|
+
cacheWriteTokens: number;
|
|
32
|
+
reasoningTokens?: number;
|
|
33
|
+
}): TurnUsage;
|
|
34
|
+
//# sourceMappingURL=cloud-turn-cost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-turn-cost.d.ts","sourceRoot":"","sources":["../../src/internal/cloud-turn-cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAEZ,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAUlE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAMpE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,GAClC,MAAM,GAAG,SAAS,CAYpB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,YAAY,GAClB,YAAY,EAAE,GAAG,SAAS,CAkE5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,SAAS,CAWZ"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recover token usage / estimated cost for cloud turns that finished without
|
|
3
|
+
* either field on `turn.completed`.
|
|
4
|
+
*
|
|
5
|
+
* Cloud `run.wait()` often drops streamed usage after SSE reconnect, and
|
|
6
|
+
* older engines never persisted cost. The playground Trace tab only renders
|
|
7
|
+
* what is on the event, so historical sessions stay blank unless we backfill
|
|
8
|
+
* from `Agent.getUsage` when the stream is read.
|
|
9
|
+
*/
|
|
10
|
+
import { estimateTurnCost } from "./model-pricing.js";
|
|
11
|
+
export function usageTokenSum(usage) {
|
|
12
|
+
if (usage === undefined) {
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
return (usage.inputTokens +
|
|
16
|
+
usage.outputTokens +
|
|
17
|
+
usage.cacheReadTokens +
|
|
18
|
+
usage.cacheWriteTokens);
|
|
19
|
+
}
|
|
20
|
+
export function isUnpricedCompletedTurn(event) {
|
|
21
|
+
return (event.type === "turn.completed" &&
|
|
22
|
+
usageTokenSum(event.data.usage) <= 0 &&
|
|
23
|
+
event.data.cost === undefined);
|
|
24
|
+
}
|
|
25
|
+
export function cloudSdkAgentIdFromEvents(events) {
|
|
26
|
+
let sdkAgentId;
|
|
27
|
+
for (const event of events) {
|
|
28
|
+
if (event.type !== "agent.bound") {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const id = event.data.sdkAgentId.trim();
|
|
32
|
+
if (id.startsWith("bc-")) {
|
|
33
|
+
sdkAgentId = id;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return sdkAgentId;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Copy usage/cost onto unpriced `turn.completed` events. Returns undefined
|
|
40
|
+
* when the snapshot cannot be attributed safely (multiple unmatched turns).
|
|
41
|
+
*/
|
|
42
|
+
export function applyCloudUsageToEvents(events, billed, model) {
|
|
43
|
+
const completedIndexes = [];
|
|
44
|
+
const unpricedIndexes = [];
|
|
45
|
+
for (let i = 0; i < events.length; i++) {
|
|
46
|
+
const event = events[i];
|
|
47
|
+
if (event === undefined || event.type !== "turn.completed") {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
completedIndexes.push(i);
|
|
51
|
+
if (isUnpricedCompletedTurn(event)) {
|
|
52
|
+
unpricedIndexes.push(i);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (unpricedIndexes.length === 0) {
|
|
56
|
+
return [...events];
|
|
57
|
+
}
|
|
58
|
+
const patches = new Map();
|
|
59
|
+
if (unpricedIndexes.length === 1 &&
|
|
60
|
+
completedIndexes.length === 1 &&
|
|
61
|
+
usageTokenSum(billed.usage) > 0) {
|
|
62
|
+
const index = unpricedIndexes[0];
|
|
63
|
+
if (index !== undefined) {
|
|
64
|
+
patches.set(index, {
|
|
65
|
+
usage: billed.usage,
|
|
66
|
+
cost: estimateTurnCost(model, billed.usage),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (billed.runs.length === unpricedIndexes.length &&
|
|
71
|
+
billed.runs.every((run) => usageTokenSum(run.usage) > 0)) {
|
|
72
|
+
for (let i = 0; i < unpricedIndexes.length; i++) {
|
|
73
|
+
const index = unpricedIndexes[i];
|
|
74
|
+
const run = billed.runs[i];
|
|
75
|
+
if (index === undefined || run === undefined) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
patches.set(index, {
|
|
79
|
+
usage: run.usage,
|
|
80
|
+
cost: estimateTurnCost(model, run.usage),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return events.map((event, index) => {
|
|
88
|
+
const patch = patches.get(index);
|
|
89
|
+
if (patch === undefined || event.type !== "turn.completed") {
|
|
90
|
+
return event;
|
|
91
|
+
}
|
|
92
|
+
return Object.assign(Object.assign({}, event), { data: Object.assign(Object.assign(Object.assign({}, event.data), { usage: patch.usage }), (patch.cost === undefined ? {} : { cost: patch.cost })) });
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
export function mapSdkTokenUsage(usage) {
|
|
96
|
+
const mapped = {
|
|
97
|
+
inputTokens: usage.inputTokens,
|
|
98
|
+
outputTokens: usage.outputTokens,
|
|
99
|
+
cacheReadTokens: usage.cacheReadTokens,
|
|
100
|
+
cacheWriteTokens: usage.cacheWriteTokens,
|
|
101
|
+
};
|
|
102
|
+
if (usage.reasoningTokens !== undefined) {
|
|
103
|
+
mapped.reasoningTokens = usage.reasoningTokens;
|
|
104
|
+
}
|
|
105
|
+
return mapped;
|
|
106
|
+
}
|
|
@@ -16,6 +16,8 @@ export interface CursorSlackAgentRegistration {
|
|
|
16
16
|
name: string;
|
|
17
17
|
iconUrl?: string;
|
|
18
18
|
iconEmoji?: string;
|
|
19
|
+
/** Opt out of the default external-sender block. */
|
|
20
|
+
blockExternals?: boolean;
|
|
19
21
|
}
|
|
20
22
|
/** One relayed event as delivered to {@link CursorSlackRelayOptions.dispatch}. */
|
|
21
23
|
export type CursorSlackRelayEvent = CursorSlackEnvelope & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-slack-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-slack-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAO/E,sEAAsE;AACtE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor-slack-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-slack-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAO/E,sEAAsE;AACtE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAYD,kFAAkF;AAClF,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAGT;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,CACF,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0CpC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAUf,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,UAAU,CAAM;IAExB,YAA6B,OAAO,EAAE,uBAAuB,EAsE5D;IAED;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGzC;IAED;;;OAGG;IACH,OAAO,CAAC,cAAc;IAOtB,KAAK,IAAI,IAAI,CAEZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;CACF"}
|
|
@@ -84,6 +84,8 @@ export interface Deployment {
|
|
|
84
84
|
engineGeneration?: number | null;
|
|
85
85
|
publicId?: string;
|
|
86
86
|
engineUrl?: string | null;
|
|
87
|
+
/** Anyrun pod id for the active engine, when coordinates are known. */
|
|
88
|
+
enginePodId?: string | null;
|
|
87
89
|
lastError?: string | null;
|
|
88
90
|
engineAlias: string;
|
|
89
91
|
desiredUpdatedAt?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-client.d.ts","sourceRoot":"","sources":["../../src/internal/deploy-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deploy-client.d.ts","sourceRoot":"","sources":["../../src/internal/deploy-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -122,6 +122,7 @@ const deploymentSchema = z.object({
|
|
|
122
122
|
engineGeneration: z.number().nullable().optional(),
|
|
123
123
|
publicId: z.string().optional(),
|
|
124
124
|
engineUrl: z.string().nullable().optional(),
|
|
125
|
+
enginePodId: z.string().nullable().optional(),
|
|
125
126
|
lastError: z.string().nullable().optional(),
|
|
126
127
|
engineAlias: z.string(),
|
|
127
128
|
desiredUpdatedAt: z.string().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EASrB,KAAK,UAAU,EAqBhB,MAAM,aAAa,CAAC;AA0BrB,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3E;AAmBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAoBzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,iFAAiF;AACjF,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAIrC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CAiEvB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AA+oBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB3E;AAmtBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EASrB,KAAK,UAAU,EAqBhB,MAAM,aAAa,CAAC;AA0BrB,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3E;AAmBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAoBzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,iFAAiF;AACjF,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAIrC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CAiEvB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AA+oBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB3E;AAmtBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CA6InE"}
|
|
@@ -1445,7 +1445,7 @@ export function projectInfo(project) {
|
|
|
1445
1445
|
url: "/v1/session/:sessionId/approvals/:callId",
|
|
1446
1446
|
},
|
|
1447
1447
|
];
|
|
1448
|
-
return Object.assign(Object.assign({ name: project.name, model: agent.model, runtime: agent.runtime, cloud: agent.cloud === undefined ? undefined : toPublicCloudInfo(agent.cloud), local: agent.local, hosting: agent.hosting, concurrency: agent.concurrency, mcp: { path: MCP_ENDPOINT_PATH, tools: mcpEndpointToolNames(project) }, instructions: agent.instructions === undefined
|
|
1448
|
+
return Object.assign(Object.assign({ name: project.name, description: agent.description, model: agent.model, runtime: agent.runtime, cloud: agent.cloud === undefined ? undefined : toPublicCloudInfo(agent.cloud), local: agent.local, hosting: agent.hosting, concurrency: agent.concurrency, mcp: { path: MCP_ENDPOINT_PATH, tools: mcpEndpointToolNames(project) }, instructions: agent.instructions === undefined
|
|
1449
1449
|
? undefined
|
|
1450
1450
|
: {
|
|
1451
1451
|
chars: agent.instructions.length,
|
|
@@ -1647,7 +1647,14 @@ function isModuleFile(fileName) {
|
|
|
1647
1647
|
if (fileName.endsWith(".d.ts") || fileName.startsWith(".")) {
|
|
1648
1648
|
return false;
|
|
1649
1649
|
}
|
|
1650
|
-
|
|
1650
|
+
if (!MODULE_EXTENSIONS.has(extname(fileName))) {
|
|
1651
|
+
return false;
|
|
1652
|
+
}
|
|
1653
|
+
// Colocated unit tests (Vitest/Jest convention) are not definitions.
|
|
1654
|
+
// Without this, `channels/slack.test.ts` is scanned as a channel named
|
|
1655
|
+
// "slack.test", fails NAME_PATTERN, and the whole agent refuses to serve.
|
|
1656
|
+
const stem = moduleStem(fileName);
|
|
1657
|
+
return !stem.endsWith(".test") && !stem.endsWith(".spec");
|
|
1651
1658
|
}
|
|
1652
1659
|
function moduleStem(fileName) {
|
|
1653
1660
|
return fileName.slice(0, -extname(fileName).length);
|
|
@@ -32,6 +32,12 @@ export declare class SessionEventLog {
|
|
|
32
32
|
/** Wait for pending file writes (used on close). */
|
|
33
33
|
flush(): Promise<void>;
|
|
34
34
|
snapshot(startIndex?: number): SessionEvent[];
|
|
35
|
+
/**
|
|
36
|
+
* Replace one already-recorded event in memory. Used to backfill usage/cost
|
|
37
|
+
* onto historical `turn.completed` rows without rewriting `events.ndjson`.
|
|
38
|
+
* Live subscribers are not notified — patch before opening a replay stream.
|
|
39
|
+
*/
|
|
40
|
+
replace(index: number, event: SessionEvent): boolean;
|
|
35
41
|
subscribe(listener: (event: SessionEvent) => void): () => void;
|
|
36
42
|
/**
|
|
37
43
|
* NDJSON stream: replays recorded events from `startIndex`, then follows
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-log.d.ts","sourceRoot":"","sources":["../../src/internal/event-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAPjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,YAAY,CAAoC;IAExD,OAAO,eAIH;IAEJ,OAAa,IAAI,CAAC,IAAI,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;KAC3C,GAAG,OAAO,CAAC,eAAe,CAAC,CAQ3B;YAEa,OAAO;IAmBrB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,CAsB7C;IAED,oDAAoD;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED,QAAQ,CAAC,UAAU,SAAI,GAAG,YAAY,EAAE,CAEvC;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAK7D;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,SAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CA0BjD;CACF;AAED,4DAA4D;AAC5D,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IAEpE,YACmB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAC/C,cAAc,GAAE,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,KACX,IAAe,EAClB;IAEJ,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAc/C;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAM9B;CACF"}
|
|
1
|
+
{"version":3,"file":"event-log.d.ts","sourceRoot":"","sources":["../../src/internal/event-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAPjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,YAAY,CAAoC;IAExD,OAAO,eAIH;IAEJ,OAAa,IAAI,CAAC,IAAI,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;KAC3C,GAAG,OAAO,CAAC,eAAe,CAAC,CAQ3B;YAEa,OAAO;IAmBrB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,CAsB7C;IAED,oDAAoD;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED,QAAQ,CAAC,UAAU,SAAI,GAAG,YAAY,EAAE,CAEvC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAUnD;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAK7D;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,SAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CA0BjD;CACF;AAED,4DAA4D;AAC5D,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IAEpE,YACmB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAC/C,cAAc,GAAE,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,KACX,IAAe,EAClB;IAEJ,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAc/C;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAM9B;CACF"}
|
|
@@ -100,6 +100,22 @@ export class SessionEventLog {
|
|
|
100
100
|
snapshot(startIndex = 0) {
|
|
101
101
|
return startIndex <= 0 ? [...this.events] : this.events.slice(startIndex);
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Replace one already-recorded event in memory. Used to backfill usage/cost
|
|
105
|
+
* onto historical `turn.completed` rows without rewriting `events.ndjson`.
|
|
106
|
+
* Live subscribers are not notified — patch before opening a replay stream.
|
|
107
|
+
*/
|
|
108
|
+
replace(index, event) {
|
|
109
|
+
if (index < 0 || index >= this.events.length) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
const current = this.events[index];
|
|
113
|
+
if (current === undefined || current.index !== index) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
this.events[index] = event;
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
103
119
|
subscribe(listener) {
|
|
104
120
|
this.listeners.add(listener);
|
|
105
121
|
return () => {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* schedules, and channel packs — same injection pattern as MCP.
|
|
4
4
|
*/
|
|
5
5
|
import type { GitHubChannelCredentials } from "../channels/github/types.js";
|
|
6
|
+
import type { SlackCredentials } from "../channels/slack/types.js";
|
|
6
7
|
import type { HostGitHubClient, HostSlackClient } from "../types.js";
|
|
7
8
|
export interface HostPlatforms {
|
|
8
9
|
github: HostGitHubClient;
|
|
@@ -16,7 +17,19 @@ export interface HostPlatforms {
|
|
|
16
17
|
export type HostGitHubAuthSource = "app" | "cursor-account" | "env" | "gh" | "unavailable";
|
|
17
18
|
export interface HostPlatformsOptions {
|
|
18
19
|
githubCredentials?: GitHubChannelCredentials;
|
|
20
|
+
/**
|
|
21
|
+
* Per-agent Slack credentials (usually from a channel `envPrefix`).
|
|
22
|
+
* When omitted, `getClient()` falls back to `SLACK_BOT_TOKEN`.
|
|
23
|
+
*/
|
|
24
|
+
slackCredentials?: SlackCredentials;
|
|
25
|
+
/** Env prefix used only to name the missing-token error. */
|
|
26
|
+
slackEnvPrefix?: string;
|
|
19
27
|
}
|
|
28
|
+
/** Bot-token Slack client. Pass channel credentials so `envPrefix` is honored. */
|
|
29
|
+
export declare function createHostSlackClient(options?: {
|
|
30
|
+
credentials?: SlackCredentials;
|
|
31
|
+
envPrefix?: string;
|
|
32
|
+
}): HostSlackClient;
|
|
20
33
|
/**
|
|
21
34
|
* Build host platforms from ambient credentials. Prefer App installation
|
|
22
35
|
* auth when configured; otherwise fall back to PAT / `gh auth` for local
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-platforms.d.ts","sourceRoot":"","sources":["../../src/internal/host-platforms.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"host-platforms.d.ts","sourceRoot":"","sources":["../../src/internal/host-platforms.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAK5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,KAAK,GACL,gBAAgB,GAChB,KAAK,GACL,IAAI,GACJ,aAAa,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CACnC,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,eAAe,CAmBjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAiBf;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAejF;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAgDhC"}
|