@cursor/july 0.1.94 → 0.1.95
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/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +14 -2
- package/dist/channels/github/types.d.ts +18 -3
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +11 -3
- package/dist/channels/origin/origin-webhook.d.ts +11 -1
- package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
- package/dist/channels/origin/origin-webhook.js +23 -3
- package/dist/channels/origin/types.d.ts +8 -0
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels/slack/pr-ref.d.ts +7 -1
- package/dist/channels/slack/pr-ref.d.ts.map +1 -1
- package/dist/channels/slack/pr-ref.js +42 -23
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.CFDEas4I.js → app.BBj0klBO.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.oqPawjiD.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.B1IIYpYS.js → VPLocalSearchBox.CUEXpL78.js} +1 -1
- package/dist/docs/assets/chunks/{theme.Ct4NSiLm.js → theme.DabmQnia.js} +2 -2
- package/dist/docs/assets/index.md.BoHaMdeZ.js +5 -0
- package/dist/docs/assets/{index.md.DRakGHFe.lean.js → index.md.BoHaMdeZ.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.Cw6_ICYG.js → reference_cli.md.BsMOxDvh.js} +3 -2
- package/dist/docs/assets/{reference_cli.md.Cw6_ICYG.lean.js → reference_cli.md.BsMOxDvh.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.8son6Hjm.js → reference_skills.md.BFW9retM.js} +3 -3
- package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.js → templates_agentic-owners.md.BZSH4N9z.js} +1 -1
- package/dist/docs/assets/{templates_demo.md.DhFcWN6j.js → templates_demo.md.BeQX9V3H.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.DU7dQpor.js → templates_pr-autofixer.md.x5zl6-GT.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.DU7dQpor.lean.js → templates_pr-autofixer.md.x5zl6-GT.lean.js} +1 -1
- package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.js +4 -0
- package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.lean.js +1 -0
- package/dist/docs/assets/{templates_security-reviewer.md.CTa7u_l1.js → templates_security-reviewer.md.lshxbCLK.js} +2 -2
- package/dist/docs/assets/{templates_security-reviewer.md.CTa7u_l1.lean.js → templates_security-reviewer.md.lshxbCLK.lean.js} +1 -1
- package/dist/docs/assets/{templates_triage.md.CVlpctKS.js → templates_triage.md.Co4UNzkZ.js} +3 -3
- package/dist/docs/assets/{templates_triage.md.CVlpctKS.lean.js → templates_triage.md.Co4UNzkZ.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/evals.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 +4 -4
- package/dist/docs/guides/github.html +4 -4
- 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/index.md +3 -1
- package/dist/docs/llms-full.txt +90 -26
- package/dist/docs/llms.txt +1 -0
- 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 +7 -6
- package/dist/docs/reference/cli.md +3 -1
- 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 +7 -7
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +4 -4
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +7 -7
- package/dist/docs/templates/agentic-owners.md +1 -1
- package/dist/docs/templates/demo.html +6 -6
- package/dist/docs/templates/demo.md +3 -2
- package/dist/docs/templates/pr-autofixer.html +6 -6
- package/dist/docs/templates/pr-autofixer.md +7 -13
- package/dist/docs/templates/security-help.html +30 -0
- package/dist/docs/templates/security-help.md +65 -0
- package/dist/docs/templates/security-reviewer.html +6 -6
- package/dist/docs/templates/security-reviewer.md +1 -2
- package/dist/docs/templates/triage.html +7 -7
- package/dist/docs/templates/triage.md +2 -6
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/files-backends/cursor-hosted.d.ts +6 -2
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +2 -2
- package/dist/files.d.ts +2 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +5 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +135 -6
- package/dist/internal/conversation-mirror.d.ts +82 -0
- package/dist/internal/conversation-mirror.d.ts.map +1 -0
- package/dist/internal/conversation-mirror.js +251 -0
- package/dist/internal/deferred-channel-session.d.ts +20 -0
- package/dist/internal/deferred-channel-session.d.ts.map +1 -0
- package/dist/internal/deferred-channel-session.js +62 -0
- package/dist/internal/deploy-client.d.ts +13 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +11 -1
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +11 -5
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +22 -2
- package/dist/internal/framework-storage-selection.d.ts +32 -16
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +51 -17
- package/dist/internal/hosted-admission-context.d.ts +20 -0
- package/dist/internal/hosted-admission-context.d.ts.map +1 -0
- package/dist/internal/hosted-admission-context.js +31 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +5 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +33 -1
- package/dist/internal/hosted-delivery.d.ts +4 -2
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +75 -35
- package/dist/internal/hosted-managed-automation.d.ts +30 -0
- package/dist/internal/hosted-managed-automation.d.ts.map +1 -0
- package/dist/internal/hosted-managed-automation.js +58 -0
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +10 -98
- package/dist/internal/scm/pr-url.d.ts +14 -0
- package/dist/internal/scm/pr-url.d.ts.map +1 -0
- package/dist/internal/scm/pr-url.js +65 -0
- package/dist/internal/sdk-runner.d.ts +14 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +41 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +10 -2
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +9 -0
- package/dist/playground/assets/index-CF7hUDnQ.css +1 -0
- package/dist/playground/assets/{index-B3JCyigB.js → index-CZA1uEWA.js} +48 -48
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +7 -2
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +2 -2
- package/docs/README.md +3 -1
- package/docs/reference/cli.md +3 -1
- package/docs/templates/agentic-owners.md +1 -1
- package/docs/templates/demo.md +3 -2
- package/docs/templates/pr-autofixer.md +7 -13
- package/docs/templates/security-help.md +70 -0
- package/docs/templates/security-reviewer.md +1 -2
- package/docs/templates/triage.md +2 -6
- package/package.json +1 -1
- package/src/channels/github/github-channel.ts +23 -8
- package/src/channels/github/types.ts +19 -2
- package/src/channels/origin/origin-channel.ts +13 -1
- package/src/channels/origin/origin-webhook.ts +27 -3
- package/src/channels/origin/types.ts +8 -0
- package/src/channels/slack/pr-ref.ts +56 -25
- package/src/files-backends/cursor-hosted.ts +9 -3
- package/src/files.ts +11 -0
- package/src/internal/cli-deploy.ts +171 -7
- package/src/internal/conversation-mirror.ts +330 -0
- package/src/internal/deferred-channel-session.ts +61 -0
- package/src/internal/deploy-client.ts +24 -1
- package/src/internal/deploy-manifest.ts +10 -5
- package/src/internal/discovery.ts +25 -2
- package/src/internal/framework-storage-selection.ts +61 -19
- package/src/internal/hosted-admission-context.ts +37 -0
- package/src/internal/hosted-delivery-protocol.ts +44 -1
- package/src/internal/hosted-delivery.ts +95 -40
- package/src/internal/hosted-managed-automation.ts +72 -0
- package/src/internal/review-comments.ts +10 -113
- package/src/internal/scm/pr-url.ts +95 -0
- package/src/internal/sdk-runner.ts +57 -2
- package/src/internal/server.ts +10 -0
- package/src/internal/session-engine.ts +12 -0
- package/src/storage-backends/cursor-hosted.ts +10 -3
- package/templates/agentic-owners/README.md +1 -1
- package/templates/agentic-owners/agent/agent.ts +0 -10
- package/templates/agentic-owners/agent/channels/github.ts +5 -14
- package/templates/agentic-owners/agent/lib/config.ts +0 -8
- package/templates/agentic-owners/agent/lib/review.ts +2 -15
- package/templates/agentic-owners/agent/tools/record_review.ts +2 -4
- package/templates/demo/agent/agent.ts +0 -10
- package/templates/pr-autofixer/README.md +0 -2
- package/templates/pr-autofixer/agent/agent.ts +0 -11
- package/templates/pr-autofixer/agent/channels/slack.ts +0 -7
- package/templates/pr-autofixer/agent/lib/pr-state.ts +5 -17
- package/templates/pr-autofixer/agent/lib/repos.ts +0 -1
- package/templates/security-help/README.md +2 -2
- package/templates/security-help/agent/agent.ts +1 -2
- package/templates/security-help/agent/channels/slack.ts +0 -3
- package/templates/security-help/agent/instructions.md +9 -10
- package/templates/security-help/agent/skills/access-request.md +1 -1
- package/templates/security-help/agent/skills/faq.md +31 -0
- package/templates/security-help/agent/skills/security-playbooks.md +1 -1
- package/templates/security-help/package.json +1 -2
- package/templates/security-reviewer/agent/agent.ts +0 -10
- package/templates/triage/agent/agent.ts +0 -10
- package/templates/triage/agent/channels/queue.ts +1 -1
- package/templates/triage/agent/channels/webhook.ts +1 -3
- package/dist/docs/assets/chunks/@localSearchIndexroot.DU3U2Ij2.js +0 -1
- package/dist/docs/assets/index.md.DRakGHFe.js +0 -5
- package/dist/playground/assets/index-D9N7-q97.css +0 -1
- package/templates/security-help/agent/knowledge/faq/approvals.md +0 -5
- package/templates/security-help/agent/knowledge/faq/channels.md +0 -6
- package/templates/security-help/agent/knowledge/faq/phishing.md +0 -10
- package/templates/security-help/agent/skills/security-first-pass.md +0 -15
- /package/dist/docs/assets/{reference_skills.md.8son6Hjm.lean.js → reference_skills.md.BFW9retM.lean.js} +0 -0
- /package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.lean.js → templates_agentic-owners.md.BZSH4N9z.lean.js} +0 -0
- /package/dist/docs/assets/{templates_demo.md.DhFcWN6j.lean.js → templates_demo.md.BeQX9V3H.lean.js} +0 -0
|
@@ -9,37 +9,25 @@ const PR_STATE_QUERY = `
|
|
|
9
9
|
}
|
|
10
10
|
`;
|
|
11
11
|
|
|
12
|
-
export async function
|
|
12
|
+
export async function fetchPrState(input: {
|
|
13
13
|
github: HostGitHubClient;
|
|
14
14
|
pr: GithubPrRef;
|
|
15
|
-
|
|
16
|
-
}): Promise<T | undefined> {
|
|
15
|
+
}): Promise<string | undefined> {
|
|
17
16
|
try {
|
|
18
17
|
const octokit = await input.github.getOctokit();
|
|
19
18
|
const data = await octokit.graphql<{
|
|
20
|
-
repository?: { pullRequest?:
|
|
21
|
-
}>(
|
|
19
|
+
repository?: { pullRequest?: { state?: string } | null } | null;
|
|
20
|
+
}>(PR_STATE_QUERY, {
|
|
22
21
|
owner: input.pr.owner,
|
|
23
22
|
repo: input.pr.repo,
|
|
24
23
|
number: input.pr.number,
|
|
25
24
|
});
|
|
26
|
-
return data.repository?.pullRequest
|
|
25
|
+
return data.repository?.pullRequest?.state;
|
|
27
26
|
} catch {
|
|
28
27
|
return undefined;
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
export async function fetchPrState(input: {
|
|
33
|
-
github: HostGitHubClient;
|
|
34
|
-
pr: GithubPrRef;
|
|
35
|
-
}): Promise<string | undefined> {
|
|
36
|
-
const node = await queryPullRequest<{ state?: string }>({
|
|
37
|
-
...input,
|
|
38
|
-
query: PR_STATE_QUERY,
|
|
39
|
-
});
|
|
40
|
-
return node?.state;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
31
|
export function isTerminalPrState(
|
|
44
32
|
state: string | undefined
|
|
45
33
|
): state is "CLOSED" | "MERGED" {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Security help
|
|
2
2
|
|
|
3
|
-
Answers security questions in Slack from your
|
|
3
|
+
Answers security questions in Slack from your skills and takes a first
|
|
4
4
|
look when someone pastes a GitHub pull request.
|
|
5
5
|
|
|
6
6
|
```bash
|
|
@@ -27,7 +27,7 @@ one in the playground.
|
|
|
27
27
|
|
|
28
28
|
- `agent/lib/repos.ts`: repos it may read
|
|
29
29
|
- `agent/channels/slack.ts`: channel ids to watch (`watch`)
|
|
30
|
-
- `agent/
|
|
30
|
+
- `agent/skills/faq.md`: answers for your company
|
|
31
31
|
- `agent/skills/`: how to look at a PR, a leak, or an access ask
|
|
32
32
|
- `agent/instructions.md`: routing
|
|
33
33
|
|
|
@@ -2,8 +2,7 @@ import { defineAgent } from "@cursor/july";
|
|
|
2
2
|
|
|
3
3
|
export default defineAgent({
|
|
4
4
|
name: "Security Help",
|
|
5
|
-
|
|
6
|
-
"Answers security questions in Slack and takes a first look at a GitHub pull request.",
|
|
5
|
+
// Not DEFAULT_MODEL (grok-4.5).
|
|
7
6
|
model: {
|
|
8
7
|
id: "grok-4.6",
|
|
9
8
|
params: [
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
# Security help
|
|
2
2
|
|
|
3
|
-
Answer security questions in Slack from the
|
|
3
|
+
Answer security questions in Slack from the skills.
|
|
4
4
|
If you do not know, say so and ask a human.
|
|
5
5
|
|
|
6
|
-
Open the skill
|
|
6
|
+
Open the skill for the ask.
|
|
7
7
|
|
|
8
|
-
| If the ask is about |
|
|
8
|
+
| If the ask is about | Skill |
|
|
9
9
|
| --- | --- |
|
|
10
|
-
| A GitHub pull request |
|
|
11
|
-
| An access request |
|
|
12
|
-
| A leak, alert, or incident |
|
|
13
|
-
| Who can approve, privacy, or
|
|
14
|
-
| Phishing text, email, or a call | `agent/knowledge/faq/phishing.md` |
|
|
15
|
-
| Which team or channel owns a request | `agent/knowledge/faq/channels.md` |
|
|
16
|
-
| Another security question | `agent/skills/security-first-pass.md` |
|
|
10
|
+
| A GitHub pull request | security-pr-first-pass |
|
|
11
|
+
| An access request | access-request |
|
|
12
|
+
| A leak, alert, or incident | security-playbooks |
|
|
13
|
+
| Who can approve, privacy, phishing, or which channel | faq |
|
|
17
14
|
|
|
18
15
|
A pull request earlier in the thread is not this one.
|
|
19
16
|
|
|
17
|
+
If this looks like production secrets out, an exploit, customer data out, malware, or an account takeover, they should stop it now and wait for a human.
|
|
18
|
+
|
|
20
19
|
If you say an incident is over or a system is safe, show why. Looking at a pull request is not that.
|
|
@@ -4,7 +4,7 @@ description: use when Slack has an access request or request number
|
|
|
4
4
|
|
|
5
5
|
# Access request
|
|
6
6
|
|
|
7
|
-
This skill is the access request. SaaS or identity-group asks go to the team named in
|
|
7
|
+
This skill is the access request. SaaS or identity-group asks go to the team named in faq.
|
|
8
8
|
|
|
9
9
|
Say what they asked for, why, and how long it lasts, from the request.
|
|
10
10
|
Do not invent a grant that is not on the request.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: use for company answers on approvals, phishing, and which channel owns a request
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Company FAQ
|
|
6
|
+
|
|
7
|
+
If a section does not name an owner or team, say you do not know and ask a human.
|
|
8
|
+
|
|
9
|
+
## Approvals
|
|
10
|
+
|
|
11
|
+
Who can say yes depends on the request. If this file does not name an owner, ask a human for that topic.
|
|
12
|
+
|
|
13
|
+
Privacy questions (training, retention, where prompts sit) go to a privacy or security person.
|
|
14
|
+
|
|
15
|
+
## Channels
|
|
16
|
+
|
|
17
|
+
`#security` is for security questions and phishing reports.
|
|
18
|
+
|
|
19
|
+
Name the channel that owns SaaS access, identity groups, laptops, and billing.
|
|
20
|
+
Until you do, say you do not know which team owns that request.
|
|
21
|
+
|
|
22
|
+
## Phishing
|
|
23
|
+
|
|
24
|
+
`#security` is where phishing and unexpected texts, emails, or calls go.
|
|
25
|
+
If the thread is already about that, keep it there.
|
|
26
|
+
|
|
27
|
+
Leave the original message alone. Do not reply, click, or send a 2FA code on it.
|
|
28
|
+
Confirm unknown texts or calls over Slack or in person before acting.
|
|
29
|
+
|
|
30
|
+
If an account looks compromised, they should lock it now and wait for a human.
|
|
31
|
+
If security already gave a verdict in-thread, follow that.
|
|
@@ -6,7 +6,7 @@ description: use when Slack looks like a leak, alert, access, privacy, or incide
|
|
|
6
6
|
|
|
7
7
|
If a production secret is already out, revoke or rotate it at the place that issued it, or turn it off there.
|
|
8
8
|
|
|
9
|
-
For other alerts, follow
|
|
9
|
+
For other alerts, follow faq.
|
|
10
10
|
Do not call it safe without a human.
|
|
11
11
|
|
|
12
12
|
If you cannot see who is affected, skip that.
|
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
import { homedir } from "node:os";
|
|
2
|
-
import { join } from "node:path";
|
|
3
1
|
import { defineAgent } from "@cursor/july";
|
|
4
2
|
|
|
5
3
|
export default defineAgent({
|
|
6
|
-
model: {
|
|
7
|
-
id: "grok-4.5",
|
|
8
|
-
params: [
|
|
9
|
-
{ id: "effort", value: "high" },
|
|
10
|
-
{ id: "fast", value: "true" },
|
|
11
|
-
],
|
|
12
|
-
},
|
|
13
4
|
tools: ["read", "grep"],
|
|
14
5
|
local: {
|
|
15
6
|
sandbox: true,
|
|
16
|
-
cwd: join(homedir(), ".cache", "agent-serve", "security-reviewer"),
|
|
17
7
|
},
|
|
18
8
|
});
|
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
import { homedir } from "node:os";
|
|
2
|
-
import { join } from "node:path";
|
|
3
1
|
import { defineAgent } from "@cursor/july";
|
|
4
2
|
|
|
5
3
|
export default defineAgent({
|
|
6
|
-
model: {
|
|
7
|
-
id: "grok-4.5",
|
|
8
|
-
params: [
|
|
9
|
-
{ id: "effort", value: "high" },
|
|
10
|
-
{ id: "fast", value: "true" },
|
|
11
|
-
],
|
|
12
|
-
},
|
|
13
4
|
tools: ["read", "grep", "glob", "ls"],
|
|
14
5
|
local: {
|
|
15
6
|
sandbox: true,
|
|
16
|
-
cwd: join(homedir(), ".cache", "agent-serve", "triage"),
|
|
17
7
|
},
|
|
18
8
|
});
|
|
@@ -25,7 +25,7 @@ export default defineChannel({
|
|
|
25
25
|
const options = {
|
|
26
26
|
continuationToken: parsed.issue.identifier,
|
|
27
27
|
admission: "coalesce" as const,
|
|
28
|
-
|
|
28
|
+
title: parsed.issue.title === "" ? undefined : parsed.issue.title,
|
|
29
29
|
};
|
|
30
30
|
const prompt = formatQueuePrompt(parsed.issue);
|
|
31
31
|
if (isTrackerWebhook(body)) {
|
|
@@ -35,9 +35,7 @@ export default defineChannel({
|
|
|
35
35
|
send(formatQueuePrompt(parsed.issue), {
|
|
36
36
|
continuationToken: parsed.issue.identifier,
|
|
37
37
|
admission: "coalesce",
|
|
38
|
-
|
|
39
|
-
? {}
|
|
40
|
-
: { title: parsed.issue.title }),
|
|
38
|
+
title: parsed.issue.title === "" ? undefined : parsed.issue.title,
|
|
41
39
|
})
|
|
42
40
|
);
|
|
43
41
|
return Response.json({
|