@cursor/july 0.1.100 → 0.1.101
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 +3 -2
- package/dist/channels/deployments/deployments-channel.d.ts +41 -5
- package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
- package/dist/channels/deployments/deployments-channel.js +88 -8
- package/dist/channels/deployments/types.d.ts +4 -3
- package/dist/channels/deployments/types.d.ts.map +1 -1
- package/dist/channels/origin/defaults.d.ts +43 -0
- package/dist/channels/origin/defaults.d.ts.map +1 -0
- package/dist/channels/origin/defaults.js +111 -0
- package/dist/channels/origin/index.d.ts +2 -0
- package/dist/channels/origin/index.d.ts.map +1 -1
- package/dist/channels/origin/index.js +2 -0
- package/dist/channels/origin/origin-channel.d.ts +2 -1
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +24 -3
- package/dist/channels/origin/state.d.ts +32 -0
- package/dist/channels/origin/state.d.ts.map +1 -0
- package/dist/channels/origin/state.js +23 -0
- package/dist/channels/origin/types.d.ts +23 -1
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +2 -1
- package/dist/channels/slack/code-fences.d.ts +17 -0
- package/dist/channels/slack/code-fences.d.ts.map +1 -0
- package/dist/channels/slack/code-fences.js +168 -0
- package/dist/channels/slack/index.d.ts +1 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +1 -0
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +11 -4
- package/dist/connections.d.ts +18 -2
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +18 -2
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.DZ1e0Ycq.js → app.BASO9Kih.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.l8omwc6D.js → VPLocalSearchBox.DwkqxoE0.js} +1 -1
- package/dist/docs/assets/chunks/{theme.JVcD6gel.js → theme.CCil_13e.js} +2 -2
- package/dist/docs/assets/{reference_connections.md.BiGoBAk2.js → reference_connections.md.Di6jJAXF.js} +12 -2
- package/dist/docs/assets/{reference_connections.md.BiGoBAk2.lean.js → reference_connections.md.Di6jJAXF.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.js → reference_http-api.md.oySXBO8o.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 +4 -4
- package/dist/docs/llms-full.txt +32 -1
- 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 +4 -4
- package/dist/docs/reference/connections.html +16 -6
- package/dist/docs/reference/connections.md +31 -0
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +1 -1
- 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 +4 -4
- package/dist/docs/skills/ab.html +4 -4
- package/dist/docs/skills/create-agent.html +4 -4
- package/dist/docs/skills/debug.html +4 -4
- package/dist/docs/skills/evals.html +4 -4
- package/dist/docs/skills/framework-map.html +4 -4
- package/dist/docs/skills/github.html +4 -4
- package/dist/docs/skills/hillclimb.html +4 -4
- package/dist/docs/skills/index.html +4 -4
- package/dist/docs/skills/mcp-auth.html +4 -4
- package/dist/docs/skills/otel.html +4 -4
- package/dist/docs/skills/setup-slack.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +4 -4
- package/dist/docs/templates/agents-md.html +4 -4
- package/dist/docs/templates/code-wiki.html +4 -4
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +4 -4
- package/dist/docs/templates/security-help.html +4 -4
- package/dist/docs/templates/security-reviewer.html +4 -4
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +55 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/extension.js +64 -0
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +30 -0
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/cloud.js +45 -0
- package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts +25 -0
- package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +85 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts +15 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +55 -0
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +27 -0
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.js +37 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +83 -0
- package/dist/extensions/cursor-cloud-agents/tools/list.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/list.js +36 -0
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/status.js +41 -0
- package/dist/extensions.d.ts +49 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +75 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/internal/advertise-tools.d.ts +4 -1
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +20 -1
- package/dist/internal/as-of.d.ts +18 -0
- package/dist/internal/as-of.d.ts.map +1 -1
- package/dist/internal/as-of.js +131 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +64 -19
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +3 -1
- package/dist/internal/cursor/hosted-deployment-secrets.d.ts +16 -0
- package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -0
- package/dist/internal/cursor/hosted-deployment-secrets.js +61 -0
- package/dist/internal/cursor-deployment-relay.d.ts +15 -1
- package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
- package/dist/internal/cursor-deployment-relay.js +46 -7
- package/dist/internal/deploy-client.d.ts +23 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +54 -12
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +415 -120
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +5 -0
- package/dist/internal/framework-file-storage.d.ts +3 -3
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +34 -5
- package/dist/internal/hosted-delivery.d.ts +3 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +19 -32
- package/dist/internal/hosted-execution-diag.d.ts +5 -0
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +5 -0
- package/dist/internal/hosted-execution-flush.d.ts +46 -0
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -0
- package/dist/internal/hosted-execution-flush.js +81 -0
- package/dist/internal/mcp-endpoint.js +1 -0
- package/dist/internal/mcp-host.d.ts +2 -1
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +35 -15
- package/dist/internal/review-comments.d.ts +1 -1
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +4 -4
- package/dist/internal/server.d.ts +3 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +79 -104
- package/dist/internal/session-engine.d.ts +9 -7
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +45 -34
- package/dist/internal/session-run-log.d.ts +2 -1
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +2 -1
- package/dist/internal/start-log-store.d.ts +60 -0
- package/dist/internal/start-log-store.d.ts.map +1 -0
- package/dist/internal/start-log-store.js +151 -0
- package/dist/internal/tool-policy.d.ts +8 -0
- package/dist/internal/tool-policy.d.ts.map +1 -1
- package/dist/internal/tool-policy.js +19 -7
- package/dist/playground/assets/{index-DVs98vPL.js → index-BnNN1-EK.js} +45 -45
- package/dist/playground/assets/index-DBQCwFp0.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-protocol.d.ts +24 -0
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +33 -0
- package/dist/storage.d.ts +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/types.d.ts +118 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +29 -1
- package/docs/reference/connections.md +31 -0
- package/docs/reference/http-api.md +1 -1
- package/package.json +18 -4
- package/src/bin/agent-serve.ts +11 -2
- package/src/channels/deployments/deployments-channel.ts +117 -8
- package/src/channels/deployments/types.ts +4 -3
- package/src/channels/origin/defaults.ts +143 -0
- package/src/channels/origin/index.ts +2 -0
- package/src/channels/origin/origin-channel.ts +37 -1
- package/src/channels/origin/state.ts +54 -0
- package/src/channels/origin/types.ts +24 -0
- package/src/channels/slack/api.ts +2 -1
- package/src/channels/slack/code-fences.ts +183 -0
- package/src/channels/slack/index.ts +1 -0
- package/src/channels/slack/live-delivery.ts +16 -13
- package/src/connections.ts +18 -1
- package/src/extensions/cursor-cloud-agents/extension.ts +118 -0
- package/src/extensions/cursor-cloud-agents/lib/cloud.ts +79 -0
- package/src/extensions/cursor-cloud-agents/lib/fleet.ts +109 -0
- package/src/extensions/cursor-cloud-agents/lib/repos.ts +81 -0
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +27 -0
- package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +29 -0
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +84 -0
- package/src/extensions/cursor-cloud-agents/tools/list.ts +31 -0
- package/src/extensions/cursor-cloud-agents/tools/status.ts +39 -0
- package/src/extensions.ts +98 -0
- package/src/index.ts +2 -0
- package/src/internal/advertise-tools.ts +37 -12
- package/src/internal/as-of.ts +163 -0
- package/src/internal/cli-deploy.ts +86 -23
- package/src/internal/continuation-identity.ts +3 -1
- package/src/internal/cursor/hosted-deployment-secrets.ts +72 -0
- package/src/internal/cursor-deployment-relay.ts +65 -8
- package/src/internal/deploy-client.ts +73 -18
- package/src/internal/discovery.ts +470 -113
- package/src/internal/distribution.ts +5 -0
- package/src/internal/framework-file-storage.ts +39 -5
- package/src/internal/hosted-delivery.ts +38 -63
- package/src/internal/hosted-execution-diag.ts +6 -0
- package/src/internal/hosted-execution-flush.ts +142 -0
- package/src/internal/mcp-endpoint.ts +1 -0
- package/src/internal/mcp-host.ts +40 -14
- package/src/internal/review-comments.ts +5 -2
- package/src/internal/server.ts +81 -100
- package/src/internal/session-engine.ts +56 -28
- package/src/internal/session-run-log.ts +2 -1
- package/src/internal/start-log-store.ts +177 -0
- package/src/internal/tool-policy.ts +39 -9
- package/src/storage-protocol.ts +37 -0
- package/src/storage.ts +1 -0
- package/src/types.ts +172 -14
- package/dist/docs/assets/chunks/@localSearchIndexroot.j70vvPL4.js +0 -1
- package/dist/playground/assets/index-BszoQDc6.css +0 -1
- /package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.lean.js → reference_http-api.md.oySXBO8o.lean.js} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ContinuationIdentity } from "../../continuation.js";
|
|
2
|
-
import type { AgentCloudOptions, ArtifactsApi, AuthContext, AuthPolicy, ChannelStartArgs, HostContext } from "../../types.js";
|
|
2
|
+
import type { AgentCloudOptions, ArtifactsApi, AuthContext, AuthPolicy, ChannelEventHandlers, ChannelStartArgs, HostContext, SendMessageFn } from "../../types.js";
|
|
3
3
|
import type { OriginTokenProvider } from "./api.js";
|
|
4
4
|
import type { OriginHandle } from "./binding.js";
|
|
5
|
+
import type { OriginChannelState } from "./state.js";
|
|
5
6
|
export interface OriginActor {
|
|
6
7
|
id: string;
|
|
7
8
|
kind?: string;
|
|
@@ -57,6 +58,12 @@ export interface OriginEventContext {
|
|
|
57
58
|
*/
|
|
58
59
|
payload: Record<string, unknown>;
|
|
59
60
|
sender?: OriginActor;
|
|
61
|
+
/**
|
|
62
|
+
* Channel `send`. Set on every delivery path (HTTP webhook, hosted
|
|
63
|
+
* admission, SCM events) so a hook can start a turn itself instead of
|
|
64
|
+
* returning `{ auth, message }` or a deferred `{ task }`.
|
|
65
|
+
*/
|
|
66
|
+
send?: SendMessageFn;
|
|
60
67
|
host: HostContext;
|
|
61
68
|
artifacts: ArtifactsApi;
|
|
62
69
|
/**
|
|
@@ -206,6 +213,21 @@ export interface OriginChannelOptions {
|
|
|
206
213
|
* pull request URL, or a resolver for custom cloud options.
|
|
207
214
|
*/
|
|
208
215
|
cloud?: boolean | AgentCloudOptions | OriginCloudOptionsResolver;
|
|
216
|
+
/**
|
|
217
|
+
* When false, skip posting completed assistant messages (and failure
|
|
218
|
+
* notices) back to the Origin pull request. Defaults to true — the GitHub
|
|
219
|
+
* channel's reply-delivery posture. Outbound credentials resolve like
|
|
220
|
+
* `ctx.origin`: {@link app} / `ORIGIN_APP_*` env when configured,
|
|
221
|
+
* otherwise the Cursor-account session exchange (hosted v2 deployments
|
|
222
|
+
* post as the deployment service-account principal).
|
|
223
|
+
*/
|
|
224
|
+
deliverReplies?: boolean;
|
|
225
|
+
/**
|
|
226
|
+
* Channel stream-event handlers, merged over the built-in reply-delivery
|
|
227
|
+
* defaults (`buildDefaultOriginEvents`) — same override contract as the
|
|
228
|
+
* GitHub channel's `events`.
|
|
229
|
+
*/
|
|
230
|
+
events?: ChannelEventHandlers<OriginChannelState>;
|
|
209
231
|
/** Called once when the server mounts this channel. */
|
|
210
232
|
onStart?: (args: ChannelStartArgs) => void | Promise<void>;
|
|
211
233
|
/** Called when the server shuts down. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/origin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/origin/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
12
12
|
};
|
|
13
13
|
import { ErrorCode, WebClient } from "@slack/web-api";
|
|
14
14
|
import { slackifyMarkdown } from "slackify-markdown";
|
|
15
|
+
import { highlightCodeFences } from "./code-fences.js";
|
|
15
16
|
import { SLACK_DEFAULT_LOADING_MESSAGES, SLACK_LOADING_MESSAGE_MAX_LEN, SLACK_LOADING_MESSAGES_MAX, SLACK_STATUS_MAX_LEN, SLACK_TITLE_MAX_LEN, SLACK_TYPING_MIN_INTERVAL_MS, SLACK_UNSUPPORTED_ERRORS, } from "./constants.js";
|
|
16
17
|
import { tryResolveAppToken, tryResolveBotToken } from "./credentials.js";
|
|
17
18
|
import { defaultSlackLog } from "./log.js";
|
|
@@ -381,7 +382,7 @@ export function postMessage(args) {
|
|
|
381
382
|
response = yield callSlackApi({
|
|
382
383
|
botToken: args.botToken,
|
|
383
384
|
operation: "chat.postMessage",
|
|
384
|
-
body: Object.assign(Object.assign({}, base), { markdown_text: args.text }),
|
|
385
|
+
body: Object.assign(Object.assign({}, base), { markdown_text: highlightCodeFences(args.text) }),
|
|
385
386
|
});
|
|
386
387
|
// Older workspaces / scopes may not accept markdown_text — retry with text.
|
|
387
388
|
// Also fall back when markdown_text hits its 12k limit (msg_too_long) while
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack highlights a fenced code block only when its info string is a
|
|
3
|
+
* language it knows (`ts`, `python`, …). Models on this harness cite code
|
|
4
|
+
* with Cursor's `startLine:endLine:path` form, or a bare path, which Slack
|
|
5
|
+
* shows verbatim as the block's header with no highlighting. The header is
|
|
6
|
+
* the only slot Slack offers, so a block gets colors by moving the reference
|
|
7
|
+
* to a comment on its first line. Files whose language has no comment
|
|
8
|
+
* syntax, or that Slack cannot color anyway, keep the reference as header.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Rewrite fence info strings so Slack highlights the block. Safe to run on
|
|
12
|
+
* a growing stream: the output for a prefix is a prefix of the output for
|
|
13
|
+
* the full text, because an opening fence whose line has not ended yet is
|
|
14
|
+
* held back rather than emitted half-formed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function highlightCodeFences(markdown: string): string;
|
|
17
|
+
//# sourceMappingURL=code-fences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-fences.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/code-fences.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgIH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwC5D"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack highlights a fenced code block only when its info string is a
|
|
3
|
+
* language it knows (`ts`, `python`, …). Models on this harness cite code
|
|
4
|
+
* with Cursor's `startLine:endLine:path` form, or a bare path, which Slack
|
|
5
|
+
* shows verbatim as the block's header with no highlighting. The header is
|
|
6
|
+
* the only slot Slack offers, so a block gets colors by moving the reference
|
|
7
|
+
* to a comment on its first line. Files whose language has no comment
|
|
8
|
+
* syntax, or that Slack cannot color anyway, keep the reference as header.
|
|
9
|
+
*/
|
|
10
|
+
const FENCE = /^(\s*)(`{3,}|~{3,})(.*)$/;
|
|
11
|
+
/** A line that may still grow into a fence. */
|
|
12
|
+
const FENCE_START = /^\s*(`{1,2}|~{1,2})$/;
|
|
13
|
+
const CITATION = /^(\d+):(\d+):(\S+)$/;
|
|
14
|
+
const LANGUAGE_BY_EXTENSION = {
|
|
15
|
+
ts: "ts",
|
|
16
|
+
mts: "ts",
|
|
17
|
+
cts: "ts",
|
|
18
|
+
tsx: "tsx",
|
|
19
|
+
js: "js",
|
|
20
|
+
mjs: "js",
|
|
21
|
+
cjs: "js",
|
|
22
|
+
jsx: "jsx",
|
|
23
|
+
py: "python",
|
|
24
|
+
go: "go",
|
|
25
|
+
rs: "rust",
|
|
26
|
+
java: "java",
|
|
27
|
+
kt: "kotlin",
|
|
28
|
+
swift: "swift",
|
|
29
|
+
rb: "ruby",
|
|
30
|
+
php: "php",
|
|
31
|
+
c: "c",
|
|
32
|
+
h: "c",
|
|
33
|
+
cc: "cpp",
|
|
34
|
+
cpp: "cpp",
|
|
35
|
+
hpp: "cpp",
|
|
36
|
+
cs: "csharp",
|
|
37
|
+
json: "json",
|
|
38
|
+
jsonc: "jsonc",
|
|
39
|
+
yaml: "yaml",
|
|
40
|
+
yml: "yaml",
|
|
41
|
+
toml: "toml",
|
|
42
|
+
xml: "xml",
|
|
43
|
+
html: "html",
|
|
44
|
+
css: "css",
|
|
45
|
+
scss: "scss",
|
|
46
|
+
md: "markdown",
|
|
47
|
+
mdx: "mdx",
|
|
48
|
+
sh: "bash",
|
|
49
|
+
bash: "bash",
|
|
50
|
+
zsh: "bash",
|
|
51
|
+
sql: "sql",
|
|
52
|
+
proto: "protobuf",
|
|
53
|
+
tf: "hcl",
|
|
54
|
+
graphql: "graphql",
|
|
55
|
+
dockerfile: "dockerfile",
|
|
56
|
+
ini: "ini",
|
|
57
|
+
};
|
|
58
|
+
/** `[open, close]` comment delimiters; languages without one (JSON) are absent. */
|
|
59
|
+
const COMMENT_BY_LANGUAGE = {
|
|
60
|
+
ts: ["//", ""],
|
|
61
|
+
tsx: ["//", ""],
|
|
62
|
+
js: ["//", ""],
|
|
63
|
+
jsx: ["//", ""],
|
|
64
|
+
go: ["//", ""],
|
|
65
|
+
rust: ["//", ""],
|
|
66
|
+
java: ["//", ""],
|
|
67
|
+
kotlin: ["//", ""],
|
|
68
|
+
swift: ["//", ""],
|
|
69
|
+
php: ["//", ""],
|
|
70
|
+
c: ["//", ""],
|
|
71
|
+
cpp: ["//", ""],
|
|
72
|
+
csharp: ["//", ""],
|
|
73
|
+
jsonc: ["//", ""],
|
|
74
|
+
protobuf: ["//", ""],
|
|
75
|
+
python: ["#", ""],
|
|
76
|
+
ruby: ["#", ""],
|
|
77
|
+
yaml: ["#", ""],
|
|
78
|
+
toml: ["#", ""],
|
|
79
|
+
bash: ["#", ""],
|
|
80
|
+
dockerfile: ["#", ""],
|
|
81
|
+
ini: ["#", ""],
|
|
82
|
+
hcl: ["#", ""],
|
|
83
|
+
graphql: ["#", ""],
|
|
84
|
+
sql: ["--", ""],
|
|
85
|
+
css: ["/*", "*/"],
|
|
86
|
+
scss: ["/*", "*/"],
|
|
87
|
+
html: ["<!--", "-->"],
|
|
88
|
+
xml: ["<!--", "-->"],
|
|
89
|
+
markdown: ["<!--", "-->"],
|
|
90
|
+
mdx: ["<!--", "-->"],
|
|
91
|
+
};
|
|
92
|
+
function languageForPath(path) {
|
|
93
|
+
const base = path.slice(path.lastIndexOf("/") + 1).toLowerCase();
|
|
94
|
+
const ext = base.includes(".") ? base.slice(base.lastIndexOf(".") + 1) : base;
|
|
95
|
+
return LANGUAGE_BY_EXTENSION[ext];
|
|
96
|
+
}
|
|
97
|
+
function looksLikePath(info) {
|
|
98
|
+
return info.includes("/") || languageForPath(info) !== undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Replacement lines for an opening fence whose info string is a citation or
|
|
102
|
+
* a path: the fence tagged with the language, then the reference as a
|
|
103
|
+
* comment. Falls back to the reference as the header when the block cannot
|
|
104
|
+
* carry a comment. `null` when the info string is neither.
|
|
105
|
+
*/
|
|
106
|
+
function rewriteOpening(indent, marks, info) {
|
|
107
|
+
var _a, _b;
|
|
108
|
+
const token = (_a = info.trim().split(/\s+/)[0]) !== null && _a !== void 0 ? _a : "";
|
|
109
|
+
const cited = CITATION.exec(token);
|
|
110
|
+
const path = (_b = cited === null || cited === void 0 ? void 0 : cited[3]) !== null && _b !== void 0 ? _b : (looksLikePath(token) ? token : undefined);
|
|
111
|
+
if (path === undefined) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const reference = cited === null ? path : `${path}:${cited[1]}-${cited[2]}`;
|
|
115
|
+
const language = languageForPath(path);
|
|
116
|
+
const comment = language === undefined ? undefined : COMMENT_BY_LANGUAGE[language];
|
|
117
|
+
if (comment === undefined) {
|
|
118
|
+
return [`${indent}${marks}${reference}`];
|
|
119
|
+
}
|
|
120
|
+
const [open, close] = comment;
|
|
121
|
+
const commented = close === "" ? `${open} ${reference}` : `${open} ${reference} ${close}`;
|
|
122
|
+
return [`${indent}${marks}${language}`, `${indent}${commented}`];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Rewrite fence info strings so Slack highlights the block. Safe to run on
|
|
126
|
+
* a growing stream: the output for a prefix is a prefix of the output for
|
|
127
|
+
* the full text, because an opening fence whose line has not ended yet is
|
|
128
|
+
* held back rather than emitted half-formed.
|
|
129
|
+
*/
|
|
130
|
+
export function highlightCodeFences(markdown) {
|
|
131
|
+
var _a;
|
|
132
|
+
const complete = markdown.endsWith("\n");
|
|
133
|
+
const lines = markdown.split("\n");
|
|
134
|
+
if (complete) {
|
|
135
|
+
lines.pop();
|
|
136
|
+
}
|
|
137
|
+
const out = [];
|
|
138
|
+
let open = null;
|
|
139
|
+
const heldBack = () => `${out.join("\n")}${out.length > 0 ? "\n" : ""}`;
|
|
140
|
+
for (const [index, line] of lines.entries()) {
|
|
141
|
+
const last = index === lines.length - 1 && !complete;
|
|
142
|
+
const fence = FENCE.exec(line);
|
|
143
|
+
if (fence === null) {
|
|
144
|
+
if (last && open === null && FENCE_START.test(line)) {
|
|
145
|
+
return heldBack();
|
|
146
|
+
}
|
|
147
|
+
out.push(line);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const [, indent = "", marks = "", info = ""] = fence;
|
|
151
|
+
if (open !== null) {
|
|
152
|
+
if (marks[0] === open.marks[0] &&
|
|
153
|
+
marks.length >= open.marks.length &&
|
|
154
|
+
info.trim() === "") {
|
|
155
|
+
open = null;
|
|
156
|
+
}
|
|
157
|
+
out.push(line);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (last) {
|
|
161
|
+
// Opening fence still being written: wait for the whole line.
|
|
162
|
+
return heldBack();
|
|
163
|
+
}
|
|
164
|
+
open = { marks };
|
|
165
|
+
out.push(...((_a = rewriteOpening(indent, marks, info)) !== null && _a !== void 0 ? _a : [line]));
|
|
166
|
+
}
|
|
167
|
+
return complete ? `${out.join("\n")}\n` : out.join("\n");
|
|
168
|
+
}
|
|
@@ -20,6 +20,7 @@ export * from "./auth.js";
|
|
|
20
20
|
export * from "./blocks.js";
|
|
21
21
|
export * from "./bot-mentions.js";
|
|
22
22
|
export * from "./channel-watch.js";
|
|
23
|
+
export * from "./code-fences.js";
|
|
23
24
|
export * from "./constants.js";
|
|
24
25
|
export * from "./credentials.js";
|
|
25
26
|
export * from "./defaults.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,cAAc,YAAY,CAAC"}
|
|
@@ -20,6 +20,7 @@ export * from "./auth.js";
|
|
|
20
20
|
export * from "./blocks.js";
|
|
21
21
|
export * from "./bot-mentions.js";
|
|
22
22
|
export * from "./channel-watch.js";
|
|
23
|
+
export * from "./code-fences.js";
|
|
23
24
|
export * from "./constants.js";
|
|
24
25
|
export * from "./credentials.js";
|
|
25
26
|
export * from "./defaults.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-delivery.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/live-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"live-delivery.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/live-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAS1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnE,KAAK,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,QAAQ,CAAC;CACxB;AAED,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,yEAAyE;IACzE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,YAAY,CACV,IAAI,EAAE,UAAU,GAAG;QAAE,MAAM,EAAE,eAAe,EAAE,CAAA;KAAE,GAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB;;;OAGG;IACH,QAAQ,CACN,IAAI,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnC,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CACF,IAAI,EAAE,UAAU,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GACvC,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpC;AAmBD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,gBAAgB,GACrB,oBAAoB,CA6VtB"}
|
|
@@ -24,6 +24,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
26
|
import { appendChatStream, postMessage, startChatStream, stopChatStream, } from "./api.js";
|
|
27
|
+
import { highlightCodeFences } from "./code-fences.js";
|
|
27
28
|
import { SLACK_MARKDOWN_TEXT_MAX_LEN } from "./constants.js";
|
|
28
29
|
import { computeStreamAppend, markdownChunk, } from "./stream.js";
|
|
29
30
|
function streamRecipients(channel) {
|
|
@@ -47,7 +48,7 @@ export function createStreamDeliveryStrategy(deps) {
|
|
|
47
48
|
const openingText = markdown_text !== null && markdown_text !== void 0 ? markdown_text : "";
|
|
48
49
|
const opening = [];
|
|
49
50
|
if (openingText !== "") {
|
|
50
|
-
opening.push(markdownChunk(openingText));
|
|
51
|
+
opening.push(markdownChunk(highlightCodeFences(openingText)));
|
|
51
52
|
}
|
|
52
53
|
opening.push(...(chunks !== null && chunks !== void 0 ? chunks : []));
|
|
53
54
|
if (opening.length === 0) {
|
|
@@ -98,8 +99,14 @@ export function createStreamDeliveryStrategy(deps) {
|
|
|
98
99
|
});
|
|
99
100
|
return opened ? activeStreamTs(args.channel) : null;
|
|
100
101
|
});
|
|
102
|
+
/**
|
|
103
|
+
* What to append for the new cumulative text, as Slack should see it: the
|
|
104
|
+
* block text on both sides goes through the same fence rewrite, so the
|
|
105
|
+
* delta lines up with what the stream already holds.
|
|
106
|
+
*/
|
|
107
|
+
const streamDelta = (channel, text) => { var _a; return computeStreamAppend(highlightCodeFences((_a = channel.state.streamBlockText) !== null && _a !== void 0 ? _a : ""), highlightCodeFences(text)); };
|
|
101
108
|
const stopWithSuffix = (args) => __awaiter(this, void 0, void 0, function* () {
|
|
102
|
-
const appendText =
|
|
109
|
+
const appendText = streamDelta(args.channel, args.text);
|
|
103
110
|
const stopped = yield stopChatStream({
|
|
104
111
|
botToken,
|
|
105
112
|
channel: args.channelId,
|
|
@@ -197,7 +204,7 @@ export function createStreamDeliveryStrategy(deps) {
|
|
|
197
204
|
if (ts === null) {
|
|
198
205
|
return;
|
|
199
206
|
}
|
|
200
|
-
const appendText =
|
|
207
|
+
const appendText = streamDelta(channel, text);
|
|
201
208
|
if (appendText === "") {
|
|
202
209
|
return;
|
|
203
210
|
}
|
|
@@ -271,7 +278,7 @@ export function createStreamDeliveryStrategy(deps) {
|
|
|
271
278
|
return { delivered: false };
|
|
272
279
|
}
|
|
273
280
|
// Measured before the stop attempt mutates stream state.
|
|
274
|
-
const remainder =
|
|
281
|
+
const remainder = streamDelta(channel, text);
|
|
275
282
|
const stopped = channel.state.streamFull === true
|
|
276
283
|
? { ok: false, error: "msg_too_long" }
|
|
277
284
|
: yield stopWithSuffix({ channel, channelId, ts, text });
|
package/dist/connections.d.ts
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* are available to the agent (SDK `mcpServers`), host (`ctx.host.mcp`),
|
|
9
9
|
* and channel/schedule handlers. Pass `advertiseTools: true` for named
|
|
10
10
|
* tools on local turns. Pass `effects: "read"` with `advertiseTools` to
|
|
11
|
-
* advertise only tools the server classifies as reads.
|
|
11
|
+
* advertise only tools the server classifies as reads. Pass `tools` as
|
|
12
|
+
* a name list to keep a subset, same shape as `defineAgent({ tools })`.
|
|
13
|
+
* Pass `disallowedTools` to drop names. Files under
|
|
12
14
|
* `host-connections/` stay off the model.
|
|
13
15
|
*
|
|
14
16
|
* ```ts
|
|
@@ -42,6 +44,20 @@
|
|
|
42
44
|
* advertiseTools: true,
|
|
43
45
|
* effects: "read",
|
|
44
46
|
* });
|
|
47
|
+
*
|
|
48
|
+
* // named subset: advertise and call only these tools
|
|
49
|
+
* export default defineConnection({
|
|
50
|
+
* url: "https://mcp.example.com/inventory",
|
|
51
|
+
* advertiseTools: true,
|
|
52
|
+
* tools: ["search_skus", "get_stock"],
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* // drop a few tools from a large server
|
|
56
|
+
* export default defineConnection({
|
|
57
|
+
* url: "https://mcp.example.com/inventory",
|
|
58
|
+
* advertiseTools: true,
|
|
59
|
+
* disallowedTools: ["place_order", "delete_sku"],
|
|
60
|
+
* });
|
|
45
61
|
* ```
|
|
46
62
|
*
|
|
47
63
|
* A **Cursor account MCP connection** exposes the MCP connectors the operator
|
|
@@ -111,6 +127,6 @@
|
|
|
111
127
|
*/
|
|
112
128
|
import type { ConnectionConfig, ConnectionDefinition } from "./types.js";
|
|
113
129
|
export type { ConnectionConfig, ConnectionDefinition, ConnectionEffects, ConnectionTransport, HostMcpCallResult, HostMcpRegistry, HostMcpToolInfo, InlineStdioConnectionConfig, InlineStdioToolConfig, ToolEffect, } from "./types.js";
|
|
114
|
-
export { isInlineStdioConnection, isToolEffect, normalizeConnectionEffects, normalizeCursorAccountServers, } from "./types.js";
|
|
130
|
+
export { isInlineStdioConnection, isToolEffect, normalizeConnectionEffects, normalizeConnectionTools, normalizeCursorAccountServers, } from "./types.js";
|
|
115
131
|
export declare function defineConnection(config: ConnectionConfig): ConnectionDefinition;
|
|
116
132
|
//# sourceMappingURL=connections.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8HG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzE,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,oBAAoB,CAEtB"}
|
package/dist/connections.js
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* are available to the agent (SDK `mcpServers`), host (`ctx.host.mcp`),
|
|
9
9
|
* and channel/schedule handlers. Pass `advertiseTools: true` for named
|
|
10
10
|
* tools on local turns. Pass `effects: "read"` with `advertiseTools` to
|
|
11
|
-
* advertise only tools the server classifies as reads.
|
|
11
|
+
* advertise only tools the server classifies as reads. Pass `tools` as
|
|
12
|
+
* a name list to keep a subset, same shape as `defineAgent({ tools })`.
|
|
13
|
+
* Pass `disallowedTools` to drop names. Files under
|
|
12
14
|
* `host-connections/` stay off the model.
|
|
13
15
|
*
|
|
14
16
|
* ```ts
|
|
@@ -42,6 +44,20 @@
|
|
|
42
44
|
* advertiseTools: true,
|
|
43
45
|
* effects: "read",
|
|
44
46
|
* });
|
|
47
|
+
*
|
|
48
|
+
* // named subset: advertise and call only these tools
|
|
49
|
+
* export default defineConnection({
|
|
50
|
+
* url: "https://mcp.example.com/inventory",
|
|
51
|
+
* advertiseTools: true,
|
|
52
|
+
* tools: ["search_skus", "get_stock"],
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* // drop a few tools from a large server
|
|
56
|
+
* export default defineConnection({
|
|
57
|
+
* url: "https://mcp.example.com/inventory",
|
|
58
|
+
* advertiseTools: true,
|
|
59
|
+
* disallowedTools: ["place_order", "delete_sku"],
|
|
60
|
+
* });
|
|
45
61
|
* ```
|
|
46
62
|
*
|
|
47
63
|
* A **Cursor account MCP connection** exposes the MCP connectors the operator
|
|
@@ -110,7 +126,7 @@
|
|
|
110
126
|
* ```
|
|
111
127
|
*/
|
|
112
128
|
import { brandDefinition } from "./internal/brand.js";
|
|
113
|
-
export { isInlineStdioConnection, isToolEffect, normalizeConnectionEffects, normalizeCursorAccountServers, } from "./types.js";
|
|
129
|
+
export { isInlineStdioConnection, isToolEffect, normalizeConnectionEffects, normalizeConnectionTools, normalizeCursorAccountServers, } from "./types.js";
|
|
114
130
|
export function defineConnection(config) {
|
|
115
131
|
return brandDefinition("connection", config);
|
|
116
132
|
}
|
package/dist/docs/404.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/docs/assets/style.BRuM8477.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.BASO9Kih.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
14
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
15
15
|
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
</head>
|
|
19
19
|
<body>
|
|
20
20
|
<div id="app"></div>
|
|
21
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"mlVgqvSk\",\"building-with-agents.md\":\"CUSWxlP_\",\"concepts.md\":\"lwAgBIMI\",\"deployment.md\":\"MFPKqsqI\",\"evals.md\":\"CPzDAwoH\",\"guides_agent-to-agent.md\":\"BDb0t1QV\",\"guides_cloud-runtime.md\":\"CkYbjnAX\",\"guides_convert-automation.md\":\"B4sjlodG\",\"guides_github.md\":\"BtPr9GaP\",\"guides_human-in-the-loop.md\":\"By1G2T3_\",\"guides_mcp-oauth.md\":\"Dp6cDP7f\",\"guides_opentelemetry.md\":\"BVTXDCRg\",\"guides_slack.md\":\"9oHPye9o\",\"guides_webhooks.md\":\"DKdA43Qm\",\"hillclimbing.md\":\"CpTGTCle\",\"index.md\":\"Bb4k8kUm\",\"quickstart.md\":\"DdQOF7Y8\",\"reference_agent-config.md\":\"BHeYMgme\",\"reference_artifacts.md\":\"Dior32Qw\",\"reference_channels.md\":\"Cd2f2iyV\",\"reference_cli.md\":\"DfoeyvL0\",\"reference_connections.md\":\"
|
|
21
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"mlVgqvSk\",\"building-with-agents.md\":\"CUSWxlP_\",\"concepts.md\":\"lwAgBIMI\",\"deployment.md\":\"MFPKqsqI\",\"evals.md\":\"CPzDAwoH\",\"guides_agent-to-agent.md\":\"BDb0t1QV\",\"guides_cloud-runtime.md\":\"CkYbjnAX\",\"guides_convert-automation.md\":\"B4sjlodG\",\"guides_github.md\":\"BtPr9GaP\",\"guides_human-in-the-loop.md\":\"By1G2T3_\",\"guides_mcp-oauth.md\":\"Dp6cDP7f\",\"guides_opentelemetry.md\":\"BVTXDCRg\",\"guides_slack.md\":\"9oHPye9o\",\"guides_webhooks.md\":\"DKdA43Qm\",\"hillclimbing.md\":\"CpTGTCle\",\"index.md\":\"Bb4k8kUm\",\"quickstart.md\":\"DdQOF7Y8\",\"reference_agent-config.md\":\"BHeYMgme\",\"reference_artifacts.md\":\"Dior32Qw\",\"reference_channels.md\":\"Cd2f2iyV\",\"reference_cli.md\":\"DfoeyvL0\",\"reference_connections.md\":\"Di6jJAXF\",\"reference_hooks.md\":\"a8BJxMR5\",\"reference_http-api.md\":\"oySXBO8o\",\"reference_instructions.md\":\"CR7XSsGk\",\"reference_playground.md\":\"DnX5nL-B\",\"reference_project-layout.md\":\"Bv4KOtlB\",\"reference_prompt.md\":\"DnaD5dNK\",\"reference_schedules.md\":\"DI_JrHgq\",\"reference_sessions.md\":\"NxFP_CAC\",\"reference_skills.md\":\"BFW9retM\",\"reference_subagents.md\":\"CfsIloPm\",\"reference_tools.md\":\"CvAHsdSp\",\"scaffolding-agents.md\":\"em43xlY1\",\"skills_ab.md\":\"CsFNatVx\",\"skills_create-agent.md\":\"BVoWPcan\",\"skills_debug.md\":\"CDbPhHfg\",\"skills_evals.md\":\"723kpUmA\",\"skills_framework-map.md\":\"BTi817yv\",\"skills_github.md\":\"D0JahM8c\",\"skills_hillclimb.md\":\"B_zJerxA\",\"skills_index.md\":\"DKwIxzGg\",\"skills_mcp-auth.md\":\"DGvFP3HE\",\"skills_otel.md\":\"CgiZryR3\",\"skills_setup-slack.md\":\"BBgx8lUz\",\"storage.md\":\"BOHeqk2M\",\"templates_agentic-owners.md\":\"BZSH4N9z\",\"templates_agents-md.md\":\"CXSMZljE\",\"templates_code-wiki.md\":\"CDYZIBFN\",\"templates_demo.md\":\"BeQX9V3H\",\"templates_pr-autofixer.md\":\"x5zl6-GT\",\"templates_security-help.md\":\"C3Ny_Qr2\",\"templates_security-reviewer.md\":\"lshxbCLK\",\"templates_triage.md\":\"Co4UNzkZ\",\"troubleshooting.md\":\"Cus_YZga\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Agent SDK\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.1.101\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Templates\",\"link\":\"/templates/demo\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Convert a Cursor Automation\",\"link\":\"/guides/convert-automation\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Templates\",\"items\":[{\"text\":\"Demo agent\",\"link\":\"/templates/demo\"},{\"text\":\"Code wiki\",\"link\":\"/templates/code-wiki\"},{\"text\":\"Living AGENTS.md\",\"link\":\"/templates/agents-md\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Security help\",\"link\":\"/templates/security-help\"},{\"text\":\"Agentic Owners\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"PR autofixer\",\"link\":\"/templates/pr-autofixer\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Coding-agent skills\",\"collapsed\":true,\"items\":[{\"text\":\"Overview\",\"link\":\"/skills/\"},{\"text\":\"ab\",\"link\":\"/skills/ab\"},{\"text\":\"create-agent\",\"link\":\"/skills/create-agent\"},{\"text\":\"debug\",\"link\":\"/skills/debug\"},{\"text\":\"evals\",\"link\":\"/skills/evals\"},{\"text\":\"framework-map\",\"link\":\"/skills/framework-map\"},{\"text\":\"github\",\"link\":\"/skills/github\"},{\"text\":\"hillclimb\",\"link\":\"/skills/hillclimb\"},{\"text\":\"mcp-auth\",\"link\":\"/skills/mcp-auth\"},{\"text\":\"otel\",\"link\":\"/skills/otel\"},{\"text\":\"setup-slack\",\"link\":\"/skills/setup-slack\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Host MCP OAuth\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
22
22
|
|
|
23
23
|
</body>
|
|
24
24
|
</html>
|