@cursor/july 0.1.54 → 0.1.55
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/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.DAKcDclS.js → app.CVQxhV85.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BFpWSo6D.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BNIaCSfG.js → VPLocalSearchBox.QAPzJjql.js} +1 -1
- package/dist/docs/assets/chunks/{theme.B47GzJjc.js → theme.CSxTCOFu.js} +2 -2
- package/dist/docs/assets/{reference_cli.md.-V6J7Cl8.js → reference_cli.md.D_CCfG8R.js} +2 -0
- package/dist/docs/assets/templates_triage.md.DWuQ1bZz.js +9 -0
- package/dist/docs/assets/templates_triage.md.DWuQ1bZz.lean.js +1 -0
- package/dist/docs/building-with-agents.html +3 -3
- package/dist/docs/concepts.html +3 -3
- package/dist/docs/deployment.html +3 -3
- package/dist/docs/evals.html +3 -3
- package/dist/docs/example-agents/approval-buddy.html +3 -3
- package/dist/docs/example-agents/benny.html +3 -3
- package/dist/docs/example-agents/bugbot.html +3 -3
- package/dist/docs/example-agents/codebase-wiki.html +3 -3
- package/dist/docs/example-agents/codeowners-review.html +3 -3
- package/dist/docs/example-agents/concierge.html +3 -3
- package/dist/docs/example-agents/fsd.html +3 -3
- package/dist/docs/example-agents/index.html +3 -3
- package/dist/docs/example-agents/knowledge-base.html +3 -3
- package/dist/docs/example-agents/oncall.html +3 -3
- package/dist/docs/example-agents/security-reviewer.html +3 -3
- package/dist/docs/example-agents/slack-agent.html +3 -3
- package/dist/docs/example-agents/weather-agent.html +3 -3
- package/dist/docs/guides/agent-to-agent.html +3 -3
- package/dist/docs/guides/cloud-runtime.html +3 -3
- package/dist/docs/guides/github.html +3 -3
- package/dist/docs/guides/human-in-the-loop.html +3 -3
- package/dist/docs/guides/mcp-oauth.html +3 -3
- package/dist/docs/guides/opentelemetry.html +3 -3
- package/dist/docs/guides/slack.html +3 -3
- package/dist/docs/guides/webhooks.html +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +3 -3
- package/dist/docs/quickstart.html +3 -3
- package/dist/docs/reference/agent-config.html +3 -3
- package/dist/docs/reference/artifacts.html +3 -3
- package/dist/docs/reference/channels.html +3 -3
- package/dist/docs/reference/cli.html +6 -4
- package/dist/docs/reference/connections.html +3 -3
- package/dist/docs/reference/hooks.html +3 -3
- package/dist/docs/reference/http-api.html +3 -3
- package/dist/docs/reference/instructions.html +3 -3
- package/dist/docs/reference/playground.html +3 -3
- package/dist/docs/reference/project-layout.html +3 -3
- package/dist/docs/reference/prompt.html +3 -3
- package/dist/docs/reference/schedules.html +3 -3
- package/dist/docs/reference/sessions.html +3 -3
- package/dist/docs/reference/skills.html +3 -3
- package/dist/docs/reference/subagents.html +3 -3
- package/dist/docs/reference/tools.html +3 -3
- package/dist/docs/scaffolding-agents.html +3 -3
- package/dist/docs/storage.html +3 -3
- package/dist/docs/templates/triage.html +14 -16
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +10 -1
- package/dist/internal/cli-deploy.js +1 -1
- package/dist/internal/cli-slack.d.ts +2 -0
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +35 -18
- package/dist/internal/init-project.d.ts +3 -0
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +77 -45
- package/dist/internal/slack-provision-client.js +1 -1
- package/dist/playground/assets/{index-BHAPd9KT.js → index-0oqXUkrR.js} +44 -44
- package/dist/playground/assets/index-tHCjJxv4.css +1 -0
- package/dist/playground/index.html +2 -2
- package/docs/reference/cli.md +2 -0
- package/docs/templates/triage.md +59 -101
- package/package.json +1 -1
- package/src/internal/cli-ax.ts +10 -1
- package/src/internal/cli-deploy.ts +2 -2
- package/src/internal/cli-slack.ts +57 -18
- package/src/internal/init-project.ts +93 -48
- package/src/internal/slack-provision-client.ts +1 -1
- package/templates/triage/README.md +27 -29
- package/templates/triage/agent/agent.ts +1 -0
- package/templates/triage/agent/channels/queue.ts +47 -0
- package/templates/triage/agent/channels/webhook.ts +50 -0
- package/templates/triage/agent/instructions.md +24 -13
- package/templates/triage/agent/lib/actuate.ts +759 -0
- package/templates/triage/agent/lib/parse-queue-event.ts +168 -0
- package/templates/triage/agent/lib/tracker.ts +5 -0
- package/templates/triage/agent/lib/types.ts +52 -0
- package/templates/triage/agent/lib/verify-webhook.ts +81 -0
- package/templates/triage/agent/skills/triage-rubric.md +6 -5
- package/templates/triage/agent/tools/record_triage.ts +24 -5
- package/templates/triage/evals/triage.eval.ts +25 -3
- package/templates/triage/overlays/jira/README.md +21 -0
- package/templates/triage/overlays/jira/agent/lib/tracker.ts +8 -0
- package/templates/triage/overlays/jira/agent/mcp-connections/tracker.ts +7 -0
- package/templates/triage/overlays/linear/README.md +21 -0
- package/templates/triage/overlays/linear/agent/lib/tracker.ts +8 -0
- package/templates/triage/overlays/linear/agent/mcp-connections/tracker.ts +7 -0
- package/templates/triage/package.json +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.C4uxzYEU.js +0 -1
- package/dist/docs/assets/templates_triage.md.CConZt1z.js +0 -11
- package/dist/docs/assets/templates_triage.md.CConZt1z.lean.js +0 -1
- package/dist/playground/assets/index-DpKH0HcT.css +0 -1
- package/templates/triage/agent/channels/intake.ts +0 -20
- package/templates/triage/agent/channels/slack.ts +0 -3
- /package/dist/docs/assets/{reference_cli.md.-V6J7Cl8.lean.js → reference_cli.md.D_CCfG8R.lean.js} +0 -0
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{_ as s,c as t,o as a,ag as i}from"./chunks/framework.CAZyNGu9.js";const k=JSON.parse('{"title":"Ship a triage agent from the template","description":"Scaffold the triage template, make its rubric yours, prove it with evals, and deploy it to Cursor-managed hosting.","frontmatter":{"title":"Ship a triage agent from the template","description":"Scaffold the triage template, make its rubric yours, prove it with evals, and deploy it to Cursor-managed hosting."},"headers":[],"relativePath":"templates/triage.md","filePath":"templates/triage.md"}'),n={name:"templates/triage.md"};function h(r,e,o,l,p,d){return a(),t("div",null,[...e[0]||(e[0]=[i(`<h1 id="ship-a-triage-agent-from-the-template" tabindex="-1">Ship a triage agent from the template <a class="header-anchor" href="#ship-a-triage-agent-from-the-template" aria-label="Permalink to "Ship a triage agent from the template""></a></h1><p>The triage template is a working agent you own from the first command. It reads a report, classifies it as a bug, a question, or feedback, judges severity against a rubric, records a structured verdict, and replies with the next step. This page walks the whole arc: scaffold, first verdict, customize, prove, wire Slack, deploy.</p><p>Every file the template ships is yours to edit. The only dependency is <code>@cursor/july</code> itself, pinned to the version the template was tested against. Nothing phones home to a template registry.</p><h2 id="scaffold-it" tabindex="-1">Scaffold it <a class="header-anchor" href="#scaffold-it" aria-label="Permalink to "Scaffold it""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @cursor/july</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./triage-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --template</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> triage</span></span></code></pre></div><p>One command with no prior install. It writes twelve files, runs <code>npm install</code>, puts <code>agent-sdk</code> on your PATH, and offers a browser sign-in when the machine has no Cursor credential. Model turns need that credential, so sign in now rather than mid-flow:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> login</span></span></code></pre></div><p>The scaffold is a plain directory. Commit it to your own repo.</p><h2 id="get-the-first-verdict" tabindex="-1">Get the first verdict <a class="header-anchor" href="#get-the-first-verdict" aria-label="Permalink to "Get the first verdict""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> triage-agent</span></span>
|
|
2
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span></span></code></pre></div><p>Open the playground URL it prints and type a real report:</p><blockquote><p>Export to CSV has returned 500s since this morning. Request id 41ac. Retrying does not help.</p></blockquote><p>Watch the turn. The agent reads the <code>triage-rubric</code> skill, calls <code>record_triage</code> with a structured verdict, and replies in six lines or fewer. The tool call renders inline, so you see the exact kind, severity, and next step it recorded.</p><p>Integrations use the same door your playground does. The <code>intake</code> channel accepts reports over HTTP:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -X</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> POST</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> http://127.0.0.1:3000/triage-agent/v1/channels/intake/report</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
|
|
3
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'content-type: application/json'</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
|
|
4
|
-
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '{"message":"How do I rotate staging API keys?","reporter":"dana"}'</span></span></code></pre></div><p>The composer also autocompletes <code>/report</code>, which drives this route.</p><h2 id="make-the-rubric-yours" tabindex="-1">Make the rubric yours <a class="header-anchor" href="#make-the-rubric-yours" aria-label="Permalink to "Make the rubric yours""></a></h2><p><code>agent/skills/triage-rubric.md</code> holds the judgment: what counts as a bug, the tie-breakers, and the severity ladder. Edit it first. Your team's definition of <code>urgent</code> belongs there, in plain markdown, and the next turn uses it without a restart step.</p><p><code>agent/instructions.md</code> owns the flow around the rubric: when to ask a clarifying question, the one-call <code>record_triage</code> rule, and the reply shape.</p><h2 id="prove-it-with-evals" tabindex="-1">Prove it with evals <a class="header-anchor" href="#prove-it-with-evals" aria-label="Permalink to "Prove it with evals""></a></h2><p>The template ships three smoke cases, one per kind. Run them after every rubric edit:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> eval</span></span></code></pre></div><p>Each case sends a realistic report and asserts a verdict was recorded with the expected kind. When you tighten the rubric, add a case for the report style you tightened it for. The eval suite is the regression net for prompt changes, so grow it with the rubric.</p><h2 id="file-verdicts-into-your-tracker" tabindex="-1">File verdicts into your tracker <a class="header-anchor" href="#file-verdicts-into-your-tracker" aria-label="Permalink to "File verdicts into your tracker""></a></h2><p><code>agent/tools/record_triage.ts</code> defines the verdict shape with a zod schema and returns it. Point its <code>execute</code> at Linear, GitHub Issues, or a webhook to file real tickets. Test the tool without a model turn:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> call</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> record_triage</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --input</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '{</span></span>
|
|
5
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "kind": "bug",</span></span>
|
|
6
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "severity": "high",</span></span>
|
|
7
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "title": "CSV export 500s",</span></span>
|
|
8
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "summary": "Export returns 500 since this morning.",</span></span>
|
|
9
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "nextStep": "Check export service logs."</span></span>
|
|
10
|
-
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}'</span></span></code></pre></div><p>The call validates against the schema and runs your <code>execute</code> body in-process, so tracker wiring gets a fast loop.</p><h2 id="wire-it-to-slack" tabindex="-1">Wire it to Slack <a class="header-anchor" href="#wire-it-to-slack" aria-label="Permalink to "Wire it to Slack""></a></h2><p>The <code>slack</code> channel idles until its tokens exist, so local work never blocks on Slack. When you want it live:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> slack</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> setup</span></span></code></pre></div><p>The guided flow creates the Slack app and writes the token pair to <code>.env.local</code>. Restart <code>agent-sdk dev</code>, invite the bot to a channel, and @mention it with a report. The <a href="./../guides/slack.html">Slack guide</a> covers channel watching and approvals when you outgrow mentions.</p><h2 id="deploy-it" tabindex="-1">Deploy it <a class="header-anchor" href="#deploy-it" aria-label="Permalink to "Deploy it""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span></span></code></pre></div><p>From your git checkout, <code>deploy</code> infers the repo, ref, and slug, builds the ref on Cursor-managed hosting, and prints the hosted URL plus a one-time alias token. Store the token. Production Slack tokens go in as deployment secrets:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> secrets</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> set</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> SLACK_BOT_TOKEN</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> SLACK_APP_TOKEN</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --slug</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> triage-agent</span></span>
|
|
11
|
-
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span></span></code></pre></div><p>Check on it with <code>agent-sdk deployments</code>. The <a href="./../deployment.html">deployment guide</a> covers self-hosting, storage, and auth when you need them.</p><h2 id="where-to-go-next" tabindex="-1">Where to go next <a class="header-anchor" href="#where-to-go-next" aria-label="Permalink to "Where to go next""></a></h2><ul><li>Add a GitHub intake with the <a href="./../guides/github.html">GitHub guide</a>, so issue comments triage themselves.</li><li>Persist verdicts across restarts with <a href="./../storage.html">storage</a>.</li><li>Measure rubric changes on live traffic with <a href="./../ab.html">A/B metrics</a>.</li></ul>`,38)])])}const g=s(n,[["render",h]]);export{k as __pageData,g as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as s,c as t,o as a,ag as i}from"./chunks/framework.CAZyNGu9.js";const k=JSON.parse('{"title":"Ship a triage agent from the template","description":"Scaffold the triage template, make its rubric yours, prove it with evals, and deploy it to Cursor-managed hosting.","frontmatter":{"title":"Ship a triage agent from the template","description":"Scaffold the triage template, make its rubric yours, prove it with evals, and deploy it to Cursor-managed hosting."},"headers":[],"relativePath":"templates/triage.md","filePath":"templates/triage.md"}'),n={name:"templates/triage.md"};function h(r,e,o,l,p,d){return a(),t("div",null,[...e[0]||(e[0]=[i("",38)])])}const g=s(n,[["render",h]]);export{k as __pageData,g as default};
|