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
Check · Review · Land · Live done — Landed and live in production.
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
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:
repoActionsinsrc/actions/here.tsnow 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.tsseeds 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.tsdidn'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. 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.
The page manifest now lists "make it yours" on a repository with an app. That covers
GET /api/v1/hereand MCPhere.tsc,bun scripts/gate.ts,test/here-manifest.test.ts,test/mcp-here.test.tsandtest/mcp-size.test.tsall pass. I didn't run the rest of the suite.repoActionsinsrc/actions/here.tsnow 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.- A signed-out viewer gets
account: true. - A viewer with an unproven email getsverify: 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.test/here-manifest.test.tsseeds 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.test/mcp-here.test.tsdidn't need changes.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