@cursor/july 0.1.1
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/AGENTS.md +290 -0
- package/LICENSE.md +3 -0
- package/README.md +1233 -0
- package/dist/ab.d.ts +290 -0
- package/dist/ab.d.ts.map +1 -0
- package/dist/ab.js +386 -0
- package/dist/bin/agent-serve.d.ts +15 -0
- package/dist/bin/agent-serve.d.ts.map +1 -0
- package/dist/bin/agent-serve.js +754 -0
- package/dist/channels/github/api.d.ts +101 -0
- package/dist/channels/github/api.d.ts.map +1 -0
- package/dist/channels/github/api.js +229 -0
- package/dist/channels/github/auth.d.ts +67 -0
- package/dist/channels/github/auth.d.ts.map +1 -0
- package/dist/channels/github/auth.js +239 -0
- package/dist/channels/github/binding.d.ts +73 -0
- package/dist/channels/github/binding.d.ts.map +1 -0
- package/dist/channels/github/binding.js +114 -0
- package/dist/channels/github/defaults.d.ts +24 -0
- package/dist/channels/github/defaults.d.ts.map +1 -0
- package/dist/channels/github/defaults.js +100 -0
- package/dist/channels/github/events.d.ts +18 -0
- package/dist/channels/github/events.d.ts.map +1 -0
- package/dist/channels/github/events.js +59 -0
- package/dist/channels/github/forward.d.ts +137 -0
- package/dist/channels/github/forward.d.ts.map +1 -0
- package/dist/channels/github/forward.js +271 -0
- package/dist/channels/github/github-channel.d.ts +127 -0
- package/dist/channels/github/github-channel.d.ts.map +1 -0
- package/dist/channels/github/github-channel.js +1688 -0
- package/dist/channels/github/index.d.ts +52 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +51 -0
- package/dist/channels/github/replay.d.ts +115 -0
- package/dist/channels/github/replay.d.ts.map +1 -0
- package/dist/channels/github/replay.js +282 -0
- package/dist/channels/github/state.d.ts +26 -0
- package/dist/channels/github/state.d.ts.map +1 -0
- package/dist/channels/github/state.js +50 -0
- package/dist/channels/github/types.d.ts +385 -0
- package/dist/channels/github/types.d.ts.map +1 -0
- package/dist/channels/github/types.js +1 -0
- package/dist/channels/slack/api.d.ts +117 -0
- package/dist/channels/slack/api.d.ts.map +1 -0
- package/dist/channels/slack/api.js +437 -0
- package/dist/channels/slack/approvals.d.ts +32 -0
- package/dist/channels/slack/approvals.d.ts.map +1 -0
- package/dist/channels/slack/approvals.js +157 -0
- package/dist/channels/slack/assistant.d.ts +23 -0
- package/dist/channels/slack/assistant.d.ts.map +1 -0
- package/dist/channels/slack/assistant.js +67 -0
- package/dist/channels/slack/auth.d.ts +40 -0
- package/dist/channels/slack/auth.d.ts.map +1 -0
- package/dist/channels/slack/auth.js +71 -0
- package/dist/channels/slack/channel-watch.d.ts +46 -0
- package/dist/channels/slack/channel-watch.d.ts.map +1 -0
- package/dist/channels/slack/channel-watch.js +180 -0
- package/dist/channels/slack/constants.d.ts +17 -0
- package/dist/channels/slack/constants.d.ts.map +1 -0
- package/dist/channels/slack/constants.js +27 -0
- package/dist/channels/slack/credentials.d.ts +35 -0
- package/dist/channels/slack/credentials.d.ts.map +1 -0
- package/dist/channels/slack/credentials.js +88 -0
- package/dist/channels/slack/cursor-account.d.ts +76 -0
- package/dist/channels/slack/cursor-account.d.ts.map +1 -0
- package/dist/channels/slack/cursor-account.js +88 -0
- package/dist/channels/slack/defaults.d.ts +32 -0
- package/dist/channels/slack/defaults.d.ts.map +1 -0
- package/dist/channels/slack/defaults.js +380 -0
- package/dist/channels/slack/dispatch.d.ts +43 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -0
- package/dist/channels/slack/dispatch.js +185 -0
- package/dist/channels/slack/doctor.d.ts +24 -0
- package/dist/channels/slack/doctor.d.ts.map +1 -0
- package/dist/channels/slack/doctor.js +115 -0
- package/dist/channels/slack/event-id-dedupe.d.ts +10 -0
- package/dist/channels/slack/event-id-dedupe.d.ts.map +1 -0
- package/dist/channels/slack/event-id-dedupe.js +23 -0
- package/dist/channels/slack/inbound.d.ts +41 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -0
- package/dist/channels/slack/inbound.js +166 -0
- package/dist/channels/slack/index.d.ts +45 -0
- package/dist/channels/slack/index.d.ts.map +1 -0
- package/dist/channels/slack/index.js +44 -0
- package/dist/channels/slack/init.d.ts +32 -0
- package/dist/channels/slack/init.d.ts.map +1 -0
- package/dist/channels/slack/init.js +82 -0
- package/dist/channels/slack/interactive.d.ts +19 -0
- package/dist/channels/slack/interactive.d.ts.map +1 -0
- package/dist/channels/slack/interactive.js +142 -0
- package/dist/channels/slack/links.d.ts +10 -0
- package/dist/channels/slack/links.d.ts.map +1 -0
- package/dist/channels/slack/links.js +19 -0
- package/dist/channels/slack/live-delivery.d.ts +75 -0
- package/dist/channels/slack/live-delivery.d.ts.map +1 -0
- package/dist/channels/slack/live-delivery.js +143 -0
- package/dist/channels/slack/log.d.ts +25 -0
- package/dist/channels/slack/log.d.ts.map +1 -0
- package/dist/channels/slack/log.js +47 -0
- package/dist/channels/slack/manifest.d.ts +57 -0
- package/dist/channels/slack/manifest.d.ts.map +1 -0
- package/dist/channels/slack/manifest.js +110 -0
- package/dist/channels/slack/pr-ref.d.ts +18 -0
- package/dist/channels/slack/pr-ref.d.ts.map +1 -0
- package/dist/channels/slack/pr-ref.js +36 -0
- package/dist/channels/slack/setup.d.ts +14 -0
- package/dist/channels/slack/setup.d.ts.map +1 -0
- package/dist/channels/slack/setup.js +86 -0
- package/dist/channels/slack/slack-channel.d.ts +15 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -0
- package/dist/channels/slack/slack-channel.js +281 -0
- package/dist/channels/slack/socket-mode.d.ts +26 -0
- package/dist/channels/slack/socket-mode.d.ts.map +1 -0
- package/dist/channels/slack/socket-mode.js +116 -0
- package/dist/channels/slack/stream.d.ts +26 -0
- package/dist/channels/slack/stream.d.ts.map +1 -0
- package/dist/channels/slack/stream.js +39 -0
- package/dist/channels/slack/tool-approval-events.d.ts +33 -0
- package/dist/channels/slack/tool-approval-events.d.ts.map +1 -0
- package/dist/channels/slack/tool-approval-events.js +129 -0
- package/dist/channels/slack/types.d.ts +326 -0
- package/dist/channels/slack/types.d.ts.map +1 -0
- package/dist/channels/slack/types.js +4 -0
- package/dist/channels.d.ts +116 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +294 -0
- package/dist/connections.d.ts +75 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +75 -0
- package/dist/docs/404.html +22 -0
- package/dist/docs/ab.html +87 -0
- package/dist/docs/assets/ab.md.COdXkces.js +63 -0
- package/dist/docs/assets/ab.md.COdXkces.lean.js +1 -0
- package/dist/docs/assets/app.DqfFEmJd.js +1 -0
- package/dist/docs/assets/building-with-agents.md.CJCtZCyi.js +13 -0
- package/dist/docs/assets/building-with-agents.md.CJCtZCyi.lean.js +1 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.CcVk1uKq.js +1 -0
- package/dist/docs/assets/chunks/VPLocalSearchBox.BaLEdS15.js +9 -0
- package/dist/docs/assets/chunks/framework.CAZyNGu9.js +19 -0
- package/dist/docs/assets/chunks/theme.CZRvu_0q.js +2 -0
- package/dist/docs/assets/concepts.md.Cfb9b-k1.js +4 -0
- package/dist/docs/assets/concepts.md.Cfb9b-k1.lean.js +1 -0
- package/dist/docs/assets/deployment.md.Dx1TYNk5.js +14 -0
- package/dist/docs/assets/deployment.md.Dx1TYNk5.lean.js +1 -0
- package/dist/docs/assets/evals.md.DPZ_MAnI.js +85 -0
- package/dist/docs/assets/evals.md.DPZ_MAnI.lean.js +1 -0
- package/dist/docs/assets/guides_agent-to-agent.md.CrtrsySy.js +10 -0
- package/dist/docs/assets/guides_agent-to-agent.md.CrtrsySy.lean.js +1 -0
- package/dist/docs/assets/guides_cloud-runtime.md.CYlNMTNp.js +9 -0
- package/dist/docs/assets/guides_cloud-runtime.md.CYlNMTNp.lean.js +1 -0
- package/dist/docs/assets/guides_github.md.DwbKhCeS.js +20 -0
- package/dist/docs/assets/guides_github.md.DwbKhCeS.lean.js +1 -0
- package/dist/docs/assets/guides_human-in-the-loop.md.Dvuctx7s.js +28 -0
- package/dist/docs/assets/guides_human-in-the-loop.md.Dvuctx7s.lean.js +1 -0
- package/dist/docs/assets/guides_slack.md.bv41fHfW.js +37 -0
- package/dist/docs/assets/guides_slack.md.bv41fHfW.lean.js +1 -0
- package/dist/docs/assets/guides_webhooks.md.hFTik3lf.js +50 -0
- package/dist/docs/assets/guides_webhooks.md.hFTik3lf.lean.js +1 -0
- package/dist/docs/assets/hillclimbing.md.DHNast08.js +4 -0
- package/dist/docs/assets/hillclimbing.md.DHNast08.lean.js +1 -0
- package/dist/docs/assets/index.md.BPKcj5AI.js +20 -0
- package/dist/docs/assets/index.md.BPKcj5AI.lean.js +1 -0
- package/dist/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/dist/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/dist/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/dist/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/dist/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/dist/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/dist/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/dist/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/dist/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/dist/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/dist/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/dist/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/dist/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/dist/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/dist/docs/assets/quickstart.md.tVPiGK_L.js +35 -0
- package/dist/docs/assets/quickstart.md.tVPiGK_L.lean.js +1 -0
- package/dist/docs/assets/reference_agent-config.md.Bpd7HQwf.js +34 -0
- package/dist/docs/assets/reference_agent-config.md.Bpd7HQwf.lean.js +1 -0
- package/dist/docs/assets/reference_channels.md.D7JTR03W.js +53 -0
- package/dist/docs/assets/reference_channels.md.D7JTR03W.lean.js +1 -0
- package/dist/docs/assets/reference_cli.md.DA730zCu.js +33 -0
- package/dist/docs/assets/reference_cli.md.DA730zCu.lean.js +1 -0
- package/dist/docs/assets/reference_connections.md.C3vNH_DE.js +26 -0
- package/dist/docs/assets/reference_connections.md.C3vNH_DE.lean.js +1 -0
- package/dist/docs/assets/reference_hooks.md.BCEc3MyM.js +12 -0
- package/dist/docs/assets/reference_hooks.md.BCEc3MyM.lean.js +1 -0
- package/dist/docs/assets/reference_http-api.md.DBAahtdz.js +11 -0
- package/dist/docs/assets/reference_http-api.md.DBAahtdz.lean.js +1 -0
- package/dist/docs/assets/reference_instructions.md.BC05LEQ8.js +12 -0
- package/dist/docs/assets/reference_instructions.md.BC05LEQ8.lean.js +1 -0
- package/dist/docs/assets/reference_playground.md.CPZhfYaO.js +1 -0
- package/dist/docs/assets/reference_playground.md.CPZhfYaO.lean.js +1 -0
- package/dist/docs/assets/reference_project-layout.md.Bd_CKtNS.js +31 -0
- package/dist/docs/assets/reference_project-layout.md.Bd_CKtNS.lean.js +1 -0
- package/dist/docs/assets/reference_schedules.md.D7qijxLk.js +82 -0
- package/dist/docs/assets/reference_schedules.md.D7qijxLk.lean.js +1 -0
- package/dist/docs/assets/reference_sessions.md.DdjWabnN.js +8 -0
- package/dist/docs/assets/reference_sessions.md.DdjWabnN.lean.js +1 -0
- package/dist/docs/assets/reference_skills.md.VQnlBT3Q.js +15 -0
- package/dist/docs/assets/reference_skills.md.VQnlBT3Q.lean.js +1 -0
- package/dist/docs/assets/reference_subagents.md.CIRAVcPK.js +10 -0
- package/dist/docs/assets/reference_subagents.md.CIRAVcPK.lean.js +1 -0
- package/dist/docs/assets/reference_tools.md.DF5kwlt0.js +46 -0
- package/dist/docs/assets/reference_tools.md.DF5kwlt0.lean.js +1 -0
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.js +1 -0
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.lean.js +1 -0
- package/dist/docs/assets/style.Bj-IXa5W.css +1 -0
- package/dist/docs/assets/troubleshooting.md.DkovjS7h.js +1 -0
- package/dist/docs/assets/troubleshooting.md.DkovjS7h.lean.js +1 -0
- package/dist/docs/building-with-agents.html +37 -0
- package/dist/docs/concepts.html +28 -0
- package/dist/docs/deployment.html +38 -0
- package/dist/docs/evals.html +109 -0
- package/dist/docs/guides/agent-to-agent.html +34 -0
- package/dist/docs/guides/cloud-runtime.html +33 -0
- package/dist/docs/guides/github.html +44 -0
- package/dist/docs/guides/human-in-the-loop.html +52 -0
- package/dist/docs/guides/slack.html +61 -0
- package/dist/docs/guides/webhooks.html +74 -0
- package/dist/docs/hashmap.json +1 -0
- package/dist/docs/hillclimbing.html +28 -0
- package/dist/docs/index.html +44 -0
- package/dist/docs/quickstart.html +59 -0
- package/dist/docs/reference/agent-config.html +58 -0
- package/dist/docs/reference/channels.html +77 -0
- package/dist/docs/reference/cli.html +57 -0
- package/dist/docs/reference/connections.html +50 -0
- package/dist/docs/reference/hooks.html +36 -0
- package/dist/docs/reference/http-api.html +35 -0
- package/dist/docs/reference/instructions.html +36 -0
- package/dist/docs/reference/playground.html +25 -0
- package/dist/docs/reference/project-layout.html +55 -0
- package/dist/docs/reference/schedules.html +106 -0
- package/dist/docs/reference/sessions.html +32 -0
- package/dist/docs/reference/skills.html +39 -0
- package/dist/docs/reference/subagents.html +34 -0
- package/dist/docs/reference/tools.html +70 -0
- package/dist/docs/scaffolding-agents.html +25 -0
- package/dist/docs/troubleshooting.html +25 -0
- package/dist/docs/vp-icons.css +0 -0
- package/dist/evals.d.ts +312 -0
- package/dist/evals.d.ts.map +1 -0
- package/dist/evals.js +254 -0
- package/dist/hooks.d.ts +23 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +23 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +101 -0
- package/dist/internal/ab-collector.d.ts +42 -0
- package/dist/internal/ab-collector.d.ts.map +1 -0
- package/dist/internal/ab-collector.js +153 -0
- package/dist/internal/ab-fold.d.ts +36 -0
- package/dist/internal/ab-fold.d.ts.map +1 -0
- package/dist/internal/ab-fold.js +171 -0
- package/dist/internal/ab-snapshot.d.ts +70 -0
- package/dist/internal/ab-snapshot.d.ts.map +1 -0
- package/dist/internal/ab-snapshot.js +208 -0
- package/dist/internal/approval-gate.d.ts +34 -0
- package/dist/internal/approval-gate.d.ts.map +1 -0
- package/dist/internal/approval-gate.js +85 -0
- package/dist/internal/auth.d.ts +8 -0
- package/dist/internal/auth.d.ts.map +1 -0
- package/dist/internal/auth.js +27 -0
- package/dist/internal/authored-alias-hooks.d.ts +31 -0
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -0
- package/dist/internal/authored-alias-hooks.js +43 -0
- package/dist/internal/authored-loaders.d.ts +25 -0
- package/dist/internal/authored-loaders.d.ts.map +1 -0
- package/dist/internal/authored-loaders.js +129 -0
- package/dist/internal/bounded-int.d.ts +11 -0
- package/dist/internal/bounded-int.d.ts.map +1 -0
- package/dist/internal/bounded-int.js +13 -0
- package/dist/internal/brand.d.ts +6 -0
- package/dist/internal/brand.d.ts.map +1 -0
- package/dist/internal/brand.js +17 -0
- package/dist/internal/chat-client.d.ts +19 -0
- package/dist/internal/chat-client.d.ts.map +1 -0
- package/dist/internal/chat-client.js +327 -0
- package/dist/internal/cli-ax.d.ts +58 -0
- package/dist/internal/cli-ax.d.ts.map +1 -0
- package/dist/internal/cli-ax.js +345 -0
- package/dist/internal/cli-cursor.d.ts +20 -0
- package/dist/internal/cli-cursor.d.ts.map +1 -0
- package/dist/internal/cli-cursor.js +227 -0
- package/dist/internal/cli-github.d.ts +47 -0
- package/dist/internal/cli-github.d.ts.map +1 -0
- package/dist/internal/cli-github.js +644 -0
- package/dist/internal/cli-slack.d.ts +18 -0
- package/dist/internal/cli-slack.d.ts.map +1 -0
- package/dist/internal/cli-slack.js +144 -0
- package/dist/internal/cloud-merge.d.ts +23 -0
- package/dist/internal/cloud-merge.d.ts.map +1 -0
- package/dist/internal/cloud-merge.js +28 -0
- package/dist/internal/cron.d.ts +17 -0
- package/dist/internal/cron.d.ts.map +1 -0
- package/dist/internal/cron.js +60 -0
- package/dist/internal/cursor/account-mcp.d.ts +95 -0
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -0
- package/dist/internal/cursor/account-mcp.js +342 -0
- package/dist/internal/cursor/backend-client.d.ts +118 -0
- package/dist/internal/cursor/backend-client.d.ts.map +1 -0
- package/dist/internal/cursor/backend-client.js +477 -0
- package/dist/internal/cursor/credentials.d.ts +112 -0
- package/dist/internal/cursor/credentials.d.ts.map +1 -0
- package/dist/internal/cursor/credentials.js +329 -0
- package/dist/internal/cursor-event-relay.d.ts +111 -0
- package/dist/internal/cursor-event-relay.d.ts.map +1 -0
- package/dist/internal/cursor-event-relay.js +181 -0
- package/dist/internal/cursor-relay-core.d.ts +113 -0
- package/dist/internal/cursor-relay-core.d.ts.map +1 -0
- package/dist/internal/cursor-relay-core.js +364 -0
- package/dist/internal/cursor-slack-relay.d.ts +94 -0
- package/dist/internal/cursor-slack-relay.d.ts.map +1 -0
- package/dist/internal/cursor-slack-relay.js +171 -0
- package/dist/internal/describe-error.d.ts +3 -0
- package/dist/internal/describe-error.d.ts.map +1 -0
- package/dist/internal/describe-error.js +4 -0
- package/dist/internal/dev-mode.d.ts +13 -0
- package/dist/internal/dev-mode.d.ts.map +1 -0
- package/dist/internal/dev-mode.js +17 -0
- package/dist/internal/discovery.d.ts +55 -0
- package/dist/internal/discovery.d.ts.map +1 -0
- package/dist/internal/discovery.js +1427 -0
- package/dist/internal/distribution.d.ts +47 -0
- package/dist/internal/distribution.d.ts.map +1 -0
- package/dist/internal/distribution.js +82 -0
- package/dist/internal/docs-site.d.ts +28 -0
- package/dist/internal/docs-site.d.ts.map +1 -0
- package/dist/internal/docs-site.js +169 -0
- package/dist/internal/duration.d.ts +8 -0
- package/dist/internal/duration.d.ts.map +1 -0
- package/dist/internal/duration.js +35 -0
- package/dist/internal/eval-run-store.d.ts +81 -0
- package/dist/internal/eval-run-store.d.ts.map +1 -0
- package/dist/internal/eval-run-store.js +396 -0
- package/dist/internal/eval-runner.d.ts +76 -0
- package/dist/internal/eval-runner.d.ts.map +1 -0
- package/dist/internal/eval-runner.js +336 -0
- package/dist/internal/event-log.d.ts +51 -0
- package/dist/internal/event-log.d.ts.map +1 -0
- package/dist/internal/event-log.js +167 -0
- package/dist/internal/event-mapper.d.ts +46 -0
- package/dist/internal/event-mapper.d.ts.map +1 -0
- package/dist/internal/event-mapper.js +226 -0
- package/dist/internal/frontmatter.d.ts +12 -0
- package/dist/internal/frontmatter.d.ts.map +1 -0
- package/dist/internal/frontmatter.js +61 -0
- package/dist/internal/github-fanout.d.ts +32 -0
- package/dist/internal/github-fanout.d.ts.map +1 -0
- package/dist/internal/github-fanout.js +122 -0
- package/dist/internal/handleAgentServeTrigger.d.ts +59 -0
- package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -0
- package/dist/internal/handleAgentServeTrigger.js +115 -0
- package/dist/internal/host-platforms.d.ts +40 -0
- package/dist/internal/host-platforms.d.ts.map +1 -0
- package/dist/internal/host-platforms.js +113 -0
- package/dist/internal/http-channel.d.ts +54 -0
- package/dist/internal/http-channel.d.ts.map +1 -0
- package/dist/internal/http-channel.js +382 -0
- package/dist/internal/ids.d.ts +19 -0
- package/dist/internal/ids.d.ts.map +1 -0
- package/dist/internal/ids.js +34 -0
- package/dist/internal/init-project.d.ts +22 -0
- package/dist/internal/init-project.d.ts.map +1 -0
- package/dist/internal/init-project.js +125 -0
- package/dist/internal/json-dir-store.d.ts +32 -0
- package/dist/internal/json-dir-store.d.ts.map +1 -0
- package/dist/internal/json-dir-store.js +100 -0
- package/dist/internal/json-schema.d.ts +18 -0
- package/dist/internal/json-schema.d.ts.map +1 -0
- package/dist/internal/json-schema.js +53 -0
- package/dist/internal/log-ring.d.ts +23 -0
- package/dist/internal/log-ring.d.ts.map +1 -0
- package/dist/internal/log-ring.js +42 -0
- package/dist/internal/map-pool.d.ts +6 -0
- package/dist/internal/map-pool.d.ts.map +1 -0
- package/dist/internal/map-pool.js +41 -0
- package/dist/internal/mcp-endpoint.d.ts +59 -0
- package/dist/internal/mcp-endpoint.d.ts.map +1 -0
- package/dist/internal/mcp-endpoint.js +355 -0
- package/dist/internal/mcp-host.d.ts +28 -0
- package/dist/internal/mcp-host.d.ts.map +1 -0
- package/dist/internal/mcp-host.js +162 -0
- package/dist/internal/net.d.ts +5 -0
- package/dist/internal/net.d.ts.map +1 -0
- package/dist/internal/net.js +30 -0
- package/dist/internal/peer-connections.d.ts +44 -0
- package/dist/internal/peer-connections.d.ts.map +1 -0
- package/dist/internal/peer-connections.js +67 -0
- package/dist/internal/playground/static.d.ts +35 -0
- package/dist/internal/playground/static.d.ts.map +1 -0
- package/dist/internal/playground/static.js +162 -0
- package/dist/internal/playground/toolchain.d.ts +57 -0
- package/dist/internal/playground/toolchain.d.ts.map +1 -0
- package/dist/internal/playground/toolchain.js +226 -0
- package/dist/internal/reminder-runner.d.ts +62 -0
- package/dist/internal/reminder-runner.d.ts.map +1 -0
- package/dist/internal/reminder-runner.js +582 -0
- package/dist/internal/reminder-schedule.d.ts +22 -0
- package/dist/internal/reminder-schedule.d.ts.map +1 -0
- package/dist/internal/reminder-schedule.js +82 -0
- package/dist/internal/reminder-store.d.ts +58 -0
- package/dist/internal/reminder-store.d.ts.map +1 -0
- package/dist/internal/reminder-store.js +106 -0
- package/dist/internal/resolved-connections.d.ts +41 -0
- package/dist/internal/resolved-connections.d.ts.map +1 -0
- package/dist/internal/resolved-connections.js +73 -0
- package/dist/internal/review-comments.d.ts +50 -0
- package/dist/internal/review-comments.d.ts.map +1 -0
- package/dist/internal/review-comments.js +194 -0
- package/dist/internal/router.d.ts +33 -0
- package/dist/internal/router.d.ts.map +1 -0
- package/dist/internal/router.js +93 -0
- package/dist/internal/run-client.d.ts +49 -0
- package/dist/internal/run-client.d.ts.map +1 -0
- package/dist/internal/run-client.js +208 -0
- package/dist/internal/schedule-runner.d.ts +31 -0
- package/dist/internal/schedule-runner.d.ts.map +1 -0
- package/dist/internal/schedule-runner.js +126 -0
- package/dist/internal/sdk-runner.d.ts +41 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -0
- package/dist/internal/sdk-runner.js +221 -0
- package/dist/internal/server.d.ts +25 -0
- package/dist/internal/server.d.ts.map +1 -0
- package/dist/internal/server.js +1374 -0
- package/dist/internal/session-engine.d.ts +287 -0
- package/dist/internal/session-engine.d.ts.map +1 -0
- package/dist/internal/session-engine.js +1377 -0
- package/dist/internal/session-store.d.ts +29 -0
- package/dist/internal/session-store.d.ts.map +1 -0
- package/dist/internal/session-store.js +140 -0
- package/dist/internal/session-urls.d.ts +10 -0
- package/dist/internal/session-urls.d.ts.map +1 -0
- package/dist/internal/session-urls.js +25 -0
- package/dist/internal/stream-progress.d.ts +14 -0
- package/dist/internal/stream-progress.d.ts.map +1 -0
- package/dist/internal/stream-progress.js +195 -0
- package/dist/internal/tool-result.d.ts +20 -0
- package/dist/internal/tool-result.d.ts.map +1 -0
- package/dist/internal/tool-result.js +45 -0
- package/dist/internal/trajectory.d.ts +56 -0
- package/dist/internal/trajectory.d.ts.map +1 -0
- package/dist/internal/trajectory.js +248 -0
- package/dist/internal/workspace.d.ts +42 -0
- package/dist/internal/workspace.d.ts.map +1 -0
- package/dist/internal/workspace.js +199 -0
- package/dist/playground/assets/cursor-icons-outline-oY2V_mvK.woff2 +0 -0
- package/dist/playground/assets/index-1K-hG-7p.css +1 -0
- package/dist/playground/assets/index-FlWjhg3x.js +79 -0
- package/dist/playground/index.html +17 -0
- package/dist/reminders.d.ts +23 -0
- package/dist/reminders.d.ts.map +1 -0
- package/dist/reminders.js +22 -0
- package/dist/schedules.d.ts +23 -0
- package/dist/schedules.d.ts.map +1 -0
- package/dist/schedules.js +26 -0
- package/dist/skills.d.ts +22 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +22 -0
- package/dist/tools.d.ts +92 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +68 -0
- package/dist/types.d.ts +1609 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +80 -0
- package/docs/README.md +174 -0
- package/docs/ab.md +355 -0
- package/docs/building-with-agents.md +129 -0
- package/docs/concepts.md +177 -0
- package/docs/deployment.md +218 -0
- package/docs/evals.md +383 -0
- package/docs/guides/agent-to-agent.md +118 -0
- package/docs/guides/cloud-runtime.md +122 -0
- package/docs/guides/github.md +172 -0
- package/docs/guides/human-in-the-loop.md +131 -0
- package/docs/guides/slack.md +245 -0
- package/docs/guides/webhooks.md +201 -0
- package/docs/hillclimbing.md +93 -0
- package/docs/quickstart.md +183 -0
- package/docs/reference/agent-config.md +154 -0
- package/docs/reference/channels.md +206 -0
- package/docs/reference/cli.md +257 -0
- package/docs/reference/connections.md +137 -0
- package/docs/reference/hooks.md +74 -0
- package/docs/reference/http-api.md +219 -0
- package/docs/reference/instructions.md +77 -0
- package/docs/reference/playground.md +67 -0
- package/docs/reference/project-layout.md +119 -0
- package/docs/reference/schedules.md +220 -0
- package/docs/reference/sessions.md +165 -0
- package/docs/reference/skills.md +79 -0
- package/docs/reference/subagents.md +74 -0
- package/docs/reference/tools.md +203 -0
- package/docs/scaffolding-agents.md +113 -0
- package/docs/troubleshooting.md +95 -0
- package/package.json +185 -0
- package/skills/ab/SKILL.md +139 -0
- package/skills/create-agent/SKILL.md +219 -0
- package/skills/debug/SKILL.md +71 -0
- package/skills/evals/SKILL.md +217 -0
- package/skills/framework-map/SKILL.md +142 -0
- package/skills/github/SKILL.md +144 -0
- package/skills/hillclimb/SKILL.md +162 -0
- package/skills/setup-slack/SKILL.md +180 -0
- package/src/ab.ts +675 -0
- package/src/bin/agent-serve.ts +949 -0
- package/src/channels/github/api.ts +374 -0
- package/src/channels/github/auth.ts +275 -0
- package/src/channels/github/binding.ts +223 -0
- package/src/channels/github/defaults.ts +111 -0
- package/src/channels/github/events.ts +72 -0
- package/src/channels/github/forward.ts +381 -0
- package/src/channels/github/github-channel.ts +2270 -0
- package/src/channels/github/index.ts +52 -0
- package/src/channels/github/replay.ts +387 -0
- package/src/channels/github/state.ts +95 -0
- package/src/channels/github/types.ts +490 -0
- package/src/channels/slack/api.ts +580 -0
- package/src/channels/slack/approvals.ts +198 -0
- package/src/channels/slack/assistant.ts +76 -0
- package/src/channels/slack/auth.ts +112 -0
- package/src/channels/slack/channel-watch.ts +219 -0
- package/src/channels/slack/constants.ts +30 -0
- package/src/channels/slack/credentials.ts +90 -0
- package/src/channels/slack/cursor-account.ts +166 -0
- package/src/channels/slack/defaults.ts +450 -0
- package/src/channels/slack/dispatch.ts +293 -0
- package/src/channels/slack/doctor.ts +135 -0
- package/src/channels/slack/event-id-dedupe.ts +30 -0
- package/src/channels/slack/inbound.ts +219 -0
- package/src/channels/slack/index.ts +45 -0
- package/src/channels/slack/init.ts +133 -0
- package/src/channels/slack/interactive.ts +194 -0
- package/src/channels/slack/links.ts +23 -0
- package/src/channels/slack/live-delivery.ts +201 -0
- package/src/channels/slack/log.ts +83 -0
- package/src/channels/slack/manifest.ts +179 -0
- package/src/channels/slack/pr-ref.ts +50 -0
- package/src/channels/slack/setup.ts +97 -0
- package/src/channels/slack/slack-channel.ts +374 -0
- package/src/channels/slack/socket-mode.ts +154 -0
- package/src/channels/slack/stream.ts +63 -0
- package/src/channels/slack/tool-approval-events.ts +136 -0
- package/src/channels/slack/types.ts +349 -0
- package/src/channels.ts +385 -0
- package/src/connections.ts +89 -0
- package/src/evals.ts +501 -0
- package/src/hooks.ts +33 -0
- package/src/index.ts +184 -0
- package/src/internal/ab-collector.ts +210 -0
- package/src/internal/ab-fold.ts +228 -0
- package/src/internal/ab-snapshot.ts +335 -0
- package/src/internal/approval-gate.ts +115 -0
- package/src/internal/auth.ts +39 -0
- package/src/internal/authored-alias-hooks.ts +69 -0
- package/src/internal/authored-loaders.ts +138 -0
- package/src/internal/bounded-int.ts +27 -0
- package/src/internal/brand.ts +29 -0
- package/src/internal/chat-client.ts +407 -0
- package/src/internal/cli-ax.ts +474 -0
- package/src/internal/cli-cursor.ts +275 -0
- package/src/internal/cli-github.ts +849 -0
- package/src/internal/cli-slack.ts +175 -0
- package/src/internal/cloud-merge.ts +41 -0
- package/src/internal/cron.ts +78 -0
- package/src/internal/cursor/account-mcp.ts +472 -0
- package/src/internal/cursor/backend-client.ts +614 -0
- package/src/internal/cursor/credentials.ts +401 -0
- package/src/internal/cursor-event-relay.ts +281 -0
- package/src/internal/cursor-relay-core.ts +444 -0
- package/src/internal/cursor-slack-relay.ts +242 -0
- package/src/internal/describe-error.ts +4 -0
- package/src/internal/dev-mode.ts +20 -0
- package/src/internal/discovery.ts +1709 -0
- package/src/internal/distribution.ts +97 -0
- package/src/internal/docs-site.ts +191 -0
- package/src/internal/duration.ts +39 -0
- package/src/internal/eval-run-store.ts +519 -0
- package/src/internal/eval-runner.ts +522 -0
- package/src/internal/event-log.ts +175 -0
- package/src/internal/event-mapper.ts +272 -0
- package/src/internal/frontmatter.ts +77 -0
- package/src/internal/github-fanout.ts +159 -0
- package/src/internal/handleAgentServeTrigger.ts +156 -0
- package/src/internal/host-platforms.ts +144 -0
- package/src/internal/http-channel.ts +546 -0
- package/src/internal/ids.ts +44 -0
- package/src/internal/init-project.ts +165 -0
- package/src/internal/json-dir-store.ts +109 -0
- package/src/internal/json-schema.ts +69 -0
- package/src/internal/log-ring.ts +59 -0
- package/src/internal/map-pool.ts +32 -0
- package/src/internal/mcp-endpoint.ts +518 -0
- package/src/internal/mcp-host.ts +211 -0
- package/src/internal/net.ts +31 -0
- package/src/internal/peer-connections.ts +100 -0
- package/src/internal/playground/static.ts +189 -0
- package/src/internal/playground/toolchain.ts +277 -0
- package/src/internal/reminder-runner.ts +756 -0
- package/src/internal/reminder-schedule.ts +106 -0
- package/src/internal/reminder-store.ts +145 -0
- package/src/internal/resolved-connections.ts +145 -0
- package/src/internal/review-comments.ts +268 -0
- package/src/internal/router.ts +145 -0
- package/src/internal/run-client.ts +320 -0
- package/src/internal/schedule-runner.ts +161 -0
- package/src/internal/sdk-runner.ts +315 -0
- package/src/internal/server.ts +1737 -0
- package/src/internal/session-engine.ts +1810 -0
- package/src/internal/session-store.ts +147 -0
- package/src/internal/session-urls.ts +40 -0
- package/src/internal/stream-progress.ts +254 -0
- package/src/internal/tool-result.ts +54 -0
- package/src/internal/trajectory.ts +306 -0
- package/src/internal/workspace.ts +223 -0
- package/src/reminders.ts +35 -0
- package/src/schedules.ts +37 -0
- package/src/skills.ts +27 -0
- package/src/tools.ts +127 -0
- package/src/types.ts +1848 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `defineChannel` and the built-in HTTP channel — authored at
|
|
3
|
+
* `agent/channels/<name>.ts`.
|
|
4
|
+
*
|
|
5
|
+
* A channel is the surface an agent lives on. The built-in HTTP channel
|
|
6
|
+
* (session create / follow-up / NDJSON stream routes under `/v1/session*`)
|
|
7
|
+
* is always mounted; author `agent/channels/http.ts` with `httpChannel()`
|
|
8
|
+
* only to override its defaults. Custom channels declare their own routes
|
|
9
|
+
* and are mounted under `/v1/channels/<name>`:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { defineChannel, POST } from "@anysphere/agent-serve/channels";
|
|
13
|
+
* import { z } from "zod";
|
|
14
|
+
*
|
|
15
|
+
* export default defineChannel({
|
|
16
|
+
* routes: [
|
|
17
|
+
* POST("/message", {
|
|
18
|
+
* bodySchema: z.object({
|
|
19
|
+
* message: z.string(),
|
|
20
|
+
* token: z.string().optional(),
|
|
21
|
+
* }),
|
|
22
|
+
* handler: async (_req, { send, body }) => {
|
|
23
|
+
* const { message, token } = body as {
|
|
24
|
+
* message: string;
|
|
25
|
+
* token?: string;
|
|
26
|
+
* };
|
|
27
|
+
* const session = await send(message, {
|
|
28
|
+
* continuationToken: token,
|
|
29
|
+
* });
|
|
30
|
+
* return Response.json({ sessionId: session.id });
|
|
31
|
+
* },
|
|
32
|
+
* }),
|
|
33
|
+
* ],
|
|
34
|
+
* events: {
|
|
35
|
+
* "message.completed"(event, channel, ctx) {
|
|
36
|
+
* // deliver completed messages back to the surface that owns this
|
|
37
|
+
* // channel (post to a webhook, reply in a thread, ...)
|
|
38
|
+
* },
|
|
39
|
+
* },
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* Route helpers are typed so HTTP channels must declare **Zod** schemas at
|
|
44
|
+
* compile time: `GET` requires `querySchema`, `POST`/`PUT`/`PATCH` require
|
|
45
|
+
* `bodySchema`. Plain JSON Schema objects will not type-check. Use
|
|
46
|
+
* `z.object({})` / `z.unknown()` when the surface is intentionally open.
|
|
47
|
+
* Handlers receive `args.body` / `args.query` inferred from those schemas.
|
|
48
|
+
*/
|
|
49
|
+
import type { AuthContext, AuthPolicy, ChannelBodyRouteSpec, ChannelConfig, ChannelDefinition, ChannelDeleteRouteSpec, ChannelGetRouteSpec, ChannelRoute, ChannelRouteSchema, HttpChannelConfig, HttpChannelDefinition, JsonValue } from "./types.js";
|
|
50
|
+
export type { AuthContext, AuthPolicy, ChannelBodyRouteSpec, ChannelConfig, ChannelDefinition, ChannelDeleteRouteSpec, ChannelEventContext, ChannelEventHandler, ChannelEventHandlers, ChannelGetRouteSpec, ChannelHandlerArgs, ChannelHandlerArgsWithBody, ChannelHandlerArgsWithBodyAndQuery, ChannelHandlerArgsWithQuery, ChannelRoute, ChannelRouteHandler, ChannelRouteSchema, ChannelRouteSpec, ChannelSession, ChannelStartArgs, HttpChannelConfig, HttpChannelDefinition, ReceiveInput, RouteMethod, SendMessageFn, SendMessageOptions, } from "./types.js";
|
|
51
|
+
/** Define a custom channel. */
|
|
52
|
+
export declare function defineChannel<TState = JsonValue>(config: ChannelConfig<TState>): ChannelDefinition<TState>;
|
|
53
|
+
/**
|
|
54
|
+
* Configure the built-in HTTP session channel. Only meaningful as the
|
|
55
|
+
* default export of `agent/channels/http.ts`.
|
|
56
|
+
*/
|
|
57
|
+
export declare function httpChannel(config?: HttpChannelConfig): HttpChannelDefinition;
|
|
58
|
+
/** GET — Zod `querySchema` is required (use `z.object({})` when unused). */
|
|
59
|
+
export declare function GET<TQuery extends ChannelRouteSchema>(path: string, spec: ChannelGetRouteSpec<TQuery>): ChannelRoute;
|
|
60
|
+
/** POST — Zod `bodySchema` is required. */
|
|
61
|
+
export declare function POST<TBody extends ChannelRouteSchema, TQuery extends ChannelRouteSchema | undefined = undefined>(path: string, spec: ChannelBodyRouteSpec<TBody, TQuery>): ChannelRoute;
|
|
62
|
+
/** PUT — Zod `bodySchema` is required. */
|
|
63
|
+
export declare function PUT<TBody extends ChannelRouteSchema, TQuery extends ChannelRouteSchema | undefined = undefined>(path: string, spec: ChannelBodyRouteSpec<TBody, TQuery>): ChannelRoute;
|
|
64
|
+
/** PATCH — Zod `bodySchema` is required. */
|
|
65
|
+
export declare function PATCH<TBody extends ChannelRouteSchema, TQuery extends ChannelRouteSchema | undefined = undefined>(path: string, spec: ChannelBodyRouteSpec<TBody, TQuery>): ChannelRoute;
|
|
66
|
+
/** DELETE — Zod schemas optional. */
|
|
67
|
+
export declare function DELETE<TBody extends ChannelRouteSchema | undefined = undefined, TQuery extends ChannelRouteSchema | undefined = undefined>(path: string, spec: ChannelDeleteRouteSpec<TBody, TQuery>): ChannelRoute;
|
|
68
|
+
/**
|
|
69
|
+
* Admit requests that arrive over the loopback interface with no proxy
|
|
70
|
+
* forwarding headers. The default route policy: local tooling works out of
|
|
71
|
+
* the box while remote (or reverse-proxied) callers are rejected until you
|
|
72
|
+
* wire real auth (e.g. {@link bearerAuth}).
|
|
73
|
+
*
|
|
74
|
+
* Requests carrying `X-Forwarded-For`, `X-Real-IP`, `Forwarded`, or
|
|
75
|
+
* `X-Forwarded-Host` are denied even when the TCP peer is 127.0.0.1 — that
|
|
76
|
+
* pattern is how tunnels and same-host reverse proxies re-expose loopback.
|
|
77
|
+
*/
|
|
78
|
+
export declare function localDev(): AuthPolicy;
|
|
79
|
+
/**
|
|
80
|
+
* Like {@link localDev} but also requires the request URL hostname to be
|
|
81
|
+
* loopback. Rejects DNS-rebinding callers that reach 127.0.0.1 with a remote
|
|
82
|
+
* `Host` header (e.g. attacker.example after rebinding to localhost).
|
|
83
|
+
*/
|
|
84
|
+
export declare function localDevStrict(): AuthPolicy;
|
|
85
|
+
/**
|
|
86
|
+
* Admit requests whose TCP peer is loopback, ignoring `Host` and
|
|
87
|
+
* proxy-forwarding headers. The peer address (`req.socket.remoteAddress`) is
|
|
88
|
+
* the real boundary: a loopback-bound server only accepts local processes, and
|
|
89
|
+
* a LAN caller's peer IP is non-loopback and rejected. Unlike {@link localDev},
|
|
90
|
+
* this does not veto on `X-Forwarded-*` headers — so it admits loopback clients
|
|
91
|
+
* that legitimately relay them, e.g. `gh webhook forward`, which forwards
|
|
92
|
+
* GitHub's edge `X-Forwarded-For` / `X-Real-Ip`. Intended for dev-only relaxed
|
|
93
|
+
* auth where remote exposure is still refused.
|
|
94
|
+
*/
|
|
95
|
+
export declare function loopbackOnly(): AuthPolicy;
|
|
96
|
+
/**
|
|
97
|
+
* Dev-only GitHub channel auth without a webhook secret: loopback peer
|
|
98
|
+
* required. Plain local fixtures (no proxy headers) are admitted; deliveries
|
|
99
|
+
* relayed through `gh webhook forward` carry GitHub's `X-Forwarded-*` headers
|
|
100
|
+
* and are admitted only when `X-GitHub-Event` is present (GitHub deliveries
|
|
101
|
+
* always include it). Loopback tunnels that relay arbitrary remote traffic
|
|
102
|
+
* without those delivery headers stay rejected.
|
|
103
|
+
*/
|
|
104
|
+
export declare function loopbackGitHubDev(): AuthPolicy;
|
|
105
|
+
/**
|
|
106
|
+
* Admit requests carrying `Authorization: Bearer <token>`. Pass the expected
|
|
107
|
+
* token (compared in constant time) or a verifier that maps a presented
|
|
108
|
+
* token to an {@link AuthContext}.
|
|
109
|
+
*/
|
|
110
|
+
export declare function bearerAuth(tokenOrVerify: string | ((token: string) => AuthContext | null | Promise<AuthContext | null>)): AuthPolicy;
|
|
111
|
+
/**
|
|
112
|
+
* Admit every request as an anonymous principal. Only for surfaces that are
|
|
113
|
+
* intentionally public or protected upstream.
|
|
114
|
+
*/
|
|
115
|
+
export declare function allowAll(): AuthPolicy;
|
|
116
|
+
//# sourceMappingURL=channels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"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"}
|
package/dist/channels.js
ADDED
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `defineChannel` and the built-in HTTP channel — authored at
|
|
3
|
+
* `agent/channels/<name>.ts`.
|
|
4
|
+
*
|
|
5
|
+
* A channel is the surface an agent lives on. The built-in HTTP channel
|
|
6
|
+
* (session create / follow-up / NDJSON stream routes under `/v1/session*`)
|
|
7
|
+
* is always mounted; author `agent/channels/http.ts` with `httpChannel()`
|
|
8
|
+
* only to override its defaults. Custom channels declare their own routes
|
|
9
|
+
* and are mounted under `/v1/channels/<name>`:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { defineChannel, POST } from "@anysphere/agent-serve/channels";
|
|
13
|
+
* import { z } from "zod";
|
|
14
|
+
*
|
|
15
|
+
* export default defineChannel({
|
|
16
|
+
* routes: [
|
|
17
|
+
* POST("/message", {
|
|
18
|
+
* bodySchema: z.object({
|
|
19
|
+
* message: z.string(),
|
|
20
|
+
* token: z.string().optional(),
|
|
21
|
+
* }),
|
|
22
|
+
* handler: async (_req, { send, body }) => {
|
|
23
|
+
* const { message, token } = body as {
|
|
24
|
+
* message: string;
|
|
25
|
+
* token?: string;
|
|
26
|
+
* };
|
|
27
|
+
* const session = await send(message, {
|
|
28
|
+
* continuationToken: token,
|
|
29
|
+
* });
|
|
30
|
+
* return Response.json({ sessionId: session.id });
|
|
31
|
+
* },
|
|
32
|
+
* }),
|
|
33
|
+
* ],
|
|
34
|
+
* events: {
|
|
35
|
+
* "message.completed"(event, channel, ctx) {
|
|
36
|
+
* // deliver completed messages back to the surface that owns this
|
|
37
|
+
* // channel (post to a webhook, reply in a thread, ...)
|
|
38
|
+
* },
|
|
39
|
+
* },
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* Route helpers are typed so HTTP channels must declare **Zod** schemas at
|
|
44
|
+
* compile time: `GET` requires `querySchema`, `POST`/`PUT`/`PATCH` require
|
|
45
|
+
* `bodySchema`. Plain JSON Schema objects will not type-check. Use
|
|
46
|
+
* `z.object({})` / `z.unknown()` when the surface is intentionally open.
|
|
47
|
+
* Handlers receive `args.body` / `args.query` inferred from those schemas.
|
|
48
|
+
*/
|
|
49
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
50
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
51
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
52
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
53
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
54
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
55
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
import { Buffer } from "node:buffer";
|
|
59
|
+
import { timingSafeEqual } from "node:crypto";
|
|
60
|
+
import { brandDefinition } from "./internal/brand.js";
|
|
61
|
+
import { isLoopbackAddress, isLoopbackHostname } from "./internal/net.js";
|
|
62
|
+
/** Define a custom channel. */
|
|
63
|
+
export function defineChannel(config) {
|
|
64
|
+
return brandDefinition("channel", config);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Configure the built-in HTTP session channel. Only meaningful as the
|
|
68
|
+
* default export of `agent/channels/http.ts`.
|
|
69
|
+
*/
|
|
70
|
+
export function httpChannel(config = {}) {
|
|
71
|
+
return brandDefinition("http-channel", config);
|
|
72
|
+
}
|
|
73
|
+
// ============================================================================
|
|
74
|
+
// Route verbs
|
|
75
|
+
// ============================================================================
|
|
76
|
+
function route(method, path, spec) {
|
|
77
|
+
if (!path.startsWith("/")) {
|
|
78
|
+
throw new Error(`Channel route path must start with "/": ${path}`);
|
|
79
|
+
}
|
|
80
|
+
const result = {
|
|
81
|
+
method,
|
|
82
|
+
path,
|
|
83
|
+
handler: spec.handler,
|
|
84
|
+
};
|
|
85
|
+
if (spec.description !== undefined) {
|
|
86
|
+
result.description = spec.description;
|
|
87
|
+
}
|
|
88
|
+
if (spec.bodySchema !== undefined) {
|
|
89
|
+
result.bodySchema = spec.bodySchema;
|
|
90
|
+
}
|
|
91
|
+
if (spec.querySchema !== undefined) {
|
|
92
|
+
result.querySchema = spec.querySchema;
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
/** GET — Zod `querySchema` is required (use `z.object({})` when unused). */
|
|
97
|
+
export function GET(path, spec) {
|
|
98
|
+
return route("GET", path, {
|
|
99
|
+
description: spec.description,
|
|
100
|
+
querySchema: spec.querySchema,
|
|
101
|
+
handler: spec.handler,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/** POST — Zod `bodySchema` is required. */
|
|
105
|
+
export function POST(path, spec) {
|
|
106
|
+
return route("POST", path, {
|
|
107
|
+
description: spec.description,
|
|
108
|
+
bodySchema: spec.bodySchema,
|
|
109
|
+
querySchema: spec.querySchema,
|
|
110
|
+
handler: spec.handler,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/** PUT — Zod `bodySchema` is required. */
|
|
114
|
+
export function PUT(path, spec) {
|
|
115
|
+
return route("PUT", path, {
|
|
116
|
+
description: spec.description,
|
|
117
|
+
bodySchema: spec.bodySchema,
|
|
118
|
+
querySchema: spec.querySchema,
|
|
119
|
+
handler: spec.handler,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/** PATCH — Zod `bodySchema` is required. */
|
|
123
|
+
export function PATCH(path, spec) {
|
|
124
|
+
return route("PATCH", path, {
|
|
125
|
+
description: spec.description,
|
|
126
|
+
bodySchema: spec.bodySchema,
|
|
127
|
+
querySchema: spec.querySchema,
|
|
128
|
+
handler: spec.handler,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/** DELETE — Zod schemas optional. */
|
|
132
|
+
export function DELETE(path, spec) {
|
|
133
|
+
return route("DELETE", path, {
|
|
134
|
+
description: spec.description,
|
|
135
|
+
bodySchema: spec.bodySchema,
|
|
136
|
+
querySchema: spec.querySchema,
|
|
137
|
+
handler: spec.handler,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
// ============================================================================
|
|
141
|
+
// Auth policies
|
|
142
|
+
// ============================================================================
|
|
143
|
+
/**
|
|
144
|
+
* Admit requests that arrive over the loopback interface with no proxy
|
|
145
|
+
* forwarding headers. The default route policy: local tooling works out of
|
|
146
|
+
* the box while remote (or reverse-proxied) callers are rejected until you
|
|
147
|
+
* wire real auth (e.g. {@link bearerAuth}).
|
|
148
|
+
*
|
|
149
|
+
* Requests carrying `X-Forwarded-For`, `X-Real-IP`, `Forwarded`, or
|
|
150
|
+
* `X-Forwarded-Host` are denied even when the TCP peer is 127.0.0.1 — that
|
|
151
|
+
* pattern is how tunnels and same-host reverse proxies re-expose loopback.
|
|
152
|
+
*/
|
|
153
|
+
export function localDev() {
|
|
154
|
+
return (request, info) => {
|
|
155
|
+
if (hasProxyForwardingHeaders(request)) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
if (info.requestIp !== null && isLoopbackAddress(info.requestIp)) {
|
|
159
|
+
return {
|
|
160
|
+
authenticator: "local-dev",
|
|
161
|
+
principalId: "local",
|
|
162
|
+
principalType: "user",
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Like {@link localDev} but also requires the request URL hostname to be
|
|
170
|
+
* loopback. Rejects DNS-rebinding callers that reach 127.0.0.1 with a remote
|
|
171
|
+
* `Host` header (e.g. attacker.example after rebinding to localhost).
|
|
172
|
+
*/
|
|
173
|
+
export function localDevStrict() {
|
|
174
|
+
return (request, info) => {
|
|
175
|
+
if (localDev()(request, info) === null) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
let hostname;
|
|
179
|
+
try {
|
|
180
|
+
hostname = new URL(request.url).hostname;
|
|
181
|
+
}
|
|
182
|
+
catch (_a) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if (!isLoopbackHostname(hostname)) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
authenticator: "local-dev-strict",
|
|
190
|
+
principalId: "local",
|
|
191
|
+
principalType: "user",
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Admit requests whose TCP peer is loopback, ignoring `Host` and
|
|
197
|
+
* proxy-forwarding headers. The peer address (`req.socket.remoteAddress`) is
|
|
198
|
+
* the real boundary: a loopback-bound server only accepts local processes, and
|
|
199
|
+
* a LAN caller's peer IP is non-loopback and rejected. Unlike {@link localDev},
|
|
200
|
+
* this does not veto on `X-Forwarded-*` headers — so it admits loopback clients
|
|
201
|
+
* that legitimately relay them, e.g. `gh webhook forward`, which forwards
|
|
202
|
+
* GitHub's edge `X-Forwarded-For` / `X-Real-Ip`. Intended for dev-only relaxed
|
|
203
|
+
* auth where remote exposure is still refused.
|
|
204
|
+
*/
|
|
205
|
+
export function loopbackOnly() {
|
|
206
|
+
return (_request, info) => {
|
|
207
|
+
if (info.requestIp !== null && isLoopbackAddress(info.requestIp)) {
|
|
208
|
+
return {
|
|
209
|
+
authenticator: "loopback-only",
|
|
210
|
+
principalId: "local",
|
|
211
|
+
principalType: "user",
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
function hasGitHubWebhookDeliveryHeaders(request) {
|
|
218
|
+
const event = request.headers.get("x-github-event");
|
|
219
|
+
return event !== null && event.trim() !== "";
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Dev-only GitHub channel auth without a webhook secret: loopback peer
|
|
223
|
+
* required. Plain local fixtures (no proxy headers) are admitted; deliveries
|
|
224
|
+
* relayed through `gh webhook forward` carry GitHub's `X-Forwarded-*` headers
|
|
225
|
+
* and are admitted only when `X-GitHub-Event` is present (GitHub deliveries
|
|
226
|
+
* always include it). Loopback tunnels that relay arbitrary remote traffic
|
|
227
|
+
* without those delivery headers stay rejected.
|
|
228
|
+
*/
|
|
229
|
+
export function loopbackGitHubDev() {
|
|
230
|
+
return (request, info) => {
|
|
231
|
+
if (info.requestIp === null || !isLoopbackAddress(info.requestIp)) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
if (hasProxyForwardingHeaders(request) &&
|
|
235
|
+
!hasGitHubWebhookDeliveryHeaders(request)) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
authenticator: "loopback-github-dev",
|
|
240
|
+
principalId: "local",
|
|
241
|
+
principalType: "user",
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
function hasProxyForwardingHeaders(request) {
|
|
246
|
+
return (request.headers.has("x-forwarded-for") ||
|
|
247
|
+
request.headers.has("x-forwarded-host") ||
|
|
248
|
+
request.headers.has("x-real-ip") ||
|
|
249
|
+
request.headers.has("forwarded"));
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Admit requests carrying `Authorization: Bearer <token>`. Pass the expected
|
|
253
|
+
* token (compared in constant time) or a verifier that maps a presented
|
|
254
|
+
* token to an {@link AuthContext}.
|
|
255
|
+
*/
|
|
256
|
+
export function bearerAuth(tokenOrVerify) {
|
|
257
|
+
return (request) => __awaiter(this, void 0, void 0, function* () {
|
|
258
|
+
const header = request.headers.get("authorization");
|
|
259
|
+
if (header === null || !header.toLowerCase().startsWith("bearer ")) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
const presented = header.slice("bearer ".length).trim();
|
|
263
|
+
if (typeof tokenOrVerify === "function") {
|
|
264
|
+
return yield tokenOrVerify(presented);
|
|
265
|
+
}
|
|
266
|
+
if (tokenOrVerify !== "" && constantTimeEquals(presented, tokenOrVerify)) {
|
|
267
|
+
return {
|
|
268
|
+
authenticator: "bearer",
|
|
269
|
+
principalId: "bearer",
|
|
270
|
+
principalType: "service",
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
return null;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
function constantTimeEquals(a, b) {
|
|
277
|
+
const aBytes = Buffer.from(a);
|
|
278
|
+
const bBytes = Buffer.from(b);
|
|
279
|
+
if (aBytes.length !== bBytes.length) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
return timingSafeEqual(aBytes, bBytes);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Admit every request as an anonymous principal. Only for surfaces that are
|
|
286
|
+
* intentionally public or protected upstream.
|
|
287
|
+
*/
|
|
288
|
+
export function allowAll() {
|
|
289
|
+
return () => ({
|
|
290
|
+
authenticator: "allow-all",
|
|
291
|
+
principalId: "anonymous",
|
|
292
|
+
principalType: "user",
|
|
293
|
+
});
|
|
294
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `defineConnection` — authored at `agent/mcp-connections/<name>.ts`.
|
|
3
|
+
*
|
|
4
|
+
* A connection gives tools from an external MCP server. The filename
|
|
5
|
+
* becomes the connection (server) name. Every connection is always
|
|
6
|
+
* available in three places:
|
|
7
|
+
* - the Cursor agent (local harness or cloud), via SDK `mcpServers`
|
|
8
|
+
* - the agent-serve host, via `ctx.host.mcp` on in-process tools
|
|
9
|
+
* - channel / schedule handlers, via `args.host.mcp`
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { defineConnection } from "@anysphere/agent-serve/connections";
|
|
13
|
+
*
|
|
14
|
+
* export default defineConnection({
|
|
15
|
+
* url: "https://mcp.linear.app/mcp",
|
|
16
|
+
* headers: { authorization: `Bearer ${process.env.LINEAR_TOKEN}` },
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* A **Cursor account MCP connection** exposes the MCP connectors the operator
|
|
21
|
+
* already authorized in their Cursor account (dashboard → MCP). Every tool
|
|
22
|
+
* executes **on the Cursor backend** with the account's stored OAuth
|
|
23
|
+
* credentials, so the agent gets Linear / Notion / Slack / … tools with
|
|
24
|
+
* zero token plumbing and no OAuth secrets on this host. Requires the host
|
|
25
|
+
* to be signed in (`agent-serve login` or `CURSOR_API_KEY`):
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* // agent/mcp-connections/cursor.ts — every connected server
|
|
29
|
+
* export default defineConnection({ cursorAccount: true });
|
|
30
|
+
*
|
|
31
|
+
* // or restrict to specific connectors by name
|
|
32
|
+
* export default defineConnection({ cursorAccount: true, servers: ["Linear"] });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* A **peer MCP connection** addresses another agent mounted on the same serve
|
|
36
|
+
* host by slug — every mounted agent is itself an MCP server at
|
|
37
|
+
* `/<slug>/v1/mcp` (tools: `ask`, `check`, and `call_tool` when it has
|
|
38
|
+
* server tools), so the model can delegate work to the peer, which runs
|
|
39
|
+
* in its own sessions with its own tools and context:
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* export default defineConnection({
|
|
43
|
+
* agent: "weather-agent",
|
|
44
|
+
* description: "Delegate weather questions to the weather agent.",
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* Peer URLs resolve when the server starts: loopback for local-runtime
|
|
49
|
+
* turns and host-side calls, the serve `--public-url` for cloud-runtime
|
|
50
|
+
* turns (a cloud VM cannot reach this host's loopback address).
|
|
51
|
+
*
|
|
52
|
+
* Server tools can call the same connection:
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* async execute(input, ctx) {
|
|
56
|
+
* return ctx.host.mcp.callTool("linear", "list_issues", { query: input.q });
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* So can webhook / channel route handlers (deterministic, no agent loop):
|
|
61
|
+
*
|
|
62
|
+
* ```ts
|
|
63
|
+
* POST("/sync", {
|
|
64
|
+
* bodySchema: z.object({}),
|
|
65
|
+
* handler: async (_req, { host }) => {
|
|
66
|
+
* const result = await host.mcp.callTool("linear", "list_issues", {});
|
|
67
|
+
* return Response.json(result);
|
|
68
|
+
* },
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
import type { ConnectionConfig, ConnectionDefinition } from "./types.js";
|
|
73
|
+
export type { ConnectionConfig, ConnectionDefinition, ConnectionTransport, HostMcpCallResult, HostMcpRegistry, HostMcpToolInfo, } from "./types.js";
|
|
74
|
+
export declare function defineConnection(config: ConnectionConfig): ConnectionDefinition;
|
|
75
|
+
//# sourceMappingURL=connections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzE,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,oBAAoB,CAEtB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `defineConnection` — authored at `agent/mcp-connections/<name>.ts`.
|
|
3
|
+
*
|
|
4
|
+
* A connection gives tools from an external MCP server. The filename
|
|
5
|
+
* becomes the connection (server) name. Every connection is always
|
|
6
|
+
* available in three places:
|
|
7
|
+
* - the Cursor agent (local harness or cloud), via SDK `mcpServers`
|
|
8
|
+
* - the agent-serve host, via `ctx.host.mcp` on in-process tools
|
|
9
|
+
* - channel / schedule handlers, via `args.host.mcp`
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { defineConnection } from "@anysphere/agent-serve/connections";
|
|
13
|
+
*
|
|
14
|
+
* export default defineConnection({
|
|
15
|
+
* url: "https://mcp.linear.app/mcp",
|
|
16
|
+
* headers: { authorization: `Bearer ${process.env.LINEAR_TOKEN}` },
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* A **Cursor account MCP connection** exposes the MCP connectors the operator
|
|
21
|
+
* already authorized in their Cursor account (dashboard → MCP). Every tool
|
|
22
|
+
* executes **on the Cursor backend** with the account's stored OAuth
|
|
23
|
+
* credentials, so the agent gets Linear / Notion / Slack / … tools with
|
|
24
|
+
* zero token plumbing and no OAuth secrets on this host. Requires the host
|
|
25
|
+
* to be signed in (`agent-serve login` or `CURSOR_API_KEY`):
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* // agent/mcp-connections/cursor.ts — every connected server
|
|
29
|
+
* export default defineConnection({ cursorAccount: true });
|
|
30
|
+
*
|
|
31
|
+
* // or restrict to specific connectors by name
|
|
32
|
+
* export default defineConnection({ cursorAccount: true, servers: ["Linear"] });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* A **peer MCP connection** addresses another agent mounted on the same serve
|
|
36
|
+
* host by slug — every mounted agent is itself an MCP server at
|
|
37
|
+
* `/<slug>/v1/mcp` (tools: `ask`, `check`, and `call_tool` when it has
|
|
38
|
+
* server tools), so the model can delegate work to the peer, which runs
|
|
39
|
+
* in its own sessions with its own tools and context:
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* export default defineConnection({
|
|
43
|
+
* agent: "weather-agent",
|
|
44
|
+
* description: "Delegate weather questions to the weather agent.",
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* Peer URLs resolve when the server starts: loopback for local-runtime
|
|
49
|
+
* turns and host-side calls, the serve `--public-url` for cloud-runtime
|
|
50
|
+
* turns (a cloud VM cannot reach this host's loopback address).
|
|
51
|
+
*
|
|
52
|
+
* Server tools can call the same connection:
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* async execute(input, ctx) {
|
|
56
|
+
* return ctx.host.mcp.callTool("linear", "list_issues", { query: input.q });
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* So can webhook / channel route handlers (deterministic, no agent loop):
|
|
61
|
+
*
|
|
62
|
+
* ```ts
|
|
63
|
+
* POST("/sync", {
|
|
64
|
+
* bodySchema: z.object({}),
|
|
65
|
+
* handler: async (_req, { host }) => {
|
|
66
|
+
* const result = await host.mcp.callTool("linear", "list_issues", {});
|
|
67
|
+
* return Response.json(result);
|
|
68
|
+
* },
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
import { brandDefinition } from "./internal/brand.js";
|
|
73
|
+
export function defineConnection(config) {
|
|
74
|
+
return brandDefinition("connection", config);
|
|
75
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US" dir="ltr">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
+
<title>404 | agentkit</title>
|
|
7
|
+
<meta name="description" content="Not Found">
|
|
8
|
+
<meta name="generator" content="VitePress v1.6.4">
|
|
9
|
+
<link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
|
|
10
|
+
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
|
+
|
|
12
|
+
<script type="module" src="/docs/assets/app.DqfFEmJd.js"></script>
|
|
13
|
+
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
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
|
+
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div id="app"></div>
|
|
19
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"COdXkces\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"Dx1TYNk5\",\"evals.md\":\"DPZ_MAnI\",\"guides_agent-to-agent.md\":\"CrtrsySy\",\"guides_cloud-runtime.md\":\"CYlNMTNp\",\"guides_github.md\":\"DwbKhCeS\",\"guides_human-in-the-loop.md\":\"Dvuctx7s\",\"guides_slack.md\":\"bv41fHfW\",\"guides_webhooks.md\":\"hFTik3lf\",\"hillclimbing.md\":\"DHNast08\",\"index.md\":\"BPKcj5AI\",\"quickstart.md\":\"tVPiGK_L\",\"reference_agent-config.md\":\"Bpd7HQwf\",\"reference_channels.md\":\"D7JTR03W\",\"reference_cli.md\":\"DA730zCu\",\"reference_connections.md\":\"C3vNH_DE\",\"reference_hooks.md\":\"BCEc3MyM\",\"reference_http-api.md\":\"DBAahtdz\",\"reference_instructions.md\":\"BC05LEQ8\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"Bd_CKtNS\",\"reference_schedules.md\":\"D7qijxLk\",\"reference_sessions.md\":\"DdjWabnN\",\"reference_skills.md\":\"VQnlBT3Q\",\"reference_subagents.md\":\"CIRAVcPK\",\"reference_tools.md\":\"DF5kwlt0\",\"scaffolding-agents.md\":\"CyYfWGdc\",\"troubleshooting.md\":\"DkovjS7h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"agentkit\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"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\":\"Concepts\",\"link\":\"/concepts\"}]},{\"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\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"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\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"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\":\"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\":\"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>
|
|
20
|
+
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|