@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,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning helpers for `agent-serve github forward` — turning discovered
|
|
3
|
+
* GitHub channels into a `gh webhook forward` invocation.
|
|
4
|
+
*
|
|
5
|
+
* These are pure functions (no process spawning) so they are unit-testable;
|
|
6
|
+
* the CLI in `internal/cli-github.ts` runs `gh` around them.
|
|
7
|
+
*
|
|
8
|
+
* @see https://docs.github.com/en/webhooks/testing-and-troubleshooting-webhooks/using-the-github-cli-to-forward-webhooks-for-testing
|
|
9
|
+
*/
|
|
10
|
+
import { GITHUB_CHANNEL_KIND } from "./events.js";
|
|
11
|
+
/** GitHub CLI extension that provides `gh webhook forward`. */
|
|
12
|
+
export const GITHUB_WEBHOOK_EXTENSION = "cli/gh-webhook";
|
|
13
|
+
/**
|
|
14
|
+
* Pinned release for {@link GITHUB_WEBHOOK_EXTENSION}. Passed to
|
|
15
|
+
* `gh extension install --pin` so auto-install does not float to arbitrary tags.
|
|
16
|
+
*
|
|
17
|
+
* @see https://github.com/cli/gh-webhook/releases
|
|
18
|
+
*/
|
|
19
|
+
export const GITHUB_WEBHOOK_EXTENSION_PIN = "v0.2.0";
|
|
20
|
+
/** `gh` argv to install the webhook extension at the pinned release. */
|
|
21
|
+
export function ghWebhookExtensionInstallArgs(options) {
|
|
22
|
+
const args = [
|
|
23
|
+
"extension",
|
|
24
|
+
"install",
|
|
25
|
+
GITHUB_WEBHOOK_EXTENSION,
|
|
26
|
+
"--pin",
|
|
27
|
+
GITHUB_WEBHOOK_EXTENSION_PIN,
|
|
28
|
+
];
|
|
29
|
+
if ((options === null || options === void 0 ? void 0 : options.force) === true) {
|
|
30
|
+
args.push("--force");
|
|
31
|
+
}
|
|
32
|
+
return args;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Collect the GitHub webhook channels across every mounted agent, reading the
|
|
36
|
+
* `meta` a {@link githubChannel} publishes.
|
|
37
|
+
*/
|
|
38
|
+
export function findGitHubChannelTargets(mounts) {
|
|
39
|
+
var _a, _b, _c;
|
|
40
|
+
const targets = [];
|
|
41
|
+
for (const { slug, project } of mounts) {
|
|
42
|
+
for (const channel of project.channels) {
|
|
43
|
+
const meta = channel.definition.meta;
|
|
44
|
+
if ((meta === null || meta === void 0 ? void 0 : meta.kind) !== GITHUB_CHANNEL_KIND) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const postRoute = ((_a = channel.definition.routes) !== null && _a !== void 0 ? _a : []).find((route) => route.method === "POST");
|
|
48
|
+
targets.push({
|
|
49
|
+
slug,
|
|
50
|
+
channelId: channel.id,
|
|
51
|
+
routePath: (_b = postRoute === null || postRoute === void 0 ? void 0 : postRoute.path) !== null && _b !== void 0 ? _b : "/",
|
|
52
|
+
events: [...((_c = meta.githubWebhookEvents) !== null && _c !== void 0 ? _c : [])],
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return targets;
|
|
57
|
+
}
|
|
58
|
+
/** Absolute forward URL for a channel target on a local server. */
|
|
59
|
+
export function channelForwardUrl(input) {
|
|
60
|
+
const slugPrefix = input.slug === "" ? "" : `/${input.slug}`;
|
|
61
|
+
const suffix = input.routePath === "/" ? "" : input.routePath;
|
|
62
|
+
return `http://${input.host}:${input.port}${slugPrefix}/v1/channels/${input.channelId}${suffix}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Resolve every channel a forward should feed, honoring `--slug` / `--channel`
|
|
66
|
+
* selection and `--url` / `--events` overrides. Returns one target for a single
|
|
67
|
+
* match (or an explicit `--url`) and many when several channels match — the CLI
|
|
68
|
+
* fans a single `gh webhook forward` out to all of them.
|
|
69
|
+
*/
|
|
70
|
+
export function resolveGitHubForwardTargets(input) {
|
|
71
|
+
var _a, _b, _c, _d;
|
|
72
|
+
let candidates = [...input.targets];
|
|
73
|
+
if (input.slug !== undefined) {
|
|
74
|
+
candidates = candidates.filter((t) => t.slug === input.slug);
|
|
75
|
+
}
|
|
76
|
+
if (input.channel !== undefined) {
|
|
77
|
+
candidates = candidates.filter((t) => t.channelId === input.channel);
|
|
78
|
+
}
|
|
79
|
+
const overrideEvents = input.events === undefined ? undefined : dedupeEvents(input.events);
|
|
80
|
+
if (input.url !== undefined) {
|
|
81
|
+
if (candidates.length > 1) {
|
|
82
|
+
return {
|
|
83
|
+
ok: false,
|
|
84
|
+
error: `--url targets a single channel, but the selection matched several — narrow with --slug/--channel:\n${describeTargets(candidates)}`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const only = candidates.length === 1 ? candidates[0] : undefined;
|
|
88
|
+
const events = overrideEvents !== null && overrideEvents !== void 0 ? overrideEvents : only === null || only === void 0 ? void 0 : only.events;
|
|
89
|
+
if (events === undefined || events.length === 0) {
|
|
90
|
+
return {
|
|
91
|
+
ok: false,
|
|
92
|
+
error: "pass --events with --url (no single GitHub channel matched to derive them)",
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
ok: true,
|
|
97
|
+
targets: [
|
|
98
|
+
{
|
|
99
|
+
slug: (_b = (_a = only === null || only === void 0 ? void 0 : only.slug) !== null && _a !== void 0 ? _a : input.slug) !== null && _b !== void 0 ? _b : "",
|
|
100
|
+
channelId: (_d = (_c = only === null || only === void 0 ? void 0 : only.channelId) !== null && _c !== void 0 ? _c : input.channel) !== null && _d !== void 0 ? _d : "",
|
|
101
|
+
url: input.url,
|
|
102
|
+
events,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (candidates.length === 0) {
|
|
108
|
+
if (input.targets.length === 0) {
|
|
109
|
+
return {
|
|
110
|
+
ok: false,
|
|
111
|
+
error: "no GitHub channel found. Author agent/channels/github.ts with githubChannel(), or pass --url and --events.",
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
ok: false,
|
|
116
|
+
error: `no GitHub channel matched the given selection.\n${describeTargets(input.targets)}`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const resolved = candidates
|
|
120
|
+
.map((target) => ({
|
|
121
|
+
slug: target.slug,
|
|
122
|
+
channelId: target.channelId,
|
|
123
|
+
url: channelForwardUrl({
|
|
124
|
+
host: input.host,
|
|
125
|
+
port: input.port,
|
|
126
|
+
slug: target.slug,
|
|
127
|
+
channelId: target.channelId,
|
|
128
|
+
routePath: target.routePath,
|
|
129
|
+
}),
|
|
130
|
+
events: overrideEvents !== null && overrideEvents !== void 0 ? overrideEvents : target.events,
|
|
131
|
+
}))
|
|
132
|
+
.filter((target) => target.events.length > 0);
|
|
133
|
+
if (resolved.length === 0) {
|
|
134
|
+
return {
|
|
135
|
+
ok: false,
|
|
136
|
+
error: "the selected GitHub channel(s) declare no webhook events; pass --events or set webhookEvents on githubChannel().",
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return { ok: true, targets: resolved };
|
|
140
|
+
}
|
|
141
|
+
/** Union of the webhook events across every forward target (deduped). */
|
|
142
|
+
export function unionForwardEvents(targets) {
|
|
143
|
+
return dedupeEvents(targets.flatMap((target) => target.events));
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build the argv for `gh <argv>` that runs `gh webhook forward` with the
|
|
147
|
+
* planned URL, events, repo/org, and (optional) signing secret.
|
|
148
|
+
*/
|
|
149
|
+
export function buildGitHubForwardArgs(input) {
|
|
150
|
+
const args = [
|
|
151
|
+
"webhook",
|
|
152
|
+
"forward",
|
|
153
|
+
`--url=${input.url}`,
|
|
154
|
+
`--events=${dedupeEvents(input.events).join(",")}`,
|
|
155
|
+
];
|
|
156
|
+
if (input.repo !== undefined && input.repo !== "") {
|
|
157
|
+
args.push(`--repo=${input.repo}`);
|
|
158
|
+
}
|
|
159
|
+
if (input.org !== undefined && input.org !== "") {
|
|
160
|
+
args.push(`--org=${input.org}`);
|
|
161
|
+
}
|
|
162
|
+
if (input.secret !== undefined && input.secret !== "") {
|
|
163
|
+
args.push(`--secret=${input.secret}`);
|
|
164
|
+
}
|
|
165
|
+
if (input.extraArgs !== undefined) {
|
|
166
|
+
args.push(...input.extraArgs);
|
|
167
|
+
}
|
|
168
|
+
return args;
|
|
169
|
+
}
|
|
170
|
+
/** True when `gh extension list` output includes the webhook extension. */
|
|
171
|
+
export function parseGhWebhookExtensionInstalled(listOutput) {
|
|
172
|
+
return parseGhWebhookExtensionVersion(listOutput) !== undefined;
|
|
173
|
+
}
|
|
174
|
+
/** Version column from `gh extension list` for the webhook extension, if present. */
|
|
175
|
+
export function parseGhWebhookExtensionVersion(listOutput) {
|
|
176
|
+
var _a, _b;
|
|
177
|
+
var _c;
|
|
178
|
+
for (const line of listOutput.split("\n")) {
|
|
179
|
+
if (!line.includes("gh-webhook")) {
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const parts = line.split("\t");
|
|
183
|
+
const repo = (_c = (_a = parts[1]) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _c !== void 0 ? _c : "";
|
|
184
|
+
if (!repo.includes("gh-webhook")) {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const version = (_b = parts[2]) === null || _b === void 0 ? void 0 : _b.trim();
|
|
188
|
+
return version === undefined || version === "" ? undefined : version;
|
|
189
|
+
}
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
/** Whether the installed webhook extension matches {@link GITHUB_WEBHOOK_EXTENSION_PIN}. */
|
|
193
|
+
export function ghWebhookExtensionPinSatisfied(listOutput) {
|
|
194
|
+
const version = parseGhWebhookExtensionVersion(listOutput);
|
|
195
|
+
return version === GITHUB_WEBHOOK_EXTENSION_PIN;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* `gh webhook forward` authenticates its relay session
|
|
199
|
+
* (`webhook-forwarder.github.com`) with the GitHub CLI's *own* OAuth login. A
|
|
200
|
+
* `GITHUB_TOKEN` / `GH_TOKEN` env override is used for REST calls (so hook
|
|
201
|
+
* creation succeeds) but is rejected by the relay — every delivery then fails
|
|
202
|
+
* with HTTP 401. Detect such an override so the CLI can warn.
|
|
203
|
+
*
|
|
204
|
+
* Returns the offending env var name, or undefined when none is set.
|
|
205
|
+
*/
|
|
206
|
+
export function detectGitHubEnvTokenOverride(env = process.env) {
|
|
207
|
+
if (env.GITHUB_TOKEN !== undefined && env.GITHUB_TOKEN !== "") {
|
|
208
|
+
return "GITHUB_TOKEN";
|
|
209
|
+
}
|
|
210
|
+
if (env.GH_TOKEN !== undefined && env.GH_TOKEN !== "") {
|
|
211
|
+
return "GH_TOKEN";
|
|
212
|
+
}
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
/** Guidance shown when {@link detectGitHubEnvTokenOverride} finds an override. */
|
|
216
|
+
export function githubEnvTokenHint(varName) {
|
|
217
|
+
return `${varName} is set — gh webhook forward authenticates its relay with the GitHub CLI's own login, so an env token usually causes HTTP 401. Blank it for the command (e.g. \`GITHUB_TOKEN= GH_TOKEN= agent-serve github forward …\`) or \`unset GITHUB_TOKEN GH_TOKEN\`.`;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Extract `owner/repo` from a git remote URL (https, `git@`, or `ssh://`).
|
|
221
|
+
* Returns undefined for unrecognized shapes.
|
|
222
|
+
*/
|
|
223
|
+
export function parseRepoFromRemoteUrl(remote) {
|
|
224
|
+
let url = remote.trim();
|
|
225
|
+
if (url === "") {
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
if (url.startsWith("git@")) {
|
|
229
|
+
url = `https://${url.slice("git@".length).replace(":", "/")}`;
|
|
230
|
+
}
|
|
231
|
+
else if (url.startsWith("ssh://git@")) {
|
|
232
|
+
url = `https://${url.slice("ssh://git@".length)}`;
|
|
233
|
+
}
|
|
234
|
+
else if (!/^https?:\/\//i.test(url)) {
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
let parsed;
|
|
238
|
+
try {
|
|
239
|
+
parsed = new URL(url);
|
|
240
|
+
}
|
|
241
|
+
catch (_a) {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
const segments = parsed.pathname
|
|
245
|
+
.replace(/^\/+/, "")
|
|
246
|
+
.replace(/\.git$/i, "")
|
|
247
|
+
.replace(/\/+$/, "")
|
|
248
|
+
.split("/");
|
|
249
|
+
const [owner, repo] = segments;
|
|
250
|
+
if (owner === undefined ||
|
|
251
|
+
owner === "" ||
|
|
252
|
+
repo === undefined ||
|
|
253
|
+
repo === "") {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
return `${owner}/${repo}`;
|
|
257
|
+
}
|
|
258
|
+
/** `slug/channelId`, or just `channelId` for a single-agent (unslugged) mount. */
|
|
259
|
+
export function targetLabel(target) {
|
|
260
|
+
return target.slug === ""
|
|
261
|
+
? target.channelId
|
|
262
|
+
: `${target.slug}/${target.channelId}`;
|
|
263
|
+
}
|
|
264
|
+
function dedupeEvents(events) {
|
|
265
|
+
return [...new Set(events.map((event) => event.trim()).filter(Boolean))];
|
|
266
|
+
}
|
|
267
|
+
function describeTargets(targets) {
|
|
268
|
+
return targets
|
|
269
|
+
.map((t) => ` - ${targetLabel(t)} (events: ${t.events.join(", ") || "none"})`)
|
|
270
|
+
.join("\n");
|
|
271
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { AuthContext, ChannelDefinition, ChannelHandlerArgs } from "../../types.js";
|
|
2
|
+
import { type GitHubChannelState } from "./state.js";
|
|
3
|
+
import type { GitHubChannelOptions, GitHubComment, GitHubCredentialValue, GitHubEventContext, GitHubPullRequestEvent, GitHubTurnDispatch, GitHubUser } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Inbound context as produced by the payload parsers, before the GitHub API +
|
|
6
|
+
* thread handles are attached. {@link enrichEventContext} adds `github`,
|
|
7
|
+
* `thread`, and `host` to make a full {@link GitHubEventContext} for hooks.
|
|
8
|
+
*/
|
|
9
|
+
type GitHubParsedContext = Omit<GitHubEventContext, "github" | "thread" | "host">;
|
|
10
|
+
/**
|
|
11
|
+
* Derive the turn's auth from the actor that triggered the delivery — the
|
|
12
|
+
* standard `{ auth: defaultGitHubAuth(ctx) }` dispatch from an inbound hook.
|
|
13
|
+
*/
|
|
14
|
+
export declare function defaultGitHubAuth(ctx: GitHubParsedContext): AuthContext;
|
|
15
|
+
export declare function githubContinuationKey(ctx: GitHubParsedContext): string;
|
|
16
|
+
/** @deprecated Prefer {@link githubContinuationKey}. */
|
|
17
|
+
export declare function githubPullRequestContinuationKey(ctx: GitHubParsedContext): string;
|
|
18
|
+
export declare function defaultGitHubTitle(ctx: GitHubParsedContext): string;
|
|
19
|
+
/** @deprecated Prefer {@link defaultGitHubTitle}. */
|
|
20
|
+
export declare function defaultGitHubPullRequestTitle(ctx: GitHubParsedContext): string;
|
|
21
|
+
export declare function defaultGitHubPullRequestMessage(ctx: GitHubParsedContext, pullRequest: GitHubPullRequestEvent): string;
|
|
22
|
+
/**
|
|
23
|
+
* Default dispatch gate when no `onPullRequest` hook is declared: the common
|
|
24
|
+
* review triggers start a turn as the delivery's actor.
|
|
25
|
+
*
|
|
26
|
+
* Eve has no default for `onPullRequest` (opt-in only). Agent-serve keeps this
|
|
27
|
+
* gate for backward compatibility with existing demos.
|
|
28
|
+
*/
|
|
29
|
+
export declare function defaultGitHubPullRequestDispatch(ctx: GitHubParsedContext, pullRequest: GitHubPullRequestEvent): GitHubTurnDispatch | null;
|
|
30
|
+
/**
|
|
31
|
+
* Default comment hook (Eve-compatible): dispatch only when the comment
|
|
32
|
+
* `@mention`s {@link botName}.
|
|
33
|
+
*/
|
|
34
|
+
export declare function defaultOnComment(ctx: GitHubParsedContext, comment: GitHubComment, options: {
|
|
35
|
+
botName?: string;
|
|
36
|
+
}): GitHubTurnDispatch | null;
|
|
37
|
+
export declare function shouldDispatchGitHubComment(args: {
|
|
38
|
+
body: string;
|
|
39
|
+
author?: GitHubUser;
|
|
40
|
+
botName?: string;
|
|
41
|
+
}): boolean;
|
|
42
|
+
export declare function extractGitHubCommentTrigger(args: {
|
|
43
|
+
body: string;
|
|
44
|
+
botName?: string;
|
|
45
|
+
}): {
|
|
46
|
+
message: string;
|
|
47
|
+
} | undefined;
|
|
48
|
+
export declare function parseGitHubPullRequestEvent(args: {
|
|
49
|
+
payload: unknown;
|
|
50
|
+
deliveryId?: string;
|
|
51
|
+
}): {
|
|
52
|
+
ctx: GitHubParsedContext;
|
|
53
|
+
pullRequest: GitHubPullRequestEvent;
|
|
54
|
+
} | null;
|
|
55
|
+
export declare function verifyGitHubWebhookSignature(args: {
|
|
56
|
+
body: string;
|
|
57
|
+
signatureHeader: string | null;
|
|
58
|
+
secret: GitHubCredentialValue | undefined;
|
|
59
|
+
}): Promise<"verified" | "missing_secret" | "missing_signature" | "mismatch">;
|
|
60
|
+
/**
|
|
61
|
+
* GitHub webhook channel (Eve-compatible dispatch surface). Point a GitHub App
|
|
62
|
+
* or repository webhook at `/<agent>/v1/channels/github` and declare inbound
|
|
63
|
+
* hooks:
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* import { defaultGitHubAuth, githubChannel } from "@anysphere/agent-serve/channels/github";
|
|
67
|
+
*
|
|
68
|
+
* export default githubChannel({
|
|
69
|
+
* botName: "my-agent",
|
|
70
|
+
* credentials: { webhookSecret: () => process.env.GITHUB_WEBHOOK_SECRET },
|
|
71
|
+
* // Replaces the @mention gate. Prefer typed Octokit via getOctokit().
|
|
72
|
+
* onComment: (ctx, comment) => ({ auth: defaultGitHubAuth(ctx) }),
|
|
73
|
+
* onPullRequest: (ctx, pr) =>
|
|
74
|
+
* pr.action === "opened" ? { auth: defaultGitHubAuth(ctx) } : null,
|
|
75
|
+
* onStatus: (ctx, status) =>
|
|
76
|
+
* status.state === "failure"
|
|
77
|
+
* ? {
|
|
78
|
+
* task: async () => {
|
|
79
|
+
* const octokit = await ctx.github.getOctokit();
|
|
80
|
+
* await octokit.rest.repos.createCommitStatus({
|
|
81
|
+
* owner: ctx.repository.owner,
|
|
82
|
+
* repo: ctx.repository.name,
|
|
83
|
+
* sha: status.sha,
|
|
84
|
+
* state: "pending",
|
|
85
|
+
* context: "agent/triage",
|
|
86
|
+
* });
|
|
87
|
+
* },
|
|
88
|
+
* }
|
|
89
|
+
* : null,
|
|
90
|
+
* onEvent: (ctx, event) =>
|
|
91
|
+
* event.eventName === "label" ? { auth: defaultGitHubAuth(ctx) } : null,
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
/**
|
|
96
|
+
* Core GitHub webhook dispatch used by {@link githubChannel} routes and by
|
|
97
|
+
* {@link handleAgentServeTrigger} fan-out. Signature verification is the
|
|
98
|
+
* caller's responsibility (HTTP route verifies; internal fan-out skips).
|
|
99
|
+
*/
|
|
100
|
+
export declare function dispatchGitHubWebhook(input: {
|
|
101
|
+
options: GitHubChannelOptions;
|
|
102
|
+
eventName: string | null;
|
|
103
|
+
payload: unknown;
|
|
104
|
+
deliveryId?: string;
|
|
105
|
+
args: ChannelHandlerArgs;
|
|
106
|
+
}): Promise<Response>;
|
|
107
|
+
/**
|
|
108
|
+
* HTTP entry for a single agent's GitHub channel: optional HMAC verify, then
|
|
109
|
+
* {@link dispatchGitHubWebhook}.
|
|
110
|
+
*/
|
|
111
|
+
export declare function handleGitHubWebhookRequest(input: {
|
|
112
|
+
options: GitHubChannelOptions;
|
|
113
|
+
request: Request;
|
|
114
|
+
args: ChannelHandlerArgs;
|
|
115
|
+
/** When true, skip HMAC even if a webhook secret is configured. */
|
|
116
|
+
skipSignatureVerification?: boolean;
|
|
117
|
+
}): Promise<Response>;
|
|
118
|
+
/**
|
|
119
|
+
* Recover the {@link GitHubChannelOptions} used to build a channel definition,
|
|
120
|
+
* if it was created via {@link githubChannel}.
|
|
121
|
+
*/
|
|
122
|
+
export declare function getGitHubChannelOptions(definition: object): GitHubChannelOptions | undefined;
|
|
123
|
+
export declare function githubChannel(options?: GitHubChannelOptions): ChannelDefinition<GitHubChannelState>;
|
|
124
|
+
/** Match GitHub App bot actors (`slug` config vs `slug[bot]` login). */
|
|
125
|
+
export declare function isGitHubAppBotAuthor(author: GitHubUser | undefined, botName: string | undefined): boolean;
|
|
126
|
+
export {};
|
|
127
|
+
//# sourceMappingURL=github-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/github/github-channel.ts"],"names":[],"mappings":"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"}
|