@cursor/july 0.1.1 → 0.1.3
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 +40 -7
- package/README.md +33 -24
- package/dist/bin/agent-serve.d.ts +3 -1
- package/dist/bin/agent-serve.d.ts.map +1 -1
- package/dist/bin/agent-serve.js +466 -140
- package/dist/channels/github/api.d.ts.map +1 -1
- package/dist/channels/github/api.js +31 -14
- package/dist/channels/github/cursor-account.d.ts +43 -0
- package/dist/channels/github/cursor-account.d.ts.map +1 -0
- package/dist/channels/github/cursor-account.js +95 -0
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +46 -9
- package/dist/channels/github/index.d.ts +2 -2
- package/dist/channels/github/index.js +2 -2
- package/dist/channels/github/types.d.ts +17 -0
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.d.ts +8 -2
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +8 -0
- package/dist/channels/slack/types.d.ts +24 -3
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/types.js +15 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +8 -8
- package/dist/docs/assets/{ab.md.COdXkces.js → ab.md.BMCZ6Hd7.js} +3 -3
- package/dist/docs/assets/{ab.md.COdXkces.lean.js → ab.md.BMCZ6Hd7.lean.js} +1 -1
- package/dist/docs/assets/{app.DqfFEmJd.js → app.BR0RbIdx.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtIOQzGj.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BaLEdS15.js → VPLocalSearchBox.qjsVTneI.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CZRvu_0q.js → theme.2Kg8jIp_.js} +2 -2
- package/dist/docs/assets/{deployment.md.Dx1TYNk5.js → deployment.md.DTKwE15Z.js} +3 -3
- package/dist/docs/assets/{deployment.md.Dx1TYNk5.lean.js → deployment.md.DTKwE15Z.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.DPZ_MAnI.js → evals.md.DAgEc_hL.js} +3 -3
- package/dist/docs/assets/{guides_agent-to-agent.md.CrtrsySy.js → guides_agent-to-agent.md.Bpzgq2Pq.js} +1 -1
- package/dist/docs/assets/{guides_cloud-runtime.md.CYlNMTNp.js → guides_cloud-runtime.md.gVzabdQL.js} +1 -1
- package/dist/docs/assets/{guides_github.md.DwbKhCeS.js → guides_github.md.DOOCpqsW.js} +11 -4
- package/dist/docs/assets/{guides_github.md.DwbKhCeS.lean.js → guides_github.md.DOOCpqsW.lean.js} +1 -1
- package/dist/docs/assets/{guides_human-in-the-loop.md.Dvuctx7s.js → guides_human-in-the-loop.md.DlUqsp1S.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.bv41fHfW.js → guides_slack.md.CCwqHvSV.js} +4 -4
- package/dist/docs/assets/{guides_slack.md.bv41fHfW.lean.js → guides_slack.md.CCwqHvSV.lean.js} +1 -1
- package/dist/docs/assets/{guides_webhooks.md.hFTik3lf.js → guides_webhooks.md.B1EswtUu.js} +2 -2
- package/dist/docs/assets/index.md.m81y7TY7.js +20 -0
- package/dist/docs/assets/{index.md.BPKcj5AI.lean.js → index.md.m81y7TY7.lean.js} +1 -1
- package/dist/docs/assets/quickstart.md.BU6Iwi_9.js +204 -0
- package/dist/docs/assets/quickstart.md.BU6Iwi_9.lean.js +1 -0
- package/dist/docs/assets/{reference_agent-config.md.Bpd7HQwf.js → reference_agent-config.md.DrW2JUM8.js} +4 -4
- package/dist/docs/assets/{reference_agent-config.md.Bpd7HQwf.lean.js → reference_agent-config.md.DrW2JUM8.lean.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.D7JTR03W.js → reference_channels.md.DdmiKgqf.js} +4 -4
- package/dist/docs/assets/{reference_channels.md.D7JTR03W.lean.js → reference_channels.md.DdmiKgqf.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.DA730zCu.js → reference_cli.md.Bv6pOxcF.js} +11 -6
- package/dist/docs/assets/{reference_cli.md.DA730zCu.lean.js → reference_cli.md.Bv6pOxcF.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.C3vNH_DE.js → reference_connections.md.zaEYCLHT.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.BCEc3MyM.js → reference_hooks.md.DyLVfE1O.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.BCEc3MyM.lean.js → reference_hooks.md.DyLVfE1O.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.DBAahtdz.js → reference_http-api.md.Dx_nmDG6.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.BC05LEQ8.js → reference_instructions.md.CgoV-YEb.js} +9 -7
- package/dist/docs/assets/{reference_instructions.md.BC05LEQ8.lean.js → reference_instructions.md.CgoV-YEb.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.D7qijxLk.js → reference_schedules.md.w_F2mXB6.js} +2 -2
- package/dist/docs/assets/{reference_skills.md.VQnlBT3Q.js → reference_skills.md.B_jHN7JL.js} +3 -3
- package/dist/docs/assets/{reference_skills.md.VQnlBT3Q.lean.js → reference_skills.md.B_jHN7JL.lean.js} +1 -1
- package/dist/docs/assets/{reference_subagents.md.CIRAVcPK.js → reference_subagents.md.zWAMNfi1.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.DF5kwlt0.js → reference_tools.md.CqgJroI0.js} +2 -2
- package/dist/docs/assets/scaffolding-agents.md.C3pTrmoE.js +1 -0
- package/dist/docs/assets/scaffolding-agents.md.C3pTrmoE.lean.js +1 -0
- package/dist/docs/assets/storage.md.CVnInNiN.js +17 -0
- package/dist/docs/assets/storage.md.CVnInNiN.lean.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +7 -7
- package/dist/docs/evals.html +7 -7
- package/dist/docs/guides/agent-to-agent.html +6 -6
- package/dist/docs/guides/cloud-runtime.html +5 -5
- package/dist/docs/guides/github.html +14 -7
- package/dist/docs/guides/human-in-the-loop.html +6 -6
- package/dist/docs/guides/slack.html +8 -8
- package/dist/docs/guides/webhooks.html +6 -6
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +5 -5
- package/dist/docs/index.html +7 -7
- package/dist/docs/quickstart.html +195 -26
- package/dist/docs/reference/agent-config.html +7 -7
- package/dist/docs/reference/channels.html +8 -8
- package/dist/docs/reference/cli.html +14 -9
- package/dist/docs/reference/connections.html +5 -5
- package/dist/docs/reference/hooks.html +5 -5
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/instructions.html +13 -11
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- package/dist/docs/reference/schedules.html +7 -7
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +6 -6
- package/dist/docs/reference/subagents.html +6 -6
- package/dist/docs/reference/tools.html +7 -7
- package/dist/docs/scaffolding-agents.html +5 -5
- package/dist/docs/storage.html +41 -0
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/internal/chat-client.d.ts +29 -3
- package/dist/internal/chat-client.d.ts.map +1 -1
- package/dist/internal/chat-client.js +180 -27
- package/dist/internal/cli-ax.d.ts +75 -2
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +600 -52
- package/dist/internal/cli-cursor.d.ts.map +1 -1
- package/dist/internal/cli-cursor.js +8 -36
- package/dist/internal/cli-deploy.d.ts +108 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -0
- package/dist/internal/cli-deploy.js +1009 -0
- package/dist/internal/cursor/backend-client.d.ts +10 -1
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +79 -1
- package/dist/internal/cursor/credentials.d.ts +9 -0
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +12 -0
- package/dist/internal/cursor/github-credentials.d.ts +44 -0
- package/dist/internal/cursor/github-credentials.d.ts.map +1 -0
- package/dist/internal/cursor/github-credentials.js +195 -0
- package/dist/internal/deploy-client.d.ts +184 -0
- package/dist/internal/deploy-client.d.ts.map +1 -0
- package/dist/internal/deploy-client.js +395 -0
- package/dist/internal/deploy-source.d.ts +35 -0
- package/dist/internal/deploy-source.d.ts.map +1 -0
- package/dist/internal/deploy-source.js +118 -0
- package/dist/internal/discovery.d.ts +11 -0
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +116 -19
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -0
- package/dist/internal/eval-run-store.d.ts +22 -3
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +39 -20
- package/dist/internal/eval-runner.d.ts +2 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +2 -0
- package/dist/internal/event-mapper.d.ts +54 -1
- package/dist/internal/event-mapper.d.ts.map +1 -1
- package/dist/internal/event-mapper.js +151 -41
- package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
- package/dist/internal/handleAgentServeTrigger.js +10 -12
- package/dist/internal/host-platforms.d.ts +7 -2
- package/dist/internal/host-platforms.d.ts.map +1 -1
- package/dist/internal/host-platforms.js +15 -10
- package/dist/internal/hosting.d.ts +37 -0
- package/dist/internal/hosting.d.ts.map +1 -0
- package/dist/internal/hosting.js +67 -0
- package/dist/internal/init-project.d.ts +88 -1
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +221 -31
- package/dist/internal/install-cursor-skills.d.ts +64 -0
- package/dist/internal/install-cursor-skills.d.ts.map +1 -0
- package/dist/internal/install-cursor-skills.js +274 -0
- package/dist/internal/logs-client.d.ts +60 -0
- package/dist/internal/logs-client.d.ts.map +1 -0
- package/dist/internal/logs-client.js +311 -0
- package/dist/internal/open-browser.d.ts +5 -0
- package/dist/internal/open-browser.d.ts.map +1 -0
- package/dist/internal/open-browser.js +34 -0
- package/dist/internal/playground/toolchain.d.ts.map +1 -1
- package/dist/internal/playground/toolchain.js +16 -11
- package/dist/internal/playground-proxy.d.ts +69 -0
- package/dist/internal/playground-proxy.d.ts.map +1 -0
- package/dist/internal/playground-proxy.js +468 -0
- package/dist/internal/prompt-context.d.ts +35 -0
- package/dist/internal/prompt-context.d.ts.map +1 -0
- package/dist/internal/prompt-context.js +71 -0
- package/dist/internal/reminder-runner.d.ts +7 -0
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +50 -6
- package/dist/internal/reminder-store.d.ts +2 -0
- package/dist/internal/reminder-store.d.ts.map +1 -1
- package/dist/internal/reminder-store.js +18 -0
- package/dist/internal/request-headers.d.ts +11 -0
- package/dist/internal/request-headers.d.ts.map +1 -0
- package/dist/internal/request-headers.js +14 -0
- package/dist/internal/resolve-prod-target.d.ts +42 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -0
- package/dist/internal/resolve-prod-target.js +111 -0
- package/dist/internal/run-client.d.ts +2 -2
- package/dist/internal/run-client.d.ts.map +1 -1
- package/dist/internal/run-client.js +38 -23
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +182 -45
- package/dist/internal/session-engine.d.ts +50 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +267 -23
- package/dist/internal/sessions-client.d.ts +21 -0
- package/dist/internal/sessions-client.d.ts.map +1 -0
- package/dist/internal/sessions-client.js +168 -0
- package/dist/internal/storage-coordinator.d.ts +139 -0
- package/dist/internal/storage-coordinator.d.ts.map +1 -0
- package/dist/internal/storage-coordinator.js +499 -0
- package/dist/internal/stream-progress.d.ts.map +1 -1
- package/dist/internal/stream-progress.js +31 -3
- package/dist/internal/terminal-style.d.ts +22 -0
- package/dist/internal/terminal-style.d.ts.map +1 -0
- package/dist/internal/terminal-style.js +49 -0
- package/dist/internal/trajectory.d.ts +10 -5
- package/dist/internal/trajectory.d.ts.map +1 -1
- package/dist/internal/trajectory.js +82 -10
- package/dist/internal/workspace.d.ts +11 -0
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +38 -4
- package/dist/playground/assets/cursor-icons-outline-BxTT_FVJ.woff2 +0 -0
- package/dist/playground/assets/index-D-vo2lV_.css +1 -0
- package/dist/playground/assets/index-x60b9q2j.js +312 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage.d.ts +204 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +153 -0
- package/dist/types.d.ts +70 -4
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +3 -2
- package/docs/guides/github.md +43 -8
- package/docs/guides/slack.md +1 -1
- package/docs/quickstart.md +350 -57
- package/docs/reference/cli.md +51 -3
- package/docs/reference/instructions.md +8 -6
- package/docs/scaffolding-agents.md +1 -1
- package/docs/storage.md +98 -0
- package/package.json +10 -1
- package/skills/ab/SKILL.md +8 -8
- package/skills/create-agent/SKILL.md +28 -22
- package/skills/debug/SKILL.md +11 -11
- package/skills/evals/SKILL.md +16 -16
- package/skills/framework-map/SKILL.md +6 -6
- package/skills/github/SKILL.md +22 -14
- package/skills/hillclimb/SKILL.md +10 -10
- package/skills/setup-slack/SKILL.md +13 -13
- package/src/bin/agent-serve.ts +552 -179
- package/src/channels/github/api.ts +42 -23
- package/src/channels/github/cursor-account.ts +165 -0
- package/src/channels/github/github-channel.ts +66 -6
- package/src/channels/github/index.ts +2 -2
- package/src/channels/github/types.ts +19 -0
- package/src/channels/slack/slack-channel.ts +17 -3
- package/src/channels/slack/types.ts +44 -3
- package/src/index.ts +13 -0
- package/src/internal/chat-client.ts +252 -37
- package/src/internal/cli-ax.ts +722 -72
- package/src/internal/cli-cursor.ts +14 -42
- package/src/internal/cli-deploy.ts +1319 -0
- package/src/internal/cursor/backend-client.ts +103 -1
- package/src/internal/cursor/credentials.ts +14 -0
- package/src/internal/cursor/github-credentials.ts +248 -0
- package/src/internal/deploy-client.ts +632 -0
- package/src/internal/deploy-source.ts +133 -0
- package/src/internal/discovery.ts +141 -17
- package/src/internal/distribution.ts +1 -0
- package/src/internal/eval-run-store.ts +50 -20
- package/src/internal/eval-runner.ts +5 -0
- package/src/internal/event-mapper.ts +222 -42
- package/src/internal/handleAgentServeTrigger.ts +10 -12
- package/src/internal/host-platforms.ts +28 -11
- package/src/internal/hosting.ts +77 -0
- package/src/internal/init-project.ts +333 -51
- package/src/internal/install-cursor-skills.ts +327 -0
- package/src/internal/logs-client.ts +442 -0
- package/src/internal/open-browser.ts +41 -0
- package/src/internal/playground/toolchain.ts +15 -13
- package/src/internal/playground-proxy.ts +576 -0
- package/src/internal/prompt-context.ts +95 -0
- package/src/internal/reminder-runner.ts +50 -6
- package/src/internal/reminder-store.ts +21 -0
- package/src/internal/request-headers.ts +23 -0
- package/src/internal/resolve-prod-target.ts +150 -0
- package/src/internal/run-client.ts +39 -36
- package/src/internal/server.ts +223 -28
- package/src/internal/session-engine.ts +307 -10
- package/src/internal/sessions-client.ts +182 -0
- package/src/internal/storage-coordinator.ts +615 -0
- package/src/internal/stream-progress.ts +36 -2
- package/src/internal/terminal-style.ts +74 -0
- package/src/internal/trajectory.ts +91 -13
- package/src/internal/workspace.ts +42 -4
- package/src/storage.ts +325 -0
- package/src/types.ts +82 -8
- package/dist/docs/assets/chunks/@localSearchIndexroot.CcVk1uKq.js +0 -1
- package/dist/docs/assets/index.md.BPKcj5AI.js +0 -20
- package/dist/docs/assets/quickstart.md.tVPiGK_L.js +0 -35
- package/dist/docs/assets/quickstart.md.tVPiGK_L.lean.js +0 -1
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.js +0 -1
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.lean.js +0 -1
- package/dist/playground/assets/cursor-icons-outline-oY2V_mvK.woff2 +0 -0
- package/dist/playground/assets/index-1K-hG-7p.css +0 -1
- package/dist/playground/assets/index-FlWjhg3x.js +0 -79
- /package/dist/docs/assets/{evals.md.DPZ_MAnI.lean.js → evals.md.DAgEc_hL.lean.js} +0 -0
- /package/dist/docs/assets/{guides_agent-to-agent.md.CrtrsySy.lean.js → guides_agent-to-agent.md.Bpzgq2Pq.lean.js} +0 -0
- /package/dist/docs/assets/{guides_cloud-runtime.md.CYlNMTNp.lean.js → guides_cloud-runtime.md.gVzabdQL.lean.js} +0 -0
- /package/dist/docs/assets/{guides_human-in-the-loop.md.Dvuctx7s.lean.js → guides_human-in-the-loop.md.DlUqsp1S.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.hFTik3lf.lean.js → guides_webhooks.md.B1EswtUu.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.C3vNH_DE.lean.js → reference_connections.md.zaEYCLHT.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.DBAahtdz.lean.js → reference_http-api.md.Dx_nmDG6.lean.js} +0 -0
- /package/dist/docs/assets/{reference_schedules.md.D7qijxLk.lean.js → reference_schedules.md.w_F2mXB6.lean.js} +0 -0
- /package/dist/docs/assets/{reference_subagents.md.CIRAVcPK.lean.js → reference_subagents.md.zWAMNfi1.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.DF5kwlt0.lean.js → reference_tools.md.CqgJroI0.lean.js} +0 -0
package/AGENTS.md
CHANGED
|
@@ -139,6 +139,13 @@ export default defineEvalConfig({
|
|
|
139
139
|
(schema-validated, in-process, no model). `--session <id>` runs it inside
|
|
140
140
|
an existing session and records it on that session's event stream.
|
|
141
141
|
- `init` with no directory prints this setup guide (does not scaffold).
|
|
142
|
+
`init <dir>` scaffolds (skipping existing files), runs `npm install`,
|
|
143
|
+
offers to install/update package skills into
|
|
144
|
+
`~/.cursor/skills/agentkit/` (TTY only; always overwrites with the
|
|
145
|
+
package copy), runs `login` and waits when unsigned, then prints `cd`
|
|
146
|
+
(when needed) and bare `dev`. `--json` still installs but never blocks
|
|
147
|
+
on login or skill install; it prints
|
|
148
|
+
`{ ok, directory, created, skipped, installed, installError, next }`.
|
|
142
149
|
- `chat --json --message "..."` talks to a running server and prints a trajectory.
|
|
143
150
|
|
|
144
151
|
## Agent-to-agent (MCP endpoint + peer MCP connections)
|
|
@@ -168,7 +175,7 @@ instructions so A→B→A recursion cannot happen (e.g. a parent agent that
|
|
|
168
175
|
delegates *only* weather questions to a `weather-agent` peer).
|
|
169
176
|
|
|
170
177
|
```bash
|
|
171
|
-
agent-serve
|
|
178
|
+
agent-serve dev ./agents
|
|
172
179
|
agent-serve chat --url http://127.0.0.1:3000/concierge --message "Weather in Paris?"
|
|
173
180
|
```
|
|
174
181
|
|
|
@@ -177,7 +184,10 @@ agent-serve chat --url http://127.0.0.1:3000/concierge --message "Weather in Par
|
|
|
177
184
|
The Cursor Slack connection is the zero-setup default
|
|
178
185
|
(`slackChannel({ cursorAccount: true, agentName: "…" })`). Sign the host
|
|
179
186
|
in (`agent-serve login` / `CURSOR_API_KEY`), then `@Cursor <agentName> …`
|
|
180
|
-
in Slack; thread replies stay with that agent.
|
|
187
|
+
in Slack; thread replies stay with that agent. `agentName` must be a
|
|
188
|
+
**single token** (no whitespace) — prefer PascalCase (`ApprovalBuddy`);
|
|
189
|
+
multi-word names fail typecheck for string literals and throw at
|
|
190
|
+
construction / serve time. Import from
|
|
181
191
|
`@cursor/july/channels/slack`.
|
|
182
192
|
|
|
183
193
|
Dedicated Socket Mode apps (no public Request URL) live in a second
|
|
@@ -189,7 +199,7 @@ agent-serve slack setup
|
|
|
189
199
|
agent-serve slack init --dir ./my-agent --name "My Agent" --channel-posts
|
|
190
200
|
# writes envPrefix from the directory name (MY_AGENT_SLACK_*)
|
|
191
201
|
agent-serve slack doctor --prefix MY_AGENT
|
|
192
|
-
agent-serve
|
|
202
|
+
agent-serve dev ./my-agent
|
|
193
203
|
```
|
|
194
204
|
|
|
195
205
|
Multi-agent Socket Mode needs **one Slack app (and token pair) per agent**:
|
|
@@ -215,8 +225,8 @@ The web playground is a Vite + React SPA under `playground/` (entry
|
|
|
215
225
|
|
|
216
226
|
- If `dist/playground/` is missing and the local vite toolchain is present,
|
|
217
227
|
serve auto-runs `vite build` before listening.
|
|
218
|
-
- `serve --dev` also starts Vite HMR (default `:5273`) and prints
|
|
219
|
-
`playground
|
|
228
|
+
- `serve --dev` / `dev` also starts Vite HMR (default `:5273`) and prints
|
|
229
|
+
that URL as `playground`. Single-agent proxies `/v1` to the serve URL;
|
|
220
230
|
multi-agent serves the agents index at `/` and each SPA at
|
|
221
231
|
`/<slug>/playground` (pin one slug with `AGENT_SERVE_BASE=/<slug>`).
|
|
222
232
|
|
|
@@ -234,7 +244,12 @@ or pinned via `webhookEvents`) as `meta.githubWebhookEvents`. Auth default: with
|
|
|
234
244
|
a secret → `allowAll()` + signature check; without one → `localDevStrict()`,
|
|
235
245
|
except under `serve --dev` which admits unsigned loopback deliveries (so
|
|
236
246
|
`gh webhook forward` and fixtures work with no secret). Outbound GitHub API
|
|
237
|
-
calls
|
|
247
|
+
calls can reuse the signed-in Cursor connection with
|
|
248
|
+
`githubChannel({ cursorAccount: { repos: ["owner/repo"] } })`; this supplies
|
|
249
|
+
events plus a refreshing repo-scoped credential to `ctx.github`,
|
|
250
|
+
`ctx.host.github`, and child `gh` commands in dev and hosted deployments.
|
|
251
|
+
Default `permissions: "pr-write"`; opt up to `"contents-write"` only to push.
|
|
252
|
+
Without `cursorAccount`, calls prefer App installation tokens (`GITHUB_APP_ID` +
|
|
238
253
|
`GITHUB_APP_PRIVATE_KEY` + webhook `installation.id` or
|
|
239
254
|
`GITHUB_APP_INSTALLATION_ID`); serve warmup also exports that token as
|
|
240
255
|
`GH_TOKEN` for tools that shell out to `gh`. For local testing, omit App
|
|
@@ -253,7 +268,7 @@ agent-serve github events --dir ./agents --json
|
|
|
253
268
|
|
|
254
269
|
# forward live deliveries to a served agent (no secret needed against --dev;
|
|
255
270
|
# set GITHUB_WEBHOOK_SECRET to verify signatures)
|
|
256
|
-
agent-serve
|
|
271
|
+
agent-serve dev ./my-agent &
|
|
257
272
|
agent-serve github forward --dir ./my-agent
|
|
258
273
|
```
|
|
259
274
|
|
|
@@ -283,8 +298,26 @@ Fixtures still work for offline replay: `POST` a saved payload with an
|
|
|
283
298
|
|
|
284
299
|
## Do not
|
|
285
300
|
|
|
301
|
+
- Proactively add or update documentation (`docs/`, READMEs, this file) as
|
|
302
|
+
part of a code change. Docs are written intentionally, on explicit request
|
|
303
|
+
only — never as a side effect of a feature or fix. If a change makes docs
|
|
304
|
+
stale, say so in the PR description instead of editing them unprompted.
|
|
286
305
|
- Put durable `--state-root` inside a large monorepo if you care about
|
|
287
306
|
ambient `AGENTS.md` / `.cursor` rules leaking into the agent workspace.
|
|
288
307
|
Prefer `defineAgent({ local: { cwd } })` pointing outside the monorepo
|
|
289
308
|
(session harnesses land at `<cwd>/<sessionId>`), or a temp `--state-root`.
|
|
290
309
|
- Expect `agent/evals/` to be loaded — evals live at the **project root** `evals/`.
|
|
310
|
+
- Build optional object fields with a conditional empty-object spread.
|
|
311
|
+
Assign the property directly; `undefined` is fine on optional keys.
|
|
312
|
+
|
|
313
|
+
```ts
|
|
314
|
+
// ❌ BAD
|
|
315
|
+
{ ...(x === undefined ? {} : { x }) }
|
|
316
|
+
{ ...(cond && { x }) }
|
|
317
|
+
|
|
318
|
+
// ✅ GOOD
|
|
319
|
+
{ x } // may be undefined
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Only use a conditional spread when merging a real partial object
|
|
323
|
+
(`...overrides`), not to omit an optional key.
|
package/README.md
CHANGED
|
@@ -53,9 +53,10 @@ my-agent/
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
Scaffold a starter project with `agent-serve init ./my-agent` — a minimal
|
|
56
|
-
agent (`package.json`, `
|
|
57
|
-
`agent/tools/echo.ts`) that serves
|
|
58
|
-
|
|
56
|
+
agent (`package.json`, `tsconfig.json`, `agent/agent.ts`,
|
|
57
|
+
`agent/instructions.md`, and a demo `agent/tools/echo.ts`) that serves
|
|
58
|
+
immediately and type-checks with `npm run check`. From there, grow it folder
|
|
59
|
+
by folder; the [docs](./docs/README.md) walk a weather agent from a single
|
|
59
60
|
`get_weather` tool through skills, channels, evals, and deployment.
|
|
60
61
|
|
|
61
62
|
Serve one project with `agent-serve serve --dir ./my-agent --dev`, or point
|
|
@@ -79,10 +80,8 @@ one port, each under its own slug (its directory name):
|
|
|
79
80
|
|
|
80
81
|
```bash
|
|
81
82
|
agent-serve serve --dir ./agents --dev
|
|
82
|
-
# 2 agents listening
|
|
83
|
-
#
|
|
84
|
-
# /weather-agent → /weather-agent/playground, /weather-agent/v1/*
|
|
85
|
-
# /concierge → /concierge/playground, /concierge/v1/*
|
|
83
|
+
# 2 agents listening
|
|
84
|
+
# playground http://127.0.0.1:5273
|
|
86
85
|
```
|
|
87
86
|
|
|
88
87
|
`serve` always uses multi-agent layout by default: agents are mounted under
|
|
@@ -377,8 +376,8 @@ own playground at `/<slug>/playground` and `/` is an index of them all (see
|
|
|
377
376
|
|
|
378
377
|
### Developing the playground
|
|
379
378
|
|
|
380
|
-
`serve --dev` also starts Vite HMR (default `:5273`) and prints
|
|
381
|
-
`playground
|
|
379
|
+
`serve --dev` / `dev` also starts Vite HMR (default `:5273`) and prints that
|
|
380
|
+
URL as `playground`. Single-agent proxies `/v1` to the serve URL; multi-agent
|
|
382
381
|
serves the agents index at `/` and each SPA at `/<slug>/playground`:
|
|
383
382
|
|
|
384
383
|
```bash
|
|
@@ -927,19 +926,22 @@ Approve/Deny cards and routes Socket Mode `interactive` clicks to
|
|
|
927
926
|
(App-Level Token with `connections:write`).
|
|
928
927
|
|
|
929
928
|
Most demos under `examples/` use the Cursor Slack connection
|
|
930
|
-
(`cursorAccount: true`) with a unique `agentName` —
|
|
931
|
-
`@Cursor
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
`slack-app.ts`) with their own env
|
|
935
|
-
`<PREFIX>_SLACK_APP_TOKEN`, derived
|
|
929
|
+
(`cursorAccount: true`) with a unique single-token `agentName` —
|
|
930
|
+
`@Cursor Benny …`, `@Cursor Bugbot …`, `@Cursor ApprovalBuddy …`, etc.
|
|
931
|
+
Sign the host in, then mention the agent; no per-agent Slack app required
|
|
932
|
+
for chat. Agents that need channel watch or tool approvals keep a Socket
|
|
933
|
+
Mode app in a second channel file (e.g. `slack-app.ts`) with their own env
|
|
934
|
+
prefix (`<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN`, derived
|
|
935
|
+
from the directory name by `slack init`).
|
|
936
936
|
|
|
937
937
|
| Agent | `@Cursor` name | Optional Socket Mode app |
|
|
938
938
|
| --- | --- | --- |
|
|
939
939
|
| `weather-agent` | Weather | `slack-app.ts` (`WEATHER_AGENT_SLACK_*`, tool approvals) |
|
|
940
|
-
| `slack-agent` |
|
|
940
|
+
| `slack-agent` | SlackAgent | — |
|
|
941
941
|
| `bugbot` | Bugbot | — |
|
|
942
942
|
| `fsd` | FSD | — |
|
|
943
|
+
| `benny` | Benny | `slack-app.ts` (`BENNY_SLACK_*`, channel watch) |
|
|
944
|
+
| `approval-buddy` | ApprovalBuddy | — |
|
|
943
945
|
|
|
944
946
|
PR-oriented demos (`bugbot`, `fsd`) extract a GitHub PR URL / `owner/repo#N`
|
|
945
947
|
from the mention and run the same host path as their HTTP channels.
|
|
@@ -970,7 +972,10 @@ import { defaultGitHubAuth, githubChannel } from "@cursor/july/channels/github";
|
|
|
970
972
|
|
|
971
973
|
export default githubChannel({
|
|
972
974
|
botName: "my-agent", // or GITHUB_APP_SLUG
|
|
973
|
-
|
|
975
|
+
cursorAccount: {
|
|
976
|
+
repos: ["owner/repo"],
|
|
977
|
+
// permissions?: "read" | "pr-write" | "contents-write" (default pr-write)
|
|
978
|
+
},
|
|
974
979
|
onPullRequest: (ctx, pr) =>
|
|
975
980
|
pr.action === "opened" ? { auth: defaultGitHubAuth(ctx) } : null,
|
|
976
981
|
onCheckSuite: (ctx, suite) =>
|
|
@@ -986,13 +991,17 @@ under `serve --dev`, which admits unsigned loopback deliveries so
|
|
|
986
991
|
`{ auth }` to start a model turn as the actor, `{ task }` for host-side work
|
|
987
992
|
(202 ACK, runs past GitHub's ~10s timeout), or `null` to skip.
|
|
988
993
|
|
|
989
|
-
**Testing GitHub agents locally.**
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
`
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
994
|
+
**Testing GitHub agents locally.** `cursorAccount` reuses `agent-serve login`
|
|
995
|
+
for both Cursor SCM events and a refreshing repo-scoped GitHub credential used
|
|
996
|
+
by `ctx.github`, `ctx.host.github`, and child `gh` commands. Default
|
|
997
|
+
`permissions: "pr-write"` covers comments without `contents:write`; opt up to
|
|
998
|
+
`"contents-write"` only when the agent must push. Without `cursorAccount`, API
|
|
999
|
+
auth prefers GitHub App installation tokens when `GITHUB_APP_ID` /
|
|
1000
|
+
`GITHUB_APP_PRIVATE_KEY` (and an installation id) are set, then falls back to
|
|
1001
|
+
`GITHUB_TOKEN` / `GH_TOKEN` or `gh auth login`. The channel publishes the
|
|
1002
|
+
webhook events it dispatches on (derived from the declared hooks, or pinned
|
|
1003
|
+
via `webhookEvents`), so `agent-serve github …` can forward live
|
|
1004
|
+
deliveries with zero hand-listing — it wraps [`gh webhook
|
|
996
1005
|
forward`](https://docs.github.com/en/webhooks/testing-and-troubleshooting-webhooks/using-the-github-cli-to-forward-webhooks-for-testing):
|
|
997
1006
|
|
|
998
1007
|
```bash
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
* agent-serve CLI.
|
|
4
4
|
*
|
|
5
5
|
* agent-serve serve [--dir .] [--port 3000] [--host 127.0.0.1] [--dev]
|
|
6
|
+
* agent-serve dev [path] [--port 3000] [--host 127.0.0.1]
|
|
6
7
|
* agent-serve chat [--url http://127.0.0.1:3000] [--message "..."] [--json]
|
|
8
|
+
* agent-serve resume <sessionId> [--url | --prod] [--message "..."]
|
|
7
9
|
* agent-serve run [--dir .] [--message "..."] [--json|--text]
|
|
8
10
|
* agent-serve trajectory --events <file.ndjson>
|
|
9
|
-
* agent-serve init [dir]
|
|
11
|
+
* agent-serve init [dir] [--json]
|
|
10
12
|
* agent-serve eval [--dir .] [evalId...]
|
|
11
13
|
* agent-serve validate [--dir .]
|
|
12
14
|
* agent-serve slack <subcommand>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-serve.d.ts","sourceRoot":"","sources":["../../src/bin/agent-serve.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"agent-serve.d.ts","sourceRoot":"","sources":["../../src/bin/agent-serve.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
|