@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
package/AGENTS.md
ADDED
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# Agent experience (AX)
|
|
2
|
+
|
|
3
|
+
Guide for coding agents working on or with `@cursor/july`.
|
|
4
|
+
Loop: edit files → inspect surface → run a turn → assert with filesystem
|
|
5
|
+
evals. Prefer the CLI over ad-hoc curl.
|
|
6
|
+
|
|
7
|
+
User-facing documentation lives in [`docs/`](./docs/README.md)
|
|
8
|
+
(quickstart, concepts, guides, evals/live A/B metrics/hillclimbing, deployment,
|
|
9
|
+
troubleshooting, reference). This file is the terse loop reference;
|
|
10
|
+
point humans at the docs.
|
|
11
|
+
|
|
12
|
+
Run the CLI under **Node, never Bun** — use the installed `agent-serve`
|
|
13
|
+
(or `agentkit`) bin; from a source checkout of this package,
|
|
14
|
+
`pnpm exec tsx src/bin/agent-serve.ts <command> …` is equivalent. Bun's
|
|
15
|
+
HTTP/2 client corrupts local harness
|
|
16
|
+
tool-result streams (`NGHTTP2_FRAME_SIZE_ERROR`), which makes every
|
|
17
|
+
built-in read/grep fail and sends models into retry loops.
|
|
18
|
+
|
|
19
|
+
## Skills
|
|
20
|
+
|
|
21
|
+
Before scaffolding, wiring channels, writing evals, or deploying, **read the
|
|
22
|
+
matching skill under `skills/<task>/SKILL.md`** (paths
|
|
23
|
+
below are relative to this package). These files are the single source of
|
|
24
|
+
truth; they ship with `@cursor/july`. There are no
|
|
25
|
+
`.cursor/skills/` stubs — open the package skill directly.
|
|
26
|
+
|
|
27
|
+
| Skill | Read it when |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| `skills/framework-map/SKILL.md` | First contact: folder structure, runtimes, sessions, state, invariants |
|
|
30
|
+
| `skills/create-agent/SKILL.md` | Scaffolding a new agent (interview → scaffold → verify) |
|
|
31
|
+
| `skills/evals/SKILL.md` | Writing evals; fixture strategy; the regression ratchet |
|
|
32
|
+
| `skills/ab/SKILL.md` | Live A/B metrics (`defineAB` under `agent/ab`); not a test runner |
|
|
33
|
+
| `skills/hillclimb/SKILL.md` | Improving an existing agent measurably |
|
|
34
|
+
| `skills/github/SKILL.md` | GitHub webhook agents; replay / forward / fixtures / cursor-events |
|
|
35
|
+
| `skills/setup-slack/SKILL.md` | Slack wiring and Slack tool approvals |
|
|
36
|
+
| `skills/debug/SKILL.md` | Something misbehaving locally (symptom → cause) |
|
|
37
|
+
|
|
38
|
+
## Recommended loop
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# 1. Discover / validate
|
|
42
|
+
agent-serve validate --dir .
|
|
43
|
+
agent-serve info --dir . --json
|
|
44
|
+
|
|
45
|
+
# One-shot turn (ephemeral server, JSON trajectory + single NDJSON trace)
|
|
46
|
+
agent-serve run --dir . --message "What's the temperature in NYC?"
|
|
47
|
+
# → trace at <dir>/.agent-serve/traces/<sessionId>.ndjson
|
|
48
|
+
# Visualize: agent-serve serve --dir . then playground → Open trace
|
|
49
|
+
|
|
50
|
+
# Against a running server (deep-linkable in the playground)
|
|
51
|
+
agent-serve serve --dir . &
|
|
52
|
+
agent-serve run --url http://127.0.0.1:3000 --message "..."
|
|
53
|
+
# → JSON includes playgroundUrl?sessionId=...
|
|
54
|
+
|
|
55
|
+
# Optional: custom path / offline summary
|
|
56
|
+
agent-serve run --dir . --message "..." --events /tmp/run.ndjson
|
|
57
|
+
agent-serve trajectory --events /tmp/run.ndjson
|
|
58
|
+
|
|
59
|
+
# Deterministic tool call (no model turn, no API key needed)
|
|
60
|
+
agent-serve call get_weather --dir . --input '{"city":"NYC"}'
|
|
61
|
+
# → POST /v1/tools/get_weather; validates input, runs execute in-process
|
|
62
|
+
|
|
63
|
+
# 3. Evals (defineEval under evals/)
|
|
64
|
+
agent-serve eval --dir . --list
|
|
65
|
+
agent-serve eval --dir . --json
|
|
66
|
+
agent-serve eval --dir . weather/nyc
|
|
67
|
+
|
|
68
|
+
# Live A/B metrics: author agent/ab.ts (defineAB) — runs under serve, no CLI
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Project layout
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
my-agent/
|
|
75
|
+
agent/
|
|
76
|
+
agent.ts
|
|
77
|
+
instructions.md
|
|
78
|
+
tools/*.ts
|
|
79
|
+
skills/*.md
|
|
80
|
+
channels/
|
|
81
|
+
ab.ts # optional live A/B metrics (defineAB)
|
|
82
|
+
ab.config.ts # optional: maxPlaygroundSessions (default 200) / persist*
|
|
83
|
+
...
|
|
84
|
+
evals/
|
|
85
|
+
smoke.eval.ts # single datapoint → id: smoke
|
|
86
|
+
weather.eval.ts # cases → weather/nyc, weather/paris, …
|
|
87
|
+
evals.config.ts # required: maxConcurrency; optional maxPlaygroundRuns (default 20) / persistRuns
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Authoring evals
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
import { defineEval, includes } from "@cursor/july/evals";
|
|
94
|
+
|
|
95
|
+
// One datapoint per file, or many via `cases` (ids = <fileId>/<case.id>)
|
|
96
|
+
export default defineEval({
|
|
97
|
+
tags: ["smoke", "weather"],
|
|
98
|
+
cases: [
|
|
99
|
+
{
|
|
100
|
+
id: "nyc",
|
|
101
|
+
description: "Weather tool is used for temperature questions.",
|
|
102
|
+
async test(t) {
|
|
103
|
+
await t.send("What's the temperature in NYC?");
|
|
104
|
+
t.succeeded();
|
|
105
|
+
t.calledTool("get_weather");
|
|
106
|
+
t.check(t.reply, includes(/°|[FC]/));
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Select with the CLI: one datapoint (`weather/nyc`), a whole file
|
|
114
|
+
(`weather`), several ids, or omit for all.
|
|
115
|
+
|
|
116
|
+
`evals/evals.config.ts` must set `maxConcurrency` (hard-capped at 200 due to
|
|
117
|
+
model provider request limits; examples use `20`). Playground batches default
|
|
118
|
+
to in-memory only (`maxPlaygroundRuns`, default 20); set `persistRuns` to survive
|
|
119
|
+
serve restart:
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
import {
|
|
123
|
+
defineEvalConfig,
|
|
124
|
+
persistEvalRunsToDir,
|
|
125
|
+
} from "@cursor/july/evals";
|
|
126
|
+
|
|
127
|
+
export default defineEvalConfig({
|
|
128
|
+
maxConcurrency: 20,
|
|
129
|
+
// persistRuns: persistEvalRunsToDir(".agent-serve/eval-runs"),
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
## CLI notes for agents
|
|
133
|
+
|
|
134
|
+
- `run` defaults to **JSON** (use `--text` for a compact text dump).
|
|
135
|
+
- `run` / `eval` start an ephemeral server on port 0 with a temp `stateRoot`
|
|
136
|
+
outside the monorepo so session workspaces do not inherit ambient `AGENTS.md`.
|
|
137
|
+
- Point `--url` at an already-running agent to skip local host startup.
|
|
138
|
+
- `call <tool> --input '{...}'` invokes a server tool deterministically
|
|
139
|
+
(schema-validated, in-process, no model). `--session <id>` runs it inside
|
|
140
|
+
an existing session and records it on that session's event stream.
|
|
141
|
+
- `init` with no directory prints this setup guide (does not scaffold).
|
|
142
|
+
- `chat --json --message "..."` talks to a running server and prints a trajectory.
|
|
143
|
+
|
|
144
|
+
## Agent-to-agent (MCP endpoint + peer MCP connections)
|
|
145
|
+
|
|
146
|
+
Every mounted agent is also an MCP server at `/<slug>/v1/mcp` (streamable
|
|
147
|
+
HTTP, stateless, same auth chain as the session API). Tools: `ask`
|
|
148
|
+
(delegate a message; returns `{ status, sessionId, reply }`, with bounded
|
|
149
|
+
waits — `status: "running"` means keep waiting), `check` (wait/poll a
|
|
150
|
+
running session), and `call_tool` (deterministic server-tool passthrough,
|
|
151
|
+
only when the agent has server tools). Sessions created this way live on
|
|
152
|
+
the `mcp` channel and are visible in the playground.
|
|
153
|
+
|
|
154
|
+
Wire one agent to another with a **peer MCP connection**:
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
// agent/mcp-connections/weather.ts
|
|
158
|
+
export default defineConnection({ agent: "weather-agent" });
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Peers resolve at serve time to the target's MCP URL — loopback for local
|
|
162
|
+
turns and host-side `ctx.host.mcp`, the serve `--public-url` for
|
|
163
|
+
cloud-runtime turns (omitted + warned when unset; a cloud VM cannot reach
|
|
164
|
+
loopback). `--bearer-token` is attached to peer calls automatically.
|
|
165
|
+
Unknown slugs and self-references fail `serve` at startup; peers need the
|
|
166
|
+
multi-agent layout. No cross-host loop protection: scope delegation in
|
|
167
|
+
instructions so A→B→A recursion cannot happen (e.g. a parent agent that
|
|
168
|
+
delegates *only* weather questions to a `weather-agent` peer).
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
agent-serve serve --dir ./agents --dev
|
|
172
|
+
agent-serve chat --url http://127.0.0.1:3000/concierge --message "Weather in Paris?"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Slack channel
|
|
176
|
+
|
|
177
|
+
The Cursor Slack connection is the zero-setup default
|
|
178
|
+
(`slackChannel({ cursorAccount: true, agentName: "…" })`). Sign the host
|
|
179
|
+
in (`agent-serve login` / `CURSOR_API_KEY`), then `@Cursor <agentName> …`
|
|
180
|
+
in Slack; thread replies stay with that agent. Import from
|
|
181
|
+
`@cursor/july/channels/slack`.
|
|
182
|
+
|
|
183
|
+
Dedicated Socket Mode apps (no public Request URL) live in a second
|
|
184
|
+
channel file when you need channel watching, approval buttons, or a
|
|
185
|
+
distinct bot handle:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
agent-serve slack setup
|
|
189
|
+
agent-serve slack init --dir ./my-agent --name "My Agent" --channel-posts
|
|
190
|
+
# writes envPrefix from the directory name (MY_AGENT_SLACK_*)
|
|
191
|
+
agent-serve slack doctor --prefix MY_AGENT
|
|
192
|
+
agent-serve serve --dir ./my-agent --dev
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Multi-agent Socket Mode needs **one Slack app (and token pair) per agent**:
|
|
196
|
+
`<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN`. Missing tokens leave
|
|
197
|
+
that channel idle instead of failing `serve`. Single-agent setups can use the
|
|
198
|
+
shared `SLACK_*` vars (`slackChannel()` / `init --no-prefix`).
|
|
199
|
+
|
|
200
|
+
Channel watching (`engagement.channelPosts`) and tool approvals
|
|
201
|
+
(`toolApprovals` / `interactivity`) are Socket Mode only — not supported on
|
|
202
|
+
cursorAccount (the Cursor connection does not relay Block Kit clicks); use a
|
|
203
|
+
dedicated Slack app for Approve/Deny.
|
|
204
|
+
|
|
205
|
+
Defaults ON: chat streaming, thinking steps, suggested prompts (graceful
|
|
206
|
+
fallback when APIs missing; streaming defaults off on cursorAccount). Guided
|
|
207
|
+
skill: `skills/setup-slack/SKILL.md`.
|
|
208
|
+
|
|
209
|
+
## Playground UI (Vite + React)
|
|
210
|
+
|
|
211
|
+
The web playground is a Vite + React SPA under `playground/` (entry
|
|
212
|
+
`playground/src/main.tsx`).
|
|
213
|
+
|
|
214
|
+
`agent-serve serve` handles the Vite side for you:
|
|
215
|
+
|
|
216
|
+
- If `dist/playground/` is missing and the local vite toolchain is present,
|
|
217
|
+
serve auto-runs `vite build` before listening.
|
|
218
|
+
- `serve --dev` also starts Vite HMR (default `:5273`) and prints
|
|
219
|
+
`playground (HMR): …`. Single-agent proxies `/v1` to the serve URL;
|
|
220
|
+
multi-agent serves the agents index at `/` and each SPA at
|
|
221
|
+
`/<slug>/playground` (pin one slug with `AGENT_SERVE_BASE=/<slug>`).
|
|
222
|
+
|
|
223
|
+
`pnpm run build` still emits the static bundle to `dist/playground/` (ships in
|
|
224
|
+
`dist/**`). Pure logic (markdown render, trace model) lives in
|
|
225
|
+
`playground/src/lib` with Vitest tests — prefer adding tests there.
|
|
226
|
+
|
|
227
|
+
## GitHub channel
|
|
228
|
+
|
|
229
|
+
Author `agent/channels/github.ts` with `githubChannel()` from
|
|
230
|
+
`@cursor/july/channels/github`; it mounts `POST /v1/channels/github`
|
|
231
|
+
and verifies `X-Hub-Signature-256` when a webhook secret is set. The channel
|
|
232
|
+
publishes the webhook events it dispatches on (derived from the declared hooks,
|
|
233
|
+
or pinned via `webhookEvents`) as `meta.githubWebhookEvents`. Auth default: with
|
|
234
|
+
a secret → `allowAll()` + signature check; without one → `localDevStrict()`,
|
|
235
|
+
except under `serve --dev` which admits unsigned loopback deliveries (so
|
|
236
|
+
`gh webhook forward` and fixtures work with no secret). Outbound GitHub API
|
|
237
|
+
calls prefer App installation tokens (`GITHUB_APP_ID` +
|
|
238
|
+
`GITHUB_APP_PRIVATE_KEY` + webhook `installation.id` or
|
|
239
|
+
`GITHUB_APP_INSTALLATION_ID`); serve warmup also exports that token as
|
|
240
|
+
`GH_TOKEN` for tools that shell out to `gh`. For local testing, omit App
|
|
241
|
+
creds and use `GITHUB_TOKEN` / `GH_TOKEN` or `gh auth login`.
|
|
242
|
+
|
|
243
|
+
Test github agents against live deliveries with the CLI (wraps
|
|
244
|
+
`gh webhook forward`; URL + events auto-derived, repo inferred from the git
|
|
245
|
+
remote):
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# one-time: gh + the cli/gh-webhook extension
|
|
249
|
+
agent-serve github doctor --install
|
|
250
|
+
|
|
251
|
+
# what would be forwarded, per agent (URL + events)
|
|
252
|
+
agent-serve github events --dir ./agents --json
|
|
253
|
+
|
|
254
|
+
# forward live deliveries to a served agent (no secret needed against --dev;
|
|
255
|
+
# set GITHUB_WEBHOOK_SECRET to verify signatures)
|
|
256
|
+
agent-serve serve --dir ./my-agent --dev &
|
|
257
|
+
agent-serve github forward --dir ./my-agent
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
When several channels match (e.g. a folder of agent projects), one forwarder fans out to
|
|
261
|
+
all of them via a local proxy that re-posts each raw (still-signed) delivery to
|
|
262
|
+
the channels whose event set matches — `gh webhook forward` targets one URL and
|
|
263
|
+
GitHub allows only one forwarder per repo. `--repo` / `--org` override the
|
|
264
|
+
target, `--events` narrows the set, `--url` points at a tunnel, and `--slug` /
|
|
265
|
+
`--channel` forward to just one of several agents.
|
|
266
|
+
|
|
267
|
+
`gh webhook forward` requires **admin** on the repo (org owner for `--org`) and
|
|
268
|
+
authenticates its relay with the GitHub CLI's own login — so a `GITHUB_TOKEN` /
|
|
269
|
+
`GH_TOKEN` env override makes deliveries **401** (hook creation still succeeds,
|
|
270
|
+
which is the confusing part). Blank it for the command (`GITHUB_TOKEN= GH_TOKEN=
|
|
271
|
+
agent-serve github forward …`) or `unset` it; `github doctor` / `forward` warn
|
|
272
|
+
when they detect an env token.
|
|
273
|
+
|
|
274
|
+
When you lack repo admin, or want deterministic runs (hillclimbing), use
|
|
275
|
+
`agent-serve github replay <pr_url>` instead: it **reads** the PR via `gh api`
|
|
276
|
+
(pull access only, `GITHUB_TOKEN` is fine), synthesizes GitHub-shaped payloads,
|
|
277
|
+
signs them (`--secret`/`GITHUB_WEBHOOK_SECRET`), and POSTs them at the channel —
|
|
278
|
+
no admin, no relay. `--events` defaults to `pull_request` (`*` = the channel's
|
|
279
|
+
declared events); `--action`/`--conclusion`/`--comment`/`--context` tune each;
|
|
280
|
+
`--dry-run`/`--out DIR` print or snapshot payloads as fixtures.
|
|
281
|
+
Fixtures still work for offline replay: `POST` a saved payload with an
|
|
282
|
+
`x-github-event` header (no signature in `--dev`).
|
|
283
|
+
|
|
284
|
+
## Do not
|
|
285
|
+
|
|
286
|
+
- Put durable `--state-root` inside a large monorepo if you care about
|
|
287
|
+
ambient `AGENTS.md` / `.cursor` rules leaking into the agent workspace.
|
|
288
|
+
Prefer `defineAgent({ local: { cwd } })` pointing outside the monorepo
|
|
289
|
+
(session harnesses land at `<cwd>/<sessionId>`), or a temp `--state-root`.
|
|
290
|
+
- Expect `agent/evals/` to be loaded — evals live at the **project root** `evals/`.
|
package/LICENSE.md
ADDED