@cursor/july 0.1.92 → 0.1.94
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 +8 -20
- package/README.md +115 -182
- package/dist/channels/deployments/deployments-channel.d.ts +7 -0
- package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
- package/dist/channels/deployments/deployments-channel.js +26 -2
- package/dist/channels/deployments/types.d.ts +8 -0
- package/dist/channels/deployments/types.d.ts.map +1 -1
- package/dist/channels/github/github-channel.d.ts +3 -0
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +28 -56
- package/dist/channels/slack/attachments.js +2 -2
- package/dist/channels/slack/dispatch.d.ts +0 -7
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +4 -7
- package/dist/channels/slack/eval-directive.d.ts +5 -12
- package/dist/channels/slack/eval-directive.d.ts.map +1 -1
- package/dist/channels/slack/eval-directive.js +8 -19
- package/dist/channels/slack/index.d.ts +0 -6
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +0 -6
- package/dist/channels/slack/setup.d.ts +4 -4
- package/dist/channels/slack/setup.d.ts.map +1 -1
- package/dist/channels/slack/setup.js +8 -15
- package/dist/channels/slack/slack-channel.d.ts +6 -13
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +15 -101
- package/dist/channels/slack/types.d.ts +12 -79
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/types.js +1 -15
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +12 -0
- package/dist/connections.d.ts +18 -9
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +17 -8
- package/dist/continuation.d.ts +1 -1
- package/dist/continuation.js +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +8 -8
- package/dist/docs/ab.md +7 -13
- package/dist/docs/assets/{ab.md.CVzWxLoB.js → ab.md.DJo5r4R-.js} +4 -4
- package/dist/docs/assets/{ab.md.CVzWxLoB.lean.js → ab.md.DJo5r4R-.lean.js} +1 -1
- package/dist/docs/assets/{app.Bci6CM9E.js → app.CFDEas4I.js} +1 -1
- package/dist/docs/assets/building-with-agents.md.DI4mEzlt.js +13 -0
- package/dist/docs/assets/{building-with-agents.md.DH8A_cHA.lean.js → building-with-agents.md.DI4mEzlt.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DU3U2Ij2.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BCPT6xA-.js → VPLocalSearchBox.B1IIYpYS.js} +1 -1
- package/dist/docs/assets/chunks/{theme.BEA8BF3c.js → theme.Ct4NSiLm.js} +2 -2
- package/dist/docs/assets/concepts.md.lwAgBIMI.js +1 -0
- package/dist/docs/assets/{concepts.md.CRfU3bVg.lean.js → concepts.md.lwAgBIMI.lean.js} +1 -1
- package/dist/docs/assets/{deployment.md.DX_hc3ze.js → deployment.md.D9msOFOW.js} +9 -14
- package/dist/docs/assets/{deployment.md.DX_hc3ze.lean.js → deployment.md.D9msOFOW.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.a0SMN6r9.js → evals.md.lfJoEVc8.js} +6 -6
- package/dist/docs/assets/{evals.md.a0SMN6r9.lean.js → evals.md.lfJoEVc8.lean.js} +1 -1
- package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.js → guides_agent-to-agent.md.BDb0t1QV.js} +2 -2
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.js +9 -0
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.lean.js +1 -0
- package/dist/docs/assets/{guides_convert-automation.md.D06eIzea.js → guides_convert-automation.md.B4sjlodG.js} +2 -2
- package/dist/docs/assets/{guides_github.md.Cdt1s2QC.js → guides_github.md.Cnh2mL4a.js} +5 -5
- package/dist/docs/assets/{guides_github.md.Cdt1s2QC.lean.js → guides_github.md.Cnh2mL4a.lean.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.js → guides_mcp-oauth.md.DPYmBCbV.js} +7 -9
- package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.lean.js → guides_mcp-oauth.md.DPYmBCbV.lean.js} +1 -1
- package/dist/docs/assets/{guides_slack.md.DiUmk_Oi.js → guides_slack.md.C32HsdKk.js} +7 -13
- package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +1 -0
- package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.js → guides_webhooks.md.DKdA43Qm.js} +2 -2
- package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.js → hillclimbing.md.DhESf3OO.js} +1 -1
- package/dist/docs/assets/index.md.DRakGHFe.js +5 -0
- package/dist/docs/assets/{index.md.BAaMXLFd.lean.js → index.md.DRakGHFe.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.DsrarzEg.js → quickstart.md.Nj_LjW_a.js} +2 -2
- package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.js → reference_agent-config.md.Cp_x38Nl.js} +3 -3
- package/dist/docs/assets/{reference_channels.md.DQZjCnyh.js → reference_channels.md.Cd2f2iyV.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.DQZjCnyh.lean.js → reference_channels.md.Cd2f2iyV.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.B7GkAJRC.js → reference_cli.md.Cw6_ICYG.js} +10 -11
- package/dist/docs/assets/{reference_cli.md.B7GkAJRC.lean.js → reference_cli.md.Cw6_ICYG.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DYidrb-j.js → reference_connections.md.BH8Oc0D0.js} +7 -7
- package/dist/docs/assets/{reference_connections.md.DYidrb-j.lean.js → reference_connections.md.BH8Oc0D0.lean.js} +1 -1
- package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +14 -0
- package/dist/docs/assets/{reference_hooks.md.B9FSgdDe.lean.js → reference_hooks.md.a8BJxMR5.lean.js} +1 -1
- package/dist/docs/assets/reference_http-api.md.D89k1mdm.js +11 -0
- package/dist/docs/assets/reference_http-api.md.D89k1mdm.lean.js +1 -0
- package/dist/docs/assets/{reference_instructions.md.DhNCOl7r.js → reference_instructions.md.CR7XSsGk.js} +3 -3
- package/dist/docs/assets/{reference_instructions.md.DhNCOl7r.lean.js → reference_instructions.md.CR7XSsGk.lean.js} +1 -1
- package/dist/docs/assets/reference_playground.md.DnX5nL-B.js +1 -0
- package/dist/docs/assets/reference_playground.md.DnX5nL-B.lean.js +1 -0
- package/dist/docs/assets/reference_project-layout.md.Bv4KOtlB.js +19 -0
- package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.js → reference_prompt.md.DnaD5dNK.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.DNipebiG.js → reference_schedules.md.DI_JrHgq.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.D0mIh4KK.js +1 -0
- package/dist/docs/assets/{reference_sessions.md.tUFzz98S.lean.js → reference_sessions.md.D0mIh4KK.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.js → reference_skills.md.8son6Hjm.js} +4 -4
- package/dist/docs/assets/{reference_subagents.md.Xoav0AII.js → reference_subagents.md.CfsIloPm.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.wpaJtHn6.js → reference_tools.md.BHeXn2id.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.wpaJtHn6.lean.js → reference_tools.md.BHeXn2id.lean.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +1 -0
- package/dist/docs/assets/{scaffolding-agents.md.CRDDUtYJ.lean.js → scaffolding-agents.md.D7UUkWw0.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.JbjlHWZ6.js → storage.md.BOHeqk2M.js} +5 -5
- package/dist/docs/assets/{storage.md.JbjlHWZ6.lean.js → storage.md.BOHeqk2M.lean.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.DSJSIpWU.js → templates_agentic-owners.md.DqtPdm6f.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.js → templates_pr-autofixer.md.DU7dQpor.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.lean.js → templates_pr-autofixer.md.DU7dQpor.lean.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.js → templates_security-reviewer.md.CTa7u_l1.js} +2 -2
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.lean.js → templates_security-reviewer.md.CTa7u_l1.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.DYECCZiJ.lean.js → troubleshooting.md.Ctv3T8C2.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +7 -7
- package/dist/docs/building-with-agents.md +5 -11
- package/dist/docs/concepts.html +5 -8
- package/dist/docs/concepts.md +13 -17
- package/dist/docs/deployment.html +13 -18
- package/dist/docs/deployment.md +9 -30
- package/dist/docs/design/agsh.md +406 -0
- package/dist/docs/evals.html +10 -10
- package/dist/docs/evals.md +16 -37
- package/dist/docs/guides/agent-to-agent.html +6 -6
- package/dist/docs/guides/agent-to-agent.md +3 -3
- package/dist/docs/guides/cloud-runtime.html +6 -6
- package/dist/docs/guides/cloud-runtime.md +9 -25
- package/dist/docs/guides/convert-automation.html +7 -7
- package/dist/docs/guides/convert-automation.md +4 -4
- package/dist/docs/guides/github.html +9 -9
- package/dist/docs/guides/github.md +16 -28
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +11 -13
- package/dist/docs/guides/mcp-oauth.md +14 -22
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +11 -17
- package/dist/docs/guides/slack.md +13 -50
- package/dist/docs/guides/webhooks.html +6 -6
- package/dist/docs/guides/webhooks.md +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +6 -6
- package/dist/docs/hillclimbing.md +1 -1
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +0 -36
- package/dist/docs/llms-full.txt +965 -3633
- package/dist/docs/llms.txt +3 -18
- package/dist/docs/quickstart.html +6 -6
- package/dist/docs/quickstart.md +3 -4
- package/dist/docs/reference/agent-config.html +8 -8
- package/dist/docs/reference/agent-config.md +10 -15
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +6 -6
- package/dist/docs/reference/channels.md +20 -31
- package/dist/docs/reference/cli.html +14 -15
- package/dist/docs/reference/cli.md +29 -38
- package/dist/docs/reference/connections.html +11 -11
- package/dist/docs/reference/connections.md +24 -25
- package/dist/docs/reference/hooks.html +6 -6
- package/dist/docs/reference/hooks.md +12 -17
- package/dist/docs/reference/http-api.html +7 -7
- package/dist/docs/reference/http-api.md +25 -37
- package/dist/docs/reference/instructions.html +6 -6
- package/dist/docs/reference/instructions.md +1 -1
- package/dist/docs/reference/playground.html +5 -5
- package/dist/docs/reference/playground.md +14 -19
- package/dist/docs/reference/project-layout.html +9 -7
- package/dist/docs/reference/project-layout.md +7 -3
- package/dist/docs/reference/prompt.html +6 -6
- package/dist/docs/reference/prompt.md +1 -1
- package/dist/docs/reference/schedules.html +6 -6
- package/dist/docs/reference/schedules.md +1 -2
- package/dist/docs/reference/sessions.html +5 -12
- package/dist/docs/reference/sessions.md +8 -19
- package/dist/docs/reference/skills.html +8 -8
- package/dist/docs/reference/skills.md +3 -3
- package/dist/docs/reference/subagents.html +6 -6
- package/dist/docs/reference/subagents.md +2 -2
- package/dist/docs/reference/tools.html +8 -8
- package/dist/docs/reference/tools.md +30 -19
- package/dist/docs/scaffolding-agents.html +5 -5
- package/dist/docs/scaffolding-agents.md +4 -5
- package/dist/docs/storage.html +9 -9
- package/dist/docs/storage.md +37 -80
- package/dist/docs/templates/agentic-owners.html +7 -7
- package/dist/docs/templates/agentic-owners.md +2 -2
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +6 -6
- package/dist/docs/templates/pr-autofixer.md +7 -9
- package/dist/docs/templates/security-reviewer.html +5 -5
- package/dist/docs/templates/security-reviewer.md +2 -3
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +8 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/advertise-tools.d.ts +11 -0
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +47 -9
- package/dist/internal/authored-alias-hooks.d.ts +14 -11
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +14 -11
- package/dist/internal/authored-loaders.d.ts +7 -6
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +14 -10
- package/dist/internal/cli-deploy.d.ts +1 -1
- package/dist/internal/cli-deploy.js +5 -5
- package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
- package/dist/internal/cli-mcp-oauth.js +7 -4
- package/dist/internal/continuation-channel.d.ts +6 -3
- package/dist/internal/continuation-channel.d.ts.map +1 -1
- package/dist/internal/continuation-channel.js +44 -40
- package/dist/internal/continuation-identity.d.ts +17 -16
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +109 -36
- package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
- package/dist/internal/convert-automation/convert-workflow.js +26 -15
- package/dist/internal/convert-automation/slug.d.ts +0 -2
- package/dist/internal/convert-automation/slug.d.ts.map +1 -1
- package/dist/internal/convert-automation/slug.js +0 -8
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
- package/dist/internal/cursor/account-mcp.js +5 -1
- package/dist/internal/deploy-manifest.d.ts +2 -2
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +4 -9
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +91 -13
- package/dist/internal/distribution.d.ts +4 -3
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +4 -3
- package/dist/internal/hosted-delivery-protocol.d.ts +38 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -0
- package/dist/internal/hosted-delivery-protocol.js +70 -0
- package/dist/internal/hosted-delivery.d.ts +35 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -0
- package/dist/internal/hosted-delivery.js +239 -0
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +1 -1
- package/dist/internal/mcp-endpoint.js +3 -3
- package/dist/internal/mcp-host.d.ts +8 -7
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +8 -7
- package/dist/internal/peer-connections.d.ts.map +1 -1
- package/dist/internal/peer-connections.js +5 -1
- package/dist/internal/playground/static.d.ts +0 -3
- package/dist/internal/playground/static.d.ts.map +1 -1
- package/dist/internal/resolved-connections.d.ts.map +1 -1
- package/dist/internal/resolved-connections.js +5 -7
- package/dist/internal/review-comments.d.ts +186 -63
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +350 -168
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +134 -175
- package/dist/internal/session-engine.d.ts +50 -10
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +221 -68
- package/dist/internal/shallow-clone.d.ts +8 -2
- package/dist/internal/shallow-clone.d.ts.map +1 -1
- package/dist/internal/shallow-clone.js +17 -10
- package/dist/internal/tool-catalog.d.ts +31 -0
- package/dist/internal/tool-catalog.d.ts.map +1 -0
- package/dist/internal/tool-catalog.js +67 -0
- package/dist/playground/assets/{index-DDvyC2z6.js → index-B3JCyigB.js} +2 -2
- package/dist/playground/index.html +1 -1
- package/dist/types.d.ts +81 -40
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +19 -0
- package/docs/README.md +0 -36
- package/docs/ab.md +7 -13
- package/docs/building-with-agents.md +5 -11
- package/docs/concepts.md +13 -17
- package/docs/deployment.md +9 -30
- package/docs/design/agsh.md +406 -0
- package/docs/evals.md +16 -37
- package/docs/guides/agent-to-agent.md +3 -3
- package/docs/guides/cloud-runtime.md +9 -25
- package/docs/guides/convert-automation.md +4 -4
- package/docs/guides/github.md +16 -28
- package/docs/guides/mcp-oauth.md +14 -22
- package/docs/guides/slack.md +14 -51
- package/docs/guides/webhooks.md +3 -3
- package/docs/hillclimbing.md +1 -1
- package/docs/quickstart.md +3 -4
- package/docs/reference/agent-config.md +10 -15
- package/docs/reference/channels.md +20 -31
- package/docs/reference/cli.md +29 -38
- package/docs/reference/connections.md +24 -25
- package/docs/reference/hooks.md +12 -17
- package/docs/reference/http-api.md +26 -38
- package/docs/reference/instructions.md +1 -1
- package/docs/reference/playground.md +14 -19
- package/docs/reference/project-layout.md +7 -3
- package/docs/reference/prompt.md +1 -1
- package/docs/reference/schedules.md +1 -2
- package/docs/reference/sessions.md +8 -19
- package/docs/reference/skills.md +3 -3
- package/docs/reference/subagents.md +2 -2
- package/docs/reference/tools.md +30 -19
- package/docs/scaffolding-agents.md +4 -5
- package/docs/storage.md +37 -80
- package/docs/templates/agentic-owners.md +2 -2
- package/docs/templates/pr-autofixer.md +7 -9
- package/docs/templates/security-reviewer.md +2 -3
- package/docs/troubleshooting.md +8 -8
- package/package.json +16 -2
- package/skills/create-agent/SKILL.md +6 -13
- package/skills/debug/SKILL.md +2 -4
- package/skills/evals/SKILL.md +1 -1
- package/skills/framework-map/SKILL.md +3 -2
- package/skills/mcp-auth/SKILL.md +10 -13
- package/skills/setup-slack/SKILL.md +21 -137
- package/src/channels/deployments/deployments-channel.ts +32 -2
- package/src/channels/deployments/types.ts +8 -0
- package/src/channels/github/github-channel.ts +71 -21
- package/src/channels/slack/attachments.ts +2 -2
- package/src/channels/slack/dispatch.ts +2 -16
- package/src/channels/slack/eval-directive.ts +8 -27
- package/src/channels/slack/index.ts +0 -6
- package/src/channels/slack/setup.ts +8 -15
- package/src/channels/slack/slack-channel.ts +14 -125
- package/src/channels/slack/types.ts +12 -96
- package/src/client.ts +23 -0
- package/src/connections.ts +20 -7
- package/src/continuation.ts +1 -1
- package/src/index.ts +2 -0
- package/src/internal/advertise-tools.ts +45 -7
- package/src/internal/authored-alias-hooks.ts +14 -11
- package/src/internal/authored-loaders.ts +14 -10
- package/src/internal/cli-deploy.ts +5 -5
- package/src/internal/cli-mcp-oauth.ts +6 -4
- package/src/internal/continuation-channel.ts +62 -45
- package/src/internal/continuation-identity.ts +123 -38
- package/src/internal/convert-automation/convert-workflow.ts +29 -17
- package/src/internal/convert-automation/slug.ts +0 -9
- package/src/internal/cursor/account-mcp.ts +4 -1
- package/src/internal/deploy-manifest.ts +5 -9
- package/src/internal/discovery.ts +107 -13
- package/src/internal/distribution.ts +4 -3
- package/src/internal/fixtures/units-server.ts +52 -0
- package/src/internal/hosted-delivery-protocol.ts +114 -0
- package/src/internal/hosted-delivery.ts +359 -0
- package/src/internal/http-channel.ts +0 -2
- package/src/internal/mcp-endpoint.ts +3 -3
- package/src/internal/mcp-host.ts +8 -7
- package/src/internal/peer-connections.ts +4 -1
- package/src/internal/playground/static.ts +1 -3
- package/src/internal/resolved-connections.ts +8 -10
- package/src/internal/review-comments.ts +542 -229
- package/src/internal/server.ts +180 -253
- package/src/internal/session-engine.ts +279 -70
- package/src/internal/shallow-clone.ts +30 -16
- package/src/internal/tool-catalog.ts +106 -0
- package/src/types.ts +99 -40
- package/templates/pr-autofixer/agent/channels/slack.ts +8 -2
- package/templates/triage/README.md +2 -1
- package/templates/triage/overlays/jira/agent/mcp-connections/tracker.ts +0 -1
- package/templates/triage/overlays/linear/agent/mcp-connections/tracker.ts +0 -1
- package/dist/channels/slack/cursor-account.d.ts +0 -87
- package/dist/channels/slack/cursor-account.d.ts.map +0 -1
- package/dist/channels/slack/cursor-account.js +0 -100
- package/dist/docs/assets/building-with-agents.md.DH8A_cHA.js +0 -13
- package/dist/docs/assets/chunks/@localSearchIndexroot.Dv-Q0XtU.js +0 -1
- package/dist/docs/assets/concepts.md.CRfU3bVg.js +0 -4
- package/dist/docs/assets/example-agents_approval-buddy.md.DNL83puR.js +0 -10
- package/dist/docs/assets/example-agents_approval-buddy.md.DNL83puR.lean.js +0 -1
- package/dist/docs/assets/example-agents_benny.md.C40vHRLc.js +0 -7
- package/dist/docs/assets/example-agents_benny.md.C40vHRLc.lean.js +0 -1
- package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.js +0 -11
- package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.lean.js +0 -1
- package/dist/docs/assets/example-agents_codebase-wiki.md.Dftj_tPp.js +0 -8
- package/dist/docs/assets/example-agents_codebase-wiki.md.Dftj_tPp.lean.js +0 -1
- package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.js +0 -8
- package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.lean.js +0 -1
- package/dist/docs/assets/example-agents_concierge.md.MrKpQndp.js +0 -23
- package/dist/docs/assets/example-agents_concierge.md.MrKpQndp.lean.js +0 -1
- package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.js +0 -15
- package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.lean.js +0 -1
- package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.js +0 -2
- package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.lean.js +0 -1
- package/dist/docs/assets/example-agents_knowledge-base.md.DqKqHQ9u.js +0 -11
- package/dist/docs/assets/example-agents_knowledge-base.md.DqKqHQ9u.lean.js +0 -1
- package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.js +0 -10
- package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.lean.js +0 -1
- package/dist/docs/assets/example-agents_security-reviewer.md.Bai6D0Ee.js +0 -19
- package/dist/docs/assets/example-agents_security-reviewer.md.Bai6D0Ee.lean.js +0 -1
- package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.js +0 -5
- package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.lean.js +0 -1
- package/dist/docs/assets/example-agents_weather-agent.md.lVEAbWFf.js +0 -25
- package/dist/docs/assets/example-agents_weather-agent.md.lVEAbWFf.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-runtime.md.BSMLIBHr.js +0 -9
- package/dist/docs/assets/guides_cloud-runtime.md.BSMLIBHr.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.DiUmk_Oi.lean.js +0 -1
- package/dist/docs/assets/index.md.BAaMXLFd.js +0 -5
- package/dist/docs/assets/reference_hooks.md.B9FSgdDe.js +0 -14
- package/dist/docs/assets/reference_http-api.md.CSHVobzG.js +0 -11
- package/dist/docs/assets/reference_http-api.md.CSHVobzG.lean.js +0 -1
- package/dist/docs/assets/reference_playground.md.Dfb92yQf.js +0 -1
- package/dist/docs/assets/reference_playground.md.Dfb92yQf.lean.js +0 -1
- package/dist/docs/assets/reference_project-layout.md.CwkSbEWT.js +0 -17
- package/dist/docs/assets/reference_sessions.md.tUFzz98S.js +0 -8
- package/dist/docs/assets/scaffolding-agents.md.CRDDUtYJ.js +0 -1
- package/dist/docs/assets/troubleshooting.md.DYECCZiJ.js +0 -1
- package/dist/docs/example-agents/approval-buddy.html +0 -36
- package/dist/docs/example-agents/approval-buddy.md +0 -266
- package/dist/docs/example-agents/benny.html +0 -33
- package/dist/docs/example-agents/benny.md +0 -182
- package/dist/docs/example-agents/bugbot.html +0 -37
- package/dist/docs/example-agents/bugbot.md +0 -229
- package/dist/docs/example-agents/codebase-wiki.html +0 -34
- package/dist/docs/example-agents/codebase-wiki.md +0 -170
- package/dist/docs/example-agents/codeowners-review.html +0 -34
- package/dist/docs/example-agents/codeowners-review.md +0 -192
- package/dist/docs/example-agents/concierge.html +0 -49
- package/dist/docs/example-agents/concierge.md +0 -201
- package/dist/docs/example-agents/fsd.html +0 -41
- package/dist/docs/example-agents/fsd.md +0 -329
- package/dist/docs/example-agents/index.html +0 -28
- package/dist/docs/example-agents/index.md +0 -102
- package/dist/docs/example-agents/knowledge-base.html +0 -37
- package/dist/docs/example-agents/knowledge-base.md +0 -168
- package/dist/docs/example-agents/oncall.html +0 -36
- package/dist/docs/example-agents/oncall.md +0 -212
- package/dist/docs/example-agents/security-reviewer.html +0 -45
- package/dist/docs/example-agents/security-reviewer.md +0 -265
- package/dist/docs/example-agents/slack-agent.html +0 -31
- package/dist/docs/example-agents/slack-agent.md +0 -142
- package/dist/docs/example-agents/weather-agent.html +0 -51
- package/dist/docs/example-agents/weather-agent.md +0 -296
- package/dist/internal/cursor-slack-relay.d.ts +0 -96
- package/dist/internal/cursor-slack-relay.d.ts.map +0 -1
- package/dist/internal/cursor-slack-relay.js +0 -176
- package/docs/example-agents/approval-buddy.md +0 -271
- package/docs/example-agents/benny.md +0 -187
- package/docs/example-agents/bugbot.md +0 -234
- package/docs/example-agents/codebase-wiki.md +0 -175
- package/docs/example-agents/codeowners-review.md +0 -197
- package/docs/example-agents/concierge.md +0 -206
- package/docs/example-agents/fsd.md +0 -334
- package/docs/example-agents/index.md +0 -107
- package/docs/example-agents/knowledge-base.md +0 -173
- package/docs/example-agents/oncall.md +0 -217
- package/docs/example-agents/security-reviewer.md +0 -270
- package/docs/example-agents/slack-agent.md +0 -147
- package/docs/example-agents/weather-agent.md +0 -301
- package/src/channels/slack/cursor-account.ts +0 -202
- package/src/internal/cursor-slack-relay.ts +0 -249
- /package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.lean.js → guides_agent-to-agent.md.BDb0t1QV.lean.js} +0 -0
- /package/dist/docs/assets/{guides_convert-automation.md.D06eIzea.lean.js → guides_convert-automation.md.B4sjlodG.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.lean.js → guides_webhooks.md.DKdA43Qm.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.lean.js → hillclimbing.md.DhESf3OO.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.DsrarzEg.lean.js → quickstart.md.Nj_LjW_a.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.lean.js → reference_agent-config.md.Cp_x38Nl.lean.js} +0 -0
- /package/dist/docs/assets/{reference_project-layout.md.CwkSbEWT.lean.js → reference_project-layout.md.Bv4KOtlB.lean.js} +0 -0
- /package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.lean.js → reference_prompt.md.DnaD5dNK.lean.js} +0 -0
- /package/dist/docs/assets/{reference_schedules.md.DNipebiG.lean.js → reference_schedules.md.DI_JrHgq.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.lean.js → reference_skills.md.8son6Hjm.lean.js} +0 -0
- /package/dist/docs/assets/{reference_subagents.md.Xoav0AII.lean.js → reference_subagents.md.CfsIloPm.lean.js} +0 -0
- /package/dist/docs/assets/{templates_agentic-owners.md.DSJSIpWU.lean.js → templates_agentic-owners.md.DqtPdm6f.lean.js} +0 -0
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
# agsh: a shell for deployed agents
|
|
2
|
+
|
|
3
|
+
## What this is
|
|
4
|
+
|
|
5
|
+
`agsh` (agent shell) is a standalone CLI that connects to one agent-sdk
|
|
6
|
+
deployment and turns the agent's live tool surface into commands. Every tool
|
|
7
|
+
the deployment can execute (authored server tools and tools provided by the
|
|
8
|
+
agent's MCP connections) becomes a subcommand with a synopsis derived from its
|
|
9
|
+
input schema, a man-page style `--help`, and a place in an interactive shell.
|
|
10
|
+
|
|
11
|
+
It is a separate binary and a separate package from `agent-sdk`. The
|
|
12
|
+
`agent-sdk` CLI stays what it is today: the developer workflow tool for
|
|
13
|
+
authoring, validating, deploying, and debugging agent projects. `agsh` is the
|
|
14
|
+
operator's tool for working *inside* one deployed agent. The split also keeps
|
|
15
|
+
heavy presentation dependencies (markdown rendering, syntax highlighting, the
|
|
16
|
+
shell interpreter) out of `@cursor/july`, which ships to every agent project.
|
|
17
|
+
|
|
18
|
+
## The experience
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
$ agsh help # list of commands, man-page style
|
|
22
|
+
$ agsh read --help # man-page style: NAME, SYNOPSIS, DESCRIPTION, OPTIONS
|
|
23
|
+
$ agsh read /repo/README.md
|
|
24
|
+
$ agsh datadog_list_monitors --query "service:api"
|
|
25
|
+
$ agsh # bare: interactive shell on a TTY, script from stdin otherwise
|
|
26
|
+
❯ ls /repo | grep -i readme
|
|
27
|
+
❯ read /repo/config.json | jq .version
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Every invocation binds to the deployment's latest session by default, with
|
|
31
|
+
`--session` and `--continuation-token` overrides, and prints the session
|
|
32
|
+
identifier as a final stderr line.
|
|
33
|
+
|
|
34
|
+
## Configuration
|
|
35
|
+
|
|
36
|
+
`agsh` is a client only; it never boots an agent. Every invocation needs a
|
|
37
|
+
target deployment, given by flags or by environment variables. Flags always
|
|
38
|
+
win over the environment.
|
|
39
|
+
|
|
40
|
+
Global command line options, accepted on every command and on the bare shell
|
|
41
|
+
launch:
|
|
42
|
+
|
|
43
|
+
| Option | Environment default | Meaning |
|
|
44
|
+
| --- | --- | --- |
|
|
45
|
+
| `--target <url \| name>` | `AGENT_SHELL_TARGET` | The deployment to talk to: a URL is a local deployment (`http://127.0.0.1:39400/executor`), a name a production one (`change-monitor-executor`). |
|
|
46
|
+
| `--team <team>` | `AGENT_SHELL_TEAM` | Team override for production resolution, when the login spans several. |
|
|
47
|
+
| `--bearer-token <token>` | `AGENT_SHELL_BEARER_TOKEN` | Explicit bearer auth for a deployment that is not behind the Cursor login. |
|
|
48
|
+
| `--session <id>` | | Bind to a specific session instead of the latest. |
|
|
49
|
+
| `--continuation-token <token>` | | Bind by continuation token instead of session id. |
|
|
50
|
+
| `--output <text\|json>` | | Result rendering: human-friendly views (default) or raw JSON. |
|
|
51
|
+
| `-h`, `--help` | | Per-command help. |
|
|
52
|
+
|
|
53
|
+
One parameter carries the whole target selection, and the value's shape
|
|
54
|
+
encodes the mode: a URL (`http://` or `https://`) targets a local
|
|
55
|
+
deployment, anything else names a production one. Two options with a
|
|
56
|
+
precedence rule would invite exactly the confusion a target selector must
|
|
57
|
+
not have; with one parameter the only rule is that the flag beats the
|
|
58
|
+
environment. A URL is self-contained down to the agent because one local
|
|
59
|
+
agent-sdk serve process hosts every agent of the project (change-monitor's
|
|
60
|
+
dev stack mounts `/executor` and `/planner` from a single port); a
|
|
61
|
+
production deployment is a single agent, so its name is the complete
|
|
62
|
+
address (`--team` narrows resolution when the login spans several).
|
|
63
|
+
Authentication defaults to the stored Cursor login (the same engine-access
|
|
64
|
+
credential agent-sdk uses); `--bearer-token` is the escape hatch for direct
|
|
65
|
+
deployments. Session flags are per invocation and have no environment
|
|
66
|
+
default: a session is state, not configuration. Color output follows the
|
|
67
|
+
`NO_COLOR` convention and TTY detection; there is no agsh-specific color
|
|
68
|
+
setting. No configuration file: one environment variable pins a working
|
|
69
|
+
target for a terminal session
|
|
70
|
+
(`AGENT_SHELL_TARGET=change-monitor-executor`, or a URL for a local stack),
|
|
71
|
+
which is the whole persistent-configuration need.
|
|
72
|
+
|
|
73
|
+
With no target from flags or environment, every command fails with a message
|
|
74
|
+
naming both ways to provide one.
|
|
75
|
+
|
|
76
|
+
## Architecture
|
|
77
|
+
|
|
78
|
+
### A new package
|
|
79
|
+
|
|
80
|
+
A new workspace package (working name `packages/agsh`, bin `agsh`) that
|
|
81
|
+
depends on `@cursor/july` for target resolution, stored Cursor login, and the
|
|
82
|
+
HTTP client plumbing. It owns the presentation stack: `marked` for terminal
|
|
83
|
+
markdown (moved out of `@cursor/july`), with syntax highlighting (`shiki`)
|
|
84
|
+
arriving in the phase that renders code; the shell interpreter is
|
|
85
|
+
purpose-built (see Rationale).
|
|
86
|
+
No new abstraction seam between the two packages; `agsh` imports what it
|
|
87
|
+
needs until a second consumer justifies extracting a thin client.
|
|
88
|
+
|
|
89
|
+
### The tool catalog
|
|
90
|
+
|
|
91
|
+
At startup `agsh` fetches one live catalog of everything invocable on the
|
|
92
|
+
deployment. This is the piece the current `/v1/info` cannot provide: `/v1/info`
|
|
93
|
+
projects the authored manifest, and connection tools only exist at runtime,
|
|
94
|
+
resolved per session under the connection's auth. A new endpoint provides the
|
|
95
|
+
live view (see Backend changes).
|
|
96
|
+
|
|
97
|
+
Catalog entries carry exactly one identifier each: the tool name exactly as
|
|
98
|
+
the agent sees it. Authored server tools keep their authored name (`read`).
|
|
99
|
+
Connection tools appear under their model-facing advertised name (the
|
|
100
|
+
sanitized passthrough name from `advertise-tools.ts`, e.g.
|
|
101
|
+
`datadog_list_monitors`). The CLI never invents a different naming format:
|
|
102
|
+
a tool name copied from a session transcript is a valid `agsh` command, and
|
|
103
|
+
vice versa. Where a tool came from — the upstream connector name when the
|
|
104
|
+
tool declares one, the connection name otherwise — is a field on the
|
|
105
|
+
catalog entry, not part of the identifier.
|
|
106
|
+
|
|
107
|
+
### Two command tiers
|
|
108
|
+
|
|
109
|
+
Each catalog entry becomes a command, through one of two shapes:
|
|
110
|
+
|
|
111
|
+
**Curated commands for builtin tools.** The well-known tool names (`ls`,
|
|
112
|
+
`read`, `grep`, `glob`, `diff`, ...) get hand-designed, POSIX-flavored
|
|
113
|
+
command shapes, hardcoded in `agsh` next to their titles. These tools are
|
|
114
|
+
what an operator types all day; their shapes should feel like the unix
|
|
115
|
+
commands they mirror, not like generated bindings. A curated shape decides
|
|
116
|
+
which schema fields are positional operands and which are flags, and every
|
|
117
|
+
input has exactly one spelling: an operand is only an operand, never also a
|
|
118
|
+
flag.
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
$ agsh read /repo/package.json --limit 2
|
|
122
|
+
{
|
|
123
|
+
"name": "change-monitor",
|
|
124
|
+
→ ses_a99d1b69c329eb75a2ec8603
|
|
125
|
+
|
|
126
|
+
$ agsh grep -i -A 2 toolEffect /repo/src
|
|
127
|
+
src/tool-policy.ts:12:export type ToolEffect = "read" | "write";
|
|
128
|
+
...
|
|
129
|
+
→ ses_a99d1b69c329eb75a2ec8603
|
|
130
|
+
|
|
131
|
+
$ agsh ls /repo --ignore-globs '*.test.ts' --ignore-globs 'node_modules/**'
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`read` takes its path as an operand mapped to the schema's `path` field, with
|
|
135
|
+
`--offset` and `--limit` as integer flags. `grep` follows POSIX grep:
|
|
136
|
+
`grep [options] <pattern> [path]`, with the rg-style options (`-i`, `-A`,
|
|
137
|
+
`-B`, `-C`, `--output-mode`, `--head-limit`) mapping onto the schema fields
|
|
138
|
+
of the same names (kebab-cased). `ls` shows array input: an array field's flag repeats once
|
|
139
|
+
per element. A curated shape binds to the deployment's live schema at
|
|
140
|
+
startup; when a deployment's tool lacks the expected field, the command
|
|
141
|
+
degrades to the generic shape below rather than guessing.
|
|
142
|
+
|
|
143
|
+
A curated shape may also reformat the tool's text result toward the unix
|
|
144
|
+
command's own output conventions: the VFS ls tool returns the model-facing
|
|
145
|
+
tree (` - name/` rows under a header), and `agsh ls` prints it as standard
|
|
146
|
+
ls does, one name per line with the trailing slash kept on directories. The
|
|
147
|
+
tool's result string itself stays what the model sees; when a result does
|
|
148
|
+
not match the expected shape it prints verbatim.
|
|
149
|
+
|
|
150
|
+
**Generated commands for MCP tools.** Connection tools are dynamically
|
|
151
|
+
discovered, so no special treatment is possible; they get a uniform
|
|
152
|
+
schema-derived mapping:
|
|
153
|
+
|
|
154
|
+
- Every schema property is accepted as one flag, spelled as the
|
|
155
|
+
kebab-cased property name (`org_slug` → `--org-slug`) — the unix
|
|
156
|
+
convention; kebab collisions gain a numeric suffix. Properties already
|
|
157
|
+
shaped like flags (grep's `-i`) stay literal. No positionals, no other
|
|
158
|
+
aliases.
|
|
159
|
+
- Object-typed properties flatten recursively into one flag per leaf,
|
|
160
|
+
dash-joined (`--telemetry-context` for `telemetry.context`), so every
|
|
161
|
+
option reads as a plain value; a free-form object with no declared
|
|
162
|
+
properties stays one JSON-valued flag. A leaf is required only when its
|
|
163
|
+
whole ancestor chain is.
|
|
164
|
+
- Values are coerced by schema type: booleans are valueless flags, numbers
|
|
165
|
+
and integers are parsed, arrays accept the flag repeated once per element,
|
|
166
|
+
enums are validated before the call.
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
$ agsh datadog_list_monitors --query "service:api" --limit 10
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
In both tiers `-h`/`--help` and the global target and session flags are
|
|
173
|
+
reserved and injected, a flag that names no schema property fails before any
|
|
174
|
+
request (listing the tool's actual properties), and the bound session prints
|
|
175
|
+
as a final stderr line.
|
|
176
|
+
|
|
177
|
+
### Result rendering
|
|
178
|
+
|
|
179
|
+
Raw JSON on a terminal is not an experience for people, so `--output=text`
|
|
180
|
+
(the default) renders structured results through a small set of views,
|
|
181
|
+
selected automatically by the shape of the value each call actually returned;
|
|
182
|
+
tool metadata plays no part, since most tools advertise no output schema, and
|
|
183
|
+
many return structured data as JSON text. A string result that parses as a
|
|
184
|
+
JSON object or array counts as structured. An array of objects renders as a
|
|
185
|
+
table (columns are the union of keys, missing cells stay blank, the table
|
|
186
|
+
clamps to the terminal width); a single object renders as a property view
|
|
187
|
+
(aligned keys, scalar lists as bullets, nested structures indented); an
|
|
188
|
+
object that is nothing but an error wrapper renders as an `Error:` line;
|
|
189
|
+
plain text prints verbatim. `--output=json` renders the structured value as
|
|
190
|
+
raw JSON. The rendering never depends on the TTY: piped and interactive
|
|
191
|
+
output carry the same content, only color follows TTY detection.
|
|
192
|
+
|
|
193
|
+
### Help rendering
|
|
194
|
+
|
|
195
|
+
`--help` on a tool renders a man-page layout: NAME (the tool name, with the
|
|
196
|
+
tool's `title` beside it when the catalog carries one; titles are curated
|
|
197
|
+
data, never derived from the description), SYNOPSIS (operands from the
|
|
198
|
+
curated shape; options never enumerate — they summarize as `[options...]`,
|
|
199
|
+
man-page style, so the line stays bounded), DESCRIPTION (the tool
|
|
200
|
+
description rendered as terminal markdown), OPERANDS (positional arguments,
|
|
201
|
+
curated commands only), and OPTIONS. Descriptions of operands and options
|
|
202
|
+
come from the schema's property descriptions. Effect and approval metadata
|
|
203
|
+
render as notes when declared. Everything except the curated shape derives
|
|
204
|
+
from `GET /v1/tools/:name`; nothing else is hand-written per tool.
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
$ agsh read --help
|
|
208
|
+
NAME
|
|
209
|
+
read - Read a file
|
|
210
|
+
|
|
211
|
+
SYNOPSIS
|
|
212
|
+
read [options...] <path>
|
|
213
|
+
|
|
214
|
+
DESCRIPTION
|
|
215
|
+
Reads a file from the local filesystem. This tool can also read image
|
|
216
|
+
files when called with the appropriate path. Formats supported:
|
|
217
|
+
jpeg/jpg, png, gif, webp.
|
|
218
|
+
|
|
219
|
+
OPERANDS
|
|
220
|
+
<path>
|
|
221
|
+
The absolute path of the file to read.
|
|
222
|
+
|
|
223
|
+
OPTIONS
|
|
224
|
+
--offset <integer>
|
|
225
|
+
The line number to start reading from. Positive values are 1-indexed
|
|
226
|
+
from the start of the file. Negative values count backwards from the
|
|
227
|
+
end. Only provide if the file is too large to read at once.
|
|
228
|
+
|
|
229
|
+
--limit <integer>
|
|
230
|
+
The number of lines to read. Only provide if the file is too large
|
|
231
|
+
to read at once.
|
|
232
|
+
|
|
233
|
+
NOTES
|
|
234
|
+
Effect: read (performs no writes).
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
`agsh help` lists the available command names grouped by source, authored
|
|
238
|
+
tools first, then one group per upstream connector (its name is the group
|
|
239
|
+
header — one aggregating connection can host tools from several connectors,
|
|
240
|
+
and the connector name is what an operator recognizes). Each row is the
|
|
241
|
+
name, with the title beside it when the tool declares one; everything else
|
|
242
|
+
lives behind the command's `--help`:
|
|
243
|
+
|
|
244
|
+
The agent's description renders as a DESCRIPTION section when the deployment
|
|
245
|
+
declares one (`/v1/info` carries both name and description).
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
$ agsh help
|
|
249
|
+
NAME
|
|
250
|
+
change-monitor-executor
|
|
251
|
+
|
|
252
|
+
DESCRIPTION
|
|
253
|
+
Executes monitoring plans against changed code.
|
|
254
|
+
|
|
255
|
+
COMMANDS
|
|
256
|
+
diff Show workspace changes
|
|
257
|
+
glob Find files by pattern
|
|
258
|
+
grep Search file contents
|
|
259
|
+
ls List a directory
|
|
260
|
+
read Read a file
|
|
261
|
+
report_change_issue
|
|
262
|
+
report_change_succeeded
|
|
263
|
+
|
|
264
|
+
DATADOG
|
|
265
|
+
datadog_list_monitors List monitors
|
|
266
|
+
...
|
|
267
|
+
|
|
268
|
+
Run any command with --help for its synopsis and options.
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Shell mode
|
|
272
|
+
|
|
273
|
+
Invoked bare, `agsh` starts a shell. On a TTY this is a REPL; on a pipe it
|
|
274
|
+
reads a script from stdin, so `echo 'ls /' | agsh` and here-docs work.
|
|
275
|
+
|
|
276
|
+
The interpreter is purpose-built and minimal: tokenizing (quotes, escapes),
|
|
277
|
+
pipelines, and `;` / `&&` / `||`. The command namespace is exactly the
|
|
278
|
+
deployment's tool catalog plus a small curated set of local pipe filters
|
|
279
|
+
(`head`, `tail`, `wc`, stdin-filtering `grep`), so a tool name can never be
|
|
280
|
+
shadowed. There is no local filesystem, no variables, no control flow: agsh
|
|
281
|
+
has nothing local to operate on, and every command is a single traced
|
|
282
|
+
`POST /v1/tools/:name` call.
|
|
283
|
+
|
|
284
|
+
The shell binds one session identity at launch (latest by default) and keeps
|
|
285
|
+
it for the whole run, so a sequence of tool calls observes one consistent
|
|
286
|
+
session context.
|
|
287
|
+
|
|
288
|
+
## Backend changes on the agent-sdk runtime
|
|
289
|
+
|
|
290
|
+
Two read endpoints, mirroring the invocation path:
|
|
291
|
+
|
|
292
|
+
**`GET /v1/tools`: the live tool listing.** Returns the session's tool
|
|
293
|
+
namespace exactly as a turn would assemble it: authored server tools plus the
|
|
294
|
+
advertised passthrough tools synthesized from connections, under their
|
|
295
|
+
model-facing names. Entries are light (name, source, and `title` when one is
|
|
296
|
+
known); everything else lives behind the detail endpoint. Titles have two
|
|
297
|
+
sources and no new authoring surface: connection tools inherit the upstream
|
|
298
|
+
server's MCP title, which the host already propagates length-capped off
|
|
299
|
+
listings; tools that do not come from MCP get theirs from a hardcoded
|
|
300
|
+
name-to-title table in the runtime's endpoint implementation, covering the
|
|
301
|
+
well-known tool names. A tool in neither place has no title. Accepts the same
|
|
302
|
+
optional session binding as invocation (`session` or `continuationToken`)
|
|
303
|
+
because advertised inventories can be tenant-scoped and resolved per session.
|
|
304
|
+
Implementation reuses the existing plumbing: the discovered manifest for
|
|
305
|
+
authored tools and the advertise-tools synthesis (`McpHost.listTools`, or the
|
|
306
|
+
`oneOff` path when per-session auth substitution applies) for connection
|
|
307
|
+
tools. This is not a duplicate of `/v1/info`: the info document stays the
|
|
308
|
+
static authored manifest; the listing is the runtime view that only the
|
|
309
|
+
running deployment can answer.
|
|
310
|
+
|
|
311
|
+
**`GET /v1/tools/:name`: one tool's full description.** Description, input
|
|
312
|
+
schema, output schema when declared, effect when declared, approval
|
|
313
|
+
requirement, and source connection. Same path as invocation
|
|
314
|
+
(`POST /v1/tools/:name`), different method: GET describes what POST executes,
|
|
315
|
+
for the same identifier.
|
|
316
|
+
|
|
317
|
+
Invocation needs no new naming scheme. Advertised connection tools are
|
|
318
|
+
synthesized as ordinary server tools in the session's namespace, so
|
|
319
|
+
`POST /v1/tools/:name` addresses them by their model-facing name like any
|
|
320
|
+
authored tool, with the same session binding, policy checks, and per-call
|
|
321
|
+
tracing. (The direct-call path did need the synthesis step added: it now
|
|
322
|
+
resolves the advertised listing for the call's session identity when the
|
|
323
|
+
authored lookup misses.)
|
|
324
|
+
|
|
325
|
+
Phase 1 ships the minimal runtime surface agsh calls: the `effect`
|
|
326
|
+
projection in `/v1/info` (rendered in per-tool help), the scratch-workspace
|
|
327
|
+
fallback on direct calls, and `continuationToken` binding on
|
|
328
|
+
`POST /v1/tools/:toolName`. The detail endpoint in phase 2 also closes the
|
|
329
|
+
output-schema gap; `/v1/info` stays as it is.
|
|
330
|
+
|
|
331
|
+
## Local development loop
|
|
332
|
+
|
|
333
|
+
`factory/change-monitor` is the test bed. Its `pnpm start` already serves the
|
|
334
|
+
planner and executor locally through the agent-sdk dev runtime
|
|
335
|
+
(`agent-sdk serve --dir . --dev`). The loop:
|
|
336
|
+
|
|
337
|
+
1. `cd factory/change-monitor && pnpm start` (local stack, both agents).
|
|
338
|
+
2. `agsh --target http://127.0.0.1:<port>/<agent>` against it, via a dev shim
|
|
339
|
+
analogous to `agent-sdk-dev` so the CLI runs from the worktree.
|
|
340
|
+
3. Iterate end to end: VFS verbs (`ls`, `read`, `grep`, `glob`, `diff`) for the
|
|
341
|
+
authored-tool path, and the planner's tenant connectors for the
|
|
342
|
+
connection-tool path once `GET /v1/tools` exists.
|
|
343
|
+
|
|
344
|
+
## Removing the inspector surface from agent-sdk
|
|
345
|
+
|
|
346
|
+
The inspector CLI is still on development branches, so nothing migrates: the
|
|
347
|
+
CLI-side code is removed from `agent-sdk` and `agsh` is built in its place.
|
|
348
|
+
|
|
349
|
+
- The verb commands (`ls`, `read`, `grep`, `glob`, `diff`) become the
|
|
350
|
+
curated tier: their hand-designed shapes, schema-binding logic (including
|
|
351
|
+
the candidate-field fallback), and session binding carry over. The
|
|
352
|
+
schema-to-argv flag mapping seeds the generated tier for MCP tools.
|
|
353
|
+
- The `tools` and `skills` commands disappear entirely. `agsh help` and
|
|
354
|
+
per-tool `--help` are the discovery surface.
|
|
355
|
+
- `marked` and `shiki` leave `@cursor/july`; agsh's help rendering takes
|
|
356
|
+
`marked`, and `shiki` returns when agsh ships syntax highlighting.
|
|
357
|
+
`agent-sdk` keeps its developer workflow commands unchanged.
|
|
358
|
+
|
|
359
|
+
## Plan
|
|
360
|
+
|
|
361
|
+
1. **Package and core invocation.** Create the package, port target
|
|
362
|
+
resolution, the schema-to-argv mapping, and help rendering from the
|
|
363
|
+
inspector code. Authored tools only, against the existing endpoints.
|
|
364
|
+
Verified end to end on the local change-monitor stack.
|
|
365
|
+
2. **Live catalog.** Add `GET /v1/tools` and `GET /v1/tools/:name` to
|
|
366
|
+
the agent-sdk runtime, with the hardcoded title table for non-MCP tools, and verify
|
|
367
|
+
direct invocation resolves advertised connection tools by their
|
|
368
|
+
model-facing names. Connection tools appear as commands. Verified against
|
|
369
|
+
the planner's connectors.
|
|
370
|
+
3. **Shell mode.** The purpose-built mini-shell: REPL on TTY, script on
|
|
371
|
+
stdin, tools as the command namespace, one session per shell run.
|
|
372
|
+
4. **Cleanup.** Remove the inspector CLI surface and presentation
|
|
373
|
+
dependencies from `@cursor/july`.
|
|
374
|
+
|
|
375
|
+
## Rationale and rejected alternatives
|
|
376
|
+
|
|
377
|
+
**Why not extend `agent-sdk`.** The audiences differ: `agent-sdk` is for the
|
|
378
|
+
person building and deploying an agent; this tool is for the person operating
|
|
379
|
+
inside one. Bundling also forces every agent project to carry markdown
|
|
380
|
+
rendering, syntax highlighting, and a bash interpreter it never uses.
|
|
381
|
+
|
|
382
|
+
**Name.** `agsh` reads as "agent shell", is four characters, collides with
|
|
383
|
+
nothing common, and works as a shell prompt name. Considered: `august`
|
|
384
|
+
(pairs with `july` but says nothing about purpose), `toolsh` (awkward to
|
|
385
|
+
pronounce), `cursor-shell` (too broad; this is scoped to one agent).
|
|
386
|
+
|
|
387
|
+
**Why a REST catalog instead of the MCP endpoint.** The deployment already
|
|
388
|
+
speaks MCP at `/v1/mcp/tools`, including a per-connection bridge, but the
|
|
389
|
+
bridge is bound to an active turn and speaks JSON-RPC. The CLI wants a plain
|
|
390
|
+
authenticated GET with session binding that returns the assembled tool
|
|
391
|
+
namespace under the names the model sees. Wrapping that in MCP framing buys
|
|
392
|
+
nothing for a first-party client.
|
|
393
|
+
|
|
394
|
+
**Why a purpose-built interpreter instead of just-bash.** just-bash was the
|
|
395
|
+
original plan (a full bash emulation with a custom-command extension point),
|
|
396
|
+
and a prototype disproved it: custom commands replace its coreutils but can
|
|
397
|
+
never shadow its shell builtins, and `read`, `test`, `type`, and `help` are
|
|
398
|
+
builtins — so the flagship `read` tool is unreachable, and the precedence is
|
|
399
|
+
not ours to control (vercel-labs owns the package). No other embeddable JS
|
|
400
|
+
shell interpreter has a workable custom-command story (mvdan-sh's JS build
|
|
401
|
+
does not expose one; bash-parser is a parser only). agsh also needs almost
|
|
402
|
+
none of bash: no local filesystem, no variables, no control flow — just
|
|
403
|
+
tokenizing, pipelines, and a command namespace it fully owns. A TypeScript
|
|
404
|
+
REPL with tools as async functions (the shape of change-monitor's `script`
|
|
405
|
+
tool) was considered and kept as a possible later addition; it trades away
|
|
406
|
+
the unix muscle memory the curated commands exist for.
|