@cursor/july 0.1.107 → 0.1.108
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/README.md +10 -5
- package/dist/bin/agent-serve.js +30 -8
- package/dist/channels/github/github-channel.js +8 -5
- package/dist/channels/github/types.d.ts +5 -1
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +27 -13
- package/dist/channels/origin/types.d.ts +5 -1
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels.d.ts +45 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +106 -7
- package/dist/connections.d.ts +2 -1
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +2 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.CtuckIiL.js → app.BASKM3M4.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BHZYsNVi.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.Bkkhnu8K.js → VPLocalSearchBox.BOKxlYGP.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DhpIe0Pa.js → theme.DbDZW-zb.js} +2 -2
- package/dist/docs/assets/{deployment.md.MFPKqsqI.js → deployment.md.JenwuCCB.js} +4 -4
- package/dist/docs/assets/{deployment.md.MFPKqsqI.lean.js → deployment.md.JenwuCCB.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.CbMoebP1.js → evals.md.C1ekS3k2.js} +1 -1
- package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.js +9 -0
- package/dist/docs/assets/{guides_cloud-agents.md.DS8RIjwx.lean.js → guides_cloud-agents.md.BsloyHdY.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.c0gdGJ-D.js → guides_github.md.BH33UEBJ.js} +1 -1
- package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.js → guides_grokbot-agents.md.DyV-WArv.js} +1 -1
- package/dist/docs/assets/guides_improve.md.BGVk32bK.js +14 -0
- package/dist/docs/assets/guides_improve.md.BGVk32bK.lean.js +1 -0
- package/dist/docs/assets/{guides_slack.md.9oHPye9o.js → guides_slack.md.D4RVMM4G.js} +3 -3
- package/dist/docs/assets/{guides_slack.md.9oHPye9o.lean.js → guides_slack.md.D4RVMM4G.lean.js} +1 -1
- package/dist/docs/assets/index.md.BjH1w2ZW.js +5 -0
- package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.js → reference_agent-config.md.CvoL6pof.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.Dm67hd2D.js → reference_cli.md.Ca26u0Es.js} +6 -6
- package/dist/docs/assets/{reference_cli.md.Dm67hd2D.lean.js → reference_cli.md.Ca26u0Es.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Di6jJAXF.js → reference_connections.md.BojkC6c5.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.CGmMLblt.js → reference_extensions.md.CPWt00ds.js} +1 -1
- package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.js → scaffolding-agents.md.Kctn3OVb.js} +1 -1
- package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.js → skills_create-agent.md.Q3h6Je-e.js} +1 -1
- package/dist/docs/assets/{skills_debug.md.CDbPhHfg.js → skills_debug.md.CVjCXMFF.js} +1 -1
- package/dist/docs/assets/{skills_debug.md.CDbPhHfg.lean.js → skills_debug.md.CVjCXMFF.lean.js} +1 -1
- package/dist/docs/assets/{skills_evals.md.723kpUmA.js → skills_evals.md.BhovOvrl.js} +1 -1
- package/dist/docs/assets/skills_framework-map.md.D-tFZhFS.js +1 -0
- package/dist/docs/assets/{skills_framework-map.md.haibFyoB.lean.js → skills_framework-map.md.D-tFZhFS.lean.js} +1 -1
- package/dist/docs/assets/{skills_github.md.D0JahM8c.js → skills_github.md.hgFX_oKY.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.CYEAO9bM.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +7 -7
- package/dist/docs/deployment.md +7 -2
- package/dist/docs/evals.html +6 -6
- package/dist/docs/evals.md +3 -2
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-agents.html +6 -6
- package/dist/docs/guides/cloud-agents.md +4 -3
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +5 -5
- package/dist/docs/guides/github.md +2 -1
- package/dist/docs/guides/grokbot-agents.html +6 -6
- package/dist/docs/guides/grokbot-agents.md +2 -2
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/improve.html +40 -0
- package/dist/docs/guides/improve.md +91 -0
- package/dist/docs/guides/mcp-oauth.html +4 -4
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +6 -6
- package/dist/docs/guides/slack.md +2 -1
- 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 +6 -6
- package/dist/docs/index.md +4 -0
- package/dist/docs/llms-full.txt +158 -33
- package/dist/docs/llms.txt +1 -0
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +6 -6
- package/dist/docs/reference/agent-config.md +5 -2
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +10 -10
- package/dist/docs/reference/cli.md +18 -11
- package/dist/docs/reference/connections.html +6 -6
- package/dist/docs/reference/connections.md +2 -1
- package/dist/docs/reference/extensions.html +6 -6
- package/dist/docs/reference/extensions.md +2 -0
- 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/prompt.html +4 -4
- package/dist/docs/reference/result.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 +5 -5
- package/dist/docs/scaffolding-agents.md +2 -1
- package/dist/docs/skills/ab.html +4 -4
- package/dist/docs/skills/create-agent.html +6 -6
- package/dist/docs/skills/create-agent.md +1 -1
- package/dist/docs/skills/debug.html +5 -5
- package/dist/docs/skills/debug.md +1 -1
- package/dist/docs/skills/evals.html +6 -6
- package/dist/docs/skills/evals.md +1 -1
- package/dist/docs/skills/framework-map.html +5 -5
- package/dist/docs/skills/framework-map.md +4 -2
- package/dist/docs/skills/github.html +6 -6
- package/dist/docs/skills/github.md +1 -1
- package/dist/docs/skills/hillclimb.html +4 -4
- package/dist/docs/skills/index.html +4 -4
- package/dist/docs/skills/mcp-auth.html +4 -4
- package/dist/docs/skills/otel.html +4 -4
- package/dist/docs/skills/setup-slack.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +4 -4
- package/dist/docs/templates/agents-md.html +4 -4
- package/dist/docs/templates/code-wiki.html +4 -4
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/grokbot-agents.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +4 -4
- package/dist/docs/templates/security-help.html +4 -4
- package/dist/docs/templates/security-reviewer.html +4 -4
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +1 -1
- package/dist/extensions/improve/extension.d.ts +46 -0
- package/dist/extensions/improve/extension.d.ts.map +1 -0
- package/dist/extensions/improve/extension.js +41 -0
- package/dist/extensions/improve/skills/yourself.d.ts +4 -0
- package/dist/extensions/improve/skills/yourself.d.ts.map +1 -0
- package/dist/extensions/improve/skills/yourself.js +43 -0
- package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
- package/dist/internal/builtin-tools/artifacts.js +2 -3
- package/dist/internal/channel-route-dispatch.d.ts +13 -0
- package/dist/internal/channel-route-dispatch.d.ts.map +1 -0
- package/dist/internal/channel-route-dispatch.js +62 -0
- package/dist/internal/channel-state.d.ts +17 -0
- package/dist/internal/channel-state.d.ts.map +1 -0
- package/dist/internal/channel-state.js +78 -0
- package/dist/internal/cli-ax.d.ts +7 -0
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +99 -1
- package/dist/internal/cli-cursor.d.ts.map +1 -1
- package/dist/internal/cli-cursor.js +2 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +38 -14
- package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
- package/dist/internal/cli-mcp-oauth.js +15 -0
- package/dist/internal/cli-mcp.d.ts.map +1 -1
- package/dist/internal/cli-mcp.js +12 -0
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +8 -2
- package/dist/internal/cursor/credentials.d.ts +8 -2
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +27 -5
- package/dist/internal/deploy-client.d.ts +27 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +32 -0
- package/dist/internal/deploy-manifest.d.ts +23 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +84 -1
- package/dist/internal/describe-error.d.ts +1 -0
- package/dist/internal/describe-error.d.ts.map +1 -1
- package/dist/internal/describe-error.js +25 -0
- package/dist/internal/guest-network.d.ts +4 -10
- package/dist/internal/guest-network.d.ts.map +1 -1
- package/dist/internal/guest-network.js +42 -26
- package/dist/internal/hosted-admission-adapter.d.ts +2 -0
- package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.d.ts +51 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -0
- package/dist/internal/hosted-catch-protocol.js +103 -0
- package/dist/internal/hosted-catch.d.ts +40 -0
- package/dist/internal/hosted-catch.d.ts.map +1 -0
- package/dist/internal/hosted-catch.js +149 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +41 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +249 -0
- package/dist/internal/hosted-delivery.d.ts +10 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +100 -22
- package/dist/internal/hosted-execution-diag.d.ts +4 -1
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +13 -4
- package/dist/internal/hosted-execution-flush.d.ts +3 -0
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +2 -4
- package/dist/internal/http-control-plane-session.d.ts +30 -0
- package/dist/internal/http-control-plane-session.d.ts.map +1 -0
- package/dist/internal/http-control-plane-session.js +83 -0
- package/dist/internal/legacy-command-guard.d.ts +22 -0
- package/dist/internal/legacy-command-guard.d.ts.map +1 -0
- package/dist/internal/legacy-command-guard.js +51 -0
- package/dist/internal/platform-timers.d.ts +7 -0
- package/dist/internal/platform-timers.d.ts.map +1 -1
- package/dist/internal/platform-timers.js +139 -0
- package/dist/internal/reminder-control-plane-protocol.d.ts +2 -0
- package/dist/internal/reminder-control-plane-protocol.d.ts.map +1 -1
- package/dist/internal/reminder-control-plane-protocol.js +9 -2
- package/dist/internal/reminder-runner.d.ts +8 -0
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +36 -9
- package/dist/internal/resolve-prod-target.d.ts +2 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +13 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +4 -3
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +57 -56
- package/dist/internal/session-engine.d.ts +2 -6
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +95 -67
- package/dist/playground/assets/{index-Bq2HpEQB.js → index-BMDqAeXu.js} +28 -28
- package/dist/playground/assets/index-LUgJoWdL.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +6 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +29 -1
- package/dist/types.d.ts +33 -5
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +4 -0
- package/docs/deployment.md +7 -2
- package/docs/evals.md +3 -2
- package/docs/guides/cloud-agents.md +4 -3
- package/docs/guides/github.md +2 -1
- package/docs/guides/grokbot-agents.md +2 -2
- package/docs/guides/improve.md +96 -0
- package/docs/guides/slack.md +2 -1
- package/docs/reference/agent-config.md +5 -2
- package/docs/reference/cli.md +18 -11
- package/docs/reference/connections.md +2 -1
- package/docs/reference/extensions.md +2 -0
- package/docs/scaffolding-agents.md +2 -1
- package/docs/troubleshooting.md +1 -1
- package/package.json +8 -1
- package/skills/create-agent/SKILL.md +1 -1
- package/skills/debug/SKILL.md +1 -1
- package/skills/evals/SKILL.md +1 -1
- package/skills/framework-map/SKILL.md +4 -2
- package/skills/github/SKILL.md +1 -1
- package/src/bin/agent-serve.ts +27 -2
- package/src/channels/github/github-channel.ts +8 -8
- package/src/channels/github/types.ts +5 -0
- package/src/channels/origin/origin-channel.ts +29 -13
- package/src/channels/origin/types.ts +5 -0
- package/src/channels.ts +157 -10
- package/src/connections.ts +2 -1
- package/src/extensions/improve/extension.ts +70 -0
- package/src/extensions/improve/skills/yourself.ts +50 -0
- package/src/internal/builtin-tools/artifacts.ts +2 -3
- package/src/internal/channel-route-dispatch.ts +66 -0
- package/src/internal/channel-state.ts +96 -0
- package/src/internal/cli-ax.ts +110 -1
- package/src/internal/cli-cursor.ts +4 -1
- package/src/internal/cli-deploy.ts +50 -10
- package/src/internal/cli-mcp-oauth.ts +18 -0
- package/src/internal/cli-mcp.ts +11 -0
- package/src/internal/cli-slack.ts +15 -2
- package/src/internal/cursor/credentials.ts +35 -7
- package/src/internal/deploy-client.ts +54 -0
- package/src/internal/deploy-manifest.ts +115 -1
- package/src/internal/describe-error.ts +28 -0
- package/src/internal/guest-network.ts +43 -29
- package/src/internal/hosted-admission-adapter.ts +2 -0
- package/src/internal/hosted-catch-protocol.ts +130 -0
- package/src/internal/hosted-catch.ts +192 -0
- package/src/internal/hosted-delivery-protocol.ts +387 -0
- package/src/internal/hosted-delivery.ts +155 -22
- package/src/internal/hosted-execution-diag.ts +21 -3
- package/src/internal/hosted-execution-flush.ts +6 -3
- package/src/internal/http-control-plane-session.ts +104 -0
- package/src/internal/legacy-command-guard.ts +59 -0
- package/src/internal/platform-timers.ts +191 -0
- package/src/internal/reminder-control-plane-protocol.ts +15 -2
- package/src/internal/reminder-runner.ts +60 -9
- package/src/internal/resolve-prod-target.ts +15 -0
- package/src/internal/sdk-runner.ts +2 -1
- package/src/internal/server.ts +89 -79
- package/src/internal/session-engine.ts +141 -83
- package/src/storage-backends/cursor-hosted.ts +40 -1
- package/src/types.ts +39 -6
- package/dist/docs/assets/chunks/@localSearchIndexroot.DXXZxiMv.js +0 -1
- package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +0 -9
- package/dist/docs/assets/index.md.BW_6tOgR.js +0 -5
- package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Cus_YZga.js +0 -1
- package/dist/playground/assets/index-CZKKNlmb.css +0 -1
- /package/dist/docs/assets/{evals.md.CbMoebP1.lean.js → evals.md.C1ekS3k2.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.c0gdGJ-D.lean.js → guides_github.md.BH33UEBJ.lean.js} +0 -0
- /package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.lean.js → guides_grokbot-agents.md.DyV-WArv.lean.js} +0 -0
- /package/dist/docs/assets/{index.md.BW_6tOgR.lean.js → index.md.BjH1w2ZW.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.lean.js → reference_agent-config.md.CvoL6pof.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.Di6jJAXF.lean.js → reference_connections.md.BojkC6c5.lean.js} +0 -0
- /package/dist/docs/assets/{reference_extensions.md.CGmMLblt.lean.js → reference_extensions.md.CPWt00ds.lean.js} +0 -0
- /package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.lean.js → scaffolding-agents.md.Kctn3OVb.lean.js} +0 -0
- /package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.lean.js → skills_create-agent.md.Q3h6Je-e.lean.js} +0 -0
- /package/dist/docs/assets/{skills_evals.md.723kpUmA.lean.js → skills_evals.md.BhovOvrl.lean.js} +0 -0
- /package/dist/docs/assets/{skills_github.md.D0JahM8c.lean.js → skills_github.md.hgFX_oKY.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.Cus_YZga.lean.js → troubleshooting.md.CYEAO9bM.lean.js} +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { jsonResponse } from "./http-channel.js";
|
|
11
|
+
import { validateToolInput } from "./json-schema.js";
|
|
12
|
+
/**
|
|
13
|
+
* Run one authored channel route: validate the declared Zod query / body
|
|
14
|
+
* schemas onto `handlerArgs`, then call the handler. Shared by the local
|
|
15
|
+
* router mount and hosted catch replay so a caught request meets exactly
|
|
16
|
+
* the same schema gate as a direct one.
|
|
17
|
+
*/
|
|
18
|
+
export function invokeChannelRoute(input) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const { route, handlerArgs } = input;
|
|
21
|
+
let request = input.request;
|
|
22
|
+
if (route.querySchema !== undefined) {
|
|
23
|
+
const rawQuery = Object.fromEntries(new URL(request.url).searchParams.entries());
|
|
24
|
+
const queryValidation = validateToolInput(route.querySchema, rawQuery);
|
|
25
|
+
if (!queryValidation.ok) {
|
|
26
|
+
return jsonResponse({ error: queryValidation.message }, { status: 400 });
|
|
27
|
+
}
|
|
28
|
+
handlerArgs.query = queryValidation.value;
|
|
29
|
+
}
|
|
30
|
+
if (route.bodySchema !== undefined) {
|
|
31
|
+
// Buffer once so handlers that need the raw body (e.g. GitHub HMAC) can
|
|
32
|
+
// still read `request.text()` / `request.json()`.
|
|
33
|
+
let bodyText;
|
|
34
|
+
try {
|
|
35
|
+
bodyText = yield request.text();
|
|
36
|
+
}
|
|
37
|
+
catch (_a) {
|
|
38
|
+
return jsonResponse({ error: "Failed to read request body" }, { status: 400 });
|
|
39
|
+
}
|
|
40
|
+
let rawBody;
|
|
41
|
+
try {
|
|
42
|
+
rawBody = bodyText === "" ? {} : JSON.parse(bodyText);
|
|
43
|
+
}
|
|
44
|
+
catch (_b) {
|
|
45
|
+
return jsonResponse({ error: "Request body must be valid JSON" }, { status: 400 });
|
|
46
|
+
}
|
|
47
|
+
const bodyValidation = validateToolInput(route.bodySchema, rawBody);
|
|
48
|
+
if (!bodyValidation.ok) {
|
|
49
|
+
return jsonResponse({ error: bodyValidation.message }, { status: 400 });
|
|
50
|
+
}
|
|
51
|
+
handlerArgs.body = bodyValidation.value;
|
|
52
|
+
request = new Request(request.url, {
|
|
53
|
+
method: request.method,
|
|
54
|
+
headers: request.headers,
|
|
55
|
+
body: bodyText === "" ? undefined : bodyText,
|
|
56
|
+
// node: undici / fetch may require duplex for streamed bodies;
|
|
57
|
+
// a string body does not.
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return route.handler(request, handlerArgs);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { JsonValue } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shallow-merge a wake patch into durable channel state. Null / undefined
|
|
4
|
+
* patch values leave the existing key alone so sticky fields survive.
|
|
5
|
+
*/
|
|
6
|
+
export declare function mergeChannelStateSkipNull(current: JsonValue | undefined, patch: JsonValue | undefined): JsonValue | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Apply handler mutations made against a turn snapshot without reverting
|
|
9
|
+
* unchanged fields refreshed by a later delivery. At a changed path, objects
|
|
10
|
+
* merge recursively, arrays and scalars replace, and deletions win.
|
|
11
|
+
*/
|
|
12
|
+
export declare function mergeChannelStateMutation(args: {
|
|
13
|
+
current: JsonValue | undefined;
|
|
14
|
+
before: JsonValue;
|
|
15
|
+
after: JsonValue;
|
|
16
|
+
}): JsonValue | undefined;
|
|
17
|
+
//# sourceMappingURL=channel-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-state.d.ts","sourceRoot":"","sources":["../../src/internal/channel-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW7C;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,KAAK,EAAE,SAAS,GAAG,SAAS,GAC3B,SAAS,GAAG,SAAS,CAgBvB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;CAClB,GAAG,SAAS,GAAG,SAAS,CAiDxB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from "node:util";
|
|
2
|
+
function asRecord(value) {
|
|
3
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Shallow-merge a wake patch into durable channel state. Null / undefined
|
|
10
|
+
* patch values leave the existing key alone so sticky fields survive.
|
|
11
|
+
*/
|
|
12
|
+
export function mergeChannelStateSkipNull(current, patch) {
|
|
13
|
+
if (patch === undefined) {
|
|
14
|
+
return current;
|
|
15
|
+
}
|
|
16
|
+
const currentRecord = asRecord(current);
|
|
17
|
+
const patchRecord = asRecord(patch);
|
|
18
|
+
if (currentRecord === undefined || patchRecord === undefined) {
|
|
19
|
+
return structuredClone(patch);
|
|
20
|
+
}
|
|
21
|
+
const merged = Object.assign({}, currentRecord);
|
|
22
|
+
for (const [key, value] of Object.entries(patchRecord)) {
|
|
23
|
+
if (value !== null && value !== undefined) {
|
|
24
|
+
merged[key] = value;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return merged;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Apply handler mutations made against a turn snapshot without reverting
|
|
31
|
+
* unchanged fields refreshed by a later delivery. At a changed path, objects
|
|
32
|
+
* merge recursively, arrays and scalars replace, and deletions win.
|
|
33
|
+
*/
|
|
34
|
+
export function mergeChannelStateMutation(args) {
|
|
35
|
+
const { current, before, after } = args;
|
|
36
|
+
if (isDeepStrictEqual(before, after)) {
|
|
37
|
+
return current;
|
|
38
|
+
}
|
|
39
|
+
const currentRecord = asRecord(current);
|
|
40
|
+
const beforeRecord = asRecord(before);
|
|
41
|
+
const afterRecord = asRecord(after);
|
|
42
|
+
if (currentRecord === undefined ||
|
|
43
|
+
beforeRecord === undefined ||
|
|
44
|
+
afterRecord === undefined) {
|
|
45
|
+
return structuredClone(after);
|
|
46
|
+
}
|
|
47
|
+
const merged = structuredClone(currentRecord);
|
|
48
|
+
const keys = new Set([
|
|
49
|
+
...Object.keys(beforeRecord),
|
|
50
|
+
...Object.keys(afterRecord),
|
|
51
|
+
]);
|
|
52
|
+
for (const key of keys) {
|
|
53
|
+
const hadBefore = Object.hasOwn(beforeRecord, key);
|
|
54
|
+
const hasAfter = Object.hasOwn(afterRecord, key);
|
|
55
|
+
if (hadBefore &&
|
|
56
|
+
hasAfter &&
|
|
57
|
+
isDeepStrictEqual(beforeRecord[key], afterRecord[key])) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (!hasAfter) {
|
|
61
|
+
delete merged[key];
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const currentValue = merged[key];
|
|
65
|
+
const afterValue = afterRecord[key];
|
|
66
|
+
merged[key] =
|
|
67
|
+
hadBefore ||
|
|
68
|
+
(asRecord(currentValue) !== undefined &&
|
|
69
|
+
asRecord(afterValue) !== undefined)
|
|
70
|
+
? mergeChannelStateMutation({
|
|
71
|
+
current: currentValue,
|
|
72
|
+
before: hadBefore ? beforeRecord[key] : {},
|
|
73
|
+
after: afterValue,
|
|
74
|
+
})
|
|
75
|
+
: structuredClone(afterValue);
|
|
76
|
+
}
|
|
77
|
+
return merged;
|
|
78
|
+
}
|
|
@@ -113,6 +113,13 @@ export interface AxCliOptions {
|
|
|
113
113
|
resume?: boolean;
|
|
114
114
|
/** Abort signal (tests / programmatic stop of `playground` proxy). */
|
|
115
115
|
signal?: AbortSignal;
|
|
116
|
+
/**
|
|
117
|
+
* `run --prod` / `session --prod --message`: hosted v2 session start on
|
|
118
|
+
* the agentsdk control plane. `--dry-run` marks the turn non-mutating;
|
|
119
|
+
* `--as-of` freezes the session clock at a timezone-bearing instant.
|
|
120
|
+
*/
|
|
121
|
+
dryRun?: boolean;
|
|
122
|
+
asOf?: string;
|
|
116
123
|
}
|
|
117
124
|
export interface ResolvedAgentTarget {
|
|
118
125
|
agentUrl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-ax.d.ts","sourceRoot":"","sources":["../../src/internal/cli-ax.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,mBAAmB,EAIpB,MAAM,aAAa,CAAC;
|
|
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
|
@@ -24,12 +24,14 @@ import { lookupSessionContinuation, runChat } from "./chat-client.js";
|
|
|
24
24
|
import { ensureCursorLogin } from "./cli-cursor.js";
|
|
25
25
|
import { resolveDeployAuth } from "./cli-deploy.js";
|
|
26
26
|
import { resolveApiKey } from "./cursor/credentials.js";
|
|
27
|
+
import { DeployApiError } from "./deploy-client.js";
|
|
27
28
|
import { CLI_COMMAND_NAME, PACKAGE_NAME } from "./distribution.js";
|
|
28
29
|
import { discoverEvals, filterDiscoveredEvals, runDiscoveredEvals, } from "./eval-runner.js";
|
|
29
30
|
import { cancelRemoteEvalRun, getRemoteEvalRun, listRemoteEvalRuns, listRemoteEvals, pollRemoteEvalRun, RemoteEvalError, snapshotToEvalRunResults, startRemoteEvalRun, } from "./evals-client.js";
|
|
30
31
|
import { runTemplateInit } from "./init-interview.js";
|
|
31
32
|
import { checkInitTarget, formatInitNextSteps, formatInitScaffoldSummary, initNextCommands, initProject, installScaffoldDependencies, linkCliOntoPath, printInitGuide, resolveTemplate, } from "./init-project.js";
|
|
32
33
|
import { offerInstallCursorSkills } from "./install-cursor-skills.js";
|
|
34
|
+
import { rejectV2ForLegacyCommand } from "./legacy-command-guard.js";
|
|
33
35
|
import { runLogsTail, sanitizeCustomerError } from "./logs-client.js";
|
|
34
36
|
import { mapPool } from "./map-pool.js";
|
|
35
37
|
import { openBrowser } from "./open-browser.js";
|
|
@@ -377,6 +379,15 @@ export function cmdChat(options) {
|
|
|
377
379
|
export function cmdRun(options) {
|
|
378
380
|
return __awaiter(this, void 0, void 0, function* () {
|
|
379
381
|
var _a, _b, _c;
|
|
382
|
+
// Only a v2-shaped request tries the control plane; every v1 `run --prod`
|
|
383
|
+
// form (multi-turn, continuation token, local session id, --url) keeps its
|
|
384
|
+
// engine-alias path untouched.
|
|
385
|
+
if (options.prod === true && hostedSessionRejection(options) === undefined) {
|
|
386
|
+
const started = yield cmdHostedSession(options);
|
|
387
|
+
if (started !== "fallback") {
|
|
388
|
+
return started;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
380
391
|
const messages = (_a = options.messages) !== null && _a !== void 0 ? _a : [];
|
|
381
392
|
if (messages.length === 0) {
|
|
382
393
|
die("Provide --message (repeatable) or --messages-file");
|
|
@@ -472,6 +483,73 @@ export function cmdRun(options) {
|
|
|
472
483
|
}
|
|
473
484
|
});
|
|
474
485
|
}
|
|
486
|
+
const HOSTED_SESSION_ID_RE = /^ses_[a-f0-9]{24}$/;
|
|
487
|
+
/**
|
|
488
|
+
* Hosted v2 session start: POST the agentsdk control plane, which hands the
|
|
489
|
+
* wake to Temporal (no resident engine, no `/engine/*` alias). `--session
|
|
490
|
+
* ses_…` resumes that exact session; there is no continuation token on
|
|
491
|
+
* this path. A 404 means the slug is not a v2 control-plane deployment, so
|
|
492
|
+
* `run --prod` falls back to the v1 engine alias.
|
|
493
|
+
*/
|
|
494
|
+
/** Why these options cannot be a hosted v2 session start, if they cannot. */
|
|
495
|
+
function hostedSessionRejection(options) {
|
|
496
|
+
var _a;
|
|
497
|
+
var _b;
|
|
498
|
+
if (options.url !== undefined) {
|
|
499
|
+
return "--prod session start talks to the agentsdk control plane; do not pass --url";
|
|
500
|
+
}
|
|
501
|
+
const messages = (_b = options.messages) !== null && _b !== void 0 ? _b : [];
|
|
502
|
+
if (messages.length !== 1 || ((_a = messages[0]) === null || _a === void 0 ? void 0 : _a.trim()) === "") {
|
|
503
|
+
return "Provide exactly one --message (the wake). Multi-turn runs are local-only.";
|
|
504
|
+
}
|
|
505
|
+
if (trimNonEmpty(options.continuationToken) !== undefined) {
|
|
506
|
+
return "--continuation-token is not a hosted v2 identity; pass --session ses_… to resume a session";
|
|
507
|
+
}
|
|
508
|
+
const sessionId = trimNonEmpty(options.sessionId);
|
|
509
|
+
if (sessionId !== undefined && !HOSTED_SESSION_ID_RE.test(sessionId)) {
|
|
510
|
+
return `--session must be a hosted session id (ses_…), got ${sessionId}`;
|
|
511
|
+
}
|
|
512
|
+
return undefined;
|
|
513
|
+
}
|
|
514
|
+
function cmdHostedSession(options) {
|
|
515
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
516
|
+
var _a;
|
|
517
|
+
const rejection = hostedSessionRejection(options);
|
|
518
|
+
if (rejection !== undefined) {
|
|
519
|
+
die(rejection);
|
|
520
|
+
}
|
|
521
|
+
const messages = (_a = options.messages) !== null && _a !== void 0 ? _a : [];
|
|
522
|
+
const sessionId = trimNonEmpty(options.sessionId);
|
|
523
|
+
const auth = yield resolveDeployAuth({
|
|
524
|
+
team: options.team,
|
|
525
|
+
apiKey: options.apiKey,
|
|
526
|
+
fetchImpl: options.fetchImpl,
|
|
527
|
+
});
|
|
528
|
+
if (typeof auth === "number") {
|
|
529
|
+
return auth;
|
|
530
|
+
}
|
|
531
|
+
const slug = resolveProdSlug(options);
|
|
532
|
+
try {
|
|
533
|
+
const accepted = yield auth.client.startSession({
|
|
534
|
+
teamId: auth.teamId,
|
|
535
|
+
slug,
|
|
536
|
+
message: messages[0].trim(),
|
|
537
|
+
sessionId,
|
|
538
|
+
dryRun: options.dryRun,
|
|
539
|
+
asOf: options.asOf,
|
|
540
|
+
});
|
|
541
|
+
console.log(JSON.stringify(accepted, null, 2));
|
|
542
|
+
return 0;
|
|
543
|
+
}
|
|
544
|
+
catch (error) {
|
|
545
|
+
if (error instanceof DeployApiError && error.status === 404) {
|
|
546
|
+
return "fallback";
|
|
547
|
+
}
|
|
548
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
549
|
+
return 1;
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
}
|
|
475
553
|
/**
|
|
476
554
|
* `agent-sdk call <tool>` — deterministic tool invocation over
|
|
477
555
|
* `POST /v1/tools/:toolName` (ephemeral local server unless --url).
|
|
@@ -1301,6 +1379,11 @@ export function cmdLogs(options) {
|
|
|
1301
1379
|
if (typeof auth === "number") {
|
|
1302
1380
|
return auth;
|
|
1303
1381
|
}
|
|
1382
|
+
yield rejectV2ForLegacyCommand({
|
|
1383
|
+
client: auth.client,
|
|
1384
|
+
teamId: auth.teamId,
|
|
1385
|
+
slug,
|
|
1386
|
+
});
|
|
1304
1387
|
yield runLogsTail({
|
|
1305
1388
|
prod: true,
|
|
1306
1389
|
dir: options.dir,
|
|
@@ -1323,6 +1406,7 @@ export function cmdLogs(options) {
|
|
|
1323
1406
|
apiKey: options.apiKey,
|
|
1324
1407
|
fetchImpl: options.fetchImpl,
|
|
1325
1408
|
err: () => { },
|
|
1409
|
+
skipLegacyArchitectureCheck: true,
|
|
1326
1410
|
});
|
|
1327
1411
|
return { agentUrl: target.agentUrl, headers: target.headers };
|
|
1328
1412
|
}),
|
|
@@ -1428,8 +1512,22 @@ export function cmdSessions(options) {
|
|
|
1428
1512
|
*/
|
|
1429
1513
|
export function cmdSession(sessionId, options) {
|
|
1430
1514
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1515
|
+
var _a;
|
|
1516
|
+
var _b, _c;
|
|
1517
|
+
if (options.prod === true && ((_b = (_a = options.messages) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0) {
|
|
1518
|
+
// `session --prod [ses_…] --message` is the same hosted start as
|
|
1519
|
+
// `run --prod`, with the positional id as the session to resume. Unlike
|
|
1520
|
+
// `run`, a 404 is an error here: this form is explicitly v2.
|
|
1521
|
+
const started = yield cmdHostedSession(Object.assign(Object.assign({}, options), { sessionId: (_c = trimNonEmpty(sessionId)) !== null && _c !== void 0 ? _c : options.sessionId }));
|
|
1522
|
+
if (started === "fallback") {
|
|
1523
|
+
process.stderr.write(`Hosted session start returned 404 for slug ${resolveProdSlug(options)}: deploy a running AgentSDK v2 agent, or use \`${CLI_COMMAND_NAME} run --prod\` (falls back to the v1 engine).\n`);
|
|
1524
|
+
return 1;
|
|
1525
|
+
}
|
|
1526
|
+
return started;
|
|
1527
|
+
}
|
|
1431
1528
|
if (sessionId === undefined || sessionId.trim() === "") {
|
|
1432
|
-
process.stderr.write(`Usage: ${CLI_COMMAND_NAME} session <sessionId> [--url | --prod] [--json | --text | --events] [--out <file.ndjson>]\n`
|
|
1529
|
+
process.stderr.write(`Usage: ${CLI_COMMAND_NAME} session <sessionId> [--url | --prod] [--json | --text | --events] [--out <file.ndjson>]\n` +
|
|
1530
|
+
` or: ${CLI_COMMAND_NAME} session --prod [<sessionId>] --slug <slug> --message "…" [--dry-run] [--as-of <instant>]\n`);
|
|
1433
1531
|
return 2;
|
|
1434
1532
|
}
|
|
1435
1533
|
if (options.rawEvents === true && options.json === true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-cursor.d.ts","sourceRoot":"","sources":["../../src/internal/cli-cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"cli-cursor.d.ts","sourceRoot":"","sources":["../../src/internal/cli-cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4BH,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuGzE;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB;IACjB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACnD,GACL,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAWjD;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC1E"}
|
|
@@ -204,6 +204,8 @@ function describeSource(source) {
|
|
|
204
204
|
return "CURSOR_API_KEY environment variable";
|
|
205
205
|
case "file":
|
|
206
206
|
return "CURSOR_API_KEY_FILE (task bind)";
|
|
207
|
+
case "service-account":
|
|
208
|
+
return "CURSOR_SERVICE_ACCOUNT_KEY environment variable";
|
|
207
209
|
case "login":
|
|
208
210
|
return `stored login (${credentialsFilePath()})`;
|
|
209
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-deploy.d.ts","sourceRoot":"","sources":["../../src/internal/cli-deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,OAAO,EAKL,sBAAsB,EAevB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-deploy.d.ts","sourceRoot":"","sources":["../../src/internal/cli-deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
19
19
|
});
|
|
20
20
|
};
|
|
21
21
|
import { basename, resolve } from "node:path";
|
|
22
|
-
import { isPublicEndpointPolicy } from "../channels.js";
|
|
22
|
+
import { catchAuthDeclaration, isPublicEndpointPolicy } from "../channels.js";
|
|
23
23
|
import { isCursorAccountTransport, } from "../types.js";
|
|
24
24
|
import { CursorBackendClient } from "./cursor/backend-client.js";
|
|
25
25
|
import { cursorExternalApiUrl, resolveApiKey, SIGN_IN_HINT, } from "./cursor/credentials.js";
|
|
@@ -31,6 +31,7 @@ import { describeError } from "./describe-error.js";
|
|
|
31
31
|
import { formatDiagnostics, hasErrorDiagnostics, isAgentProjectDir, listChildAgentDirs, loadAgentProject, } from "./discovery.js";
|
|
32
32
|
import { CLI_COMMAND_NAME as CLI } from "./distribution.js";
|
|
33
33
|
import { isReservedSecretName, isValidCursorEventRepo, validateSettableSecretName, } from "./hosting.js";
|
|
34
|
+
import { deploymentArchitecture, rejectV2ForLegacyCommand, } from "./legacy-command-guard.js";
|
|
34
35
|
import { deployProgressLabel, sanitizeCustomerError } from "./logs-client.js";
|
|
35
36
|
import { sleep } from "./sleep.js";
|
|
36
37
|
import { stderrPalette } from "./terminal-style.js";
|
|
@@ -422,7 +423,7 @@ export function promptChooseDeployTargets(agents, options) {
|
|
|
422
423
|
}
|
|
423
424
|
function deployOne(ctx, options, target, extras) {
|
|
424
425
|
return __awaiter(this, void 0, void 0, function* () {
|
|
425
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
426
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
426
427
|
const { dir, slug } = target;
|
|
427
428
|
// Fill --repo/--ref/--path from the local git checkout when omitted so
|
|
428
429
|
// `agent-sdk deploy` inside an agent directory is enough. Only probe git
|
|
@@ -493,6 +494,12 @@ function deployOne(ctx, options, target, extras) {
|
|
|
493
494
|
// without the alias token before the deploy is accepted.
|
|
494
495
|
ctx.err(` public: ${publicRoutePaths.join(", ")} (served WITHOUT the alias token — these channels authenticate requests themselves)\n`);
|
|
495
496
|
}
|
|
497
|
+
const deadSecretChannels = (_h = manifest === null || manifest === void 0 ? void 0 : manifest.publicChannelIdsWithDeadSecretPolicies) !== null && _h !== void 0 ? _h : [];
|
|
498
|
+
if (!ctx.json && deadSecretChannels.length > 0) {
|
|
499
|
+
ctx.err(`warning: ${deadSecretChannels
|
|
500
|
+
.map((channelId) => `/v1/channels/${channelId}`)
|
|
501
|
+
.join(", ")}: publicEndpoint() sits beside sharedSecretAuth()/hmacSignatureAuth() — auth chains are any-of, so every request is admitted and those secret policies never run. Drop publicEndpoint() to enforce them, or drop them to make the intent explicit.\n`);
|
|
502
|
+
}
|
|
496
503
|
if ((manifest === null || manifest === void 0 ? void 0 : manifest.architecture) === "v2") {
|
|
497
504
|
if (!ctx.json) {
|
|
498
505
|
ctx.err(" architecture: v2\n");
|
|
@@ -572,7 +579,7 @@ function deployOne(ctx, options, target, extras) {
|
|
|
572
579
|
ctx.err(`Deployment ${slug} ended ${detail.status}${deployFailureDetail(detail.lastError)}\n`);
|
|
573
580
|
return 1;
|
|
574
581
|
}
|
|
575
|
-
const deployedPublicRoutes = (
|
|
582
|
+
const deployedPublicRoutes = (_j = detail.publicRoutePaths) !== null && _j !== void 0 ? _j : [];
|
|
576
583
|
ctx.out(`Deployed ${slug} (team ${ctx.teamId})\n` +
|
|
577
584
|
` status: running\n` +
|
|
578
585
|
` generation: ${detail.generation}\n` +
|
|
@@ -587,7 +594,7 @@ function deployOne(ctx, options, target, extras) {
|
|
|
587
594
|
.join(""));
|
|
588
595
|
yield runPostDeployConnectorAuth(ctx, options, {
|
|
589
596
|
slug,
|
|
590
|
-
connections: (
|
|
597
|
+
connections: (_k = manifest === null || manifest === void 0 ? void 0 : manifest.cursorAccountConnections) !== null && _k !== void 0 ? _k : [],
|
|
591
598
|
serviceAccountId: deploymentServiceAccountId(detail),
|
|
592
599
|
});
|
|
593
600
|
return 0;
|
|
@@ -834,6 +841,18 @@ function readDeployManifest(dir) {
|
|
|
834
841
|
publicChannelIds: project.channels
|
|
835
842
|
.filter((channel) => { var _a; return ((_a = channel.definition.auth) !== null && _a !== void 0 ? _a : []).some(isPublicEndpointPolicy); })
|
|
836
843
|
.map((channel) => channel.id),
|
|
844
|
+
publicChannelIdsWithDeadSecretPolicies: project.channels
|
|
845
|
+
.filter((channel) => {
|
|
846
|
+
var _a;
|
|
847
|
+
const auth = (_a = channel.definition.auth) !== null && _a !== void 0 ? _a : [];
|
|
848
|
+
return (auth.some(isPublicEndpointPolicy) &&
|
|
849
|
+
auth.some((policy) => {
|
|
850
|
+
var _a;
|
|
851
|
+
const kind = (_a = catchAuthDeclaration(policy)) === null || _a === void 0 ? void 0 : _a.kind;
|
|
852
|
+
return kind !== undefined && kind !== "public";
|
|
853
|
+
}));
|
|
854
|
+
})
|
|
855
|
+
.map((channel) => channel.id),
|
|
837
856
|
httpChannelPublicEndpoint: ((_a = project.httpChannel.auth) !== null && _a !== void 0 ? _a : []).some(isPublicEndpointPolicy),
|
|
838
857
|
hasScmChannels: project.channels.some((channel) => {
|
|
839
858
|
var _a;
|
|
@@ -1172,6 +1191,11 @@ export function cmdRotateToken(slug, options) {
|
|
|
1172
1191
|
}
|
|
1173
1192
|
let aliasToken;
|
|
1174
1193
|
try {
|
|
1194
|
+
yield rejectV2ForLegacyCommand({
|
|
1195
|
+
client: ctx.client,
|
|
1196
|
+
teamId: ctx.teamId,
|
|
1197
|
+
slug,
|
|
1198
|
+
});
|
|
1175
1199
|
aliasToken = yield ctx.client.rotateAliasToken({
|
|
1176
1200
|
teamId: ctx.teamId,
|
|
1177
1201
|
slug,
|
|
@@ -1204,6 +1228,11 @@ export function cmdRotatePodCredential(slug, options) {
|
|
|
1204
1228
|
}
|
|
1205
1229
|
let podCredentialMaskedKey;
|
|
1206
1230
|
try {
|
|
1231
|
+
yield rejectV2ForLegacyCommand({
|
|
1232
|
+
client: ctx.client,
|
|
1233
|
+
teamId: ctx.teamId,
|
|
1234
|
+
slug,
|
|
1235
|
+
});
|
|
1207
1236
|
podCredentialMaskedKey = yield ctx.client.rotatePodCredential({
|
|
1208
1237
|
teamId: ctx.teamId,
|
|
1209
1238
|
slug,
|
|
@@ -1226,16 +1255,11 @@ export function cmdRotatePodCredential(slug, options) {
|
|
|
1226
1255
|
// ============================================================================
|
|
1227
1256
|
function secretDeploymentArchitecture(ctx, slug) {
|
|
1228
1257
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
if (error instanceof DeployApiError && error.status === 404) {
|
|
1235
|
-
return "v1";
|
|
1236
|
-
}
|
|
1237
|
-
throw error;
|
|
1238
|
-
}
|
|
1258
|
+
return deploymentArchitecture({
|
|
1259
|
+
client: ctx.client,
|
|
1260
|
+
teamId: ctx.teamId,
|
|
1261
|
+
slug,
|
|
1262
|
+
});
|
|
1239
1263
|
});
|
|
1240
1264
|
}
|
|
1241
1265
|
export function cmdSecretsSet(slug, specs, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-mcp-oauth.d.ts","sourceRoot":"","sources":["../../src/internal/cli-mcp-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-mcp-oauth.d.ts","sourceRoot":"","sources":["../../src/internal/cli-mcp-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAqB5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAiBF,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA4DjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC3E;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAElB;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAoG7B"}
|
|
@@ -27,6 +27,7 @@ import { authorizeCursorAccountConnectors } from "./cursor-account-mcp-auth.js";
|
|
|
27
27
|
import { deploymentServiceAccountId } from "./deploy-client.js";
|
|
28
28
|
import { loadAgentProject } from "./discovery.js";
|
|
29
29
|
import { CLI_COMMAND_NAME as CLI, LOG_PREFIX } from "./distribution.js";
|
|
30
|
+
import { isUnsupportedV2LegacyCommandError, rejectV2ForLegacyCommand, } from "./legacy-command-guard.js";
|
|
30
31
|
import { createHostMcpOAuthProvider, MCP_OAUTH_CALLBACK_URL, openBrowser, waitForMcpOAuthCallback, } from "./mcp-oauth.js";
|
|
31
32
|
import { upsertHostMcpOauthSecrets } from "./mcp-oauth-persist.js";
|
|
32
33
|
import { resolveProdSlug } from "./resolve-prod-target.js";
|
|
@@ -222,6 +223,11 @@ function cmdMcpOauthCursorAccount(options, args) {
|
|
|
222
223
|
});
|
|
223
224
|
let serviceAccountId;
|
|
224
225
|
try {
|
|
226
|
+
yield rejectV2ForLegacyCommand({
|
|
227
|
+
client: auth.client,
|
|
228
|
+
teamId: auth.teamId,
|
|
229
|
+
slug,
|
|
230
|
+
});
|
|
225
231
|
const detail = yield auth.client.getDeployment({
|
|
226
232
|
teamId: auth.teamId,
|
|
227
233
|
slug,
|
|
@@ -229,6 +235,10 @@ function cmdMcpOauthCursorAccount(options, args) {
|
|
|
229
235
|
serviceAccountId = deploymentServiceAccountId(detail);
|
|
230
236
|
}
|
|
231
237
|
catch (error) {
|
|
238
|
+
if (isUnsupportedV2LegacyCommandError(error)) {
|
|
239
|
+
err(`${LOG_PREFIX} ${error.message}\n`);
|
|
240
|
+
return 1;
|
|
241
|
+
}
|
|
232
242
|
err(`${LOG_PREFIX} Could not load deployment "${slug}" (team ${auth.teamId}): ${describe(error)}\n` +
|
|
233
243
|
`${LOG_PREFIX} Deploy first with \`${CLI} deploy\`.\n`);
|
|
234
244
|
return 1;
|
|
@@ -289,6 +299,11 @@ function storeOauthSecrets(args) {
|
|
|
289
299
|
return auth;
|
|
290
300
|
}
|
|
291
301
|
try {
|
|
302
|
+
yield rejectV2ForLegacyCommand({
|
|
303
|
+
client: auth.client,
|
|
304
|
+
teamId: auth.teamId,
|
|
305
|
+
slug,
|
|
306
|
+
});
|
|
292
307
|
const secretNames = yield upsertHostMcpOauthSecrets({
|
|
293
308
|
connection: args.connection,
|
|
294
309
|
tokens,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-mcp.d.ts","sourceRoot":"","sources":["../../src/internal/cli-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-mcp.d.ts","sourceRoot":"","sources":["../../src/internal/cli-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,EAGL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AA2BlC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC3C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,GAAG;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAMD,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAkFzE;AAwRD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA4G3E;AA8GD,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE,MAAsC,GAC3C,MAAM,CAGR;AAqED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQnD"}
|
package/dist/internal/cli-mcp.js
CHANGED
|
@@ -40,6 +40,7 @@ import { dirname, join } from "node:path";
|
|
|
40
40
|
import { resolveDeployAuth } from "./cli-deploy.js";
|
|
41
41
|
import { DeployApiError } from "./deploy-client.js";
|
|
42
42
|
import { CLI_COMMAND_NAME as CLI, LOG_PREFIX } from "./distribution.js";
|
|
43
|
+
import { rejectV2ForLegacyCommand } from "./legacy-command-guard.js";
|
|
43
44
|
import { ProdTargetError, resolveProdSlug, resolveProdTarget, } from "./resolve-prod-target.js";
|
|
44
45
|
import { sleep as defaultSleep } from "./sleep.js";
|
|
45
46
|
/** Mount path of the MCP surface relative to an agent base URL. */
|
|
@@ -525,6 +526,17 @@ function cmdMcpInstallRemote(options) {
|
|
|
525
526
|
if (typeof auth === "number") {
|
|
526
527
|
return auth;
|
|
527
528
|
}
|
|
529
|
+
try {
|
|
530
|
+
yield rejectV2ForLegacyCommand({
|
|
531
|
+
client: auth.client,
|
|
532
|
+
teamId: auth.teamId,
|
|
533
|
+
slug,
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
catch (error) {
|
|
537
|
+
err(`${describeError(error)}\n`);
|
|
538
|
+
return 1;
|
|
539
|
+
}
|
|
528
540
|
// Verify the deployment resolves before writing config that cannot work.
|
|
529
541
|
// A 403 here is team membership or cloud-agent entitlement, not an
|
|
530
542
|
// admin-tier read. Still write the entry: calling the gateway only
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-slack.d.ts","sourceRoot":"","sources":["../../src/internal/cli-slack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAIL,cAAc,EAGf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-slack.d.ts","sourceRoot":"","sources":["../../src/internal/cli-slack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAIL,cAAc,EAGf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAwB/B,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,cAAc,CAAC;IACnC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAoDD,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAsSD,wBAAsB,cAAc,CAClC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAoLjB;AAiDD,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAsD5E"}
|
|
@@ -17,7 +17,7 @@ import { basename, extname, join, resolve as resolvePath } from "node:path";
|
|
|
17
17
|
import { envPrefixFromName, formatSlackSetupGuide, initSlackChannel, runSlackDoctor, slackEnvKeys, } from "../channels/slack/index.js";
|
|
18
18
|
import { resolveDeployAuth } from "./cli-deploy.js";
|
|
19
19
|
import { cmdSlackInit, runSlackManifest, } from "./cli-slack-manual.js";
|
|
20
|
-
import { cursorExternalApiUrl } from "./cursor/credentials.js";
|
|
20
|
+
import { cursorExternalApiUrl, resolveApiKeySync, } from "./cursor/credentials.js";
|
|
21
21
|
import { slugFromDirectoryName } from "./deploy-client.js";
|
|
22
22
|
import { inferDeployGitSource } from "./deploy-source.js";
|
|
23
23
|
import { describeError } from "./describe-error.js";
|
|
@@ -52,7 +52,8 @@ create/destroy/icon — dedicated Socket Mode app via the Cursor dashboard:
|
|
|
52
52
|
create Opens the signed-in dashboard wizard. Finish name, workspace,
|
|
53
53
|
and Slack consent there. The CLI writes the token pair into
|
|
54
54
|
<dir>/.env.local and runs doctor. Requires \`${CLI} login\`
|
|
55
|
-
(or CURSOR_API_KEY).
|
|
55
|
+
(or CURSOR_API_KEY). A team service-account key cannot
|
|
56
|
+
provision Slack apps. --prod provisions the prod app (default
|
|
56
57
|
dev). --name / --icon / --channel-posts prefill the wizard.
|
|
57
58
|
destroy Delete the provisioned Slack app for this agent (+env). Tokens
|
|
58
59
|
already in .env.local are left in place (they just stop working).
|
|
@@ -274,6 +275,11 @@ function prepareProvision(options) {
|
|
|
274
275
|
var _a, _b, _c, _d, _e;
|
|
275
276
|
const out = (_a = options.out) !== null && _a !== void 0 ? _a : ((text) => void process.stdout.write(text));
|
|
276
277
|
const err = errStream(options);
|
|
278
|
+
const credential = resolveApiKeySync(options.apiKey === undefined ? undefined : { apiKey: options.apiKey });
|
|
279
|
+
if ((credential === null || credential === void 0 ? void 0 : credential.source) === "service-account") {
|
|
280
|
+
err(`A team service-account key cannot provision Slack apps. Sign in with \`${CLI} login\` or set CURSOR_API_KEY.\n`);
|
|
281
|
+
return 1;
|
|
282
|
+
}
|
|
277
283
|
const auth = yield resolveDeployAuth({
|
|
278
284
|
team: options.team,
|
|
279
285
|
apiKey: options.apiKey,
|