@cursor/bdk 0.2.1 → 0.2.2
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 +1 -6
- package/dist/artifacts.d.ts +5 -2
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +5 -2
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +3 -2
- package/dist/channels/slack/types.d.ts +6 -1
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.JVQvbRO-.js → app.DtYVVVyK.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.BgTA2tV1.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BkhY63uW.js → VPLocalSearchBox.D47xT7J4.js} +1 -1
- package/dist/docs/assets/chunks/{arc.Cc1unYd3.js → arc.CDJ6xzxR.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CAY_TPVz.js → architectureDiagram-Q4EWVU46.l1Xnjd3N.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.my2VD3Xm.js → baseUniq.x-finShZ.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.CQXAOmqd.js → blockDiagram-DXYQGD6D.COC3qynH.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.D0AsQFSX.js → c4Diagram-AHTNJAMY.DdQO850E.js} +1 -1
- package/dist/docs/assets/chunks/channel.B2nMEx82.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.DZjhgNls.js → chunk-4BX2VUAB.Dpn8omLk.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.qdcp_qbo.js → chunk-4TB4RGXK.C0XWStUN.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.BHXoZhJ-.js → chunk-55IACEB6.DsKSZfIM.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.Cds_Vwj3.js → chunk-EDXVE4YY.dNU6JDu6.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CSl0HknT.js → chunk-FMBD7UC4.DN41fxKE.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.DJMvAt5N.js → chunk-OYMX7WX6.COpKCZus.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BYQzBK9D.js → chunk-QZHKN3VN.HDB-azx2.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.BAvw7N4o.js → chunk-YZCP3GAM.DEeX_a2j.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D8iCH2ve.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D8iCH2ve.js +1 -0
- package/dist/docs/assets/chunks/clone.5XNLjby0.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Buf3seya.js → cose-bilkent-S5V4N54A.C3yGL2A8.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.DMGGa3uA.js → dagre-KV5264BT.Bpl24en4.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DDjnwRmY.js → diagram-5BDNPKRD.nFco6seU.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.RwyrIr8Q.js → diagram-G4DWMVQ6.DXhA6DWR.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DRvQV16Z.js → diagram-MMDJMWI5.8GoOYcwk.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.Dw8W9BTk.js → diagram-TYMM5635.DDBlqvlJ.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DQT1Hnwf.js → erDiagram-SMLLAGMA.vl_N81P4.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.6_Aky-ut.js → flowDiagram-DWJPFMVM.Cteg8g7I.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DHIwqnqN.js → ganttDiagram-T4ZO3ILL.D4aMhlMM.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CGd_eJbn.js → gitGraphDiagram-UUTBAWPF.DF_J0D4q.js} +1 -1
- package/dist/docs/assets/chunks/{graph.ChMEylkh.js → graph.DJs0LDCf.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.Cd4gMyAz.js → infoDiagram-42DDH7IO.Bb-4RQwg.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.D1uw7MXq.js → ishikawaDiagram-UXIWVN3A.DEtQRSbc.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.AWLXtelc.js → journeyDiagram-VCZTEJTY.DhQQ75FA.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CagPhAn5.js → kanban-definition-6JOO6SKY.C4gEw3Rk.js} +1 -1
- package/dist/docs/assets/chunks/{layout.ClTBBkE_.js → layout.DT-PGlXa.js} +1 -1
- package/dist/docs/assets/chunks/{linear.SwS2rOLA.js → linear.BMMe__JW.js} +1 -1
- package/dist/docs/assets/chunks/{min.By_x-Btb.js → min.XyaU9K9Q.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.By_RAMaP.js → mindmap-definition-QFDTVHPH.CbBM6xZ-.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DfAl9sy4.js → pieDiagram-DEJITSTG.DFJoIVou.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CNuqFRBj.js → quadrantDiagram-34T5L4WZ.CQjkDYqb.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DJ5CmTCl.js → requirementDiagram-MS252O5E.D-mK-JQu.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.D-T_AKJj.js → sankeyDiagram-XADWPNL6.BStQInpd.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BRn9WcrR.js → sequenceDiagram-FGHM5R23.CA_eooPJ.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.F12urmm7.js → stateDiagram-FHFEXIEX.BXl-b7ad.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.yGM2uLZQ.js +1 -0
- package/dist/docs/assets/chunks/{theme.zK3OJa_C.js → theme.q37tOs4x.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.B7GiQBeC.js → timeline-definition-GMOUNBTQ.vjuaGOSe.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.D0niwuY_.js → vennDiagram-DHZGUBPP.BxduJl-F.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.DKfyIejL.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.DKaqpT7K.js → wardleyDiagram-NUSXRM2D.D1z3ds0D.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.e8BPicch.js → xychartDiagram-5P7HB3ND.CRU5Ti9b.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.IFFC5Zln.js → reference_artifacts.md.CFMNPreZ.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.Dg3dEugd.js → reference_hooks.md.DbthhtIR.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.BtpTjZmh.js → reference_sessions.md.DeRUItHD.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.Cy00QMKS.js → reference_skills.md.CRFTxt9M.js} +3 -3
- package/dist/docs/assets/{reference_skills.md.Cy00QMKS.lean.js → reference_skills.md.CRFTxt9M.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +35 -35
- package/dist/docs/deployment.html +35 -35
- package/dist/docs/evals.html +35 -35
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +35 -35
- package/dist/docs/guides/gitlab.html +35 -35
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +8 -6
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +37 -37
- package/dist/docs/reference/artifacts.md +1 -1
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +35 -35
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +37 -37
- package/dist/docs/reference/hooks.md +3 -2
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +36 -36
- package/dist/docs/reference/sessions.md +4 -3
- package/dist/docs/reference/skills.html +38 -38
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +35 -35
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +16 -4
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +7 -3
- package/dist/extensions/cursor-cloud-agents/lib/channels.d.ts +3 -0
- package/dist/extensions/cursor-cloud-agents/lib/channels.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/channels.js +7 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts +4 -2
- package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +21 -12
- package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +2 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -1
- package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +2 -0
- package/dist/files-backends/cursor-hosted.js +4 -4
- package/dist/internal/artifacts-store.d.ts +12 -2
- package/dist/internal/artifacts-store.d.ts.map +1 -1
- package/dist/internal/artifacts-store.js +8 -4
- package/dist/internal/event-mapper.d.ts +46 -4
- package/dist/internal/event-mapper.d.ts.map +1 -1
- package/dist/internal/event-mapper.js +316 -25
- package/dist/internal/hosted-delivery.js +1 -1
- package/dist/internal/session-engine.d.ts +1 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +24 -3
- package/dist/playground/assets/index-6BbTPnaT.css +1 -0
- package/dist/playground/assets/{index-FFdUqTt_.js → index-CI7FAmOP.js} +43 -43
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +39 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/reference/artifacts.md +1 -1
- package/docs/reference/hooks.md +3 -2
- package/docs/reference/sessions.md +4 -3
- package/package.json +2 -2
- package/src/artifacts.ts +5 -2
- package/src/channels/slack/manifest.ts +2 -1
- package/src/channels/slack/types.ts +6 -1
- package/src/extensions/cursor-cloud-agents/extension.ts +23 -6
- package/src/extensions/cursor-cloud-agents/lib/channels.ts +11 -0
- package/src/extensions/cursor-cloud-agents/lib/repos.ts +19 -7
- package/src/extensions/cursor-cloud-agents/tools/cancel.ts +2 -0
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +3 -1
- package/src/extensions/cursor-cloud-agents/tools/reply.ts +2 -0
- package/src/files-backends/cursor-hosted.ts +4 -4
- package/src/internal/artifacts-store.ts +14 -3
- package/src/internal/event-mapper.ts +367 -36
- package/src/internal/hosted-delivery.ts +1 -1
- package/src/internal/session-engine.ts +24 -8
- package/src/types.ts +45 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.Caw9W1pM.js +0 -1
- package/dist/docs/assets/chunks/channel.Sapo9HJZ.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.NPiy3Hz7.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.NPiy3Hz7.js +0 -1
- package/dist/docs/assets/chunks/clone.zl2qolPE.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2._auCa3fR.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.1zhHNRsx.js +0 -162
- package/dist/playground/assets/index-BMV_IcEE.css +0 -1
- /package/dist/docs/assets/{reference_artifacts.md.IFFC5Zln.lean.js → reference_artifacts.md.CFMNPreZ.lean.js} +0 -0
- /package/dist/docs/assets/{reference_hooks.md.Dg3dEugd.lean.js → reference_hooks.md.DbthhtIR.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.BtpTjZmh.lean.js → reference_sessions.md.DeRUItHD.lean.js} +0 -0
|
@@ -3,14 +3,23 @@
|
|
|
3
3
|
* `prUrl` per call, but the author's `cloud.repos` are the allowlist.
|
|
4
4
|
* Model-chosen targets always require that allowlist: an unbound mount
|
|
5
5
|
* (no `cloud.repos`) must not accept an arbitrary URL under the host API
|
|
6
|
-
* key, with or without `envVars`.
|
|
6
|
+
* key, with or without `envVars`. A function allowlist is resolved on every
|
|
7
|
+
* call and always narrows the launch to one of its repositories.
|
|
7
8
|
*/
|
|
8
9
|
import { parsePrUrl } from "../../../internal/scm/pr-url.js";
|
|
9
10
|
export function launchRepos(target, cloud) {
|
|
10
|
-
var _a
|
|
11
|
-
var _c, _d, _e, _f
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
var _a;
|
|
12
|
+
var _b, _c, _d, _e, _f;
|
|
13
|
+
const resolved = typeof cloud.repos === "function";
|
|
14
|
+
const allowlist = typeof cloud.repos === "function" ? cloud.repos() : cloud.repos;
|
|
15
|
+
if (resolved && (allowlist === null || allowlist === void 0 ? void 0 : allowlist.length) === 0) {
|
|
16
|
+
throw new Error("No repositories are available to cloud agents for this deployment.");
|
|
17
|
+
}
|
|
18
|
+
if (!resolved &&
|
|
19
|
+
target.repo === undefined &&
|
|
20
|
+
target.ref === undefined &&
|
|
21
|
+
target.prUrl === undefined) {
|
|
22
|
+
return allowlist;
|
|
14
23
|
}
|
|
15
24
|
const pr = target.prUrl === undefined ? undefined : parsePrUrl(target.prUrl);
|
|
16
25
|
if (target.prUrl !== undefined && (pr === null || pr === void 0 ? void 0 : pr.provider) !== "github") {
|
|
@@ -18,8 +27,8 @@ export function launchRepos(target, cloud) {
|
|
|
18
27
|
}
|
|
19
28
|
const prRepo = pr === undefined ? undefined : `https://github.com/${pr.owner}/${pr.repo}`;
|
|
20
29
|
// A lone `ref` needs exactly one configured repository to apply to.
|
|
21
|
-
const configured =
|
|
22
|
-
const url = (
|
|
30
|
+
const configured = allowlist !== null && allowlist !== void 0 ? allowlist : [];
|
|
31
|
+
const url = (_c = (_b = target.repo) !== null && _b !== void 0 ? _b : prRepo) !== null && _c !== void 0 ? _c : (configured.length === 1 ? (_a = configured[0]) === null || _a === void 0 ? void 0 : _a.url : undefined);
|
|
23
32
|
if (url === undefined) {
|
|
24
33
|
throw new Error(configured.length > 1
|
|
25
34
|
? "`repo` is required: this extension configures several repositories."
|
|
@@ -28,9 +37,9 @@ export function launchRepos(target, cloud) {
|
|
|
28
37
|
if (prRepo !== undefined && repoKey(prRepo) !== repoKey(url)) {
|
|
29
38
|
throw new Error(`prUrl ${target.prUrl} is not a pull request of ${url}.`);
|
|
30
39
|
}
|
|
31
|
-
const allowlisted =
|
|
40
|
+
const allowlisted = allowlist === null || allowlist === void 0 ? void 0 : allowlist.some(configured => repoKey(configured.url) === repoKey(url));
|
|
32
41
|
if (allowlisted !== true) {
|
|
33
|
-
throw new Error(
|
|
42
|
+
throw new Error(allowlist === undefined
|
|
34
43
|
? `Configure cloud.repos before launching against a model-chosen repository (${url}).`
|
|
35
44
|
: `${url} is not one of this extension's configured repositories.`);
|
|
36
45
|
}
|
|
@@ -40,9 +49,9 @@ export function launchRepos(target, cloud) {
|
|
|
40
49
|
const match = configured.find(configuredRepo => repoKey(configuredRepo.url) === repoKey(url));
|
|
41
50
|
return [
|
|
42
51
|
{
|
|
43
|
-
url: (
|
|
44
|
-
startingRef: (
|
|
45
|
-
prUrl: (
|
|
52
|
+
url: (_d = match === null || match === void 0 ? void 0 : match.url) !== null && _d !== void 0 ? _d : url,
|
|
53
|
+
startingRef: (_e = target.ref) !== null && _e !== void 0 ? _e : match === null || match === void 0 ? void 0 : match.startingRef,
|
|
54
|
+
prUrl: (_f = target.prUrl) !== null && _f !== void 0 ? _f : (target.ref !== undefined ? undefined : match === null || match === void 0 ? void 0 : match.prUrl),
|
|
46
55
|
},
|
|
47
56
|
];
|
|
48
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../../../src/extensions/cursor-cloud-agents/tools/cancel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../../../src/extensions/cursor-cloud-agents/tools/cancel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD,QAAA,MAAM,MAAM,EAAE,cAWZ,CAAC;eAEY,MAAM"}
|
|
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { defineTool } from "../../../tools.js";
|
|
11
11
|
import { cloudAgentsBackend } from "../lib/backend.js";
|
|
12
|
+
import { assertWriteChannel } from "../lib/channels.js";
|
|
12
13
|
import { assertOwned } from "../lib/fleet.js";
|
|
13
14
|
import { agentRef } from "../lib/inputs.js";
|
|
14
15
|
const cancel = defineTool({
|
|
@@ -17,6 +18,7 @@ const cancel = defineTool({
|
|
|
17
18
|
inputSchema: agentRef,
|
|
18
19
|
execute(input, ctx) {
|
|
19
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
assertWriteChannel(ctx);
|
|
20
22
|
yield assertOwned(ctx, input.agent_id);
|
|
21
23
|
yield cloudAgentsBackend().pause(input.agent_id);
|
|
22
24
|
return { agentId: input.agent_id, cancelled: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../../src/extensions/cursor-cloud-agents/tools/launch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../../src/extensions/cursor-cloud-agents/tools/launch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOxD,QAAA,MAAM,MAAM,EAAE,cAkDZ,CAAC;eAEY,MAAM"}
|
|
@@ -11,6 +11,7 @@ import { z } from "zod";
|
|
|
11
11
|
import { defineTool } from "../../../tools.js";
|
|
12
12
|
import extension from "../extension.js";
|
|
13
13
|
import { cloudAgentsBackend } from "../lib/backend.js";
|
|
14
|
+
import { assertWriteChannel } from "../lib/channels.js";
|
|
14
15
|
import { recordLaunch } from "../lib/fleet.js";
|
|
15
16
|
import { launchRepos } from "../lib/repos.js";
|
|
16
17
|
const launch = defineTool({
|
|
@@ -26,7 +27,7 @@ const launch = defineTool({
|
|
|
26
27
|
.string()
|
|
27
28
|
.url()
|
|
28
29
|
.optional()
|
|
29
|
-
.describe("GitHub
|
|
30
|
+
.describe("Repository clone URL (GitHub or Origin), one of the configured repositories. Defaults to the configured repository when there is exactly one."),
|
|
30
31
|
starting_ref: z
|
|
31
32
|
.string()
|
|
32
33
|
.optional()
|
|
@@ -44,6 +45,7 @@ const launch = defineTool({
|
|
|
44
45
|
}),
|
|
45
46
|
execute(input, ctx) {
|
|
46
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
assertWriteChannel(ctx);
|
|
47
49
|
const { cloud, model } = extension.config;
|
|
48
50
|
const launched = yield cloudAgentsBackend().launch({
|
|
49
51
|
prompt: input.prompt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../../../src/extensions/cursor-cloud-agents/tools/reply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../../../src/extensions/cursor-cloud-agents/tools/reply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOxD,QAAA,MAAM,KAAK,EAAE,cAwBX,CAAC;eAEY,KAAK"}
|
|
@@ -11,6 +11,7 @@ import { z } from "zod";
|
|
|
11
11
|
import { defineTool } from "../../../tools.js";
|
|
12
12
|
import extension from "../extension.js";
|
|
13
13
|
import { cloudAgentsBackend } from "../lib/backend.js";
|
|
14
|
+
import { assertWriteChannel } from "../lib/channels.js";
|
|
14
15
|
import { assertOwned } from "../lib/fleet.js";
|
|
15
16
|
import { agentRef } from "../lib/inputs.js";
|
|
16
17
|
const reply = defineTool({
|
|
@@ -26,6 +27,7 @@ const reply = defineTool({
|
|
|
26
27
|
}),
|
|
27
28
|
execute(input, ctx) {
|
|
28
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
assertWriteChannel(ctx);
|
|
29
31
|
yield assertOwned(ctx, input.agent_id);
|
|
30
32
|
const { runId } = yield cloudAgentsBackend().followUp(input.agent_id, input.prompt, input.interrupt);
|
|
31
33
|
return { agentId: input.agent_id, runId, queued: !input.interrupt };
|
|
@@ -753,10 +753,10 @@ export function cursorHostedFiles(options = {}) {
|
|
|
753
753
|
if (files.wire !== "flush") {
|
|
754
754
|
return false;
|
|
755
755
|
}
|
|
756
|
-
//
|
|
757
|
-
//
|
|
758
|
-
// the
|
|
759
|
-
//
|
|
756
|
+
// With an observed etag the flush delete is If-Match on that version.
|
|
757
|
+
// Without one, the server tombstones whatever live object occupies
|
|
758
|
+
// the key (no directory walk here) and an absent key settles as
|
|
759
|
+
// `already_deleted`.
|
|
760
760
|
const cached = observedEtags.get(key);
|
|
761
761
|
const response = yield flushPost(options, "/flush", {
|
|
762
762
|
store: files.store,
|
|
@@ -20,13 +20,22 @@ export interface CreateArtifactsStoreOptions {
|
|
|
20
20
|
config?: ArtifactsConfig;
|
|
21
21
|
/** Explicit sink override (tests). Omitted → hosted store or local disk. */
|
|
22
22
|
sink?: FileSink;
|
|
23
|
+
/**
|
|
24
|
+
* Whether `tag` enforces {@link ArtifactsConfig.max} by listing and
|
|
25
|
+
* deleting. Default true. Hosted architecture v2 passes false: the
|
|
26
|
+
* installation store is allowed to grow, and a tag must not list the prefix.
|
|
27
|
+
*/
|
|
28
|
+
enforceCap?: () => boolean;
|
|
23
29
|
}
|
|
24
30
|
/** Kind used by freeform tags when no kinds are declared. */
|
|
25
31
|
export declare const ARTIFACT_DEFAULT_KIND = "artifact";
|
|
26
32
|
/**
|
|
27
33
|
* Upsert + list semantics over one {@link ArtifactRowStore}: kind/schema
|
|
28
|
-
* validation, deterministic ids for keyed tags, and `max` eviction.
|
|
29
|
-
*
|
|
34
|
+
* validation, deterministic ids for keyed tags, and `max` eviction.
|
|
35
|
+
* Architecture v1 and self-hosted v2 evict. Hosted architecture v2 sets
|
|
36
|
+
* {@link CreateArtifactsStoreOptions.enforceCap} false and does not list
|
|
37
|
+
* or delete on tag. The engine wraps this into the per-context
|
|
38
|
+
* {@link ArtifactsApi} facades and
|
|
30
39
|
* owns the `artifact.tagged` event append.
|
|
31
40
|
*/
|
|
32
41
|
export declare class ArtifactsStore {
|
|
@@ -34,6 +43,7 @@ export declare class ArtifactsStore {
|
|
|
34
43
|
private readonly content;
|
|
35
44
|
private readonly config;
|
|
36
45
|
private readonly max;
|
|
46
|
+
private readonly enforceCap;
|
|
37
47
|
/** Serializes tags so read-modify-write upserts and eviction don't race. */
|
|
38
48
|
private tagChain;
|
|
39
49
|
constructor(options: CreateArtifactsStoreOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts-store.d.ts","sourceRoot":"","sources":["../../src/internal/artifacts-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5D,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AAGrB,2EAA2E;AAC3E,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAqE9C,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"artifacts-store.d.ts","sourceRoot":"","sources":["../../src/internal/artifacts-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5D,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AAGrB,2EAA2E;AAC3E,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAqE9C,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;CAC5B;AAED,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAuC;IAEvD,YAAY,OAAO,EAAE,2BAA2B,EAY/C;IAED,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAIpD;YAEa,aAAa;IA0C3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAEnD;IAED,sEAAsE;IACtE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEtD;IAED;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAGjE;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACG,IAAI,CACR,OAAO,CAAC,EAAE,mBAAmB,GAAG;QAC9B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC;KAC/C,GACA,OAAO,CAAC,YAAY,CAAC,CAyBvB;IAED;;;;;OAKG;YACW,gBAAgB;IA0F9B;;;;;;OAMG;YACW,eAAe;IAmC7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;;;;;;;;;;;;;;;;OAkBG;YACW,YAAY;IAkB1B,sEAAsE;YACxD,YAAY;CAsB3B;AAED,kEAAkE;AAClE,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,cAGC;CACF;AAyDD,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKpD"}
|
|
@@ -62,13 +62,16 @@ const ARTIFACTS_EVICT_MAX_PER_PASS = 64;
|
|
|
62
62
|
export const ARTIFACT_DEFAULT_KIND = "artifact";
|
|
63
63
|
/**
|
|
64
64
|
* Upsert + list semantics over one {@link ArtifactRowStore}: kind/schema
|
|
65
|
-
* validation, deterministic ids for keyed tags, and `max` eviction.
|
|
66
|
-
*
|
|
65
|
+
* validation, deterministic ids for keyed tags, and `max` eviction.
|
|
66
|
+
* Architecture v1 and self-hosted v2 evict. Hosted architecture v2 sets
|
|
67
|
+
* {@link CreateArtifactsStoreOptions.enforceCap} false and does not list
|
|
68
|
+
* or delete on tag. The engine wraps this into the per-context
|
|
69
|
+
* {@link ArtifactsApi} facades and
|
|
67
70
|
* owns the `artifact.tagged` event append.
|
|
68
71
|
*/
|
|
69
72
|
export class ArtifactsStore {
|
|
70
73
|
constructor(options) {
|
|
71
|
-
var _a;
|
|
74
|
+
var _a, _b;
|
|
72
75
|
/** Serializes tags so read-modify-write upserts and eviction don't race. */
|
|
73
76
|
this.tagChain = Promise.resolve();
|
|
74
77
|
const sink = (_a = options.sink) !== null && _a !== void 0 ? _a : (isCursorHostedFilesAvailable() ? cursorHostedFiles() : undefined);
|
|
@@ -82,6 +85,7 @@ export class ArtifactsStore {
|
|
|
82
85
|
}
|
|
83
86
|
this.config = options.config;
|
|
84
87
|
this.max = resolveArtifactsMax(options.config);
|
|
88
|
+
this.enforceCap = (_b = options.enforceCap) !== null && _b !== void 0 ? _b : (() => true);
|
|
85
89
|
}
|
|
86
90
|
tag(input) {
|
|
87
91
|
const result = this.tagChain.then(() => this.tagSerialized(input));
|
|
@@ -127,7 +131,7 @@ export class ArtifactsStore {
|
|
|
127
131
|
}
|
|
128
132
|
}
|
|
129
133
|
yield this.rows.put(record);
|
|
130
|
-
if (existing === undefined) {
|
|
134
|
+
if (existing === undefined && this.enforceCap()) {
|
|
131
135
|
yield this.evictPastCap();
|
|
132
136
|
}
|
|
133
137
|
return record;
|
|
@@ -41,6 +41,9 @@ type NestedTaskUpdate = {
|
|
|
41
41
|
type: "step-completed";
|
|
42
42
|
stepId: number;
|
|
43
43
|
stepDurationMs: number;
|
|
44
|
+
} | {
|
|
45
|
+
type: "tool-requests-listed";
|
|
46
|
+
callCount: number;
|
|
44
47
|
};
|
|
45
48
|
type ToolCallDeltaUpdate = {
|
|
46
49
|
type: "tool-call-delta";
|
|
@@ -48,8 +51,12 @@ type ToolCallDeltaUpdate = {
|
|
|
48
51
|
modelCallId: string;
|
|
49
52
|
taskUpdate: NestedTaskUpdate;
|
|
50
53
|
};
|
|
51
|
-
|
|
52
|
-
type
|
|
54
|
+
type ToolRequestsListedUpdate = {
|
|
55
|
+
type: "tool-requests-listed";
|
|
56
|
+
callCount: number;
|
|
57
|
+
};
|
|
58
|
+
/** SDK updates plus list-closed / nested task deltas ahead of `@cursor/sdk`. */
|
|
59
|
+
type InteractionUpdate = SdkInteractionUpdate | ToolCallDeltaUpdate | ToolRequestsListedUpdate;
|
|
53
60
|
export interface ToolCallDescription {
|
|
54
61
|
toolName: string;
|
|
55
62
|
args?: unknown;
|
|
@@ -72,6 +79,17 @@ export declare class TurnEventMapper {
|
|
|
72
79
|
private summaryTitle;
|
|
73
80
|
/** Per-parent-call accumulators for nested subagent streams. */
|
|
74
81
|
private readonly nested;
|
|
82
|
+
/** One wave per model step (or per call when the step id is missing). */
|
|
83
|
+
private readonly waves;
|
|
84
|
+
/**
|
|
85
|
+
* Keys of waves that already emitted `actions.completed`, plus each
|
|
86
|
+
* finished call's singleton key. A late duplicate cannot reopen the
|
|
87
|
+
* batch or emit a second pair for the same callId. A new late callId
|
|
88
|
+
* still gets its own singleton.
|
|
89
|
+
*/
|
|
90
|
+
private readonly sealedWaveKeys;
|
|
91
|
+
/** Listed-call count from `tool-requests-listed`, keyed by parentCallId. */
|
|
92
|
+
private readonly listedCounts;
|
|
75
93
|
/**
|
|
76
94
|
* @param isStubbed Reports whether a finished tool call was answered by the
|
|
77
95
|
* host rather than executed. The harness reports an answered call exactly
|
|
@@ -106,8 +124,32 @@ export declare class TurnEventMapper {
|
|
|
106
124
|
/** Close out the turn: finalize any open assistant text block. */
|
|
107
125
|
finish(): void;
|
|
108
126
|
private handleNestedTaskUpdate;
|
|
109
|
-
private
|
|
110
|
-
private
|
|
127
|
+
private noteToolStarted;
|
|
128
|
+
private noteToolCompleted;
|
|
129
|
+
private callBelongsToWave;
|
|
130
|
+
private singletonWave;
|
|
131
|
+
/**
|
|
132
|
+
* Starts join the open model-step wave until `actions.requested` seals.
|
|
133
|
+
* A later start for that same step is its own singleton pair so completed
|
|
134
|
+
* cannot list tools the matching requested envelope never had.
|
|
135
|
+
*/
|
|
136
|
+
private waveForStart;
|
|
137
|
+
/**
|
|
138
|
+
* Completes join a model-step wave only when that call already started
|
|
139
|
+
* there. A start-less complete on an open sibling batch would flush with
|
|
140
|
+
* `actions.requested` and then block `actions.completed` forever.
|
|
141
|
+
*/
|
|
142
|
+
private waveForComplete;
|
|
143
|
+
private adoptSingletonResults;
|
|
144
|
+
private ensureWave;
|
|
145
|
+
private noteRequestsListed;
|
|
146
|
+
private maybeSealListedWave;
|
|
147
|
+
private sealOpenRequests;
|
|
148
|
+
private sealWaveRequests;
|
|
149
|
+
private maybeEmitActionsCompleted;
|
|
150
|
+
private emitActionsCompleted;
|
|
151
|
+
private forgetWave;
|
|
152
|
+
private flushOpenResults;
|
|
111
153
|
private ensureNested;
|
|
112
154
|
private flushAssistantText;
|
|
113
155
|
private flushNestedAssistantText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../../src/internal/event-mapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../../src/internal/event-mapper.ts"],"names":[],"mappings":"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"}
|