@cursor/july 0.1.74 → 0.1.76
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/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.BETd-WqU.js → app.b8bhB2SV.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DGZeXVqn.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.wEaGEmV9.js → VPLocalSearchBox.lLSeIyWw.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DNDicFOP.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/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 +3 -3
- 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 +3 -3
- 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/authored-alias-hooks.d.ts +12 -0
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +60 -8
- package/dist/internal/authored-loaders.d.ts +5 -3
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +13 -4
- 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/deployment-scm-event-stream.js +4 -4
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -0
- package/dist/internal/review-comments.d.ts +62 -0
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +199 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +114 -5
- package/dist/playground/assets/{index-D_8I9TM0.js → index-BWqjJcRo.js} +1 -1
- package/dist/playground/assets/index-Bfwz2yLN.css +1 -0
- package/dist/playground/index.html +2 -2
- package/docs/reference/channels.md +15 -0
- package/package.json +7 -1
- 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/authored-alias-hooks.ts +75 -7
- package/src/internal/authored-loaders.ts +15 -4
- package/src/internal/cursor-deployment-relay.ts +274 -0
- package/src/internal/deployment-scm-event-stream.ts +4 -4
- package/src/internal/distribution.ts +1 -0
- package/src/internal/review-comments.ts +286 -0
- package/src/internal/server.ts +149 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.DM5INS71.js +0 -1
- package/dist/playground/assets/index-M3nSMc6_.css +0 -1
|
@@ -14,17 +14,27 @@
|
|
|
14
14
|
* project's own node_modules; `fallbackAliases` only apply when that
|
|
15
15
|
* fails (npx/global installs, projects without a local dependency), so a
|
|
16
16
|
* real install in the user's project keeps precedence.
|
|
17
|
+
*
|
|
18
|
+
* A third case is first-party factory agents that relative-import this
|
|
19
|
+
* package's `src/` from a monorepo checkout. Hosted engines `npm install`
|
|
20
|
+
* only the agent directory, so files under `packages/agent-serve/src` have
|
|
21
|
+
* no `node_modules`. Bare specifiers from that tree (`zod`, octokit, …)
|
|
22
|
+
* retry against the running `@cursor/july` package.json, which does.
|
|
17
23
|
*/
|
|
18
24
|
// Null-prototype copies so specifiers like "constructor" or "__proto__"
|
|
19
25
|
// can never resolve to inherited Object.prototype members.
|
|
20
26
|
let directAliases = toNullProtoMap({});
|
|
21
27
|
let fallbackAliases = toNullProtoMap({});
|
|
28
|
+
let sourceTreeFallbackParentURL;
|
|
22
29
|
function toNullProtoMap(source) {
|
|
23
30
|
return Object.assign(Object.create(null), source);
|
|
24
31
|
}
|
|
25
32
|
export function initialize(data) {
|
|
26
33
|
directAliases = toNullProtoMap(data.directAliases);
|
|
27
34
|
fallbackAliases = toNullProtoMap(data.fallbackAliases);
|
|
35
|
+
const parent = data.sourceTreeFallbackParentURL;
|
|
36
|
+
sourceTreeFallbackParentURL =
|
|
37
|
+
typeof parent === "string" && parent !== "" ? parent : undefined;
|
|
28
38
|
}
|
|
29
39
|
export function resolve(specifier, context, nextResolve) {
|
|
30
40
|
const direct = directAliases[specifier];
|
|
@@ -32,12 +42,54 @@ export function resolve(specifier, context, nextResolve) {
|
|
|
32
42
|
return { url: direct, shortCircuit: true };
|
|
33
43
|
}
|
|
34
44
|
const fallback = fallbackAliases[specifier];
|
|
35
|
-
if (fallback
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
if (fallback !== undefined) {
|
|
46
|
+
return Promise.resolve()
|
|
47
|
+
.then(() => nextResolve(specifier, context))
|
|
48
|
+
.catch(() => ({ url: fallback, shortCircuit: true }));
|
|
49
|
+
}
|
|
50
|
+
if (sourceTreeFallbackParentURL !== undefined &&
|
|
51
|
+
isBarePackageSpecifier(specifier) &&
|
|
52
|
+
isMonorepoAgentServeSource(parentURLOf(context))) {
|
|
53
|
+
const retryParent = sourceTreeFallbackParentURL;
|
|
54
|
+
return Promise.resolve()
|
|
55
|
+
.then(() => nextResolve(specifier, context))
|
|
56
|
+
.catch(() => nextResolve(specifier, withParentURL(context, retryParent)));
|
|
57
|
+
}
|
|
58
|
+
// Not ours: pass through with no promise/try-catch overhead. This hook
|
|
59
|
+
// runs on every module resolution in the process.
|
|
60
|
+
return nextResolve(specifier, context);
|
|
61
|
+
}
|
|
62
|
+
function parentURLOf(context) {
|
|
63
|
+
if (context === null || typeof context !== "object") {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const parentURL = context.parentURL;
|
|
67
|
+
return typeof parentURL === "string" ? parentURL : undefined;
|
|
68
|
+
}
|
|
69
|
+
function withParentURL(context, parentURL) {
|
|
70
|
+
if (context !== null && typeof context === "object") {
|
|
71
|
+
return Object.assign(Object.assign({}, context), { parentURL });
|
|
72
|
+
}
|
|
73
|
+
return { parentURL };
|
|
74
|
+
}
|
|
75
|
+
function isBarePackageSpecifier(specifier) {
|
|
76
|
+
if (specifier.length === 0) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const first = specifier[0];
|
|
80
|
+
if (first === "." || first === "/" || first === "\\") {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return !(specifier.startsWith("node:") ||
|
|
84
|
+
specifier.startsWith("file:") ||
|
|
85
|
+
specifier.startsWith("data:") ||
|
|
86
|
+
specifier.startsWith("http:") ||
|
|
87
|
+
specifier.startsWith("https:"));
|
|
88
|
+
}
|
|
89
|
+
function isMonorepoAgentServeSource(parentURL) {
|
|
90
|
+
if (parentURL === undefined) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return (parentURL.includes("/packages/agent-serve/") &&
|
|
94
|
+
!parentURL.includes("/node_modules/"));
|
|
43
95
|
}
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
* imports of the framework resolve against the running package: the
|
|
12
12
|
* historical `@anysphere/agent-serve[/x]` name always, and
|
|
13
13
|
* `@cursor/july[/x]` / `@cursor/agentkit[/x]` as fallbacks when the user's
|
|
14
|
-
* project has no local install (npx / global).
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* project has no local install (npx / global). The same hooks retry bare
|
|
15
|
+
* npm specifiers from monorepo `packages/agent-serve/` source against this
|
|
16
|
+
* package (hosted factory engines install only the agent directory).
|
|
17
|
+
* Source runs (tsx from the monorepo) skip both — the host loader and
|
|
18
|
+
* tsconfig paths already cover them.
|
|
17
19
|
*/
|
|
18
20
|
/**
|
|
19
21
|
* ESM specifier for an authored agent/eval file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-loaders.d.ts","sourceRoot":"","sources":["../../src/internal/authored-loaders.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"authored-loaders.d.ts","sourceRoot":"","sources":["../../src/internal/authored-loaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyBH;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAclC;AAID;;;;;GAKG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CAS7D"}
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
* imports of the framework resolve against the running package: the
|
|
12
12
|
* historical `@anysphere/agent-serve[/x]` name always, and
|
|
13
13
|
* `@cursor/july[/x]` / `@cursor/agentkit[/x]` as fallbacks when the user's
|
|
14
|
-
* project has no local install (npx / global).
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* project has no local install (npx / global). The same hooks retry bare
|
|
15
|
+
* npm specifiers from monorepo `packages/agent-serve/` source against this
|
|
16
|
+
* package (hosted factory engines install only the agent directory).
|
|
17
|
+
* Source runs (tsx from the monorepo) skip both — the host loader and
|
|
18
|
+
* tsconfig paths already cover them.
|
|
17
19
|
*/
|
|
18
20
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
19
21
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -160,7 +162,14 @@ function registerFrameworkAliases() {
|
|
|
160
162
|
fallbackAliases[`${AGENTKIT_PACKAGE_NAME}${suffix}`] = target;
|
|
161
163
|
}
|
|
162
164
|
const hooksUrl = new URL("./authored-alias-hooks.js", import.meta.url);
|
|
163
|
-
const data = {
|
|
165
|
+
const data = {
|
|
166
|
+
directAliases,
|
|
167
|
+
fallbackAliases,
|
|
168
|
+
// Hosted factory agents relative-import this package's src/ from a
|
|
169
|
+
// monorepo checkout while npm install ran only in the agent directory.
|
|
170
|
+
// Bare specifiers from that tree retry against this package.json.
|
|
171
|
+
sourceTreeFallbackParentURL: pathToFileURL(join(packageRootDir(), "package.json")).href,
|
|
172
|
+
};
|
|
164
173
|
// `node:module`'s register() is synchronous: it blocks until the hooks
|
|
165
174
|
// thread has initialized, so the aliases are active when it returns.
|
|
166
175
|
registerModuleHooks(hooksUrl, { data });
|
|
@@ -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
|
+
}
|
|
@@ -42,10 +42,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
42
42
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
43
|
});
|
|
44
44
|
};
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
45
|
+
// Hosted engines install the consuming agent's directory alone and load this
|
|
46
|
+
// file as raw TypeScript source. Relative and `node:` imports resolve here;
|
|
47
|
+
// this package's own npm dependencies retry against the running `@cursor/july`
|
|
48
|
+
// install (authored-alias-hooks). Do not add deps that package does not have.
|
|
49
49
|
import { createHmac } from "node:crypto";
|
|
50
50
|
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
51
51
|
import { join } from "node:path";
|
|
@@ -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"],
|
|
@@ -94,6 +94,38 @@ export type GetReviewCommentsArgs = {
|
|
|
94
94
|
export type ReviewCommentReaderImplementation = {
|
|
95
95
|
getReviewComments: (args: GetReviewCommentsArgs) => Promise<ExistingReviewComment[]>;
|
|
96
96
|
};
|
|
97
|
+
export type ResolveReviewThreadsArgs = {
|
|
98
|
+
target: ScmReviewTarget;
|
|
99
|
+
/** REST comment ids whose threads should be resolved. */
|
|
100
|
+
commentIds: readonly number[];
|
|
101
|
+
signal?: AbortSignal;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Outcome of resolving review threads for a set of comment ids. Callers
|
|
105
|
+
* treat this as best-effort actuation: a failed resolve must not fail the
|
|
106
|
+
* review that already posted.
|
|
107
|
+
*/
|
|
108
|
+
export type ResolveReviewThreadsResult = {
|
|
109
|
+
requested: number;
|
|
110
|
+
resolved: number;
|
|
111
|
+
alreadyResolved: number;
|
|
112
|
+
notFound: number;
|
|
113
|
+
failed: number;
|
|
114
|
+
detail: string;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Write side of thread resolution, the counterpart of
|
|
118
|
+
* {@link ReviewCommentReaderImplementation}. Bugbot's equivalent is
|
|
119
|
+
* `IGitProvider.resolveReviewThreadForComment` / `resolveThreads`.
|
|
120
|
+
*
|
|
121
|
+
* GitHub only exposes resolve via GraphQL (`resolveReviewThread`). REST
|
|
122
|
+
* has no equivalent. The mutation runs as whatever identity minted the
|
|
123
|
+
* bound GitHub client — for `githubChannel({ cursorAccount })` that is
|
|
124
|
+
* the Cursor installation, the same identity that posted the comments.
|
|
125
|
+
*/
|
|
126
|
+
export type ReviewThreadResolverImplementation = {
|
|
127
|
+
resolveReviewThreadsForComments: (args: ResolveReviewThreadsArgs) => Promise<ResolveReviewThreadsResult>;
|
|
128
|
+
};
|
|
97
129
|
/** Parse a PR URL into the SCM target to read comments from. */
|
|
98
130
|
export declare function resolveScmReviewTarget(prUrl: string): ScmReviewTarget | undefined;
|
|
99
131
|
/**
|
|
@@ -105,11 +137,41 @@ export declare function createReviewCommentReader(args: {
|
|
|
105
137
|
target: ScmReviewTarget;
|
|
106
138
|
github?: HostGitHubClient;
|
|
107
139
|
}): ReviewCommentReaderImplementation | undefined;
|
|
140
|
+
/**
|
|
141
|
+
* Resolver for a resolved target. Returns undefined when the host cannot
|
|
142
|
+
* serve that provider, so callers degrade instead of throwing.
|
|
143
|
+
*/
|
|
144
|
+
export declare function createReviewThreadResolver(args: {
|
|
145
|
+
target: ScmReviewTarget;
|
|
146
|
+
github?: HostGitHubClient;
|
|
147
|
+
}): ReviewThreadResolverImplementation | undefined;
|
|
148
|
+
/**
|
|
149
|
+
* Resolve the review threads that own `commentIds` on `prUrl`.
|
|
150
|
+
*
|
|
151
|
+
* No-ops (never throws) when the PR is on an SCM this host cannot write,
|
|
152
|
+
* no client is bound, or `commentIds` is empty. Same degrade-don't-fail
|
|
153
|
+
* posture as {@link createReviewCommentReader}.
|
|
154
|
+
*/
|
|
155
|
+
export declare function resolveReviewThreadsForComments(args: {
|
|
156
|
+
prUrl: string;
|
|
157
|
+
commentIds: readonly number[];
|
|
158
|
+
github?: HostGitHubClient;
|
|
159
|
+
resolver?: ReviewThreadResolverImplementation;
|
|
160
|
+
signal?: AbortSignal;
|
|
161
|
+
}): Promise<ResolveReviewThreadsResult>;
|
|
108
162
|
/**
|
|
109
163
|
* Reads inline review comments through the host GitHub client (Cursor
|
|
110
164
|
* account lease, App installation token, or PAT).
|
|
111
165
|
*/
|
|
112
166
|
export declare function createHostGithubReviewCommentReader(github: HostGitHubClient): ReviewCommentReaderImplementation;
|
|
167
|
+
/**
|
|
168
|
+
* Resolves inline review threads through the host GitHub client (Cursor
|
|
169
|
+
* account lease, App installation token, or PAT). GitHub GraphQL has no
|
|
170
|
+
* comment→thread field, so this pages the PR's review threads and matches
|
|
171
|
+
* each REST comment id by `databaseId` — the same approach as Bugbot's
|
|
172
|
+
* `resolveReviewThreadForComment`.
|
|
173
|
+
*/
|
|
174
|
+
export declare function createHostGithubReviewThreadResolver(github: HostGitHubClient): ReviewThreadResolverImplementation;
|
|
113
175
|
type GithubReviewCommentLike = {
|
|
114
176
|
id: number;
|
|
115
177
|
path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-comments.d.ts","sourceRoot":"","sources":["../../src/internal/review-comments.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"review-comments.d.ts","sourceRoot":"","sources":["../../src/internal/review-comments.ts"],"names":[],"mappings":"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"}
|