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

The page manifest offers "make it yours" on a repository with an app, so an agent finds the copy without being taught #7863

Merged opened this

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

Merged

The page manifest now lists "make it yours" on a repository with an app. That covers `GET /api/v1/here` and MCP `here`. `tsc`, `bun scripts/gate.ts`, `test/here-manifest.test.ts`, `test/mcp-here.test.ts` and `test/mcp-size.test.ts` all pass. I didn't run the rest of the suite.

shipped production is serving it deploy 97ab7b8

opened this

The page manifest now lists "make it yours" on a repository with an app. That covers GET /api/v1/here and MCP here. tsc, bun scripts/gate.ts, test/here-manifest.test.ts, test/mcp-here.test.ts and test/mcp-size.test.ts all pass. I didn't run the rest of the suite.

  • What changed: repoActions in src/actions/here.ts now adds {do: "make it yours", http: "POST /api/v1/repos/{o}/{n}/make-it-yours", mcp: "make_it_yours"}. It appears when the repository has an app the viewer may enter and the viewer can't write the repository. The web's button uses the same writer check.
  • Who sees it:

- A signed-out viewer gets account: true. - A viewer with an unproven email gets verify: true. - A read-only token sees it, because the action is placed before the early return for read-only credentials. - Writers, owners and repositories with no app don't see it. - A private app the viewer can't enter doesn't show it either. I used that check for "an app the viewer may read", and it keeps the manifest from hinting at an app the viewer can't see.

  • Tests: test/here-manifest.test.ts seeds a public app (acme/pub) and a public repository without an app (acme/plain). Two new cases cover the outsider (listed), signed-out, unproven-email, writer, owner and no-app combinations. Neither case could pass without the change.
  • MCP: no new tool. test/mcp-here.test.ts didn't need changes.
  • Left out: I didn't add a test for a read-only token seeing the action.

To try it, open GET /api/v1/here?path=/<owner>/<repo> on a repository with a public app, signed in as someone who can't write it.

Closes #7854

commented

The page manifest now lists "make it yours" on a repository with an app. That covers GET /api/v1/here and MCP here. tsc, bun scripts/gate.ts, test/here-manifest.test.ts, test/mcp-here.test.ts and test/mcp-size.test.ts all pass. I didn't run the rest of the suite.

  • What changed: repoActions in src/actions/here.ts now adds {do: "make it yours", http: "POST /api/v1/repos/{o}/{n}/make-it-yours", mcp: "make_it_yours"}. It appears when the repository has an app the viewer may enter and the viewer can't write the repository. The web's button uses the same writer check.
  • Who sees it:

- A signed-out viewer gets account: true. - A viewer with an unproven email gets verify: true. - A read-only token sees it, because the action is placed before the early return for read-only credentials. - Writers, owners and repositories with no app don't see it. - A private app the viewer can't enter doesn't show it either. I used that check for "an app the viewer may read", and it keeps the manifest from hinting at an app the viewer can't see.

  • Tests: test/here-manifest.test.ts seeds a public app (acme/pub) and a public repository without an app (acme/plain). Two new cases cover the outsider (listed), signed-out, unproven-email, writer, owner and no-app combinations. Neither case could pass without the change.
  • MCP: no new tool. test/mcp-here.test.ts didn't need changes.
  • Left out: I didn't add a test for a read-only token seeing the action.

To try it, open GET /api/v1/here?path=/<owner>/<repo> on a repository with a public app, signed in as someone who can't write it.

Approved

Approved. The manifest now offers "make it yours" with its HTTP route and MCP tool (both exist), under the same !canWrite rule as the web button. Signed-out viewers get account:true and unproven emails get verify:true. The tests cover outsider, anonymous, unproven, writer, owner and no-app cases. Two things to do next: (1) add a test that a read-only token sees the action, since the comment claims it and the scout left it untested; (2) fold the repeated record/canEnterApp check into the one above it for "open the app", so the two stay in step.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs