@cursor/july 0.1.7 → 0.1.9
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 +31 -2
- package/dist/channels/slack/channel-watch.d.ts +6 -1
- package/dist/channels/slack/channel-watch.d.ts.map +1 -1
- package/dist/channels/slack/channel-watch.js +22 -1
- package/dist/channels/slack/cursor-account.d.ts +4 -0
- package/dist/channels/slack/cursor-account.d.ts.map +1 -1
- package/dist/channels/slack/cursor-account.js +12 -2
- package/dist/channels/slack/defaults.d.ts +10 -5
- package/dist/channels/slack/defaults.d.ts.map +1 -1
- package/dist/channels/slack/defaults.js +39 -17
- package/dist/channels/slack/dispatch.d.ts +18 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +141 -38
- package/dist/channels/slack/inbound.d.ts +13 -3
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +17 -9
- package/dist/channels/slack/index.d.ts +4 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +4 -0
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +1 -0
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +3 -0
- package/dist/channels/slack/nudge-carrier.d.ts +19 -0
- package/dist/channels/slack/nudge-carrier.d.ts.map +1 -0
- package/dist/channels/slack/nudge-carrier.js +166 -0
- package/dist/channels/slack/nudge-store.d.ts +61 -0
- package/dist/channels/slack/nudge-store.d.ts.map +1 -0
- package/dist/channels/slack/nudge-store.js +266 -0
- package/dist/channels/slack/post-update-delivery.js +318 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +74 -25
- package/dist/channels/slack/stop.d.ts +14 -0
- package/dist/channels/slack/stop.d.ts.map +1 -0
- package/dist/channels/slack/stop.js +22 -0
- package/dist/channels/slack/thread-context.d.ts +81 -0
- package/dist/channels/slack/thread-context.d.ts.map +1 -0
- package/dist/channels/slack/thread-context.js +470 -0
- package/dist/channels/slack/types.d.ts +27 -0
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.COTN7wgo.js → app.Ciosf24M.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.D154Detj.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BW3TBdT0.js → VPLocalSearchBox.BcRDly7n.js} +1 -1
- package/dist/docs/assets/chunks/{theme.BEJW0vE7.js → theme.CMpbjdfx.js} +2 -2
- package/dist/docs/assets/{deployment.md.BtfEsc9S.js → deployment.md.DC5-ImcM.js} +1 -1
- package/dist/docs/assets/{example-agents_approval-buddy.md.8R5phXb5.js → example-agents_approval-buddy.md.DFGBYLcc.js} +2 -2
- package/dist/docs/assets/{example-agents_approval-buddy.md.8R5phXb5.lean.js → example-agents_approval-buddy.md.DFGBYLcc.lean.js} +1 -1
- package/dist/docs/assets/example-agents_index.md.BPXjUtRB.js +2 -0
- package/dist/docs/assets/example-agents_index.md.BPXjUtRB.lean.js +1 -0
- package/dist/docs/assets/example-agents_oncall.md.BG_sUMly.js +10 -0
- package/dist/docs/assets/example-agents_oncall.md.BG_sUMly.lean.js +1 -0
- package/dist/docs/assets/{example-agents_security-reviewer.md.D2rtwDTO.js → example-agents_security-reviewer.md.CE9v-aKm.js} +2 -2
- package/dist/docs/assets/{example-agents_security-reviewer.md.D2rtwDTO.lean.js → example-agents_security-reviewer.md.CE9v-aKm.lean.js} +1 -1
- package/dist/docs/assets/{guides_slack.md.CCwqHvSV.js → guides_slack.md.FWale6Ip.js} +4 -3
- package/dist/docs/assets/{guides_slack.md.CCwqHvSV.lean.js → guides_slack.md.FWale6Ip.lean.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.DdjWabnN.js → reference_sessions.md.DLd6mvbv.js} +2 -2
- package/dist/docs/assets/{reference_sessions.md.DdjWabnN.lean.js → reference_sessions.md.DLd6mvbv.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.CVnInNiN.js → storage.md.DRTdnFvd.js} +9 -2
- package/dist/docs/assets/{storage.md.CVnInNiN.lean.js → storage.md.DRTdnFvd.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +6 -6
- package/dist/docs/evals.html +4 -4
- package/dist/docs/example-agents/approval-buddy.html +5 -5
- package/dist/docs/example-agents/benny.html +5 -5
- package/dist/docs/example-agents/bugbot.html +5 -5
- package/dist/docs/example-agents/codebase-wiki.html +4 -4
- package/dist/docs/example-agents/codeowners-review.html +4 -4
- package/dist/docs/example-agents/concierge.html +4 -4
- package/dist/docs/example-agents/fsd.html +4 -4
- package/dist/docs/example-agents/index.html +6 -6
- package/dist/docs/example-agents/knowledge-base.html +4 -4
- package/dist/docs/example-agents/oncall.html +34 -0
- package/dist/docs/example-agents/security-reviewer.html +6 -6
- package/dist/docs/example-agents/slack-agent.html +4 -4
- package/dist/docs/example-agents/weather-agent.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +4 -4
- 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 +7 -6
- 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 +4 -4
- 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 +4 -4
- 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 +5 -5
- 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 +13 -6
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +45 -18
- package/dist/internal/cli-mcp.d.ts +64 -0
- package/dist/internal/cli-mcp.d.ts.map +1 -0
- package/dist/internal/cli-mcp.js +570 -0
- package/dist/internal/deploy-client.d.ts +7 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +3 -0
- package/dist/internal/deploy-source.d.ts +3 -0
- package/dist/internal/deploy-source.d.ts.map +1 -1
- package/dist/internal/deploy-source.js +25 -7
- package/dist/internal/discovery.js +1 -1
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +3 -0
- package/dist/internal/host-kv.d.ts +17 -0
- package/dist/internal/host-kv.d.ts.map +1 -0
- package/dist/internal/host-kv.js +77 -0
- package/dist/internal/hosting.d.ts +12 -2
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +21 -4
- package/dist/internal/json-dir-store.js +100 -0
- package/dist/internal/logs-client.d.ts +16 -2
- package/dist/internal/logs-client.d.ts.map +1 -1
- package/dist/internal/logs-client.js +51 -16
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +8 -0
- package/dist/internal/session-engine.d.ts +42 -7
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +276 -66
- package/dist/internal/storage-coordinator.d.ts +18 -1
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +43 -0
- package/dist/internal/workspace.d.ts +19 -0
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +47 -13
- package/dist/playground/assets/{index-72vCOBWO.js → index-C0-QEG4O.js} +42 -42
- package/dist/playground/assets/index-z3JY9O2x.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +65 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -0
- package/dist/storage-backends/cursor-hosted.js +203 -0
- package/dist/storage-backends/file-kv.d.ts +42 -0
- package/dist/storage-backends/file-kv.d.ts.map +1 -0
- package/dist/storage-backends/file-kv.js +190 -0
- package/dist/storage-backends/postgres-kv.d.ts +82 -0
- package/dist/storage-backends/postgres-kv.d.ts.map +1 -0
- package/dist/storage-backends/postgres-kv.js +185 -0
- package/dist/storage.d.ts +10 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +10 -1
- package/dist/types.d.ts +79 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/.vitepress/cache/deps/package.json +3 -0
- package/docs/deployment.md +7 -3
- package/docs/example-agents/approval-buddy.md +1 -1
- package/docs/example-agents/index.md +15 -10
- package/docs/example-agents/oncall.md +216 -0
- package/docs/example-agents/security-reviewer.md +5 -5
- package/docs/guides/slack.md +11 -2
- package/docs/reference/sessions.md +13 -4
- package/docs/storage.md +41 -0
- package/package.json +22 -1
- package/skills/framework-map/SKILL.md +6 -4
- package/src/bin/agent-serve.ts +32 -2
- package/src/channels/slack/channel-watch.ts +28 -1
- package/src/channels/slack/cursor-account.ts +20 -0
- package/src/channels/slack/defaults.ts +51 -20
- package/src/channels/slack/dispatch.ts +215 -40
- package/src/channels/slack/inbound.ts +30 -10
- package/src/channels/slack/index.ts +4 -0
- package/src/channels/slack/live-delivery.ts +1 -0
- package/src/channels/slack/manifest.ts +3 -0
- package/src/channels/slack/nudge-carrier.ts +182 -0
- package/src/channels/slack/nudge-store.ts +308 -0
- package/src/channels/slack/slack-channel.ts +106 -31
- package/src/channels/slack/stop.ts +25 -0
- package/src/channels/slack/thread-context.ts +572 -0
- package/src/channels/slack/types.ts +27 -0
- package/src/internal/cli-deploy.ts +58 -20
- package/src/internal/cli-mcp.ts +708 -0
- package/src/internal/deploy-client.ts +11 -0
- package/src/internal/deploy-source.ts +24 -6
- package/src/internal/discovery.ts +1 -1
- package/src/internal/distribution.ts +3 -0
- package/src/internal/host-kv.ts +85 -0
- package/src/internal/hosting.ts +24 -4
- package/src/internal/logs-client.ts +67 -21
- package/src/internal/server.ts +31 -0
- package/src/internal/session-engine.ts +379 -61
- package/src/internal/storage-coordinator.ts +41 -0
- package/src/internal/workspace.ts +48 -11
- package/src/storage-backends/cursor-hosted.ts +246 -0
- package/src/storage-backends/file-kv.ts +221 -0
- package/src/storage-backends/postgres-kv.ts +253 -0
- package/src/storage.ts +11 -1
- package/src/types.ts +83 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.B7UcKvIn.js +0 -1
- package/dist/docs/assets/example-agents_index.md.CRqJlnIf.js +0 -2
- package/dist/docs/assets/example-agents_index.md.CRqJlnIf.lean.js +0 -1
- package/dist/internal/persistence-coordinator.d.ts +0 -127
- package/dist/internal/persistence-coordinator.d.ts.map +0 -1
- package/dist/persistence.d.ts +0 -184
- package/dist/persistence.d.ts.map +0 -1
- package/dist/playground/assets/index-BjnMwYoR.css +0 -1
- /package/dist/docs/assets/{deployment.md.BtfEsc9S.lean.js → deployment.md.DC5-ImcM.lean.js} +0 -0
|
@@ -40,9 +40,11 @@ import {
|
|
|
40
40
|
} from "./discovery.js";
|
|
41
41
|
import { CLI_COMMAND_NAME as CLI } from "./distribution.js";
|
|
42
42
|
import {
|
|
43
|
+
isReservedSecretName,
|
|
43
44
|
isValidCursorEventRepo,
|
|
44
45
|
validateSettableSecretName,
|
|
45
46
|
} from "./hosting.js";
|
|
47
|
+
import { deployProgressLabel, sanitizeCustomerError } from "./logs-client.js";
|
|
46
48
|
import { stderrPalette } from "./terminal-style.js";
|
|
47
49
|
|
|
48
50
|
const DEFAULT_POLL_INTERVAL_MS = 3_000;
|
|
@@ -554,6 +556,24 @@ async function deployOne(
|
|
|
554
556
|
);
|
|
555
557
|
return 1;
|
|
556
558
|
}
|
|
559
|
+
// Repo-backed fields without a resolvable https origin become a static
|
|
560
|
+
// deploy body the control plane rejects. Fail here with a fix hint —
|
|
561
|
+
// common when origin is an unrecognized SSH shape (pass --repo).
|
|
562
|
+
if (
|
|
563
|
+
gitRepoUrl === undefined &&
|
|
564
|
+
(gitRef !== undefined ||
|
|
565
|
+
agentPath !== undefined ||
|
|
566
|
+
(options.cursorEventsRepos !== undefined &&
|
|
567
|
+
options.cursorEventsRepos.length > 0) ||
|
|
568
|
+
(options.allowDomains !== undefined && options.allowDomains.length > 0))
|
|
569
|
+
) {
|
|
570
|
+
ctx.err(
|
|
571
|
+
`Could not resolve an https:// git repository URL for this deploy.\n` +
|
|
572
|
+
` Pass --repo https://github.com/<owner>/<repo> (inferred from origin when possible).\n` +
|
|
573
|
+
` Or omit --ref/--path/--cursor-events-repo/--allow-domain for a static engine.\n`
|
|
574
|
+
);
|
|
575
|
+
return 1;
|
|
576
|
+
}
|
|
557
577
|
for (const repo of options.cursorEventsRepos ?? []) {
|
|
558
578
|
if (!isValidCursorEventRepo(repo)) {
|
|
559
579
|
ctx.err(`Invalid --cursor-events-repo: ${repo} (expected owner/name)\n`);
|
|
@@ -659,13 +679,11 @@ async function deployOne(
|
|
|
659
679
|
}
|
|
660
680
|
|
|
661
681
|
if (detail.status !== "running") {
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
}\n`
|
|
668
|
-
);
|
|
682
|
+
const errorDetail =
|
|
683
|
+
detail.lastError === null || detail.lastError === undefined
|
|
684
|
+
? ""
|
|
685
|
+
: `: ${sanitizeCustomerError(detail.lastError)}`;
|
|
686
|
+
ctx.err(`Deployment ${slug} ended ${detail.status}${errorDetail}\n`);
|
|
669
687
|
return 1;
|
|
670
688
|
}
|
|
671
689
|
ctx.out(
|
|
@@ -709,7 +727,11 @@ function warnMissingSecrets(
|
|
|
709
727
|
return;
|
|
710
728
|
}
|
|
711
729
|
const setNames = new Set(set ?? []);
|
|
712
|
-
|
|
730
|
+
// Platform-managed names (CURSOR_*, hosted storage) are injected by the
|
|
731
|
+
// control plane and never appear in secrets list — do not warn on them.
|
|
732
|
+
const missing = declared.filter(
|
|
733
|
+
(name) => !setNames.has(name) && !isReservedSecretName(name)
|
|
734
|
+
);
|
|
713
735
|
if (missing.length === 0) {
|
|
714
736
|
return;
|
|
715
737
|
}
|
|
@@ -793,11 +815,23 @@ export async function cmdDeploymentStatus(
|
|
|
793
815
|
const lines = [
|
|
794
816
|
`${detail.slug} (team ${detail.teamId})`,
|
|
795
817
|
` status: ${detail.status}`,
|
|
818
|
+
];
|
|
819
|
+
if (detail.progress !== undefined) {
|
|
820
|
+
lines.push(` progress: ${detail.progress}`);
|
|
821
|
+
}
|
|
822
|
+
if (
|
|
823
|
+
detail.statusMessage !== null &&
|
|
824
|
+
detail.statusMessage !== undefined &&
|
|
825
|
+
detail.statusMessage.trim() !== ""
|
|
826
|
+
) {
|
|
827
|
+
lines.push(` step: ${detail.statusMessage}`);
|
|
828
|
+
}
|
|
829
|
+
lines.push(
|
|
796
830
|
` generation: ${detail.generation}`,
|
|
797
831
|
` kind: ${detail.deploymentKind}`,
|
|
798
832
|
` alias: ${aliasUrl}`,
|
|
799
|
-
` playground: ${aliasUrl}/playground
|
|
800
|
-
|
|
833
|
+
` playground: ${aliasUrl}/playground`
|
|
834
|
+
);
|
|
801
835
|
if (detail.gitRepoUrl !== null && detail.gitRepoUrl !== undefined) {
|
|
802
836
|
lines.push(` repo: ${detail.gitRepoUrl} @ ${detail.gitRef ?? ""}`);
|
|
803
837
|
}
|
|
@@ -835,7 +869,7 @@ export async function cmdDeploymentStatus(
|
|
|
835
869
|
);
|
|
836
870
|
}
|
|
837
871
|
if (detail.lastError !== null && detail.lastError !== undefined) {
|
|
838
|
-
lines.push(` last error: ${detail.lastError}`);
|
|
872
|
+
lines.push(` last error: ${sanitizeCustomerError(detail.lastError)}`);
|
|
839
873
|
}
|
|
840
874
|
if (detail.desiredUpdatedAt !== undefined) {
|
|
841
875
|
lines.push(` updated: ${detail.desiredUpdatedAt}`);
|
|
@@ -1229,7 +1263,9 @@ function createLineReader(
|
|
|
1229
1263
|
/**
|
|
1230
1264
|
* Poll deployment status every `pollIntervalMs` until it lands in
|
|
1231
1265
|
* `terminal` (single-line progress on a TTY, one line per transition
|
|
1232
|
-
* otherwise).
|
|
1266
|
+
* otherwise). Prefers customer `statusMessage` / `progress` over raw
|
|
1267
|
+
* status so create → checkout → start is visible. Throws DeployApiError
|
|
1268
|
+
* on request failures or timeout.
|
|
1233
1269
|
*/
|
|
1234
1270
|
async function pollUntil(
|
|
1235
1271
|
ctx: DeployCliContext,
|
|
@@ -1238,21 +1274,22 @@ async function pollUntil(
|
|
|
1238
1274
|
): Promise<DeploymentDetail> {
|
|
1239
1275
|
const startedAt = Date.now();
|
|
1240
1276
|
const tty = process.stderr.isTTY === true;
|
|
1241
|
-
let
|
|
1277
|
+
let lastLabel: string | undefined;
|
|
1242
1278
|
let sawProgress = false;
|
|
1243
1279
|
|
|
1244
|
-
const report = (
|
|
1280
|
+
const report = (detail: DeploymentDetail): void => {
|
|
1245
1281
|
if (ctx.json) {
|
|
1246
1282
|
return;
|
|
1247
1283
|
}
|
|
1284
|
+
const label = deployProgressLabel(detail);
|
|
1248
1285
|
const elapsed = Math.round((Date.now() - startedAt) / 1000);
|
|
1249
1286
|
if (tty) {
|
|
1250
|
-
ctx.err(`\r\x1b[2K${slug}: ${
|
|
1287
|
+
ctx.err(`\r\x1b[2K${slug}: ${label} (${elapsed}s)`);
|
|
1251
1288
|
sawProgress = true;
|
|
1252
|
-
} else if (
|
|
1253
|
-
ctx.err(`${slug}: ${
|
|
1289
|
+
} else if (label !== lastLabel) {
|
|
1290
|
+
ctx.err(`${slug}: ${label}\n`);
|
|
1254
1291
|
}
|
|
1255
|
-
|
|
1292
|
+
lastLabel = label;
|
|
1256
1293
|
};
|
|
1257
1294
|
const finishProgressLine = (): void => {
|
|
1258
1295
|
if (tty && sawProgress) {
|
|
@@ -1267,15 +1304,16 @@ async function pollUntil(
|
|
|
1267
1304
|
finishProgressLine();
|
|
1268
1305
|
throw error;
|
|
1269
1306
|
});
|
|
1270
|
-
report(detail
|
|
1307
|
+
report(detail);
|
|
1271
1308
|
if (terminal.has(detail.status)) {
|
|
1272
1309
|
finishProgressLine();
|
|
1273
1310
|
return detail;
|
|
1274
1311
|
}
|
|
1275
1312
|
if (Date.now() - startedAt >= ctx.timeoutMs) {
|
|
1276
1313
|
finishProgressLine();
|
|
1314
|
+
const last = deployProgressLabel(detail);
|
|
1277
1315
|
throw new DeployApiError(
|
|
1278
|
-
`Timed out after ${Math.round(ctx.timeoutMs / 1000)}s waiting for ${slug} (last
|
|
1316
|
+
`Timed out after ${Math.round(ctx.timeoutMs / 1000)}s waiting for ${slug} (last: ${last}). It may still converge — check \`${CLI} deployment ${slug} --team ${ctx.teamId}\`.`,
|
|
1279
1317
|
0
|
|
1280
1318
|
);
|
|
1281
1319
|
}
|