@cursor/july 0.1.40 → 0.1.42
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 +13 -6
- package/dist/bin/agent-serve.js +28 -9
- package/dist/channels/slack/attachments.d.ts +82 -0
- package/dist/channels/slack/attachments.d.ts.map +1 -0
- package/dist/channels/slack/attachments.js +520 -0
- package/dist/channels/slack/cursor-account.d.ts +7 -1
- package/dist/channels/slack/cursor-account.d.ts.map +1 -1
- package/dist/channels/slack/cursor-account.js +2 -2
- package/dist/channels/slack/dispatch.d.ts +4 -3
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +84 -21
- package/dist/channels/slack/inbound.d.ts +6 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +48 -2
- package/dist/channels/slack/index.d.ts +1 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +1 -0
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +1 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +7 -4
- package/dist/channels/slack/types.d.ts +49 -1
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +6 -6
- package/dist/docs/assets/{ab.md.6cLOW7--.js → ab.md.hdxsvX5M.js} +2 -2
- package/dist/docs/assets/{app.DpGLSiym.js → app.C4-Gwi7g.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.txrcGU2B.js → building-with-agents.md.PeZaZA1P.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BlU3A8EB.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.B11XEMST.js → VPLocalSearchBox.DDoLm843.js} +1 -1
- package/dist/docs/assets/chunks/{theme.iTidHsAx.js → theme.SbjGIiM0.js} +2 -2
- package/dist/docs/assets/{deployment.md.CuK5SNjN.js → deployment.md.BHVjVqRa.js} +4 -4
- package/dist/docs/assets/{deployment.md.CuK5SNjN.lean.js → deployment.md.BHVjVqRa.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.BQXI3rXy.js → evals.md.qeoGgPw0.js} +3 -3
- package/dist/docs/assets/example-agents_index.md.xmJ87d_3.js +2 -0
- package/dist/docs/assets/{guides_webhooks.md.BERuBSJW.js → guides_webhooks.md.DB-r_er9.js} +47 -4
- package/dist/docs/assets/{guides_webhooks.md.BERuBSJW.lean.js → guides_webhooks.md.DB-r_er9.lean.js} +1 -1
- package/dist/docs/assets/index.md.BKpbkCa6.js +24 -0
- package/dist/docs/assets/{index.md.CmhptOmN.lean.js → index.md.BKpbkCa6.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.C_b6ESpD.js → quickstart.md.rIbfahJM.js} +4 -4
- package/dist/docs/assets/{reference_cli.md.Byvrg8eu.js → reference_cli.md.DqEqQpGn.js} +5 -5
- package/dist/docs/assets/{reference_cli.md.Byvrg8eu.lean.js → reference_cli.md.DqEqQpGn.lean.js} +1 -1
- package/dist/docs/assets/reference_hooks.md.B40QAG6m.js +14 -0
- package/dist/docs/assets/{reference_hooks.md.BGDw4VLm.lean.js → reference_hooks.md.B40QAG6m.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.mQDtIULc.js → storage.md.DcGSnIxX.js} +10 -4
- package/dist/docs/assets/{storage.md.mQDtIULc.lean.js → storage.md.DcGSnIxX.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.CkgwmVI0.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.B5RVX_tL.lean.js → troubleshooting.md.CkgwmVI0.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +5 -5
- package/dist/docs/concepts.html +3 -3
- package/dist/docs/deployment.html +6 -6
- package/dist/docs/evals.html +7 -7
- 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 +5 -5
- 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/slack.html +3 -3
- package/dist/docs/guides/webhooks.html +49 -6
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +7 -7
- package/dist/docs/quickstart.html +8 -8
- 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 +8 -8
- package/dist/docs/reference/connections.html +3 -3
- package/dist/docs/reference/hooks.html +9 -7
- 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 +14 -8
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/hooks.d.ts +3 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +3 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +22 -2
- package/dist/internal/cli-deploy.d.ts +6 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +14 -4
- package/dist/internal/cli-mcp.js +4 -4
- package/dist/internal/deploy-client.js +1 -1
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +35 -7
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +3 -1
- package/dist/internal/durable-session-store.d.ts +48 -0
- package/dist/internal/durable-session-store.d.ts.map +1 -0
- package/dist/internal/durable-session-store.js +86 -0
- package/dist/internal/hosting.d.ts +1 -1
- package/dist/internal/hosting.js +2 -2
- package/dist/internal/init-project.d.ts +34 -0
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +121 -2
- package/dist/internal/ledger-serving.d.ts +101 -0
- package/dist/internal/ledger-serving.d.ts.map +1 -0
- package/dist/internal/ledger-serving.js +174 -0
- package/dist/internal/listen-port.d.ts +22 -0
- package/dist/internal/listen-port.d.ts.map +1 -0
- package/dist/internal/listen-port.js +77 -0
- package/dist/internal/playground/static.d.ts +21 -4
- package/dist/internal/playground/static.d.ts.map +1 -1
- package/dist/internal/playground/static.js +82 -18
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +10 -1
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +61 -47
- package/dist/internal/session-engine.d.ts +57 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +118 -28
- package/dist/internal/slack-provision-client.js +1 -1
- package/dist/internal/workspace.d.ts +6 -2
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +10 -2
- package/dist/kv/memory-kv.d.ts +23 -0
- package/dist/kv/memory-kv.d.ts.map +1 -0
- package/dist/kv/memory-kv.js +103 -0
- package/dist/kv.d.ts +22 -0
- package/dist/kv.d.ts.map +1 -0
- package/dist/kv.js +20 -0
- package/dist/ledger/session-ledger.d.ts +204 -0
- package/dist/ledger/session-ledger.d.ts.map +1 -0
- package/dist/ledger/session-ledger.js +382 -0
- package/dist/ledger.d.ts +11 -0
- package/dist/ledger.d.ts.map +1 -0
- package/dist/ledger.js +9 -0
- package/dist/playground/assets/index-B3HBneZZ.js +85 -0
- package/dist/playground/assets/index-Bqk9nplh.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +25 -3
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +50 -2
- package/dist/storage-backends/file-kv.d.ts +5 -2
- package/dist/storage-backends/file-kv.d.ts.map +1 -1
- package/dist/storage-backends/file-kv.js +107 -7
- package/dist/storage.d.ts +60 -5
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +28 -4
- package/dist/types.d.ts +132 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +14 -0
- package/docs/README.md +10 -7
- package/docs/ab.md +2 -2
- package/docs/building-with-agents.md +1 -1
- package/docs/deployment.md +34 -11
- package/docs/evals.md +3 -3
- package/docs/example-agents/index.md +1 -1
- package/docs/guides/webhooks.md +87 -0
- package/docs/quickstart.md +7 -8
- package/docs/reference/cli.md +15 -6
- package/docs/reference/hooks.md +12 -3
- package/docs/storage.md +67 -7
- package/docs/troubleshooting.md +10 -2
- package/package.json +20 -7
- package/skills/create-agent/SKILL.md +1 -1
- package/skills/debug/SKILL.md +4 -0
- package/src/bin/agent-serve.ts +27 -11
- package/src/channels/slack/attachments.ts +635 -0
- package/src/channels/slack/cursor-account.ts +8 -0
- package/src/channels/slack/dispatch.ts +121 -6
- package/src/channels/slack/inbound.ts +60 -0
- package/src/channels/slack/index.ts +1 -0
- package/src/channels/slack/manifest.ts +1 -0
- package/src/channels/slack/slack-channel.ts +7 -0
- package/src/channels/slack/types.ts +47 -1
- package/src/hooks.ts +3 -1
- package/src/index.ts +9 -0
- package/src/internal/cli-ax.ts +25 -1
- package/src/internal/cli-deploy.ts +22 -4
- package/src/internal/cli-mcp.ts +4 -4
- package/src/internal/deploy-client.ts +1 -1
- package/src/internal/discovery.ts +42 -5
- package/src/internal/distribution.ts +3 -1
- package/src/internal/durable-session-store.ts +95 -0
- package/src/internal/hosting.ts +2 -2
- package/src/internal/init-project.ts +151 -2
- package/src/internal/ledger-serving.ts +240 -0
- package/src/internal/listen-port.ts +85 -0
- package/src/internal/playground/static.ts +111 -20
- package/src/internal/sdk-runner.ts +11 -1
- package/src/internal/server.ts +68 -61
- package/src/internal/session-engine.ts +193 -16
- package/src/internal/slack-provision-client.ts +1 -1
- package/src/internal/workspace.ts +14 -3
- package/src/kv/memory-kv.ts +99 -0
- package/src/kv.ts +27 -0
- package/src/ledger/session-ledger.ts +535 -0
- package/src/ledger.ts +29 -0
- package/src/storage-backends/cursor-hosted.ts +108 -3
- package/src/storage-backends/file-kv.ts +128 -12
- package/src/storage.ts +90 -6
- package/src/types.ts +139 -7
- package/dist/channels/slack/post-update-delivery.d.ts +0 -85
- package/dist/channels/slack/post-update-delivery.d.ts.map +0 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.D82_RVtF.js +0 -1
- package/dist/docs/assets/example-agents_index.md.DgGBwckv.js +0 -2
- package/dist/docs/assets/index.md.CmhptOmN.js +0 -24
- package/dist/docs/assets/reference_hooks.md.BGDw4VLm.js +0 -12
- package/dist/docs/assets/troubleshooting.md.B5RVX_tL.js +0 -1
- package/dist/internal/json-dir-store.d.ts +0 -32
- package/dist/internal/json-dir-store.d.ts.map +0 -1
- package/dist/internal/persistence-coordinator.d.ts +0 -127
- package/dist/internal/persistence-coordinator.d.ts.map +0 -1
- package/dist/multi-tenant.d.ts +0 -80
- package/dist/multi-tenant.d.ts.map +0 -1
- package/dist/multi-tenant.js +0 -69
- package/dist/persistence.d.ts +0 -184
- package/dist/persistence.d.ts.map +0 -1
- package/dist/playground/assets/index-BRhBbnd4.css +0 -1
- package/dist/playground/assets/index-Bc1oFgFG.js +0 -85
- package/dist/storage-backends/postgres-kv.d.ts +0 -82
- package/dist/storage-backends/postgres-kv.d.ts.map +0 -1
- package/dist/storage-backends/postgres-kv.js +0 -185
- package/src/storage-backends/postgres-kv.ts +0 -253
- /package/dist/docs/assets/{ab.md.6cLOW7--.lean.js → ab.md.hdxsvX5M.lean.js} +0 -0
- /package/dist/docs/assets/{building-with-agents.md.txrcGU2B.lean.js → building-with-agents.md.PeZaZA1P.lean.js} +0 -0
- /package/dist/docs/assets/{evals.md.BQXI3rXy.lean.js → evals.md.qeoGgPw0.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_index.md.DgGBwckv.lean.js → example-agents_index.md.xmJ87d_3.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.C_b6ESpD.lean.js → quickstart.md.rIbfahJM.lean.js} +0 -0
package/AGENTS.md
CHANGED
|
@@ -20,9 +20,8 @@ built-in read/grep fail and sends models into retry loops.
|
|
|
20
20
|
|
|
21
21
|
Before scaffolding, wiring channels, writing evals, or deploying, **read the
|
|
22
22
|
matching skill under `skills/<task>/SKILL.md`** (paths
|
|
23
|
-
below are relative to this package).
|
|
24
|
-
|
|
25
|
-
`.cursor/skills/` stubs — open the package skill directly.
|
|
23
|
+
below are relative to this package). Those files ship with `@cursor/july`.
|
|
24
|
+
Open them directly — there are no `.cursor/skills/` stubs for authoring.
|
|
26
25
|
|
|
27
26
|
| Skill | Read it when |
|
|
28
27
|
| --- | --- |
|
|
@@ -35,6 +34,13 @@ truth; they ship with `@cursor/july`. There are no
|
|
|
35
34
|
| `skills/setup-slack/SKILL.md` | Slack wiring and Slack tool approvals |
|
|
36
35
|
| `skills/mcp-auth/SKILL.md` | Host MCP OAuth (`mcp oauth`, `--store`, `hostOnly`) |
|
|
37
36
|
| `skills/debug/SKILL.md` | Something misbehaving locally (symptom → cause) |
|
|
37
|
+
| `skills/operate/SKILL.md` | Dogfood host, corp ECS, hosted-platform map |
|
|
38
|
+
|
|
39
|
+
Hosted-platform debug (stopped / slow start / health-fail, Datadog
|
|
40
|
+
`cursor.agent_serve.*`) is the monorepo skill
|
|
41
|
+
`.cursor/skills/debugging/debug-agent-serve-deployment/SKILL.md` — it does
|
|
42
|
+
not ship with `@cursor/july`. Dual-pod alerts:
|
|
43
|
+
`docs/agent-serve/orphan-engines-runbook.md`.
|
|
38
44
|
|
|
39
45
|
## Recommended loop
|
|
40
46
|
|
|
@@ -139,10 +145,11 @@ export default defineEvalConfig({
|
|
|
139
145
|
`init <dir>` scaffolds (skipping existing files), runs `npm install`,
|
|
140
146
|
offers to install/update package skills into
|
|
141
147
|
`~/.cursor/skills/agentkit/` (TTY only; always overwrites with the
|
|
142
|
-
package copy),
|
|
143
|
-
|
|
148
|
+
package copy), links `agent-sdk` onto the npm global bin (so bare
|
|
149
|
+
`agent-sdk` works on PATH), runs `login` and waits when unsigned, then
|
|
150
|
+
prints `cd` (when needed) and `agent-sdk dev`. `--json` still installs but never blocks
|
|
144
151
|
on login or skill install; it prints
|
|
145
|
-
`{ ok, directory, created, skipped, installed, installError, next }`.
|
|
152
|
+
`{ ok, directory, created, skipped, installed, installError, cliOnPath, cliLinkError, next }`.
|
|
146
153
|
- `chat --json --message "..."` talks to a running server and prints a trajectory.
|
|
147
154
|
|
|
148
155
|
## Agent-to-agent (MCP endpoint + peer MCP connections)
|
package/dist/bin/agent-serve.js
CHANGED
|
@@ -106,8 +106,8 @@ Usage:
|
|
|
106
106
|
${CLI} stop <slug> [--team <id>] [--json] [--no-wait]
|
|
107
107
|
${CLI} rotate-token <slug> [--team <id>]
|
|
108
108
|
${CLI} rotate-pod-credential <slug> [--team <id>]
|
|
109
|
-
${CLI} secrets set <slug> NAME
|
|
110
|
-
[--team <id>] [--json]
|
|
109
|
+
${CLI} secrets set <slug> NAME... | list <slug> | unset <slug> NAME
|
|
110
|
+
[--team <id>] [--json] [--from-argv]
|
|
111
111
|
${CLI} slack <subcommand> …
|
|
112
112
|
${CLI} github <subcommand> …
|
|
113
113
|
|
|
@@ -227,9 +227,9 @@ Commands:
|
|
|
227
227
|
rotate-pod-credential
|
|
228
228
|
Rotate a deployment's pod credential (prints the masked key);
|
|
229
229
|
the running pod keeps the old one until the next deploy.
|
|
230
|
-
secrets Manage deployment secrets: set (
|
|
231
|
-
|
|
232
|
-
|
|
230
|
+
secrets Manage deployment secrets: set (names only by default: hidden
|
|
231
|
+
prompt or piped stdin; NAME=VALUE requires --from-argv), list
|
|
232
|
+
(names + createdAt; never values), unset.
|
|
233
233
|
slack Slack channel pack: create/destroy/icon (Cursor Add to Slack
|
|
234
234
|
provisioning), init, manifests, doctor (see slack help).
|
|
235
235
|
github GitHub webhook pack: forward live deliveries, events, doctor
|
|
@@ -246,7 +246,9 @@ Agent loop:
|
|
|
246
246
|
Options:
|
|
247
247
|
--version, -V Print the installed version and exit.
|
|
248
248
|
--dir Project root (defaults to the current directory).
|
|
249
|
-
--port Port to listen on (default 3000).
|
|
249
|
+
--port Port to listen on (default 3000). When the default is
|
|
250
|
+
taken, serve tries the next free port and prints a notice.
|
|
251
|
+
An explicit --port fails with a next-port hint instead.
|
|
250
252
|
--host Host to bind (default 127.0.0.1).
|
|
251
253
|
--mode serve: "multi" (default, slugged /<dir>/v1/*) or "single"
|
|
252
254
|
(unslugged /v1/*). Multi also exposes host /v1/health for
|
|
@@ -372,6 +374,9 @@ Options:
|
|
|
372
374
|
--allow-domain deploy: egress domain the engine pod may reach
|
|
373
375
|
(repeatable; unioned with hosting.egressDomains from the
|
|
374
376
|
agent manifest). Repo-backed deploys only.
|
|
377
|
+
--from-argv secrets set: allow NAME=VALUE on argv (leaks into shell
|
|
378
|
+
history and agent-captured terminals). Default is names
|
|
379
|
+
only with a hidden prompt or piped stdin.
|
|
375
380
|
--org github forward: organization login (org-level hooks).
|
|
376
381
|
--channel github: select one channel id when several are declared.
|
|
377
382
|
--secret github forward: webhook signing secret (defaults to
|
|
@@ -501,6 +506,7 @@ function main(argv) {
|
|
|
501
506
|
all: { type: "boolean", default: false },
|
|
502
507
|
"cursor-events-repo": { type: "string", multiple: true },
|
|
503
508
|
"allow-domain": { type: "string", multiple: true },
|
|
509
|
+
"from-argv": { type: "boolean", default: false },
|
|
504
510
|
strict: { type: "boolean", default: false },
|
|
505
511
|
junit: { type: "string" },
|
|
506
512
|
artifacts: { type: "string" },
|
|
@@ -967,8 +973,11 @@ function main(argv) {
|
|
|
967
973
|
return 1;
|
|
968
974
|
}
|
|
969
975
|
const serveDir = serveDirResult;
|
|
970
|
-
const port = values.port === undefined
|
|
971
|
-
|
|
976
|
+
const port = values.port === undefined
|
|
977
|
+
? undefined
|
|
978
|
+
: Number.parseInt(values.port, 10);
|
|
979
|
+
if (port !== undefined &&
|
|
980
|
+
(Number.isNaN(port) || port < 0 || port > 65535)) {
|
|
972
981
|
process.stderr.write(`invalid --port: ${values.port}\n`);
|
|
973
982
|
return 1;
|
|
974
983
|
}
|
|
@@ -1096,7 +1105,13 @@ function main(argv) {
|
|
|
1096
1105
|
});
|
|
1097
1106
|
}
|
|
1098
1107
|
function deployOptionsFromValues(values) {
|
|
1099
|
-
return
|
|
1108
|
+
return {
|
|
1109
|
+
team: values.team,
|
|
1110
|
+
json: values.json === true,
|
|
1111
|
+
noWait: values["no-wait"] === true,
|
|
1112
|
+
apiKey: values["api-key"],
|
|
1113
|
+
fromArgv: values["from-argv"] === true ? true : undefined,
|
|
1114
|
+
};
|
|
1100
1115
|
}
|
|
1101
1116
|
function axFromOptions(partial) {
|
|
1102
1117
|
return {
|
|
@@ -1247,6 +1262,10 @@ function printServeBanner(handle, opts) {
|
|
|
1247
1262
|
if (playgroundUrl !== undefined) {
|
|
1248
1263
|
process.stdout.write(` playground ${c.cyan(playgroundUrl)}\n`);
|
|
1249
1264
|
}
|
|
1265
|
+
// `/` is only mounted when the playground host home is enabled.
|
|
1266
|
+
if (!opts.noPlayground) {
|
|
1267
|
+
process.stdout.write(` home ${c.cyan(handle.url + "/")}\n`);
|
|
1268
|
+
}
|
|
1250
1269
|
// Dev is playground-first (Vite proxies the API). Keep API/route detail for
|
|
1251
1270
|
// plain `serve`, where operators often curl the HTTP surface directly.
|
|
1252
1271
|
if (!opts.dev) {
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Download and classify Slack file uploads for agent turns.
|
|
3
|
+
*
|
|
4
|
+
* Images become vision inputs (SDK `images`). Documents and videos land under
|
|
5
|
+
* `slack-attachments/` in the session workspace so the model can Read them.
|
|
6
|
+
*/
|
|
7
|
+
import type { SlackLog } from "./log.js";
|
|
8
|
+
import type { SlackBotToken, SlackMessageFile } from "./types.js";
|
|
9
|
+
export declare const SLACK_ATTACHMENTS_DIR = "slack-attachments";
|
|
10
|
+
export declare const SLACK_ATTACHMENT_ONLY_PROMPT = "The user shared Slack attachment(s) with no message text. Review the attached files.";
|
|
11
|
+
/** Keep path-safe basename pieces (mirrors cloud-agent sanitizeFilename). */
|
|
12
|
+
export declare function sanitizeSlackFilename(name: string): string;
|
|
13
|
+
export declare function isSupportedImageFormat(mimeType: string): boolean;
|
|
14
|
+
export declare function isSupportedDocumentFormat(args: {
|
|
15
|
+
mimeType: string;
|
|
16
|
+
filename?: string;
|
|
17
|
+
}): boolean;
|
|
18
|
+
export declare function isSupportedVideoFormat(mimeType: string): boolean;
|
|
19
|
+
/** Raw Slack file object (message `files[]` or forwarded share). */
|
|
20
|
+
export interface RawSlackFile {
|
|
21
|
+
id?: unknown;
|
|
22
|
+
mimetype?: unknown;
|
|
23
|
+
filetype?: unknown;
|
|
24
|
+
mode?: unknown;
|
|
25
|
+
name?: unknown;
|
|
26
|
+
title?: unknown;
|
|
27
|
+
size?: unknown;
|
|
28
|
+
url_private_download?: unknown;
|
|
29
|
+
dataBase64?: unknown;
|
|
30
|
+
}
|
|
31
|
+
export type SlackFileClassification = {
|
|
32
|
+
kind: "image";
|
|
33
|
+
mimeType: string;
|
|
34
|
+
} | {
|
|
35
|
+
kind: "video";
|
|
36
|
+
mimeType: string;
|
|
37
|
+
} | {
|
|
38
|
+
kind: "document";
|
|
39
|
+
mimeType: string;
|
|
40
|
+
isTextLike: boolean;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Classify a Slack file as image / document / video. Tolerates empty
|
|
44
|
+
* `mimetype` on snippets (Slack fills it asynchronously).
|
|
45
|
+
*/
|
|
46
|
+
export declare function classifySlackFile(file: RawSlackFile): SlackFileClassification | undefined;
|
|
47
|
+
/** Top-level uploads plus files nested in forwarded `is_share` attachments. */
|
|
48
|
+
export declare function collectSlackMessageFiles(message: unknown): RawSlackFile[];
|
|
49
|
+
export declare function parseSlackFileRefs(message: unknown): SlackMessageFile[] | undefined;
|
|
50
|
+
export interface SlackTurnImage {
|
|
51
|
+
data: string;
|
|
52
|
+
mimeType: string;
|
|
53
|
+
}
|
|
54
|
+
/** Relative path → utf8 or base64-blob workspace entry. */
|
|
55
|
+
export type SlackWorkspaceBlob = string | {
|
|
56
|
+
encoding: "base64";
|
|
57
|
+
data: string;
|
|
58
|
+
mimeType?: string;
|
|
59
|
+
};
|
|
60
|
+
export interface PreparedSlackAttachments {
|
|
61
|
+
images: SlackTurnImage[];
|
|
62
|
+
workspaceFiles: Record<string, SlackWorkspaceBlob>;
|
|
63
|
+
/** Prompt markers like `[Image 1: shot.png]`. */
|
|
64
|
+
annotations: string[];
|
|
65
|
+
}
|
|
66
|
+
export interface PrepareSlackAttachmentsOptions {
|
|
67
|
+
botToken?: SlackBotToken;
|
|
68
|
+
files: readonly SlackMessageFile[];
|
|
69
|
+
maxFiles?: number;
|
|
70
|
+
maxFileBytes?: number;
|
|
71
|
+
maxTotalBytes?: number;
|
|
72
|
+
downloadTimeoutMs?: number;
|
|
73
|
+
log?: SlackLog;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Download (or use pre-attached) Slack files and split them into vision
|
|
77
|
+
* images + workspace blobs for the turn.
|
|
78
|
+
*/
|
|
79
|
+
export declare function prepareSlackAttachments(options: PrepareSlackAttachmentsOptions): Promise<PreparedSlackAttachments>;
|
|
80
|
+
/** Merge attachment annotations into the user prompt. */
|
|
81
|
+
export declare function appendSlackAttachmentAnnotations(prompt: string, annotations: readonly string[]): string;
|
|
82
|
+
//# sourceMappingURL=attachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/attachments.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElE,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,yFAC+C,CAAC;AA8FzF,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQhE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CA2EV;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC;AAWhE;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,GACjB,uBAAuB,GAAG,SAAS,CA8BrC;AAOD,+EAA+E;AAC/E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAmBzE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GACf,gBAAgB,EAAE,GAAG,SAAS,CAoBhC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACnD,iDAAiD;IACjD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AA+HD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAoInC;AAED,yDAAyD;AACzD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,MAAM,CAcR"}
|