@cursor/july 0.1.55 → 0.1.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/agent-serve.js +30 -23
- package/dist/channels/github/github-channel.d.ts +13 -1
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +81 -16
- package/dist/channels/github/types.d.ts +29 -1
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/origin/cursor-account.d.ts +22 -0
- package/dist/channels/origin/cursor-account.d.ts.map +1 -0
- package/dist/channels/origin/cursor-account.js +35 -0
- package/dist/channels/origin/events.d.ts +10 -0
- package/dist/channels/origin/events.d.ts.map +1 -0
- package/dist/channels/origin/events.js +27 -0
- package/dist/channels/origin/index.d.ts +29 -0
- package/dist/channels/origin/index.d.ts.map +1 -0
- package/dist/channels/origin/index.js +28 -0
- package/dist/channels/origin/origin-channel.d.ts +68 -0
- package/dist/channels/origin/origin-channel.d.ts.map +1 -0
- package/dist/channels/origin/origin-channel.js +567 -0
- package/dist/channels/origin/origin-webhook.d.ts +38 -0
- package/dist/channels/origin/origin-webhook.d.ts.map +1 -0
- package/dist/channels/origin/origin-webhook.js +151 -0
- package/dist/channels/origin/types.d.ts +152 -0
- package/dist/channels/origin/types.d.ts.map +1 -0
- package/dist/channels/origin/types.js +1 -0
- package/dist/channels/slack/doctor.d.ts +17 -1
- package/dist/channels/slack/doctor.d.ts.map +1 -1
- package/dist/channels/slack/doctor.js +186 -10
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.CVQxhV85.js → app.B-biogkN.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.5ozYNf74.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.QAPzJjql.js → VPLocalSearchBox.DZqKtFZS.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CSxTCOFu.js → theme.BwC5zP2r.js} +2 -2
- package/dist/docs/assets/{example-agents_fsd.md.DPz9ezO4.js → example-agents_fsd.md.ZeGEpAw_.js} +2 -2
- package/dist/docs/assets/{example-agents_fsd.md.DPz9ezO4.lean.js → example-agents_fsd.md.ZeGEpAw_.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_security-reviewer.md.Dkf1gyo6.js → example-agents_security-reviewer.md.DBL1TwtP.js} +2 -2
- package/dist/docs/assets/{example-agents_security-reviewer.md.Dkf1gyo6.lean.js → example-agents_security-reviewer.md.DBL1TwtP.lean.js} +1 -1
- package/dist/docs/assets/guides_convert-automation.md.BhMzTkE5.js +12 -0
- package/dist/docs/assets/guides_convert-automation.md.BhMzTkE5.lean.js +1 -0
- package/dist/docs/assets/{guides_github.md.B8QKtIpw.js → guides_github.md.CLLQJKRB.js} +4 -4
- package/dist/docs/assets/{guides_github.md.B8QKtIpw.lean.js → guides_github.md.CLLQJKRB.lean.js} +1 -1
- package/dist/docs/assets/index.md.DhRHS_-L.js +5 -0
- package/dist/docs/assets/{index.md.COeoSkcF.lean.js → index.md.DhRHS_-L.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.D_CCfG8R.js → reference_cli.md.Cl14Jfo3.js} +8 -2
- package/dist/docs/assets/{reference_cli.md.D_CCfG8R.lean.js → reference_cli.md.Cl14Jfo3.lean.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.CrWSA0Ko.js +1 -0
- package/dist/docs/assets/{scaffolding-agents.md.mkc3B_ZW.lean.js → scaffolding-agents.md.CrWSA0Ko.lean.js} +1 -1
- package/dist/docs/assets/templates_agentic-owners.md.BkTLORaU.js +14 -0
- package/dist/docs/assets/templates_agentic-owners.md.BkTLORaU.lean.js +1 -0
- package/dist/docs/assets/templates_demo.md.Bgd6MBaZ.js +4 -0
- package/dist/docs/assets/templates_demo.md.Bgd6MBaZ.lean.js +1 -0
- package/dist/docs/assets/templates_pr-autofixer.md.DcmoeUNZ.js +8 -0
- package/dist/docs/assets/templates_pr-autofixer.md.DcmoeUNZ.lean.js +1 -0
- package/dist/docs/assets/templates_security-reviewer.md.C0yIUaYs.js +2 -0
- package/dist/docs/assets/templates_security-reviewer.md.C0yIUaYs.lean.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/evals.html +4 -4
- package/dist/docs/example-agents/approval-buddy.html +4 -4
- package/dist/docs/example-agents/benny.html +4 -4
- package/dist/docs/example-agents/bugbot.html +4 -4
- package/dist/docs/example-agents/codebase-wiki.html +4 -4
- package/dist/docs/example-agents/codeowners-review.html +4 -4
- package/dist/docs/example-agents/concierge.html +4 -4
- package/dist/docs/example-agents/fsd.html +5 -5
- package/dist/docs/example-agents/index.html +4 -4
- package/dist/docs/example-agents/knowledge-base.html +4 -4
- package/dist/docs/example-agents/oncall.html +4 -4
- package/dist/docs/example-agents/security-reviewer.html +5 -5
- package/dist/docs/example-agents/slack-agent.html +4 -4
- package/dist/docs/example-agents/weather-agent.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +4 -4
- package/dist/docs/guides/convert-automation.html +36 -0
- package/dist/docs/guides/github.html +7 -7
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +4 -4
- package/dist/docs/guides/opentelemetry.html +4 -4
- package/dist/docs/guides/slack.html +4 -4
- 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/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +12 -6
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +4 -4
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- package/dist/docs/reference/prompt.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/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +38 -0
- package/dist/docs/templates/demo.html +28 -0
- package/dist/docs/templates/pr-autofixer.html +32 -0
- package/dist/docs/templates/security-reviewer.html +26 -0
- package/dist/docs/templates/triage.html +5 -5
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/internal/cli-ax.d.ts +2 -0
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +20 -0
- package/dist/internal/cli-slack.d.ts +2 -0
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +11 -2
- package/dist/internal/cursor-event-relay.d.ts +64 -12
- package/dist/internal/cursor-event-relay.d.ts.map +1 -1
- package/dist/internal/cursor-event-relay.js +138 -26
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +11 -2
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -0
- package/dist/internal/handleAgentServeTrigger.d.ts +33 -6
- package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
- package/dist/internal/handleAgentServeTrigger.js +97 -19
- package/dist/internal/init-interview.d.ts +67 -0
- package/dist/internal/init-interview.d.ts.map +1 -0
- package/dist/internal/init-interview.js +300 -0
- package/dist/internal/init-project.d.ts +4 -0
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +40 -16
- package/dist/internal/mcp-endpoint.d.ts +7 -0
- package/dist/internal/mcp-endpoint.d.ts.map +1 -1
- package/dist/internal/mcp-endpoint.js +7 -0
- package/dist/internal/mcp-oauth.d.ts +0 -4
- package/dist/internal/mcp-oauth.d.ts.map +1 -1
- package/dist/internal/mcp-oauth.js +0 -4
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +160 -58
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +20 -21
- package/dist/internal/session-links.d.ts +14 -0
- package/dist/internal/session-links.d.ts.map +1 -0
- package/dist/internal/session-links.js +69 -0
- package/dist/internal/sessions-client.d.ts.map +1 -1
- package/dist/internal/sessions-client.js +1 -0
- package/dist/playground/assets/index-B4rcOgeP.css +1 -0
- package/dist/playground/assets/{index-0oqXUkrR.js → index-DXcY42Jv.js} +42 -42
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +19 -12
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +15 -0
- package/docs/example-agents/fsd.md +3 -0
- package/docs/example-agents/security-reviewer.md +3 -0
- package/docs/guides/convert-automation.md +176 -0
- package/docs/guides/github.md +6 -2
- package/docs/reference/cli.md +34 -10
- package/docs/scaffolding-agents.md +3 -0
- package/docs/templates/agentic-owners.md +97 -0
- package/docs/templates/demo.md +84 -0
- package/docs/templates/pr-autofixer.md +136 -0
- package/docs/templates/security-reviewer.md +89 -0
- package/package.json +9 -1
- package/skills/github/SKILL.md +6 -6
- package/src/bin/agent-serve.ts +13 -6
- package/src/channels/github/github-channel.ts +113 -20
- package/src/channels/github/types.ts +33 -0
- package/src/channels/origin/cursor-account.ts +64 -0
- package/src/channels/origin/events.ts +41 -0
- package/src/channels/origin/index.ts +29 -0
- package/src/channels/origin/origin-channel.ts +784 -0
- package/src/channels/origin/origin-webhook.ts +202 -0
- package/src/channels/origin/types.ts +186 -0
- package/src/channels/slack/doctor.ts +218 -5
- package/src/index.ts +3 -1
- package/src/internal/cli-ax.ts +23 -0
- package/src/internal/cli-slack.ts +11 -1
- package/src/internal/cursor-event-relay.ts +201 -32
- package/src/internal/discovery.ts +15 -5
- package/src/internal/distribution.ts +1 -0
- package/src/internal/handleAgentServeTrigger.ts +129 -19
- package/src/internal/init-interview.ts +384 -0
- package/src/internal/init-project.ts +70 -15
- package/src/internal/mcp-endpoint.ts +7 -0
- package/src/internal/mcp-oauth.ts +0 -4
- package/src/internal/server.ts +190 -60
- package/src/internal/session-engine.ts +5 -21
- package/src/internal/session-links.ts +88 -0
- package/src/internal/sessions-client.ts +1 -0
- package/src/types.ts +19 -12
- package/templates/agentic-owners/README.md +73 -0
- package/templates/agentic-owners/agent/agent.ts +15 -0
- package/templates/agentic-owners/agent/channels/github.ts +85 -0
- package/templates/agentic-owners/agent/instructions.md +34 -0
- package/templates/agentic-owners/agent/lib/config.ts +13 -0
- package/templates/agentic-owners/agent/lib/github.ts +241 -0
- package/templates/agentic-owners/agent/lib/owners/README.md +50 -0
- package/templates/agentic-owners/agent/lib/owners/constants.ts +22 -0
- package/templates/agentic-owners/agent/lib/owners/decision.ts +485 -0
- package/templates/agentic-owners/agent/lib/owners/handles.ts +54 -0
- package/templates/agentic-owners/agent/lib/owners/match.ts +177 -0
- package/templates/agentic-owners/agent/lib/owners/matching.ts +95 -0
- package/templates/agentic-owners/agent/lib/owners/parse.ts +589 -0
- package/templates/agentic-owners/agent/lib/owners/policyMode.ts +65 -0
- package/templates/agentic-owners/agent/lib/owners/prompt.ts +66 -0
- package/templates/agentic-owners/agent/lib/owners/prompts/base-review.md +105 -0
- package/templates/agentic-owners/agent/lib/owners/types.ts +45 -0
- package/templates/agentic-owners/agent/lib/review.ts +777 -0
- package/templates/agentic-owners/agent/tools/record_review.ts +69 -0
- package/templates/agentic-owners/evals/evals.config.ts +5 -0
- package/templates/agentic-owners/evals/owners.eval.ts +116 -0
- package/templates/agentic-owners/package.json +20 -0
- package/templates/agentic-owners/tsconfig.json +12 -0
- package/templates/demo/README.md +33 -0
- package/templates/demo/agent/agent.ts +15 -0
- package/templates/demo/agent/channels/github.ts +50 -0
- package/templates/demo/agent/channels/queue.ts +30 -0
- package/templates/demo/agent/instructions.md +8 -0
- package/templates/demo/agent/lib/collect.ts +78 -0
- package/templates/demo/agent/tools/record_demo.ts +40 -0
- package/templates/demo/evals/demo.eval.ts +33 -0
- package/templates/demo/evals/evals.config.ts +5 -0
- package/templates/demo/package.json +18 -0
- package/templates/demo/tsconfig.json +12 -0
- package/templates/pr-autofixer/README.md +44 -0
- package/templates/pr-autofixer/agent/agent.ts +22 -0
- package/templates/pr-autofixer/agent/channels/drive.ts +40 -0
- package/templates/pr-autofixer/agent/channels/github.ts +167 -0
- package/templates/pr-autofixer/agent/channels/slack.ts +17 -0
- package/templates/pr-autofixer/agent/hooks/bind-agent.ts +19 -0
- package/templates/pr-autofixer/agent/instructions.md +83 -0
- package/templates/pr-autofixer/agent/lib/affinity.ts +33 -0
- package/templates/pr-autofixer/agent/lib/drive-schemas.ts +15 -0
- package/templates/pr-autofixer/agent/lib/drive.ts +79 -0
- package/templates/pr-autofixer/agent/lib/merge-watch.ts +123 -0
- package/templates/pr-autofixer/agent/lib/pr-state.ts +54 -0
- package/templates/pr-autofixer/agent/lib/repos.ts +19 -0
- package/templates/pr-autofixer/agent/lib/start-drive.ts +122 -0
- package/templates/pr-autofixer/agent/lib/webhook-buffer.ts +225 -0
- package/templates/pr-autofixer/agent/lib/webhook-routing.ts +231 -0
- package/templates/pr-autofixer/agent/storage.ts +7 -0
- package/templates/pr-autofixer/agent/tools/drive_pr.ts +22 -0
- package/templates/pr-autofixer/evals/coordinator.eval.ts +16 -0
- package/templates/pr-autofixer/evals/evals.config.ts +5 -0
- package/templates/pr-autofixer/init.json +25 -0
- package/templates/pr-autofixer/package.json +18 -0
- package/templates/pr-autofixer/tsconfig.json +12 -0
- package/templates/security-reviewer/README.md +31 -0
- package/templates/security-reviewer/agent/agent.ts +15 -0
- package/templates/security-reviewer/agent/channels/github.ts +46 -0
- package/templates/security-reviewer/agent/instructions.md +22 -0
- package/templates/security-reviewer/agent/lib/repos.ts +5 -0
- package/templates/security-reviewer/agent/tools/post_findings.ts +72 -0
- package/templates/security-reviewer/evals/evals.config.ts +5 -0
- package/templates/security-reviewer/evals/review.eval.ts +53 -0
- package/templates/security-reviewer/init.json +25 -0
- package/templates/security-reviewer/package.json +18 -0
- package/templates/security-reviewer/tsconfig.json +12 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.BFpWSo6D.js +0 -1
- package/dist/docs/assets/index.md.COeoSkcF.js +0 -5
- package/dist/docs/assets/scaffolding-agents.md.mkc3B_ZW.js +0 -1
- package/dist/playground/assets/index-tHCjJxv4.css +0 -1
|
@@ -76,7 +76,7 @@ export type CursorScmWorkflowRunMeta = CursorScmCiBaseMeta & {
|
|
|
76
76
|
name?: string;
|
|
77
77
|
workflowId?: number;
|
|
78
78
|
};
|
|
79
|
-
/** One event delivered by `GET /v0/scm-events
|
|
79
|
+
/** One event delivered by `GET /v0/scm-events`. */
|
|
80
80
|
export interface CursorScmEvent {
|
|
81
81
|
offset: string;
|
|
82
82
|
provider: string;
|
|
@@ -84,6 +84,8 @@ export interface CursorScmEvent {
|
|
|
84
84
|
deliveryId?: string;
|
|
85
85
|
repo: string;
|
|
86
86
|
receivedAtMs: number;
|
|
87
|
+
/** Verified webhook body when the API stored it. */
|
|
88
|
+
payload?: unknown;
|
|
87
89
|
/** Webhook `action` when present. */
|
|
88
90
|
action?: string;
|
|
89
91
|
/** PR number when the delivery is PR-scoped. */
|
|
@@ -100,6 +102,12 @@ export interface CursorScmEvent {
|
|
|
100
102
|
* Zod-valid `issue_comment` / `pull_request_review_comment` webhook body.
|
|
101
103
|
*/
|
|
102
104
|
comment?: CursorScmCommentMeta;
|
|
105
|
+
/**
|
|
106
|
+
* Origin comment snapshot. Ids are Origin string ids, not GitHub integers.
|
|
107
|
+
*/
|
|
108
|
+
originComment?: CursorScmOriginCommentMeta;
|
|
109
|
+
/** Origin actor (author / pusher / commenter) when present. */
|
|
110
|
+
originActor?: CursorScmOriginActorMeta;
|
|
103
111
|
/** `check_run` snapshot; enough to stub `onCheckRun`. */
|
|
104
112
|
checkRun?: CursorScmCheckRunMeta;
|
|
105
113
|
/** `check_suite` snapshot; enough to stub `onCheckSuite`. */
|
|
@@ -109,11 +117,35 @@ export interface CursorScmEvent {
|
|
|
109
117
|
/** GitHub-side event time from the payload, when present. */
|
|
110
118
|
occurredAtMs?: number;
|
|
111
119
|
}
|
|
120
|
+
export type CursorScmOriginActorMeta = {
|
|
121
|
+
id: string;
|
|
122
|
+
kind?: string;
|
|
123
|
+
};
|
|
124
|
+
export type CursorScmOriginCommentMeta = {
|
|
125
|
+
id: string;
|
|
126
|
+
body?: string;
|
|
127
|
+
author?: CursorScmOriginActorMeta;
|
|
128
|
+
};
|
|
129
|
+
export type CursorScmProvider = "github" | "origin";
|
|
130
|
+
export interface CursorScmSubscription {
|
|
131
|
+
provider: CursorScmProvider;
|
|
132
|
+
repo: string;
|
|
133
|
+
events: readonly string[];
|
|
134
|
+
}
|
|
112
135
|
export interface CursorEventRelayOptions {
|
|
113
136
|
baseUrl: string;
|
|
114
137
|
apiKey: string;
|
|
115
|
-
|
|
116
|
-
|
|
138
|
+
/**
|
|
139
|
+
* GitHub-only shorthand. Ignored when {@link subscriptions} is set.
|
|
140
|
+
* Existing `--cursor-events --repo` hosts keep passing these.
|
|
141
|
+
*/
|
|
142
|
+
repos?: readonly string[];
|
|
143
|
+
events?: readonly string[];
|
|
144
|
+
/**
|
|
145
|
+
* Mixed GitHub + Origin registrations. Provider is part of the
|
|
146
|
+
* subscription key: mirrored `owner/name` slugs must not collide.
|
|
147
|
+
*/
|
|
148
|
+
subscriptions?: readonly CursorScmSubscription[];
|
|
117
149
|
stateDir: string;
|
|
118
150
|
/**
|
|
119
151
|
* Called for each matching event; failures retry a bounded number of
|
|
@@ -143,6 +175,8 @@ export declare function formatCursorScmDispatchOutcome(target: {
|
|
|
143
175
|
status: number;
|
|
144
176
|
body: unknown;
|
|
145
177
|
}): string;
|
|
178
|
+
/** Stored webhook body, or a metadata stub for older stream entries. */
|
|
179
|
+
export declare function scmEventToGitHubPayload(event: CursorScmEvent): unknown;
|
|
146
180
|
/**
|
|
147
181
|
* Minimal GitHub webhook body from an SCM-events metadata envelope.
|
|
148
182
|
* When `pullRequest` has title + head/base refs+shas, emits a Zod-valid
|
|
@@ -164,25 +198,43 @@ export declare function scmMetadataToGitHubPayload(event: {
|
|
|
164
198
|
workflowRun?: CursorScmWorkflowRunMeta;
|
|
165
199
|
}): Record<string, unknown>;
|
|
166
200
|
/**
|
|
167
|
-
*
|
|
201
|
+
* Origin webhook envelope from an SCM-events metadata record. One parser
|
|
202
|
+
* handles both live Origin deliveries and this stub: `{ deliveryId, event }`.
|
|
203
|
+
*/
|
|
204
|
+
export declare function scmMetadataToOriginPayload(event: {
|
|
205
|
+
repo: string;
|
|
206
|
+
eventName: string;
|
|
207
|
+
deliveryId?: string;
|
|
208
|
+
action?: string;
|
|
209
|
+
prNumber?: number;
|
|
210
|
+
prUrl?: string;
|
|
211
|
+
pullRequest?: CursorScmPullRequestMeta;
|
|
212
|
+
originComment?: CursorScmOriginCommentMeta;
|
|
213
|
+
originActor?: CursorScmOriginActorMeta;
|
|
214
|
+
occurredAtMs?: number;
|
|
215
|
+
}): Record<string, unknown>;
|
|
216
|
+
export declare function resolveCursorScmSubscriptions(options: Pick<CursorEventRelayOptions, "repos" | "events" | "subscriptions">): CursorScmSubscription[];
|
|
217
|
+
/**
|
|
218
|
+
* SCM-events relay: a thin {@link CursorRelayCore} adapter. Consumers
|
|
168
219
|
* keep the same `new CursorEventRelay(options).start()/.stop()` surface.
|
|
169
220
|
*/
|
|
170
221
|
export declare class CursorEventRelay {
|
|
171
222
|
private readonly options;
|
|
172
223
|
private readonly core;
|
|
224
|
+
private readonly subscriptions;
|
|
173
225
|
/**
|
|
174
|
-
*
|
|
175
|
-
* shared with sibling consumers
|
|
176
|
-
*
|
|
226
|
+
* Confirmed `provider:repo` keys for THIS consumer, with the event kinds
|
|
227
|
+
* requested for each. The stream is shared with sibling consumers, so
|
|
228
|
+
* GitHub and Origin deliveries for the same owner/name must not mix.
|
|
177
229
|
*/
|
|
178
|
-
private
|
|
179
|
-
private readonly
|
|
230
|
+
private subscribedEvents;
|
|
231
|
+
private readonly loggedSkippedKeys;
|
|
180
232
|
constructor(options: CursorEventRelayOptions);
|
|
181
233
|
/**
|
|
182
234
|
* Whether an event from the shared stream belongs to THIS consumer: the
|
|
183
|
-
* repo must be one the server confirmed for us and the event kind
|
|
184
|
-
*
|
|
185
|
-
*
|
|
235
|
+
* provider+repo must be one the server confirmed for us and the event kind
|
|
236
|
+
* one that subscription declared. GitHub and Origin share owner/name slugs
|
|
237
|
+
* on mirrors, so the provider is part of the key.
|
|
186
238
|
*/
|
|
187
239
|
private shouldDispatch;
|
|
188
240
|
start(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-event-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-event-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAGL,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wFAAwF;AACxF,KAAK,mBAAmB,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,YAAY,EAAE,0BAA0B,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAE1D,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,GAAG;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"cursor-event-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-event-relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,11 @@ function readDispatchError(body) {
|
|
|
55
55
|
const error = body.error;
|
|
56
56
|
return typeof error === "string" && error !== "" ? error : undefined;
|
|
57
57
|
}
|
|
58
|
+
/** Stored webhook body, or a metadata stub for older stream entries. */
|
|
59
|
+
export function scmEventToGitHubPayload(event) {
|
|
60
|
+
var _a;
|
|
61
|
+
return (_a = event.payload) !== null && _a !== void 0 ? _a : scmMetadataToGitHubPayload(event);
|
|
62
|
+
}
|
|
58
63
|
/**
|
|
59
64
|
* Minimal GitHub webhook body from an SCM-events metadata envelope.
|
|
60
65
|
* When `pullRequest` has title + head/base refs+shas, emits a Zod-valid
|
|
@@ -238,29 +243,125 @@ function stubGitHubWorkflowRun(meta, pullRequests) {
|
|
|
238
243
|
return object;
|
|
239
244
|
}
|
|
240
245
|
/**
|
|
241
|
-
*
|
|
246
|
+
* Origin webhook envelope from an SCM-events metadata record. One parser
|
|
247
|
+
* handles both live Origin deliveries and this stub: `{ deliveryId, event }`.
|
|
248
|
+
*/
|
|
249
|
+
export function scmMetadataToOriginPayload(event) {
|
|
250
|
+
var _a, _b, _c;
|
|
251
|
+
const slash = event.repo.indexOf("/");
|
|
252
|
+
const owner = slash === -1 ? "" : event.repo.slice(0, slash);
|
|
253
|
+
const name = slash === -1 ? event.repo : event.repo.slice(slash + 1);
|
|
254
|
+
const prMeta = event.pullRequest;
|
|
255
|
+
const prNumber = (_a = prMeta === null || prMeta === void 0 ? void 0 : prMeta.number) !== null && _a !== void 0 ? _a : event.prNumber;
|
|
256
|
+
const prUrl = (_c = (_b = prMeta === null || prMeta === void 0 ? void 0 : prMeta.url) !== null && _b !== void 0 ? _b : event.prUrl) !== null && _c !== void 0 ? _c : (prNumber !== undefined
|
|
257
|
+
? `https://cursor.com/codebase/${owner}/${name}/pull/${prNumber}`
|
|
258
|
+
: undefined);
|
|
259
|
+
const payload = {
|
|
260
|
+
repository: {
|
|
261
|
+
name,
|
|
262
|
+
owner: { slug: owner },
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
if (prNumber !== undefined) {
|
|
266
|
+
const pullRequest = {
|
|
267
|
+
number: prNumber,
|
|
268
|
+
url: prUrl,
|
|
269
|
+
};
|
|
270
|
+
if ((prMeta === null || prMeta === void 0 ? void 0 : prMeta.title) !== undefined)
|
|
271
|
+
pullRequest.title = prMeta.title;
|
|
272
|
+
if ((prMeta === null || prMeta === void 0 ? void 0 : prMeta.body) !== undefined)
|
|
273
|
+
pullRequest.body = prMeta.body;
|
|
274
|
+
if ((prMeta === null || prMeta === void 0 ? void 0 : prMeta.draft) !== undefined)
|
|
275
|
+
pullRequest.draft = prMeta.draft;
|
|
276
|
+
if ((prMeta === null || prMeta === void 0 ? void 0 : prMeta.merged) !== undefined)
|
|
277
|
+
pullRequest.merged = prMeta.merged;
|
|
278
|
+
if ((prMeta === null || prMeta === void 0 ? void 0 : prMeta.headRef) !== undefined || (prMeta === null || prMeta === void 0 ? void 0 : prMeta.headSha) !== undefined) {
|
|
279
|
+
pullRequest.head = {
|
|
280
|
+
ref: prMeta.headRef,
|
|
281
|
+
sha: prMeta.headSha,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
if ((prMeta === null || prMeta === void 0 ? void 0 : prMeta.baseRef) !== undefined || (prMeta === null || prMeta === void 0 ? void 0 : prMeta.baseSha) !== undefined) {
|
|
285
|
+
pullRequest.base = {
|
|
286
|
+
ref: prMeta.baseRef,
|
|
287
|
+
sha: prMeta.baseSha,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
if ((prMeta === null || prMeta === void 0 ? void 0 : prMeta.authorLogin) !== undefined) {
|
|
291
|
+
pullRequest.author = { id: prMeta.authorLogin };
|
|
292
|
+
}
|
|
293
|
+
payload.pullRequest = pullRequest;
|
|
294
|
+
}
|
|
295
|
+
const commentMeta = event.originComment;
|
|
296
|
+
if (commentMeta !== undefined) {
|
|
297
|
+
const comment = { id: commentMeta.id };
|
|
298
|
+
if (commentMeta.body !== undefined)
|
|
299
|
+
comment.body = commentMeta.body;
|
|
300
|
+
if (commentMeta.author !== undefined)
|
|
301
|
+
comment.author = commentMeta.author;
|
|
302
|
+
payload.comment = comment;
|
|
303
|
+
}
|
|
304
|
+
if (event.originActor !== undefined) {
|
|
305
|
+
payload.actor = event.originActor;
|
|
306
|
+
}
|
|
307
|
+
return {
|
|
308
|
+
deliveryId: event.deliveryId,
|
|
309
|
+
event: Object.assign(Object.assign({ type: event.eventName }, (event.occurredAtMs === undefined
|
|
310
|
+
? {}
|
|
311
|
+
: { eventTime: new Date(event.occurredAtMs).toISOString() })), { payload }),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function subscriptionKey(provider, repo) {
|
|
315
|
+
return `${provider}:${repo.toLowerCase()}`;
|
|
316
|
+
}
|
|
317
|
+
function subscriptionLabel(provider, repo) {
|
|
318
|
+
return provider === "github" ? repo : `${provider}:${repo}`;
|
|
319
|
+
}
|
|
320
|
+
export function resolveCursorScmSubscriptions(options) {
|
|
321
|
+
var _a, _b;
|
|
322
|
+
if (options.subscriptions !== undefined) {
|
|
323
|
+
return options.subscriptions.map((subscription) => ({
|
|
324
|
+
provider: subscription.provider,
|
|
325
|
+
repo: subscription.repo.trim().toLowerCase(),
|
|
326
|
+
events: [...subscription.events],
|
|
327
|
+
}));
|
|
328
|
+
}
|
|
329
|
+
const events = [...((_a = options.events) !== null && _a !== void 0 ? _a : [])];
|
|
330
|
+
return ((_b = options.repos) !== null && _b !== void 0 ? _b : []).map((repo) => ({
|
|
331
|
+
provider: "github",
|
|
332
|
+
repo: repo.trim().toLowerCase(),
|
|
333
|
+
events,
|
|
334
|
+
}));
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* SCM-events relay: a thin {@link CursorRelayCore} adapter. Consumers
|
|
242
338
|
* keep the same `new CursorEventRelay(options).start()/.stop()` surface.
|
|
243
339
|
*/
|
|
244
340
|
export class CursorEventRelay {
|
|
245
341
|
constructor(options) {
|
|
246
342
|
this.options = options;
|
|
247
343
|
/**
|
|
248
|
-
*
|
|
249
|
-
* shared with sibling consumers
|
|
250
|
-
*
|
|
344
|
+
* Confirmed `provider:repo` keys for THIS consumer, with the event kinds
|
|
345
|
+
* requested for each. The stream is shared with sibling consumers, so
|
|
346
|
+
* GitHub and Origin deliveries for the same owner/name must not mix.
|
|
251
347
|
*/
|
|
252
|
-
this.
|
|
253
|
-
this.
|
|
348
|
+
this.subscribedEvents = new Map();
|
|
349
|
+
this.loggedSkippedKeys = new Set();
|
|
350
|
+
this.subscriptions = resolveCursorScmSubscriptions(options);
|
|
351
|
+
const requestedEvents = new Map(this.subscriptions.map((subscription) => [
|
|
352
|
+
subscriptionKey(subscription.provider, subscription.repo),
|
|
353
|
+
new Set(subscription.events),
|
|
354
|
+
]));
|
|
254
355
|
const adapter = {
|
|
255
356
|
logPrefix: "cursor-events",
|
|
256
357
|
subscribePath: "/v0/scm-events/subscriptions",
|
|
257
358
|
pollPath: "/v0/scm-events",
|
|
258
359
|
buildRegistrationBody: (consumerId) => ({
|
|
259
360
|
consumerId,
|
|
260
|
-
subscriptions: this.
|
|
261
|
-
provider:
|
|
262
|
-
repo,
|
|
263
|
-
events: [...
|
|
361
|
+
subscriptions: this.subscriptions.map((subscription) => ({
|
|
362
|
+
provider: subscription.provider,
|
|
363
|
+
repo: subscription.repo,
|
|
364
|
+
events: [...subscription.events],
|
|
264
365
|
})),
|
|
265
366
|
}),
|
|
266
367
|
// Empty subscriptions drop this consumer's registration on clean stop
|
|
@@ -270,18 +371,27 @@ export class CursorEventRelay {
|
|
|
270
371
|
subscriptions: [],
|
|
271
372
|
}),
|
|
272
373
|
applyRegistrationResponse: (json) => {
|
|
273
|
-
var _a, _b;
|
|
374
|
+
var _a, _b, _c;
|
|
274
375
|
const result = json;
|
|
275
376
|
const statuses = (_a = result.repos) !== null && _a !== void 0 ? _a : [];
|
|
276
|
-
this.
|
|
277
|
-
.filter((status) => status.isSubscribed)
|
|
278
|
-
.map((status) => status.repo));
|
|
377
|
+
this.subscribedEvents = new Map();
|
|
279
378
|
const lines = [];
|
|
280
|
-
|
|
281
|
-
|
|
379
|
+
const confirmed = [];
|
|
380
|
+
for (const status of statuses) {
|
|
381
|
+
const provider = status.provider || "github";
|
|
382
|
+
const key = subscriptionKey(provider, status.repo);
|
|
383
|
+
if (!status.isSubscribed) {
|
|
384
|
+
lines.push(`not subscribed to ${subscriptionLabel(provider, status.repo)}: ${(_b = status.detail) !== null && _b !== void 0 ? _b : "unknown reason"}`);
|
|
385
|
+
continue;
|
|
386
|
+
}
|
|
387
|
+
this.subscribedEvents.set(key, (_c = requestedEvents.get(key)) !== null && _c !== void 0 ? _c : new Set());
|
|
388
|
+
confirmed.push(subscriptionLabel(provider, status.repo));
|
|
282
389
|
}
|
|
283
|
-
if (
|
|
284
|
-
|
|
390
|
+
if (confirmed.length > 0) {
|
|
391
|
+
const eventKinds = [
|
|
392
|
+
...new Set(this.subscriptions.flatMap((s) => [...s.events])),
|
|
393
|
+
];
|
|
394
|
+
lines.push(`subscribed to ${confirmed.join(", ")} for events: ${eventKinds.join(", ")}`);
|
|
285
395
|
}
|
|
286
396
|
return lines;
|
|
287
397
|
},
|
|
@@ -296,19 +406,21 @@ export class CursorEventRelay {
|
|
|
296
406
|
}
|
|
297
407
|
/**
|
|
298
408
|
* Whether an event from the shared stream belongs to THIS consumer: the
|
|
299
|
-
* repo must be one the server confirmed for us and the event kind
|
|
300
|
-
*
|
|
301
|
-
*
|
|
409
|
+
* provider+repo must be one the server confirmed for us and the event kind
|
|
410
|
+
* one that subscription declared. GitHub and Origin share owner/name slugs
|
|
411
|
+
* on mirrors, so the provider is part of the key.
|
|
302
412
|
*/
|
|
303
413
|
shouldDispatch(event) {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
414
|
+
const key = subscriptionKey(event.provider || "github", event.repo);
|
|
415
|
+
const events = this.subscribedEvents.get(key);
|
|
416
|
+
if (events === undefined) {
|
|
417
|
+
if (!this.loggedSkippedKeys.has(key)) {
|
|
418
|
+
this.loggedSkippedKeys.add(key);
|
|
419
|
+
this.options.logger(`[agent-sdk] cursor-events: skipping events for ${subscriptionLabel(event.provider || "github", event.repo)}: not in this host's subscription (another consumer of this API key likely subscribed it)`);
|
|
308
420
|
}
|
|
309
421
|
return false;
|
|
310
422
|
}
|
|
311
|
-
return
|
|
423
|
+
return events.has(event.eventName);
|
|
312
424
|
}
|
|
313
425
|
start() {
|
|
314
426
|
this.core.start();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAUrB,KAAK,UAAU,EAuBhB,MAAM,aAAa,CAAC;AA2BrB,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3E;AAmBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CA6BzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,iFAAiF;AACjF,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAIrC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CAmEvB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AAmuBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB3E;AAgyBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CA2JnE"}
|
|
@@ -27,11 +27,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
27
27
|
};
|
|
28
28
|
import { readdir, readFile, stat } from "node:fs/promises";
|
|
29
29
|
import { basename, extname, isAbsolute, join, relative, resolve, } from "node:path";
|
|
30
|
+
import { pathToFileURL } from "node:url";
|
|
30
31
|
import { resolveABMaxPlaygroundSessions } from "../ab.js";
|
|
31
32
|
import { resolveArtifactsMax } from "../artifacts.js";
|
|
32
33
|
import { httpChannel } from "../channels.js";
|
|
33
34
|
import { cursorAccountServersHasMixedWildcard, DEFAULT_MODEL, isInlineStdioConnection, MAX_RUNNING_TURNS_LIMIT, normalizeCursorAccountServers, toPublicCloudInfo, } from "../types.js";
|
|
34
|
-
import {
|
|
35
|
+
import { registerAuthoredModuleLoaders } from "./authored-loaders.js";
|
|
35
36
|
import { normalizePositiveInt } from "./bounded-int.js";
|
|
36
37
|
import { getDefinitionKind } from "./brand.js";
|
|
37
38
|
import { artifactBuiltinTool, builtinTools, TAG_ARTIFACT_TOOL_NAME, } from "./builtin-tools/index.js";
|
|
@@ -45,6 +46,11 @@ import { withIdentityPreamble } from "./workspace.js";
|
|
|
45
46
|
const MODULE_EXTENSIONS = new Set([".ts", ".mts", ".js", ".mjs"]);
|
|
46
47
|
const NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
|
|
47
48
|
const SKILL_DESCRIPTION_FALLBACK = (name) => `Instructions for the ${name} skill.`;
|
|
49
|
+
function defaultImportModule(absolutePath) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
return (yield import(pathToFileURL(absolutePath).href));
|
|
52
|
+
});
|
|
53
|
+
}
|
|
48
54
|
/**
|
|
49
55
|
* True when `dir` looks like an agent project root: it has a nested `agent/`
|
|
50
56
|
* directory, or flat-layout markers (`agent.ts` / `instructions.md`) directly
|
|
@@ -193,7 +199,7 @@ export function loadAgentProject(dir_1) {
|
|
|
193
199
|
const ctx = {
|
|
194
200
|
rootDir,
|
|
195
201
|
diagnostics,
|
|
196
|
-
importModule: (_a = options.importModule) !== null && _a !== void 0 ? _a :
|
|
202
|
+
importModule: (_a = options.importModule) !== null && _a !== void 0 ? _a : defaultImportModule,
|
|
197
203
|
};
|
|
198
204
|
const name = (_b = (yield readPackageName(rootDir))) !== null && _b !== void 0 ? _b : basename(rootDir);
|
|
199
205
|
const agent = yield loadAgent(ctx, agentDir, {
|
|
@@ -1638,6 +1644,9 @@ export function projectInfo(project) {
|
|
|
1638
1644
|
if ((meta === null || meta === void 0 ? void 0 : meta.githubWebhookEvents) !== undefined) {
|
|
1639
1645
|
info.githubWebhookEvents = meta.githubWebhookEvents;
|
|
1640
1646
|
}
|
|
1647
|
+
if ((meta === null || meta === void 0 ? void 0 : meta.originWebhookEvents) !== undefined) {
|
|
1648
|
+
info.originWebhookEvents = meta.originWebhookEvents;
|
|
1649
|
+
}
|
|
1641
1650
|
if ((meta === null || meta === void 0 ? void 0 : meta.slackChannelPosts) !== undefined) {
|
|
1642
1651
|
info.slackChannelPosts = meta.slackChannelPosts;
|
|
1643
1652
|
}
|
|
@@ -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,CA2BzC,CAAC"}
|
|
@@ -80,6 +80,7 @@ export const AUTHORING_ENTRY_FILES = [
|
|
|
80
80
|
["channels", "channels.js"],
|
|
81
81
|
["channels/slack", "channels/slack/index.js"],
|
|
82
82
|
["channels/github", "channels/github/index.js"],
|
|
83
|
+
["channels/origin", "channels/origin/index.js"],
|
|
83
84
|
["skills", "skills.js"],
|
|
84
85
|
["schedules", "schedules.js"],
|
|
85
86
|
["reminders", "reminders.js"],
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Unified entry for dispatching agent-serve triggers from an external ingress
|
|
3
|
-
* (e.g. the Cursor backend GitHub webhook).
|
|
4
|
-
* `handleAutomationTrigger
|
|
3
|
+
* (e.g. the Cursor backend GitHub webhook or Origin cursor-internal tap).
|
|
4
|
+
* Mirrors Automations' `handleAutomationTrigger`.
|
|
5
5
|
*
|
|
6
6
|
* Callers must authenticate the delivery before invoking this (the backend
|
|
7
|
-
* verifies GitHub HMAC at `/github_webhook`
|
|
8
|
-
*
|
|
7
|
+
* verifies GitHub HMAC at `/github_webhook` and Origin v1ed at the
|
|
8
|
+
* cursor-internal app). This fan-out does not re-check signatures — same
|
|
9
|
+
* trust model as Bugbot after `verifyGithubRequest`.
|
|
9
10
|
*
|
|
10
11
|
* Each agent's `onPullRequest` / `onComment` / … hooks decide whether to run.
|
|
11
12
|
*/
|
|
12
13
|
import type { GitHubChannelOptions } from "../channels/github/types.js";
|
|
14
|
+
import type { OriginChannelOptions } from "../channels/origin/types.js";
|
|
13
15
|
import type { ChannelHandlerArgs } from "../types.js";
|
|
14
16
|
export interface AgentServeGitHubTriggerTarget {
|
|
15
17
|
/** Agent mount slug (empty string in single-agent mode). */
|
|
@@ -27,7 +29,18 @@ export interface AgentServeGitHubTriggerEvent {
|
|
|
27
29
|
deliveryId?: string;
|
|
28
30
|
targets: AgentServeGitHubTriggerTarget[];
|
|
29
31
|
}
|
|
30
|
-
export
|
|
32
|
+
export interface AgentServeOriginTriggerTarget {
|
|
33
|
+
slug: string;
|
|
34
|
+
options: OriginChannelOptions;
|
|
35
|
+
args: ChannelHandlerArgs;
|
|
36
|
+
}
|
|
37
|
+
export interface AgentServeOriginTriggerEvent {
|
|
38
|
+
type: "origin";
|
|
39
|
+
/** Origin envelope JSON (signature already verified by the caller). */
|
|
40
|
+
bodyText: string;
|
|
41
|
+
targets: AgentServeOriginTriggerTarget[];
|
|
42
|
+
}
|
|
43
|
+
export type AgentServeTriggerEvent = AgentServeGitHubTriggerEvent | AgentServeOriginTriggerEvent;
|
|
31
44
|
export interface AgentServeTriggerTargetResult {
|
|
32
45
|
slug: string;
|
|
33
46
|
status: number;
|
|
@@ -53,7 +66,21 @@ export declare function collectGitHubTriggerTargets(input: {
|
|
|
53
66
|
}>;
|
|
54
67
|
}): AgentServeGitHubTriggerTarget[];
|
|
55
68
|
/**
|
|
56
|
-
*
|
|
69
|
+
* Build fan-out targets from mounted agent projects that export an origin
|
|
70
|
+
* channel created via {@link originChannel}.
|
|
71
|
+
*/
|
|
72
|
+
export declare function collectOriginTriggerTargets(input: {
|
|
73
|
+
mounts: Array<{
|
|
74
|
+
slug: string;
|
|
75
|
+
channels: Array<{
|
|
76
|
+
id: string;
|
|
77
|
+
definition: object;
|
|
78
|
+
}>;
|
|
79
|
+
buildHandlerArgs: (channelId: string) => ChannelHandlerArgs;
|
|
80
|
+
}>;
|
|
81
|
+
}): AgentServeOriginTriggerTarget[];
|
|
82
|
+
/**
|
|
83
|
+
* Dispatch an agent-serve trigger. GitHub and Origin webhook fan-out.
|
|
57
84
|
*/
|
|
58
85
|
export declare function handleAgentServeTrigger(event: AgentServeTriggerEvent): Promise<AgentServeTriggerResult>;
|
|
59
86
|
//# sourceMappingURL=handleAgentServeTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleAgentServeTrigger.d.ts","sourceRoot":"","sources":["../../src/internal/handleAgentServeTrigger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"handleAgentServeTrigger.d.ts","sourceRoot":"","sources":["../../src/internal/handleAgentServeTrigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAMxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,6BAA6B;IAC5C,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,oBAAoB,CAAC;IAC9B,uEAAuE;IACvE,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,QAAQ,CAAC;IACf,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,6BAA6B,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,QAAQ,CAAC;IACf,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,6BAA6B,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,4BAA4B,CAAC;AAEjC,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,6BAA6B,EAAE,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,kBAAkB,CAAC;KAC7D,CAAC,CAAC;CACJ,GAAG,6BAA6B,EAAE,CAgBlC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,kBAAkB,CAAC;KAC7D,CAAC,CAAC;CACJ,GAAG,6BAA6B,EAAE,CAgBlC;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAalC"}
|