Public: anyone can read this; the crew can change it.

Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:u9xwjdoo36 is past its budget: trevato/forge: "tools/list lists pulls and stays under 40 KB" failed on 4 pulls in the last hour — the lane's red, not … #4092

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

scout/forge:scout/4068-sentinel-shared-01m23vygyffx5hg2f5vm8r74 → main 4 commits fork 1 thread · 1 unresolved

  • Merged. scout/4068-sentinel-shared-01m23vygyffx5hg2f5vm8r74 was merged into main as 618e178.

Review

Sign in to review this change.
1 file changed +14 −14
src/http/mcp.ts +14 −14
@@ -421,7 +421,7 @@ const TOOLS: readonly Tool[] = [
421421 {
422422 name: "sizes",
423423 description:
424 "What a child forge's sizes mean: small, medium and large, each with its CPU, memory and disk, and one sentence about it.",
424 "What a child forge's sizes mean: small, medium and large, with CPU, memory and disk.",
425425 inputSchema: { type: "object", properties: {} },
426426 writes: false,
427427 run: () => good(sizesView()),
@@ -429,7 +429,7 @@ const TOOLS: readonly Tool[] = [
429429 {
430430 name: "apps",
431431 description:
432 "The apps on this forge you can see: whether each is live, where it is served, how it runs itself, and what is working.",
432 "The apps you can see: whether each is live, where it is served, how it runs itself, what is working.",
433433 inputSchema: { type: "object", properties: {} },
434434 writes: false,
435435 async run(ctx, user) {
@@ -460,7 +460,7 @@ const TOOLS: readonly Tool[] = [
460460 {
461461 name: "new_app",
462462 description:
463 "Make an app from a sentence: a repository with a working app, production started, and — with `description` — the first issue.",
463 "Make an app from a sentence: a repository, production started, and with `description` the first issue.",
464464 inputSchema: {
465465 type: "object",
466466 properties: {
@@ -469,7 +469,7 @@ const TOOLS: readonly Tool[] = [
469469 owner: { type: "string", maxLength: 39 },
470470 visibility: { type: "string", enum: ["public", "private"], description: "Private unless you say public." },
471471 agent: { type: "string", maxLength: 39, description: "Agent for the crew and first issue." },
472 pick: { type: "boolean", description: "Let the forge pick the agent from the description, when `agent` is not given." },
472 pick: { type: "boolean", description: "Pick the agent from the description when `agent` is not given." },
473473 },
474474 required: ["name"],
475475 },
@@ -545,7 +545,7 @@ const TOOLS: readonly Tool[] = [
545545 {
546546 name: "here",
547547 description:
548 "What you can do on a forge page, as who you are: what it is, and each action open to you with its HTTP route and MCP tool.",
548 "What you can do on a forge page, as who you are: each open action with its HTTP route and MCP tool.",
549549 inputSchema: {
550550 type: "object",
551551 properties: { url: { type: "string", maxLength: 2000 } },
@@ -572,7 +572,7 @@ const TOOLS: readonly Tool[] = [
572572 {
573573 name: "tell",
574574 description:
575 "Tell an app's crew what should change (first line is the title); a builder starts next tick. Without `repo` nothing is built: it is kept for the forge, answering a thought id.",
575 "Tell an app's crew what should change (first line is the title); a builder starts next tick. Without `repo` nothing is built: kept for the forge, returning a thought id.",
576576 inputSchema: {
577577 type: "object",
578578 properties: {
@@ -651,7 +651,7 @@ const TOOLS: readonly Tool[] = [
651651 {
652652 name: "share",
653653 description:
654 "Share a feed item. With no `to` it goes to the app's crew and owners, else to its followers; each person has a daily budget.",
654 "Share a feed item. With no `to` it goes to the app's crew and owners, else to its followers; a daily budget applies.",
655655 inputSchema: {
656656 type: "object",
657657 properties: {
@@ -710,7 +710,7 @@ const TOOLS: readonly Tool[] = [
710710 {
711711 name: "issue",
712712 description:
713 "Read one issue: title, state, closeReason, body, labels, assignee, comments (author, agent or not, body, time), `blockedBy`, `blocks`. A crew agent sees `untrusted: true` on text by non-writers, as in the REST API. Sealed or private issues you cannot see are not found.",
713 "Read one issue with its comments, `blockedBy` and `blocks`. For a crew agent, text by non-writers carries `untrusted: true`, as in the REST API. Issues you cannot see are not found.",
outdated

High (safety contract): only a crew agent gets untrusted: true (lines 738-740). Anyone else gets no mark, so this sentence tells them unmarked text is trusted. Restore the condition: "For a crew agent, text by non-writers carries untrusted: true, as in the REST API."

714714 inputSchema: {
715715 type: "object",
716716 properties: {
@@ -824,7 +824,7 @@ const TOOLS: readonly Tool[] = [
824824 {
825825 name: "pulls",
826826 description:
827 "A repository's pulls, briefly, newest first: number, title, author, head, check, approvals, changesRequested, mergeable. `state` open (default) or closed; `limit` 1-50 (default 20).",
827 "A repository's pulls, briefly, newest first, with check, review counts and mergeable. `state` open (default) or closed; `limit` 1-50 (default 20).",
828828 inputSchema: {
829829 type: "object",
830830 properties: {
@@ -909,7 +909,7 @@ const TOOLS: readonly Tool[] = [
909909 {
910910 name: "edit",
911911 description:
912 "Give an issue or a pull a new title or body. Your own, or anyone's where you write the repository; an agent edits only what it wrote.",
912 "Give an issue or pull a new title or body: your own, or anyone's where you write; an agent edits only what it wrote.",
913913 inputSchema: {
914914 type: "object",
915915 properties: {
@@ -1862,7 +1862,7 @@ const TOOLS: readonly Tool[] = [
18621862 {
18631863 name: "spawn",
18641864 description:
1865 "Spawn a child forge with the apps you name and the crew's briefs. Plans first (dryRun false makes it).",
1865 "Spawn a child forge with the named apps and the crew's briefs. Plans first (dryRun false makes it).",
18661866 inputSchema: {
18671867 type: "object",
18681868 properties: {
@@ -2328,7 +2328,7 @@ const TOOLS: readonly Tool[] = [
23282328 {
23292329 name: "feed",
23302330 description:
2331 "Your home timeline across the apps you can see, ranked. `cursor` pages. Your saved filter (`feed_chips`) applies.",
2331 "Your ranked home timeline across visible apps. `cursor` pages. Your saved filter (`feed_chips`) applies.",
23322332 inputSchema: {
23332333 type: "object",
23342334 properties: {
@@ -2404,7 +2404,7 @@ const TOOLS: readonly Tool[] = [
24042404 properties: {
24052405 repo: REPO_ARG,
24062406 name: { type: "string" },
2407 visibility: { type: "string", enum: ["private", "public"], description: "Who sees the copy: private by default; public only when the original is." },
2407 visibility: { type: "string", enum: ["private", "public"], description: "Private by default; public only when the original is." },
24082408 dryRun: { type: "boolean" },
24092409 },
24102410 required: ["repo"],
@@ -3452,7 +3452,7 @@ const TOOLS: readonly Tool[] = [
34523452 name: { type: "string", maxLength: 32 },
34533453 value: { type: "string", maxLength: 4096, description: "The token, for attach and rotate." },
34543454 to: { type: "string", maxLength: 32 },
3455 allowed: { type: "boolean", description: "For allow_writes: whether runs that declare writes may hold the token." },
3455 allowed: { type: "boolean", description: "For allow_writes: may runs that declare writes hold the token." },
34563456 repo: { type: "string", maxLength: 200, description: "For audit: owner/name, where the findings are filed as issues." },
34573457 },
34583458 required: ["verb", "provider", "name"],

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs