@cursor/july 0.1.3 → 0.1.4
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/bin/agent-serve.d.ts +1 -1
- package/dist/bin/agent-serve.js +40 -16
- package/dist/channels/slack/log.d.ts +1 -1
- package/dist/channels/slack/log.d.ts.map +1 -1
- package/dist/channels/slack/log.js +4 -5
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/socket-mode.d.ts.map +1 -1
- package/dist/channels/slack/socket-mode.js +10 -9
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.BR0RbIdx.js → app.DF-Yx4OP.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.0XrheBv2.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.qjsVTneI.js → VPLocalSearchBox.DSeJSudL.js} +1 -1
- package/dist/docs/assets/chunks/{theme.2Kg8jIp_.js → theme.DZVLTXOC.js} +2 -2
- package/dist/docs/assets/{index.md.m81y7TY7.js → index.md.Cylk70gg.js} +1 -1
- 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/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/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 +5 -5
- package/dist/docs/quickstart.html +3 -3
- package/dist/docs/reference/agent-config.html +3 -3
- package/dist/docs/reference/channels.html +3 -3
- package/dist/docs/reference/cli.html +3 -3
- 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/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/troubleshooting.html +3 -3
- package/dist/internal/ab-collector.js +3 -3
- package/dist/internal/ab-fold.js +1 -1
- package/dist/internal/cli-ax.d.ts +13 -5
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +41 -15
- package/dist/internal/cli-github.js +13 -13
- package/dist/internal/cursor/account-mcp.js +3 -3
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/credentials.d.ts +5 -3
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +9 -6
- package/dist/internal/cursor/github-credentials.js +3 -3
- package/dist/internal/cursor-event-relay.js +1 -1
- package/dist/internal/cursor-relay-core.d.ts +1 -1
- package/dist/internal/cursor-relay-core.d.ts.map +1 -1
- package/dist/internal/cursor-relay-core.js +2 -1
- package/dist/internal/cursor-slack-relay.js +1 -1
- package/dist/internal/distribution.d.ts +7 -0
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +7 -0
- package/dist/internal/docs-site.js +3 -3
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +8 -8
- package/dist/internal/github-fanout.js +2 -2
- package/dist/internal/host-platforms.js +5 -5
- package/dist/internal/mcp-endpoint.d.ts.map +1 -1
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/playground/toolchain.js +6 -6
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +11 -11
- package/dist/internal/resolve-prod-target.d.ts +2 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +44 -21
- package/dist/internal/resolved-connections.js +5 -5
- package/dist/internal/schedule-runner.js +1 -1
- package/dist/internal/server.js +14 -14
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +13 -13
- package/dist/internal/sessions-client.d.ts +13 -0
- package/dist/internal/sessions-client.d.ts.map +1 -1
- package/dist/internal/sessions-client.js +25 -0
- package/dist/internal/storage-coordinator.js +6 -6
- package/dist/internal/update-check.d.ts +93 -0
- package/dist/internal/update-check.d.ts.map +1 -0
- package/dist/internal/update-check.js +431 -0
- package/dist/playground/assets/{index-D-vo2lV_.css → index-Ct_Usdm8.css} +1 -1
- package/dist/playground/assets/index-Dsyb-Vaj.js +319 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +0 -1
- package/package.json +2 -1
- package/skills/setup-slack/SKILL.md +1 -1
- package/src/bin/agent-serve.ts +42 -16
- package/src/channels/slack/log.ts +5 -5
- package/src/channels/slack/setup.ts +1 -1
- package/src/channels/slack/socket-mode.ts +11 -9
- package/src/internal/ab-collector.ts +3 -3
- package/src/internal/ab-fold.ts +1 -1
- package/src/internal/cli-ax.ts +55 -16
- package/src/internal/cli-github.ts +13 -15
- package/src/internal/cursor/account-mcp.ts +3 -3
- package/src/internal/cursor/backend-client.ts +1 -1
- package/src/internal/cursor/credentials.ts +12 -7
- package/src/internal/cursor/github-credentials.ts +3 -3
- package/src/internal/cursor-event-relay.ts +1 -1
- package/src/internal/cursor-relay-core.ts +4 -2
- package/src/internal/cursor-slack-relay.ts +1 -1
- package/src/internal/distribution.ts +8 -0
- package/src/internal/docs-site.ts +3 -3
- package/src/internal/eval-run-store.ts +8 -10
- package/src/internal/github-fanout.ts +2 -2
- package/src/internal/host-platforms.ts +5 -5
- package/src/internal/mcp-endpoint.ts +1 -3
- package/src/internal/playground/toolchain.ts +6 -6
- package/src/internal/reminder-runner.ts +11 -17
- package/src/internal/resolve-prod-target.ts +55 -23
- package/src/internal/resolved-connections.ts +5 -5
- package/src/internal/schedule-runner.ts +1 -1
- package/src/internal/server.ts +14 -14
- package/src/internal/session-engine.ts +13 -15
- package/src/internal/sessions-client.ts +34 -0
- package/src/internal/storage-coordinator.ts +6 -6
- package/src/internal/update-check.ts +552 -0
- package/src/types.ts +3 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtIOQzGj.js +0 -1
- package/dist/playground/assets/index-x60b9q2j.js +0 -312
- /package/dist/docs/assets/{index.md.m81y7TY7.lean.js → index.md.Cylk70gg.lean.js} +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* agent-serve serve [--dir .] [--port 3000] [--host 127.0.0.1] [--dev]
|
|
6
6
|
* agent-serve dev [path] [--port 3000] [--host 127.0.0.1]
|
|
7
7
|
* agent-serve chat [--url http://127.0.0.1:3000] [--message "..."] [--json]
|
|
8
|
-
* agent-serve resume
|
|
8
|
+
* agent-serve resume [sessionId] [--url | --prod] [--message "..."]
|
|
9
9
|
* agent-serve run [--dir .] [--message "..."] [--json|--text]
|
|
10
10
|
* agent-serve trajectory --events <file.ndjson>
|
|
11
11
|
* agent-serve init [dir] [--json]
|
package/dist/bin/agent-serve.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* agent-serve serve [--dir .] [--port 3000] [--host 127.0.0.1] [--dev]
|
|
6
6
|
* agent-serve dev [path] [--port 3000] [--host 127.0.0.1]
|
|
7
7
|
* agent-serve chat [--url http://127.0.0.1:3000] [--message "..."] [--json]
|
|
8
|
-
* agent-serve resume
|
|
8
|
+
* agent-serve resume [sessionId] [--url | --prod] [--message "..."]
|
|
9
9
|
* agent-serve run [--dir .] [--message "..."] [--json|--text]
|
|
10
10
|
* agent-serve trajectory --events <file.ndjson>
|
|
11
11
|
* agent-serve init [dir] [--json]
|
|
@@ -31,6 +31,7 @@ import { cmdCall, cmdChat, cmdEval, cmdInit, cmdLogs, cmdPlayground, cmdResume,
|
|
|
31
31
|
import { cmdDeploy, cmdDeploymentStatus, cmdDeployments, cmdRotatePodCredential, cmdRotateToken, cmdSecretsList, cmdSecretsSet, cmdSecretsUnset, cmdStop, } from "../internal/cli-deploy.js";
|
|
32
32
|
import { CLI_COMMAND_NAME as CLI } from "../internal/distribution.js";
|
|
33
33
|
import { clearTerminal, stdoutPalette } from "../internal/terminal-style.js";
|
|
34
|
+
import { cmdUpdate, warnIfOutdated } from "../internal/update-check.js";
|
|
34
35
|
const HELP = `${CLI} — serve a filesystem-defined Cursor agent over channels
|
|
35
36
|
|
|
36
37
|
Usage:
|
|
@@ -42,9 +43,9 @@ Usage:
|
|
|
42
43
|
Same flags as serve; implies --dev. Path defaults to
|
|
43
44
|
the current directory (or pass --dir).
|
|
44
45
|
${CLI} chat [--url <baseUrl> | --prod] [--message <text>] [--json] [--text]
|
|
45
|
-
[--session <id>] [--continuation-token <t>]
|
|
46
|
+
[--session <id> | --resume] [--continuation-token <t>]
|
|
46
47
|
[--slug <slug>] [--team <id>]
|
|
47
|
-
${CLI} resume
|
|
48
|
+
${CLI} resume [sessionId] [--url <baseUrl> | --prod] [--message <text>]
|
|
48
49
|
[--json] [--text] [--continuation-token <t>]
|
|
49
50
|
[--slug <slug>] [--team <id>]
|
|
50
51
|
${CLI} logs [--url <baseUrl> | --prod] [--once] [--json]
|
|
@@ -73,6 +74,7 @@ Usage:
|
|
|
73
74
|
${CLI} login [--api-key <key>] [--key-name <name>]
|
|
74
75
|
${CLI} logout
|
|
75
76
|
${CLI} whoami [--json]
|
|
77
|
+
${CLI} update
|
|
76
78
|
${CLI} deploy [--dir <path>] [--slug <slug> | --all] [--team <id>] [--json]
|
|
77
79
|
[--no-wait] [--repo <url>] [--ref <ref>]
|
|
78
80
|
[--path <agentPath>] [--cursor-events-repo <owner/name>]...
|
|
@@ -96,12 +98,16 @@ Commands:
|
|
|
96
98
|
session + continuation token). Optional --message seeds the first
|
|
97
99
|
turn then stays open on a TTY. --session reattaches (looks up the
|
|
98
100
|
continuation token via /v1/sessions when omitted) and replays the
|
|
99
|
-
transcript. --
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
transcript. --resume reattaches the most recently updated
|
|
102
|
+
followable session (no id needed). --json is one-shot. Pass
|
|
103
|
+
--prod to hit the team's hosted deployment (slug from --slug or
|
|
104
|
+
the directory name).
|
|
105
|
+
resume Reattach chat to a session (same as \`${CLI} chat --session <id>\`
|
|
106
|
+
or \`${CLI} chat --resume\` with no id). Omit the session id to
|
|
107
|
+
resume the previous followable session from /v1/sessions. Looks
|
|
108
|
+
up the continuation token via /v1/sessions when
|
|
109
|
+
--continuation-token is omitted, then replays the transcript.
|
|
110
|
+
Pass --prod for a hosted deployment.
|
|
105
111
|
logs Tail agent logs. Default follows (Ctrl-C to stop); --once dumps
|
|
106
112
|
the current buffer. --prod shows deploy progress until the
|
|
107
113
|
hosted deployment is running, then tails runtime logs. Without
|
|
@@ -109,7 +115,7 @@ Commands:
|
|
|
109
115
|
sessions List sessions on a running agent (or --prod hosted deployment).
|
|
110
116
|
session Show one session. Default: text trajectory. --json for trajectory
|
|
111
117
|
JSON; --events for the raw event list. To continue interactively,
|
|
112
|
-
use \`${CLI} resume
|
|
118
|
+
use \`${CLI} resume [id]\`.
|
|
113
119
|
playground Open the web playground. --prod starts a loopback proxy that
|
|
114
120
|
injects hosted engine credentials (browsers cannot set them).
|
|
115
121
|
--print skips opening a browser. Ctrl-C stops the proxy.
|
|
@@ -136,6 +142,8 @@ Commands:
|
|
|
136
142
|
inference, cloud runtime, and cursorAccount MCP connections.
|
|
137
143
|
logout Remove the stored Cursor credentials.
|
|
138
144
|
whoami Show which Cursor account powers this host (and why).
|
|
145
|
+
update Upgrade this install to the latest published version (detects
|
|
146
|
+
global npm/pnpm/yarn/bun installs and project dependencies).
|
|
139
147
|
deploy Deploy onto Cursor's managed agent-serve hosting, then wait for
|
|
140
148
|
the engine to come up. --repo/--ref/--path stay available;
|
|
141
149
|
inside an agent git checkout they are inferred when omitted
|
|
@@ -217,11 +225,15 @@ Options:
|
|
|
217
225
|
--input call: JSON object of tool arguments (default {}).
|
|
218
226
|
--messages-file JSON array of strings (run).
|
|
219
227
|
--session Existing session id (run/call follow-up, or chat reattach).
|
|
220
|
-
Prefer \`${CLI} resume
|
|
228
|
+
Prefer \`${CLI} resume [sessionId]\` for interactive
|
|
221
229
|
reattach.
|
|
230
|
+
--resume chat: reattach the previous followable session (most
|
|
231
|
+
recently updated in /v1/sessions). Same as
|
|
232
|
+
\`${CLI} resume\` with no session id. Ignored when
|
|
233
|
+
--session is also set.
|
|
222
234
|
--continuation-token Token from a prior run/chat/resume response (optional
|
|
223
|
-
for resume / chat --session; looked up via
|
|
224
|
-
when omitted).
|
|
235
|
+
for resume / chat --session/--resume; looked up via
|
|
236
|
+
/v1/sessions when omitted).
|
|
225
237
|
--events run: write NDJSON trace to this path (default
|
|
226
238
|
<dir>/.agent-serve/traces/<sessionId>.ndjson).
|
|
227
239
|
trajectory: read this file. session: print raw
|
|
@@ -314,6 +326,7 @@ function main(argv) {
|
|
|
314
326
|
"messages-file": { type: "string" },
|
|
315
327
|
"session-id": { type: "string" },
|
|
316
328
|
session: { type: "string" },
|
|
329
|
+
resume: { type: "boolean", default: false },
|
|
317
330
|
"continuation-token": { type: "string" },
|
|
318
331
|
events: { type: "string" },
|
|
319
332
|
"no-events": { type: "boolean", default: false },
|
|
@@ -360,6 +373,11 @@ function main(argv) {
|
|
|
360
373
|
},
|
|
361
374
|
});
|
|
362
375
|
const dir = (_h = values.dir) !== null && _h !== void 0 ? _h : ".";
|
|
376
|
+
// Best-effort, cached, and silent on failure. `update` does its own fresh
|
|
377
|
+
// lookup, and --json runs stay quiet for machine consumers.
|
|
378
|
+
if (command !== "update" && values.json !== true) {
|
|
379
|
+
yield warnIfOutdated();
|
|
380
|
+
}
|
|
363
381
|
switch (command) {
|
|
364
382
|
case "slack": {
|
|
365
383
|
const { cmdSlack } = yield import("../internal/cli-slack.js");
|
|
@@ -433,6 +451,9 @@ function main(argv) {
|
|
|
433
451
|
const { cmdWhoami } = yield import("../internal/cli-cursor.js");
|
|
434
452
|
return cmdWhoami({ json: values.json });
|
|
435
453
|
}
|
|
454
|
+
case "update": {
|
|
455
|
+
return cmdUpdate();
|
|
456
|
+
}
|
|
436
457
|
case "deploy": {
|
|
437
458
|
// `--repo` is repeatable for `serve --cursor-events`; deploy targets a
|
|
438
459
|
// single source repo, so the last one wins.
|
|
@@ -551,6 +572,7 @@ function main(argv) {
|
|
|
551
572
|
apiKey: values["api-key"],
|
|
552
573
|
slug: values.slug,
|
|
553
574
|
sessionId: (_l = values["session-id"]) !== null && _l !== void 0 ? _l : values.session,
|
|
575
|
+
resume: values.resume,
|
|
554
576
|
continuationToken: values["continuation-token"],
|
|
555
577
|
bearerToken: values["bearer-token"],
|
|
556
578
|
json: values.json,
|
|
@@ -568,6 +590,7 @@ function main(argv) {
|
|
|
568
590
|
apiKey: values["api-key"],
|
|
569
591
|
slug: values.slug,
|
|
570
592
|
// Positional wins; --session is accepted as a redundant alias.
|
|
593
|
+
// No id → resume previous (cmdResume sets resume: true).
|
|
571
594
|
sessionId: (_o = (_m = positionals[0]) !== null && _m !== void 0 ? _m : values["session-id"]) !== null && _o !== void 0 ? _o : values.session,
|
|
572
595
|
continuationToken: values["continuation-token"],
|
|
573
596
|
bearerToken: values["bearer-token"],
|
|
@@ -793,7 +816,7 @@ function main(argv) {
|
|
|
793
816
|
})
|
|
794
817
|
.catch((error) => {
|
|
795
818
|
var _a;
|
|
796
|
-
process.stderr.write(`[
|
|
819
|
+
process.stderr.write(`[agentkit] restart failed: ${error instanceof Error
|
|
797
820
|
? ((_a = error.stack) !== null && _a !== void 0 ? _a : error.message)
|
|
798
821
|
: String(error)}\n`);
|
|
799
822
|
closing = true;
|
|
@@ -825,6 +848,7 @@ function axFromOptions(partial) {
|
|
|
825
848
|
stateRoot: partial.stateRoot,
|
|
826
849
|
messages: partial.messages,
|
|
827
850
|
sessionId: partial.sessionId,
|
|
851
|
+
resume: partial.resume,
|
|
828
852
|
continuationToken: partial.continuationToken,
|
|
829
853
|
timeoutMs: partial.timeoutMs,
|
|
830
854
|
events: partial.events,
|
|
@@ -1046,7 +1070,7 @@ function installTransportErrorGuards() {
|
|
|
1046
1070
|
};
|
|
1047
1071
|
const log = (label, reason) => {
|
|
1048
1072
|
const text = reason instanceof Error ? reason.message : String(reason);
|
|
1049
|
-
process.stderr.write(`[
|
|
1073
|
+
process.stderr.write(`[agentkit] ${label} (server stays up): ${text.slice(0, 400)}\n`);
|
|
1050
1074
|
};
|
|
1051
1075
|
process.on("unhandledRejection", (reason) => {
|
|
1052
1076
|
if (isTransportNoise(reason)) {
|
|
@@ -1061,7 +1085,7 @@ function installTransportErrorGuards() {
|
|
|
1061
1085
|
log("swallowed uncaughtException", error);
|
|
1062
1086
|
return;
|
|
1063
1087
|
}
|
|
1064
|
-
process.stderr.write(`[
|
|
1088
|
+
process.stderr.write(`[agentkit] uncaughtException: ${(_a = error.stack) !== null && _a !== void 0 ? _a : error.message}\n`);
|
|
1065
1089
|
process.exit(1);
|
|
1066
1090
|
});
|
|
1067
1091
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Shared logging for the Slack channel pack.
|
|
3
3
|
*
|
|
4
4
|
* Uses the same `(line: string) => void` contract as ServeOptions.logger.
|
|
5
|
-
* Lines always start with `[
|
|
5
|
+
* Lines always start with `[agentkit/slack]` so Socket Mode docs and greps
|
|
6
6
|
* keep working. Optional key=value fields carry correlation ids.
|
|
7
7
|
*/
|
|
8
8
|
export type SlackLogWrite = (line: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/log.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/log.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG,MAAM,CACjC,MAAM,EACN,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAC7C,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1D,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACzD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACzD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CAC3D;AAED,qDAAqD;AACrD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAgBpE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc,GACtB,MAAM,CAGR;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,GAAE,aAA2C,GACjD,QAAQ,CAqBV;AAED,sDAAsD;AACtD,eAAO,MAAM,eAAe,EAAE,QAA8B,CAAC"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Shared logging for the Slack channel pack.
|
|
3
3
|
*
|
|
4
4
|
* Uses the same `(line: string) => void` contract as ServeOptions.logger.
|
|
5
|
-
* Lines always start with `[
|
|
5
|
+
* Lines always start with `[agentkit/slack]` so Socket Mode docs and greps
|
|
6
6
|
* keep working. Optional key=value fields carry correlation ids.
|
|
7
7
|
*/
|
|
8
|
+
import { SLACK_LOG_PREFIX } from "../../internal/distribution.js";
|
|
8
9
|
/** Format `key=value` pairs; omit null/undefined. */
|
|
9
10
|
export function formatSlackLogFields(fields) {
|
|
10
11
|
if (fields === undefined) {
|
|
@@ -24,7 +25,7 @@ export function formatSlackLogFields(fields) {
|
|
|
24
25
|
}
|
|
25
26
|
export function formatSlackLogLine(level, message, fields) {
|
|
26
27
|
const levelTag = level === "info" ? "" : `${level} `;
|
|
27
|
-
return
|
|
28
|
+
return `${SLACK_LOG_PREFIX} ${levelTag}${message}${formatSlackLogFields(fields)}`;
|
|
28
29
|
}
|
|
29
30
|
export function createSlackLogger(write = (line) => console.log(line)) {
|
|
30
31
|
const emit = (level, message, fields) => {
|
|
@@ -33,9 +34,7 @@ export function createSlackLogger(write = (line) => console.log(line)) {
|
|
|
33
34
|
return {
|
|
34
35
|
write(line) {
|
|
35
36
|
// Preserve Socket Mode messages that already include the prefix.
|
|
36
|
-
write(line.startsWith(
|
|
37
|
-
? line
|
|
38
|
-
: `[agent-serve/slack] ${line}`);
|
|
37
|
+
write(line.startsWith(SLACK_LOG_PREFIX) ? line : `${SLACK_LOG_PREFIX} ${line}`);
|
|
39
38
|
},
|
|
40
39
|
debug: (message, fields) => emit("debug", message, fields),
|
|
41
40
|
info: (message, fields) => emit("info", message, fields),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-mode.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/socket-mode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"socket-mode.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/socket-mode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AA+DD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA6DhC"}
|
|
@@ -14,6 +14,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
import { LogLevel, SocketModeClient } from "@slack/socket-mode";
|
|
17
|
+
import { SLACK_LOG_PREFIX } from "../../internal/distribution.js";
|
|
17
18
|
function createBridgeLogger(write) {
|
|
18
19
|
let level = LogLevel.INFO;
|
|
19
20
|
const rank = {
|
|
@@ -29,7 +30,7 @@ function createBridgeLogger(write) {
|
|
|
29
30
|
const text = msgs
|
|
30
31
|
.map((m) => (typeof m === "string" ? m : JSON.stringify(m)))
|
|
31
32
|
.join(" ");
|
|
32
|
-
write(
|
|
33
|
+
write(`${SLACK_LOG_PREFIX} Socket Mode ${text}`);
|
|
33
34
|
};
|
|
34
35
|
return {
|
|
35
36
|
debug: (...msgs) => emit(LogLevel.DEBUG, msgs),
|
|
@@ -41,7 +42,7 @@ function createBridgeLogger(write) {
|
|
|
41
42
|
},
|
|
42
43
|
getLevel: () => level,
|
|
43
44
|
setName() {
|
|
44
|
-
// Name is unused;
|
|
45
|
+
// Name is unused; agentkit prefixes lines itself.
|
|
45
46
|
},
|
|
46
47
|
};
|
|
47
48
|
}
|
|
@@ -51,12 +52,12 @@ function invokeHandler(log, label, handler, payload) {
|
|
|
51
52
|
if (result !== undefined &&
|
|
52
53
|
typeof result.then === "function") {
|
|
53
54
|
void Promise.resolve(result).catch((error) => {
|
|
54
|
-
log(
|
|
55
|
+
log(`${SLACK_LOG_PREFIX} Socket Mode ${label} failed: ${errorMessage(error)}`);
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
catch (error) {
|
|
59
|
-
log(
|
|
60
|
+
log(`${SLACK_LOG_PREFIX} Socket Mode ${label} failed: ${errorMessage(error)}`);
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
function errorMessage(error) {
|
|
@@ -77,18 +78,18 @@ export function startSlackSocketMode(options) {
|
|
|
77
78
|
autoReconnectEnabled: true,
|
|
78
79
|
});
|
|
79
80
|
client.on("connected", () => {
|
|
80
|
-
write(
|
|
81
|
+
write(`${SLACK_LOG_PREFIX} Socket Mode connected`);
|
|
81
82
|
});
|
|
82
83
|
client.on("reconnecting", () => {
|
|
83
|
-
write(
|
|
84
|
+
write(`${SLACK_LOG_PREFIX} Socket Mode reconnecting`);
|
|
84
85
|
});
|
|
85
86
|
client.on("disconnected", () => {
|
|
86
|
-
write(
|
|
87
|
+
write(`${SLACK_LOG_PREFIX} Socket Mode disconnected`);
|
|
87
88
|
});
|
|
88
89
|
client.on("slack_event", (evt) => {
|
|
89
90
|
// ACK immediately (3s envelope budget); then dispatch off-path.
|
|
90
91
|
void Promise.resolve(evt.ack()).catch((error) => {
|
|
91
|
-
write(
|
|
92
|
+
write(`${SLACK_LOG_PREFIX} Socket Mode ACK failed: ${errorMessage(error)}`);
|
|
92
93
|
});
|
|
93
94
|
if (evt.type === "events_api") {
|
|
94
95
|
if (evt.body !== undefined) {
|
|
@@ -108,7 +109,7 @@ export function startSlackSocketMode(options) {
|
|
|
108
109
|
stop() {
|
|
109
110
|
return __awaiter(this, void 0, void 0, function* () {
|
|
110
111
|
yield client.disconnect();
|
|
111
|
-
write(
|
|
112
|
+
write(`${SLACK_LOG_PREFIX} Socket Mode stopped`);
|
|
112
113
|
});
|
|
113
114
|
},
|
|
114
115
|
};
|
package/dist/docs/404.html
CHANGED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.DF-Yx4OP.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
14
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
15
15
|
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
18
18
|
<div id="app"></div>
|
|
19
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"DTKwE15Z\",\"evals.md\":\"DAgEc_hL\",\"guides_agent-to-agent.md\":\"Bpzgq2Pq\",\"guides_cloud-runtime.md\":\"gVzabdQL\",\"guides_github.md\":\"DOOCpqsW\",\"guides_human-in-the-loop.md\":\"DlUqsp1S\",\"guides_slack.md\":\"CCwqHvSV\",\"guides_webhooks.md\":\"B1EswtUu\",\"hillclimbing.md\":\"DHNast08\",\"index.md\":\"
|
|
19
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"DTKwE15Z\",\"evals.md\":\"DAgEc_hL\",\"guides_agent-to-agent.md\":\"Bpzgq2Pq\",\"guides_cloud-runtime.md\":\"gVzabdQL\",\"guides_github.md\":\"DOOCpqsW\",\"guides_human-in-the-loop.md\":\"DlUqsp1S\",\"guides_slack.md\":\"CCwqHvSV\",\"guides_webhooks.md\":\"B1EswtUu\",\"hillclimbing.md\":\"DHNast08\",\"index.md\":\"Cylk70gg\",\"quickstart.md\":\"BU6Iwi_9\",\"reference_agent-config.md\":\"DrW2JUM8\",\"reference_channels.md\":\"DdmiKgqf\",\"reference_cli.md\":\"Bv6pOxcF\",\"reference_connections.md\":\"zaEYCLHT\",\"reference_hooks.md\":\"DyLVfE1O\",\"reference_http-api.md\":\"Dx_nmDG6\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"Bd_CKtNS\",\"reference_schedules.md\":\"w_F2mXB6\",\"reference_sessions.md\":\"DdjWabnN\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"zWAMNfi1\",\"reference_tools.md\":\"CqgJroI0\",\"scaffolding-agents.md\":\"C3pTrmoE\",\"storage.md\":\"CVnInNiN\",\"troubleshooting.md\":\"DkovjS7h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"agentkit\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
20
20
|
|
|
21
21
|
</body>
|
|
22
22
|
</html>
|
package/dist/docs/ab.html
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.DF-Yx4OP.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/docs/assets/chunks/theme.
|
|
14
|
+
<link rel="modulepreload" href="/docs/assets/chunks/theme.DZVLTXOC.js">
|
|
15
15
|
<link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
|
|
16
16
|
<link rel="modulepreload" href="/docs/assets/ab.md.BMCZ6Hd7.lean.js">
|
|
17
17
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Save aggregate snapshots whenever GET /v1/abs runs</span></span>
|
|
82
82
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> persistSnapshots: </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">persistABSnapshotsToDir</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">".agent-serve/ab-snapshots"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">),</span></span>
|
|
83
83
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><table tabindex="0"><thead><tr><th>Option</th><th>Default</th><th>Meaning</th></tr></thead><tbody><tr><td><code>maxPlaygroundSessions</code></td><td><code>200</code></td><td>Max newest sessions folded into the playground / <code>GET /v1/abs</code> (not session logs or <code>persistSamples</code>)</td></tr><tr><td><code>persistSamples</code></td><td>unset</td><td>Durable sink for metric samples (<code>save(sample, ctx)</code>)</td></tr><tr><td><code>persistSnapshots</code></td><td>unset</td><td>Durable store for aggregate snapshots (<code>load</code> / <code>save</code> / optional <code>delete</code>)</td></tr><tr><td><code>retainSnapshots</code></td><td><code>20</code> when snapshots persist</td><td>Snapshot files kept after prune (<code>persistABSnapshotsToDir</code> honors this)</td></tr></tbody></table><p>Implement your own <code>{ save }</code> / <code>{ load, save, delete? }</code> for S3, a DB, or your metrics vendor. Without <code>persistSamples</code> / <code>persistSnapshots</code>, samples only go where each experiment's <code>onSample</code> sends them, and aggregates exist only as a live fold over session logs.</p><h2 id="keep-assignments-durable" tabindex="-1">Keep assignments durable <a class="header-anchor" href="#keep-assignments-durable" aria-label="Permalink to "Keep assignments durable""></a></h2><p>The append-only <code>events.ndjson</code> stream is the source of truth. Each <code>ab.assigned</code> event persists a variant key or null skip. Built-in metrics come from the turn and tool events that follow it.</p><p>After a server restart or a parked session resumes, the live collector replays the stream to rebuild cumulative counters. Replay does not call <code>onSample</code> (or <code>persistSamples</code>) for historical turns. Only a new completed or failed turn emits another sample.</p><p>The snapshot API also replays <code>derive</code> across the full stream, so custom totals match the current extractor. Changing a derive function can change historical snapshot totals. Treat metric definitions as versioned experiment code.</p><h2 id="keep-eval-traffic-separate" tabindex="-1">Keep eval traffic separate <a class="header-anchor" href="#keep-eval-traffic-separate" aria-label="Permalink to "Keep eval traffic separate""></a></h2><p>Sessions created by <code>agentkit eval</code> and the playground Evals runner use <code>purpose: "eval"</code>. They skip A/B enrollment entirely:</p><ul><li>No split function runs.</li><li>No <code>ab.assigned</code> event is recorded.</li><li>No <code>onSample</code> callback fires.</li><li>The session is omitted from <code>GET /v1/abs</code>.</li></ul><p>Ordinary chat, <code>agentkit run</code>, Slack, GitHub, and other channel sessions use the live purpose. You do not need <code>splitIf</code> to exclude eval traffic.</p><h2 id="know-the-boundaries" tabindex="-1">Know the boundaries <a class="header-anchor" href="#know-the-boundaries" aria-label="Permalink to "Know the boundaries""></a></h2><p><code>defineAB</code> provides sticky assignment, variant instructions, <code>session.abs</code> for tools, cumulative metrics, and local inspection. It does not provide:</p><ul><li>A test command, assertion API, or pass/fail result</li><li>Statistical significance calculations</li><li>An experiment rollout or lifecycle service</li><li>Per-variant model or runtime configuration</li><li>A built-in analytics warehouse (bring your own via <code>persistSamples</code> / <code>persistSnapshots</code> / <code>onSample</code>)</li></ul><p>Use <a href="./evals.html">evals</a> to protect known behavior. Configure <code>agent/ab.config.ts</code> (or <code>onSample</code>) when you need sample/snapshot exports beyond the session event log.</p><h2 id="what-s-next" tabindex="-1">What's next <a class="header-anchor" href="#what-s-next" aria-label="Permalink to "What's next""></a></h2><p>Continue with these pages:</p><ul><li><a href="./evals.html">Evals</a>: pass/fail regression checks on fixed inputs</li><li><a href="./hillclimbing.html">Hillclimbing</a>: improve an agent against fixed fixtures</li><li><a href="./reference/hooks.html">Hooks</a>: other event-stream consumers</li><li><a href="./reference/sessions.html">Sessions and streaming</a>: the <code>ab.assigned</code> event and durable log</li><li><a href="./reference/playground.html">Playground</a>: the A/Bs tab</li><li><a href="./reference/http-api.html">HTTP API</a>: <code>GET /v1/abs</code></li><li><a href="./../skills/ab/SKILL.html">Live A/B metrics skill</a>: have a coding agent wire an experiment</li></ul></div></div></main><footer class="VPDocFooter" data-v-53b9fda6 data-v-3958cc3f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-3958cc3f><span class="visually-hidden" id="doc-footer-aria-label" data-v-3958cc3f>Pager</span><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link prev" href="/docs/evals.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Previous page</span><span class="title" data-v-3958cc3f>Evals</span><!--]--></a></div><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link next" href="/docs/storage.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Next page</span><span class="title" data-v-3958cc3f>Storage</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|
84
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"DTKwE15Z\",\"evals.md\":\"DAgEc_hL\",\"guides_agent-to-agent.md\":\"Bpzgq2Pq\",\"guides_cloud-runtime.md\":\"gVzabdQL\",\"guides_github.md\":\"DOOCpqsW\",\"guides_human-in-the-loop.md\":\"DlUqsp1S\",\"guides_slack.md\":\"CCwqHvSV\",\"guides_webhooks.md\":\"B1EswtUu\",\"hillclimbing.md\":\"DHNast08\",\"index.md\":\"
|
|
84
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"DTKwE15Z\",\"evals.md\":\"DAgEc_hL\",\"guides_agent-to-agent.md\":\"Bpzgq2Pq\",\"guides_cloud-runtime.md\":\"gVzabdQL\",\"guides_github.md\":\"DOOCpqsW\",\"guides_human-in-the-loop.md\":\"DlUqsp1S\",\"guides_slack.md\":\"CCwqHvSV\",\"guides_webhooks.md\":\"B1EswtUu\",\"hillclimbing.md\":\"DHNast08\",\"index.md\":\"Cylk70gg\",\"quickstart.md\":\"BU6Iwi_9\",\"reference_agent-config.md\":\"DrW2JUM8\",\"reference_channels.md\":\"DdmiKgqf\",\"reference_cli.md\":\"Bv6pOxcF\",\"reference_connections.md\":\"zaEYCLHT\",\"reference_hooks.md\":\"DyLVfE1O\",\"reference_http-api.md\":\"Dx_nmDG6\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"Bd_CKtNS\",\"reference_schedules.md\":\"w_F2mXB6\",\"reference_sessions.md\":\"DdjWabnN\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"zWAMNfi1\",\"reference_tools.md\":\"CqgJroI0\",\"scaffolding-agents.md\":\"C3pTrmoE\",\"storage.md\":\"CVnInNiN\",\"troubleshooting.md\":\"DkovjS7h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"agentkit\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
85
85
|
|
|
86
86
|
</body>
|
|
87
87
|
</html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as p}from"./chunks/theme.
|
|
1
|
+
import{t as p}from"./chunks/theme.DZVLTXOC.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.CAZyNGu9.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
|