@cursor/july 0.1.73 → 0.1.75
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/AGENTS.md +13 -8
- package/dist/bin/agent-serve.js +7 -5
- package/dist/channels/checks.d.ts +111 -0
- package/dist/channels/checks.d.ts.map +1 -0
- package/dist/channels/checks.js +86 -0
- package/dist/channels/deployments/deployments-channel.d.ts +44 -0
- package/dist/channels/deployments/deployments-channel.d.ts.map +1 -0
- package/dist/channels/deployments/deployments-channel.js +92 -0
- package/dist/channels/deployments/index.d.ts +26 -0
- package/dist/channels/deployments/index.d.ts.map +1 -0
- package/dist/channels/deployments/index.js +25 -0
- package/dist/channels/deployments/types.d.ts +69 -0
- package/dist/channels/deployments/types.d.ts.map +1 -0
- package/dist/channels/deployments/types.js +6 -0
- package/dist/channels/github/checks.d.ts +13 -48
- package/dist/channels/github/checks.d.ts.map +1 -1
- package/dist/channels/github/checks.js +56 -64
- package/dist/channels/origin/api.d.ts +100 -0
- package/dist/channels/origin/api.d.ts.map +1 -0
- package/dist/channels/origin/api.js +225 -0
- package/dist/channels/origin/binding.d.ts +44 -0
- package/dist/channels/origin/binding.d.ts.map +1 -0
- package/dist/channels/origin/binding.js +45 -0
- package/dist/channels/origin/checks.d.ts +107 -0
- package/dist/channels/origin/checks.d.ts.map +1 -0
- package/dist/channels/origin/checks.js +145 -0
- package/dist/channels/origin/index.d.ts +3 -0
- package/dist/channels/origin/index.d.ts.map +1 -1
- package/dist/channels/origin/index.js +3 -0
- package/dist/channels/origin/origin-channel.d.ts +4 -4
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +12 -2
- package/dist/channels/origin/types.d.ts +36 -0
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels.d.ts +1 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +1 -0
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.CdbcFD8T.js → app.b8bhB2SV.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DGZeXVqn.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.D_NKImM7.js → VPLocalSearchBox.lLSeIyWw.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CMvz7cu9.js → theme.C_owesa-.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.MN8iDy8V.js → reference_channels.md.G5GysZ7e.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.MN8iDy8V.lean.js → reference_channels.md.G5GysZ7e.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.Cl14Jfo3.js → reference_cli.md.TAaYU8br.js} +3 -3
- package/dist/docs/assets/{reference_cli.md.Cl14Jfo3.lean.js → reference_cli.md.TAaYU8br.lean.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.CiGsJ1aw.js +1 -0
- package/dist/docs/assets/{scaffolding-agents.md.CrWSA0Ko.lean.js → scaffolding-agents.md.CiGsJ1aw.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/convert-automation.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/opentelemetry.html +3 -3
- package/dist/docs/guides/slack.html +3 -3
- package/dist/docs/guides/webhooks.html +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +3 -3
- package/dist/docs/quickstart.html +3 -3
- package/dist/docs/reference/agent-config.html +3 -3
- package/dist/docs/reference/artifacts.html +3 -3
- package/dist/docs/reference/channels.html +5 -5
- package/dist/docs/reference/cli.html +6 -6
- 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 +5 -5
- package/dist/docs/storage.html +3 -3
- package/dist/docs/templates/agentic-owners.html +3 -3
- package/dist/docs/templates/demo.html +3 -3
- package/dist/docs/templates/pr-autofixer.html +3 -3
- package/dist/docs/templates/security-reviewer.html +3 -3
- package/dist/docs/templates/triage.html +3 -3
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/internal/cli-skills.d.ts +4 -2
- package/dist/internal/cli-skills.d.ts.map +1 -1
- package/dist/internal/cli-skills.js +8 -3
- package/dist/internal/cursor-deployment-relay.d.ts +77 -0
- package/dist/internal/cursor-deployment-relay.d.ts.map +1 -0
- package/dist/internal/cursor-deployment-relay.js +201 -0
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -0
- package/dist/internal/install-cursor-skills.d.ts +71 -16
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +160 -48
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +6 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +114 -5
- package/dist/playground/assets/index-BJy9UJrF.js +85 -0
- package/dist/playground/assets/index-BrSd5vff.css +1 -0
- package/dist/playground/index.html +2 -2
- package/docs/reference/channels.md +15 -0
- package/docs/reference/cli.md +16 -8
- package/docs/scaffolding-agents.md +14 -6
- package/package.json +9 -1
- package/scripts/install-cursor-skills.mjs +36 -0
- package/skills/ab/SKILL.md +1 -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 +1 -1
- package/skills/github/SKILL.md +1 -1
- package/skills/hillclimb/SKILL.md +1 -1
- package/skills/mcp-auth/SKILL.md +1 -1
- package/skills/otel/SKILL.md +1 -1
- package/skills/setup-slack/SKILL.md +1 -1
- package/src/bin/agent-serve.ts +7 -5
- package/src/channels/checks.ts +185 -0
- package/src/channels/deployments/deployments-channel.ts +109 -0
- package/src/channels/deployments/index.ts +26 -0
- package/src/channels/deployments/types.ts +80 -0
- package/src/channels/github/checks.ts +90 -115
- package/src/channels/origin/api.ts +318 -0
- package/src/channels/origin/binding.ts +96 -0
- package/src/channels/origin/checks.ts +250 -0
- package/src/channels/origin/index.ts +3 -0
- package/src/channels/origin/origin-channel.ts +18 -6
- package/src/channels/origin/types.ts +37 -0
- package/src/channels.ts +16 -0
- package/src/internal/cli-skills.ts +10 -2
- package/src/internal/cursor-deployment-relay.ts +274 -0
- package/src/internal/distribution.ts +1 -0
- package/src/internal/install-cursor-skills.ts +204 -49
- package/src/internal/sdk-runner.ts +6 -3
- package/src/internal/server.ts +149 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.DQad--_z.js +0 -1
- package/dist/docs/assets/scaffolding-agents.md.CrWSA0Ko.js +0 -1
- package/dist/playground/assets/index-77uhu5Kr.css +0 -1
- package/dist/playground/assets/index-D4buox4m.js +0 -85
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-skills.d.ts","sourceRoot":"","sources":["../../src/internal/cli-skills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli-skills.d.ts","sourceRoot":"","sources":["../../src/internal/cli-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `install-skills` — install the package's coding-agent skills into
|
|
3
|
-
* `~/.cursor/skills/
|
|
3
|
+
* `~/.cursor/skills/agentsdk/` without running `init`.
|
|
4
4
|
*
|
|
5
5
|
* Never prompts: running the command is the confirmation. The interactive
|
|
6
|
-
* offer lives in `init`.
|
|
6
|
+
* offer lives in `init`. Consumer `npm install` / `npx` copies the same
|
|
7
|
+
* skills in postinstall (with `alwaysApply: true` so Cursor injects them);
|
|
8
|
+
* this command refreshes them without reinstalling.
|
|
7
9
|
*/
|
|
8
10
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
11
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -15,7 +17,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
15
17
|
});
|
|
16
18
|
};
|
|
17
19
|
import { CLI_COMMAND_NAME } from "./distribution.js";
|
|
18
|
-
import { formatSkillInstall, installCursorSkills, planSkillInstall, } from "./install-cursor-skills.js";
|
|
20
|
+
import { formatSkillInstall, installCursorSkills, LEGACY_CURSOR_SKILLS_NAMESPACE, planSkillInstall, } from "./install-cursor-skills.js";
|
|
19
21
|
import { stdoutPalette } from "./terminal-style.js";
|
|
20
22
|
export function cmdInstallSkills() {
|
|
21
23
|
return __awaiter(this, arguments, void 0, function* (options = {}) {
|
|
@@ -67,6 +69,9 @@ function previewBlock(plan) {
|
|
|
67
69
|
if (plan.orphans.length > 0) {
|
|
68
70
|
lines.push(` removes: ${plan.orphans.join(", ")}`);
|
|
69
71
|
}
|
|
72
|
+
if (plan.hasLegacyNamespace) {
|
|
73
|
+
lines.push(` removes: ${LEGACY_CURSOR_SKILLS_NAMESPACE}/ (legacy namespace)`);
|
|
74
|
+
}
|
|
70
75
|
lines.push(` location: ${plan.directory}`);
|
|
71
76
|
return `${lines.join("\n")}\n`;
|
|
72
77
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull relay for `/v0/deployment-events`.
|
|
3
|
+
*
|
|
4
|
+
* A {@link RelayAdapter} over {@link CursorRelayCore} — the same engine the
|
|
5
|
+
* GitHub SCM and Slack relays use, so registration heartbeats, durable
|
|
6
|
+
* offsets, backoff, and bounded dispatch retry are inherited rather than
|
|
7
|
+
* reimplemented. Only the subscribe/poll paths, the registration body, and
|
|
8
|
+
* the per-event filter differ.
|
|
9
|
+
*/
|
|
10
|
+
import type { DeploymentEvent, DeploymentEventType, DeploymentSubscription } from "../channels/deployments/types.js";
|
|
11
|
+
/** One page entry: the event fields plus its stream offset, as the sibling
|
|
12
|
+
* providers spell it. */
|
|
13
|
+
export type DeploymentRelayEvent = DeploymentEvent & {
|
|
14
|
+
offset: string;
|
|
15
|
+
};
|
|
16
|
+
export interface ResolvedSubscription {
|
|
17
|
+
repo: string;
|
|
18
|
+
environments: string[];
|
|
19
|
+
events: Set<DeploymentEventType>;
|
|
20
|
+
}
|
|
21
|
+
export interface DeploymentEventRelayOptions {
|
|
22
|
+
baseUrl: string;
|
|
23
|
+
apiKey: string;
|
|
24
|
+
stateDir: string;
|
|
25
|
+
subscriptions: readonly ResolvedSubscription[];
|
|
26
|
+
dispatch: (event: DeploymentEvent) => Promise<void>;
|
|
27
|
+
logger: (line: string) => void;
|
|
28
|
+
fetchImpl?: typeof fetch;
|
|
29
|
+
pollWaitMs?: number;
|
|
30
|
+
}
|
|
31
|
+
/** Normalize the channel's `repos` option into concrete subscriptions. */
|
|
32
|
+
export declare function resolveDeploymentSubscriptions(options: {
|
|
33
|
+
repos: readonly (string | DeploymentSubscription)[];
|
|
34
|
+
environments?: readonly string[];
|
|
35
|
+
events?: readonly DeploymentEventType[];
|
|
36
|
+
}): ResolvedSubscription[];
|
|
37
|
+
/** Whether one confirmed subscription wants this event. */
|
|
38
|
+
export declare function deploymentEventMatches(subscription: ResolvedSubscription, envelope: DeploymentEvent): boolean;
|
|
39
|
+
/** One channel the host can deliver a deployment event to. */
|
|
40
|
+
export interface DeploymentDispatchTarget {
|
|
41
|
+
/** Display name for logs, e.g. `executor/deployments`. */
|
|
42
|
+
name: string;
|
|
43
|
+
subscriptions: readonly ResolvedSubscription[];
|
|
44
|
+
deliver: (event: DeploymentEvent) => Promise<unknown>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Deliver one event to every channel subscribed to it.
|
|
48
|
+
*
|
|
49
|
+
* Each channel is delivered independently: one channel's handler throwing
|
|
50
|
+
* must not skip the channels after it, because the relay core retries the
|
|
51
|
+
* whole dispatch and the channels that already ran would see the event twice.
|
|
52
|
+
* Throws only when every subscribed channel failed, so a retry cannot
|
|
53
|
+
* re-deliver to a channel that succeeded.
|
|
54
|
+
*/
|
|
55
|
+
export declare function fanOutDeploymentEvent(input: {
|
|
56
|
+
targets: readonly DeploymentDispatchTarget[];
|
|
57
|
+
event: DeploymentEvent;
|
|
58
|
+
logger: (line: string) => void;
|
|
59
|
+
}): Promise<void>;
|
|
60
|
+
export declare class DeploymentEventRelay {
|
|
61
|
+
private readonly options;
|
|
62
|
+
private readonly core;
|
|
63
|
+
private subscribed;
|
|
64
|
+
private readonly loggedSkippedRepos;
|
|
65
|
+
constructor(options: DeploymentEventRelayOptions);
|
|
66
|
+
/**
|
|
67
|
+
* Whether an event from this principal's stream belongs to THIS relay.
|
|
68
|
+
* The stream is per-principal, and one API key can back several relays
|
|
69
|
+
* (other hosts, or an agent running its own alongside the host's), so each
|
|
70
|
+
* one re-checks the events against the subscriptions the server confirmed
|
|
71
|
+
* for it.
|
|
72
|
+
*/
|
|
73
|
+
private shouldDispatch;
|
|
74
|
+
start(): void;
|
|
75
|
+
stop(): Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=cursor-deployment-relay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-deployment-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-deployment-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAK1C;yBACyB;AACzB,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;CAClC;AAQD,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,0EAA0E;AAC1E,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,sBAAsB,CAAC,EAAE,CAAC;IACpD,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACzC,GAAG,oBAAoB,EAAE,CA6CzB;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,oBAAoB,EAClC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAQT;AAED,8DAA8D;AAC9D,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7C,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,qBAAa,oBAAoB;IAKnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwC;IAC7D,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD,YAA6B,OAAO,EAAE,2BAA2B,EAiEhE;IAED;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAsBtB,KAAK,IAAI,IAAI,CAEZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;CACF"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull relay for `/v0/deployment-events`.
|
|
3
|
+
*
|
|
4
|
+
* A {@link RelayAdapter} over {@link CursorRelayCore} — the same engine the
|
|
5
|
+
* GitHub SCM and Slack relays use, so registration heartbeats, durable
|
|
6
|
+
* offsets, backoff, and bounded dispatch retry are inherited rather than
|
|
7
|
+
* reimplemented. Only the subscribe/poll paths, the registration body, and
|
|
8
|
+
* the per-event filter differ.
|
|
9
|
+
*/
|
|
10
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
11
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
12
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
13
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
14
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
15
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
16
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
20
|
+
var t = {};
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
24
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
25
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
26
|
+
t[p[i]] = s[p[i]];
|
|
27
|
+
}
|
|
28
|
+
return t;
|
|
29
|
+
};
|
|
30
|
+
import { CursorRelayCore } from "./cursor-relay-core.js";
|
|
31
|
+
const DEFAULT_EVENTS = ["deployment.succeeded"];
|
|
32
|
+
/** Normalize the channel's `repos` option into concrete subscriptions. */
|
|
33
|
+
export function resolveDeploymentSubscriptions(options) {
|
|
34
|
+
var _a, _b, _c, _d;
|
|
35
|
+
const byRepo = new Map();
|
|
36
|
+
for (const entry of options.repos) {
|
|
37
|
+
const subscription = typeof entry === "string" ? { repo: entry } : entry;
|
|
38
|
+
// Case-folded only: `Deployment.repository` has no documented format, and
|
|
39
|
+
// the server keys subscriptions the same way.
|
|
40
|
+
const repo = subscription.repo.trim().toLowerCase();
|
|
41
|
+
if (repo === "") {
|
|
42
|
+
throw new Error(`deploymentsChannel: invalid repo "${subscription.repo}".`);
|
|
43
|
+
}
|
|
44
|
+
const environments = [
|
|
45
|
+
...new Set(((_b = (_a = subscription.environments) !== null && _a !== void 0 ? _a : options.environments) !== null && _b !== void 0 ? _b : [])
|
|
46
|
+
.map((value) => value.trim())
|
|
47
|
+
.filter(Boolean)),
|
|
48
|
+
];
|
|
49
|
+
const events = new Set((_d = (_c = subscription.events) !== null && _c !== void 0 ? _c : options.events) !== null && _d !== void 0 ? _d : DEFAULT_EVENTS);
|
|
50
|
+
if (events.size === 0) {
|
|
51
|
+
throw new Error(`deploymentsChannel: repo "${repo}" subscribes to no events.`);
|
|
52
|
+
}
|
|
53
|
+
// Later entries for the same repo widen the earlier one rather than
|
|
54
|
+
// silently replacing it.
|
|
55
|
+
const existing = byRepo.get(repo);
|
|
56
|
+
if (existing === undefined) {
|
|
57
|
+
byRepo.set(repo, { repo, environments, events });
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
for (const event of events)
|
|
61
|
+
existing.events.add(event);
|
|
62
|
+
existing.environments =
|
|
63
|
+
existing.environments.length === 0 || environments.length === 0
|
|
64
|
+
? []
|
|
65
|
+
: [...new Set([...existing.environments, ...environments])];
|
|
66
|
+
}
|
|
67
|
+
// Empty is legal here and means "this channel wants nothing", which is how
|
|
68
|
+
// an env-configured channel stays inert without a repo list. The wire-level
|
|
69
|
+
// empty list means deregister, so the host simply never registers it.
|
|
70
|
+
return [...byRepo.values()];
|
|
71
|
+
}
|
|
72
|
+
/** Whether one confirmed subscription wants this event. */
|
|
73
|
+
export function deploymentEventMatches(subscription, envelope) {
|
|
74
|
+
if (!subscription.events.has(envelope.eventType)) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return (subscription.environments.length === 0 ||
|
|
78
|
+
subscription.environments.includes(envelope.environment));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Deliver one event to every channel subscribed to it.
|
|
82
|
+
*
|
|
83
|
+
* Each channel is delivered independently: one channel's handler throwing
|
|
84
|
+
* must not skip the channels after it, because the relay core retries the
|
|
85
|
+
* whole dispatch and the channels that already ran would see the event twice.
|
|
86
|
+
* Throws only when every subscribed channel failed, so a retry cannot
|
|
87
|
+
* re-deliver to a channel that succeeded.
|
|
88
|
+
*/
|
|
89
|
+
export function fanOutDeploymentEvent(input) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const { event, logger } = input;
|
|
92
|
+
const matched = input.targets.filter((target) => target.subscriptions.some((subscription) => subscription.repo === event.repo &&
|
|
93
|
+
deploymentEventMatches(subscription, event)));
|
|
94
|
+
const failures = [];
|
|
95
|
+
for (const target of matched) {
|
|
96
|
+
try {
|
|
97
|
+
yield target.deliver(event);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
failures.push(target.name);
|
|
101
|
+
logger(`[agent-sdk] deployment-events: ${target.name} failed on ${event.eventId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
logger(`[agent-sdk] deployment-events: ${event.eventType} ${event.repo}@${event.sha} (${event.environment}) → ${matched.length - failures.length}/${matched.length} channel(s)`);
|
|
105
|
+
if (failures.length > 0 && failures.length === matched.length) {
|
|
106
|
+
throw new Error(`deployment-events: every subscribed channel failed on ${event.eventId} (${failures.join(", ")})`);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
export class DeploymentEventRelay {
|
|
111
|
+
constructor(options) {
|
|
112
|
+
this.options = options;
|
|
113
|
+
this.subscribed = new Map();
|
|
114
|
+
this.loggedSkippedRepos = new Set();
|
|
115
|
+
const adapter = {
|
|
116
|
+
logPrefix: "deployment-events",
|
|
117
|
+
subscribePath: "/v0/deployment-events/subscriptions",
|
|
118
|
+
pollPath: "/v0/deployment-events",
|
|
119
|
+
buildRegistrationBody: (consumerId) => ({
|
|
120
|
+
consumerId,
|
|
121
|
+
subscriptions: options.subscriptions.map((subscription) => ({
|
|
122
|
+
repo: subscription.repo,
|
|
123
|
+
environments: subscription.environments,
|
|
124
|
+
events: [...subscription.events],
|
|
125
|
+
})),
|
|
126
|
+
}),
|
|
127
|
+
// Empty subscriptions drop this consumer's registration on clean stop
|
|
128
|
+
// instead of leaving it to lapse by TTL.
|
|
129
|
+
buildDeregistrationBody: (consumerId) => ({
|
|
130
|
+
consumerId,
|
|
131
|
+
subscriptions: [],
|
|
132
|
+
}),
|
|
133
|
+
applyRegistrationResponse: (json) => {
|
|
134
|
+
var _a, _b;
|
|
135
|
+
const result = json;
|
|
136
|
+
this.subscribed = new Map();
|
|
137
|
+
this.loggedSkippedRepos.clear();
|
|
138
|
+
const lines = [];
|
|
139
|
+
const confirmed = [];
|
|
140
|
+
for (const status of (_a = result.repos) !== null && _a !== void 0 ? _a : []) {
|
|
141
|
+
const wanted = options.subscriptions.find((subscription) => subscription.repo === status.repo);
|
|
142
|
+
if (!status.isSubscribed || wanted === undefined) {
|
|
143
|
+
lines.push(`not subscribed to ${status.repo}: ${(_b = status.detail) !== null && _b !== void 0 ? _b : "unknown reason"}`);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
this.subscribed.set(status.repo, wanted);
|
|
147
|
+
confirmed.push(status.repo);
|
|
148
|
+
}
|
|
149
|
+
if (confirmed.length > 0) {
|
|
150
|
+
const kinds = [
|
|
151
|
+
...new Set(options.subscriptions.flatMap((s) => [...s.events])),
|
|
152
|
+
];
|
|
153
|
+
lines.push(`subscribed to ${confirmed.join(", ")} for events: ${kinds.join(", ")}`);
|
|
154
|
+
}
|
|
155
|
+
return lines;
|
|
156
|
+
},
|
|
157
|
+
shouldDispatch: (event) => this.shouldDispatch(event),
|
|
158
|
+
dispatch: (_a) => {
|
|
159
|
+
var { offset: _offset } = _a, envelope = __rest(_a, ["offset"]);
|
|
160
|
+
return options.dispatch(envelope);
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
this.core = new CursorRelayCore(Object.assign(Object.assign({ baseUrl: options.baseUrl, apiKey: options.apiKey, stateDir: options.stateDir, adapter, logger: options.logger }, (options.fetchImpl === undefined
|
|
164
|
+
? {}
|
|
165
|
+
: { fetchImpl: options.fetchImpl })), (options.pollWaitMs === undefined
|
|
166
|
+
? {}
|
|
167
|
+
: { pollWaitMs: options.pollWaitMs })));
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Whether an event from this principal's stream belongs to THIS relay.
|
|
171
|
+
* The stream is per-principal, and one API key can back several relays
|
|
172
|
+
* (other hosts, or an agent running its own alongside the host's), so each
|
|
173
|
+
* one re-checks the events against the subscriptions the server confirmed
|
|
174
|
+
* for it.
|
|
175
|
+
*/
|
|
176
|
+
shouldDispatch(event) {
|
|
177
|
+
const envelope = event;
|
|
178
|
+
if (envelope === null ||
|
|
179
|
+
typeof envelope !== "object" ||
|
|
180
|
+
typeof envelope.repo !== "string") {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
const subscription = this.subscribed.get(envelope.repo);
|
|
184
|
+
if (subscription === undefined) {
|
|
185
|
+
if (!this.loggedSkippedRepos.has(envelope.repo)) {
|
|
186
|
+
this.loggedSkippedRepos.add(envelope.repo);
|
|
187
|
+
this.options.logger(`[agent-sdk] deployment-events: skipping events for ${envelope.repo}: not in this host's subscription (another consumer of this API key likely subscribed it)`);
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
return deploymentEventMatches(subscription, envelope);
|
|
192
|
+
}
|
|
193
|
+
start() {
|
|
194
|
+
this.core.start();
|
|
195
|
+
}
|
|
196
|
+
stop() {
|
|
197
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
198
|
+
yield this.core.stop();
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,sEAAsE;AACtE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AACrD,eAAO,MAAM,gBAAgB,EAAE,MAAiC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,sEAAsE;AACtE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AACrD,eAAO,MAAM,gBAAgB,EAAE,MAAiC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CA4BzC,CAAC"}
|
|
@@ -81,6 +81,7 @@ export const AUTHORING_ENTRY_FILES = [
|
|
|
81
81
|
["channels/slack", "channels/slack/index.js"],
|
|
82
82
|
["channels/github", "channels/github/index.js"],
|
|
83
83
|
["channels/origin", "channels/origin/index.js"],
|
|
84
|
+
["channels/deployments", "channels/deployments/index.js"],
|
|
84
85
|
["skills", "skills.js"],
|
|
85
86
|
["schedules", "schedules.js"],
|
|
86
87
|
["reminders", "reminders.js"],
|
|
@@ -1,35 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Offer to install the package's coding-agent skills into the user's
|
|
3
|
-
* personal Cursor skills dir under `~/.cursor/skills/
|
|
3
|
+
* personal Cursor skills dir under `~/.cursor/skills/agentsdk/<skill>/`.
|
|
4
4
|
*
|
|
5
|
-
* Cursor walks `~/.cursor/skills` recursively, so the `
|
|
5
|
+
* Cursor walks `~/.cursor/skills` recursively, so the `agentsdk/` folder is
|
|
6
6
|
* only organizational — identity comes from the leaf folder that holds
|
|
7
|
-
* SKILL.md.
|
|
7
|
+
* SKILL.md. Installed copies get `alwaysApply: true` so Cursor injects the
|
|
8
|
+
* skill body as a global rule instead of leaving it as an on-demand catalog
|
|
9
|
+
* entry. Skipped for `--json` / non-TTY hosts.
|
|
10
|
+
*
|
|
11
|
+
* Consumer installs (`npm install` / `npx` of `@cursor/july`) also copy
|
|
12
|
+
* these skills from a postinstall hook. That path never prompts and never
|
|
13
|
+
* fails the package install. The monorepo source checkout is not a consumer
|
|
14
|
+
* install, so `pnpm install` in everysphere does not overwrite `~/.cursor`.
|
|
8
15
|
*/
|
|
9
16
|
/** Category folder under ~/.cursor/skills (Cursor discovers nested skills). */
|
|
10
|
-
export declare const CURSOR_SKILLS_NAMESPACE = "
|
|
17
|
+
export declare const CURSOR_SKILLS_NAMESPACE = "agentsdk";
|
|
18
|
+
/** Pre-rename install folder. Install deletes this so `/agentkit-*` rows disappear. */
|
|
19
|
+
export declare const LEGACY_CURSOR_SKILLS_NAMESPACE = "agentkit";
|
|
11
20
|
/** How long the `init` offer waits for an answer before skipping the install. */
|
|
12
21
|
export declare const SKILL_PROMPT_TIMEOUT_MS = 45000;
|
|
22
|
+
/**
|
|
23
|
+
* Override the resolved `~/.cursor/skills` directory (not the user home).
|
|
24
|
+
* Used by the postinstall hook in tests and publish smoke.
|
|
25
|
+
*/
|
|
26
|
+
export declare const CURSOR_JULY_SKILLS_HOME_ENV = "CURSOR_JULY_SKILLS_HOME";
|
|
27
|
+
/** Set to `1` to skip the postinstall skill copy. */
|
|
28
|
+
export declare const CURSOR_JULY_SKIP_SKILL_INSTALL_ENV = "CURSOR_JULY_SKIP_SKILL_INSTALL";
|
|
13
29
|
export interface PackageSkill {
|
|
14
|
-
/** Frontmatter `name` (e.g.
|
|
30
|
+
/** Frontmatter `name` (e.g. agentsdk-create-agent). */
|
|
15
31
|
name: string;
|
|
16
|
-
/** Leaf install directory under
|
|
32
|
+
/** Leaf install directory under agentsdk/ (e.g. create-agent). */
|
|
17
33
|
leafDir: string;
|
|
18
34
|
/** Absolute path to the source skill directory in the package. */
|
|
19
35
|
sourceDir: string;
|
|
20
36
|
}
|
|
21
37
|
export declare function cursorSkillsHome(home?: string): string;
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
38
|
+
/**
|
|
39
|
+
* True when this package root is an installed copy under `node_modules`
|
|
40
|
+
* (npm, pnpm, yarn, npx, global), not the everysphere source checkout.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isConsumerPackageInstall(packageRoot: string): boolean;
|
|
43
|
+
/** `~/.cursor/skills/agentsdk` — where package skills are installed. */
|
|
44
|
+
export declare function agentsdkCursorSkillsDir(skillsHome?: string): string;
|
|
45
|
+
/** Pre-rename `~/.cursor/skills/agentkit`. */
|
|
46
|
+
export declare function legacyAgentkitCursorSkillsDir(skillsHome?: string): string;
|
|
47
|
+
/** Absolute install path for one skill: `…/agentsdk/<leafDir>`. */
|
|
25
48
|
export declare function skillInstallPath(skill: Pick<PackageSkill, "leafDir">, skillsHome?: string): string;
|
|
26
49
|
/**
|
|
27
50
|
* Skills shipped next to the running package. Uses the frontmatter `name`
|
|
28
|
-
* when present, otherwise `
|
|
51
|
+
* when present, otherwise `agentsdk-<dir>`.
|
|
29
52
|
*/
|
|
30
53
|
export declare function listShippedPackageSkills(packageRoot?: string): Promise<PackageSkill[]>;
|
|
31
54
|
/**
|
|
32
|
-
* Skills that do not yet have a SKILL.md under ~/.cursor/skills/
|
|
55
|
+
* Skills that do not yet have a SKILL.md under ~/.cursor/skills/agentsdk/.
|
|
33
56
|
* Install still overwrites every shipped skill when the user confirms — this
|
|
34
57
|
* helper is for messaging (fresh install vs update).
|
|
35
58
|
*/
|
|
@@ -42,20 +65,27 @@ export interface SkillInstallResult {
|
|
|
42
65
|
installed: string[];
|
|
43
66
|
/** Leaf dirs deleted because the package no longer ships them. */
|
|
44
67
|
removed: string[];
|
|
68
|
+
/** True when leftover `~/.cursor/skills/agentkit` was deleted. */
|
|
69
|
+
removedLegacyNamespace: boolean;
|
|
45
70
|
}
|
|
46
71
|
/**
|
|
47
|
-
* Copy each skill directory into `skillsHome/
|
|
72
|
+
* Copy each skill directory into `skillsHome/agentsdk/<leafDir>/`.
|
|
48
73
|
* Always overwrites so a package upgrade refreshes local Cursor skills.
|
|
49
|
-
* Strips monorepo-only frontmatter
|
|
74
|
+
* Strips monorepo-only frontmatter, sets `alwaysApply: true` so Cursor
|
|
75
|
+
* loads the body into context, and removes leaf dirs no longer shipped.
|
|
76
|
+
* Also deletes leftover `skillsHome/agentkit/` from the previous namespace.
|
|
50
77
|
*/
|
|
51
78
|
export declare function installCursorSkills(skills: readonly PackageSkill[], skillsHome?: string): Promise<SkillInstallResult>;
|
|
52
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Drop monorepo `paths` globs, set `alwaysApply: true` so Cursor injects the
|
|
81
|
+
* body as a global rule, and fix package doc links for ~/.cursor installs.
|
|
82
|
+
*/
|
|
53
83
|
export declare function prepareSkillMarkdownForCursorInstall(content: string): string;
|
|
54
84
|
export interface SkillInstallPlan {
|
|
55
85
|
shipped: PackageSkill[];
|
|
56
86
|
/** Resolved `~/.cursor/skills`, to install into. */
|
|
57
87
|
skillsHome: string;
|
|
58
|
-
/** Install target: `<skillsHome>/
|
|
88
|
+
/** Install target: `<skillsHome>/agentsdk`. */
|
|
59
89
|
directory: string;
|
|
60
90
|
/** Leaf dirs the package ships. */
|
|
61
91
|
leaves: string[];
|
|
@@ -63,6 +93,8 @@ export interface SkillInstallPlan {
|
|
|
63
93
|
firstInstall: boolean;
|
|
64
94
|
/** Installed leaf dirs the package dropped; installing deletes them. */
|
|
65
95
|
orphans: string[];
|
|
96
|
+
/** True when leftover `skillsHome/agentkit` still exists. */
|
|
97
|
+
hasLegacyNamespace: boolean;
|
|
66
98
|
}
|
|
67
99
|
/** What an install would do, for the offer and for `install-skills`. */
|
|
68
100
|
export declare function planSkillInstall(options?: {
|
|
@@ -71,6 +103,29 @@ export declare function planSkillInstall(options?: {
|
|
|
71
103
|
}): Promise<SkillInstallPlan>;
|
|
72
104
|
/** `Installed 9 Agent SDK skills`, what it dropped, and where it went. */
|
|
73
105
|
export declare function formatSkillInstall(plan: SkillInstallPlan, result: SkillInstallResult): string;
|
|
106
|
+
export type PackageInstallSkillSyncResult = {
|
|
107
|
+
status: "installed";
|
|
108
|
+
installed: string[];
|
|
109
|
+
removed: string[];
|
|
110
|
+
} | {
|
|
111
|
+
status: "skipped";
|
|
112
|
+
reason: "opt-out" | "not-consumer" | "no-skills" | "error";
|
|
113
|
+
};
|
|
114
|
+
export interface SyncCursorSkillsOnPackageInstallOptions {
|
|
115
|
+
packageRoot?: string;
|
|
116
|
+
skillsHome?: string;
|
|
117
|
+
env?: NodeJS.ProcessEnv;
|
|
118
|
+
/** Override the node_modules consumer check. */
|
|
119
|
+
consumer?: boolean;
|
|
120
|
+
out?: (text: string) => void;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Copy shipped coding-agent skills into ~/.cursor/skills/agentsdk during a
|
|
124
|
+
* consumer `npm install` / `npx`. Never throws: a failed copy must not fail
|
|
125
|
+
* the package install. No-op in the monorepo source tree and when
|
|
126
|
+
* `CURSOR_JULY_SKIP_SKILL_INSTALL=1`.
|
|
127
|
+
*/
|
|
128
|
+
export declare function syncCursorSkillsOnPackageInstall(options?: SyncCursorSkillsOnPackageInstallOptions): Promise<PackageInstallSkillSyncResult>;
|
|
74
129
|
export interface OfferInstallCursorSkillsOptions {
|
|
75
130
|
/** Skip when false (non-TTY / `--json`). */
|
|
76
131
|
interactive?: boolean;
|
|
@@ -82,7 +137,7 @@ export interface OfferInstallCursorSkillsOptions {
|
|
|
82
137
|
}
|
|
83
138
|
/**
|
|
84
139
|
* On a TTY, offer to install/update every shipped package skill into
|
|
85
|
-
* ~/.cursor/skills/
|
|
140
|
+
* ~/.cursor/skills/agentsdk (always overwriting). No-op when non-interactive
|
|
86
141
|
* or the package ships no skills. An unanswered prompt skips the install
|
|
87
142
|
* rather than blocking the caller — see `SKILL_PROMPT_TIMEOUT_MS`.
|
|
88
143
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-cursor-skills.d.ts","sourceRoot":"","sources":["../../src/internal/install-cursor-skills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"install-cursor-skills.d.ts","sourceRoot":"","sources":["../../src/internal/install-cursor-skills.ts"],"names":[],"mappings":"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"}
|