Skip to content

P7: Chat into T3 Code from the recorded entry — GET /api/entry, POST /api/chat/pair with the resident's pairing call, the sidebar Chat entry and the Recovery page's T3 Code link - #80

Merged
immakermatty merged 4 commits into
mainfrom
claude/DEV-6628-chat-entry
Sep 28, 2026
Merged

immakermatty merged 4 commits into
mainfrom
claude/DEV-6628-chat-entry

Conversation

@immakermatty

Copy link
Copy Markdown
Contributor

Why

Slice P7 of the Launchpad parity program (#65 B8; root decision DEV-6616 "Launchpad Chat → T3"): the resident Launchpad's Chat entry into T3 Code, done in the Platform from the recorded handover entry — never from a hostname convention.

What changes

  • Sidebar Chat (first item, T3 pattern) on a hosted Machine with a recorded entry; absent on a workstation (the resident's behaviour). A plain click does what the resident does (R:launchpad/src/t3-chat-lib.mjs:56-90): POST /api/chat/pair mints a one-time pairing token with T3's own CLI (t3 auth pairing create --base-dir ~/.t3 --ttl 60s --label launchpad-chat --json, t3 from the Launchpad's PATH) and opens <t3codeOrigin>/pair#token=…; the token is never logged, never in an error, never in a query. Without a launcher or on a failed call (409 t3-launcher-missing / t3-pairing-failed) the page follows the plain t3codeOrigin, where an unpaired browser is asked to pair; a modified click opens the plain origin in a new tab.
  • GET /api/entry: {launchpadOrigin, t3codeOrigin, moduleOriginTemplate} or null, read-only, behind the existing admission; also answered in Recovery mode (the pairing route there keeps the Recovery refusal).
  • Recovery page, hosted with a prompt: an "Open T3 Code" button next to "Copy the prompt" (plain link, new tab).
  • No thread creation and no context passing (the resident creates none); no module-page link (the resident had none); no manual change (the resident's manual never mentioned Chat); lazurio chat link (C.5 item 10) is not in this slice.
  • Tests: the entry route and the pair link from the recorded origin; a fake launcher with its exact arguments and the missing/failed/malformed cases with the token kept out of every answer; the workstation case; Recovery-mode route and link; a scan that no source under src/launchpad builds a hostname from labels. Docs: launchpad-development.md "Chat entry", hosted-entry.md, recovery.md, machine-handover.md.

Verified

Author of the slice: bun run check 919 pass; the page driven in headless Chromium with stubbed hosted answers (absent on a workstation; correct href on home, Settings, Recovery; the click lands on the pair URL, and on the plain origin when pairing is refused). Thread owner's bun run check on the merged head: exit 0; lint and the chat/recovery-page tests on 97ba9e8 (merges main after #75).

What only a real hosted Machine can prove

That t3 is on the Launchpad's PATH (Machines DEV-6624 adds ~/.local/bin/t3; until then Chat falls back to the plain origin); that the fork's t3 auth pairing create --json still returns credential; that /pair#token= pairs through the real gateway; that a browser already paired opens straight through the fallback.

🤖 Generated with Claude Code

immakermatty and others added 4 commits September 28, 2026 19:24
…/api/chat/pair with the resident's pairing call, the sidebar Chat entry and the Recovery page's T3 Code link

The resident's Chat (R:launchpad/src/t3-chat-lib.mjs, public/app.js:2257-2281)
kept: T3's own `auth pairing create --base-dir ~/.t3 --ttl 60s --label
launchpad-chat --json`, answered as `<t3codeOrigin>/pair#token=…` and
followed in the same tab; no thread, no context. The origin is the recorded
entry's t3codeOrigin, the program the launcher `t3` on the Launchpad's PATH
(Machines DEV-6624); without it, or when the call fails, the page follows the
plain origin. GET /api/entry answers the entry's public parts read-only,
also in Recovery mode, whose page shows "Open T3 Code" next to the prompt.
Absent on a workstation. A scan keeps every Launchpad source from building
an origin or hostname from labels.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… hosted entry, the Recovery page's link and /api/entry in Recovery mode

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@immakermatty — Exact-head QA for 97ba9e8: APPROVED. The recorded entry supplies the T3 origin; no Launchpad hostname composition. The hosted same-origin POST is admitted by the gateway, runs the PATH-resolved t3 auth pairing create --base-dir ~/.t3 --ttl 60s --label launchpad-chat --json call, and returns the token only in the /pair fragment. A disposable fake launcher with a marker credential in stdout/stderr confirmed no console or failure-body marker and an empty URL query. Workstation returns 404 and Recovery mode refuses pairing while GET /api/entry remains admitted. Resident t3-chat-lib.mjs at c9b57da8 and Machines t3 base-dir at 7b2bcaa were compared. Local lint, typecheck, 935 tests (4 platform skips), public guard, proof build/smoke pass; both required ubuntu-24.04 and macos-14 checks succeeded on this exact SHA. No unresolved review threads. This is a review only; do not merge as part of this request.

@immakermatty
immakermatty merged commit 8023fa5 into main Sep 28, 2026
3 checks passed
@immakermatty
immakermatty deleted the claude/DEV-6628-chat-entry branch September 28, 2026 19:01
annavesela added a commit that referenced this pull request Oct 12, 2026
Anna's rule of 2026-10-11/12 (plan DEV-6658, brand voice in
design-system-lazurio content/brand/hlas/hlas.md, PRs #78 and #80) covers
Lazurio's agents too: what an agent says to a person uses vy. Rules written
for agents and the prompts a person hands to an agent keep ty.

- Folder manual handoff block: "Připravil jsem vám pull request",
  "Zkontrolujte si to v aplikaci", "Mám změny Publikovat vaším jménem?",
  the same text the root and Organization AGENTS.md now carry.
- Generated AGENTS.md: a new rule after the Environment wording,
  formalAddress, says agents address people formally and agent rules keep ty.
- The Bitwarden tool's purpose, which the Launchpad also shows the person,
  speaks about agents instead of to them.
- lazurio browser: the "tab not opened" error matches the other errors
  converted before.
- Template revision base-instructions-44 with its pinned digest; the
  snapshots differ only in the revision header and the lines above.
  F28 records the addendum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
annavesela added a commit that referenced this pull request Oct 12, 2026
Anna's rule of 2026-10-11/12 (plan DEV-6658, brand voice in
design-system-lazurio content/brand/hlas/hlas.md, PRs #78 and #80) covers
Lazurio's agents too: what an agent says to a person uses vy. Rules written
for agents and the prompts a person hands to an agent keep ty.

- Folder manual handoff block: "Připravil jsem vám pull request",
  "Zkontrolujte si to v aplikaci", "Mám změny Publikovat vaším jménem?",
  the same text the root and Organization AGENTS.md now carry.
- Generated AGENTS.md: a new rule after the Environment wording,
  formalAddress, says agents address people formally and agent rules keep ty.
- The Bitwarden tool's purpose, which the Launchpad also shows the person,
  speaks about agents instead of to them.
- lazurio browser: the "tab not opened" error matches the other errors
  converted before.
- Template revision base-instructions-45 with its pinned digest; the
  snapshots differ only in the revision header and the lines above.
  F28 records the addendum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty pushed a commit that referenced this pull request Oct 14, 2026
Anna's rule of 2026-10-11/12 (plan DEV-6658, brand voice in
design-system-lazurio content/brand/hlas/hlas.md, PRs #78 and #80) covers
Lazurio's agents too: what an agent says to a person uses vy. Rules written
for agents and the prompts a person hands to an agent keep ty.

- Folder manual handoff block: "Připravil jsem vám pull request",
  "Zkontrolujte si to v aplikaci", "Mám změny Publikovat vaším jménem?",
  the same text the root and Organization AGENTS.md now carry.
- Generated AGENTS.md: a new rule after the Environment wording,
  formalAddress, says agents address people formally and agent rules keep ty.
- The Bitwarden tool's purpose, which the Launchpad also shows the person,
  speaks about agents instead of to them.
- lazurio browser: the "tab not opened" error matches the other errors
  converted before.
- Template revision base-instructions-48 with its pinned digest; the
  snapshots differ only in the revision header and the lines above.
  F28 records the addendum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty pushed a commit that referenced this pull request Oct 14, 2026
Anna's rule of 2026-10-11/12 (plan DEV-6658, brand voice in
design-system-lazurio content/brand/hlas/hlas.md, PRs #78 and #80) covers
Lazurio's agents too: what an agent says to a person uses vy. Rules written
for agents and the prompts a person hands to an agent keep ty.

- Folder manual handoff block: "Připravil jsem vám pull request",
  "Zkontrolujte si to v aplikaci", "Mám změny Publikovat vaším jménem?",
  the same text the root and Organization AGENTS.md now carry.
- Generated AGENTS.md: a new rule after the Environment wording,
  formalAddress, says agents address people formally and agent rules keep ty.
- The Bitwarden tool's purpose, which the Launchpad also shows the person,
  speaks about agents instead of to them.
- lazurio browser: the "tab not opened" error matches the other errors
  converted before.
- Template revision base-instructions-48 with its pinned digest; the
  snapshots differ only in the revision header and the lines above.
  F28 records the addendum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty pushed a commit that referenced this pull request Oct 14, 2026
Anna's rule of 2026-10-11/12 (plan DEV-6658, brand voice in
design-system-lazurio content/brand/hlas/hlas.md, PRs #78 and #80) covers
Lazurio's agents too: what an agent says to a person uses vy. Rules written
for agents and the prompts a person hands to an agent keep ty.

- Folder manual handoff block: "Připravil jsem vám pull request",
  "Zkontrolujte si to v aplikaci", "Mám změny Publikovat vaším jménem?",
  the same text the root and Organization AGENTS.md now carry.
- Generated AGENTS.md: a new rule after the Environment wording,
  formalAddress, says agents address people formally and agent rules keep ty.
- The Bitwarden tool's purpose, which the Launchpad also shows the person,
  speaks about agents instead of to them.
- lazurio browser: the "tab not opened" error matches the other errors
  converted before.
- Template revision base-instructions-48 with its pinned digest; the
  snapshots differ only in the revision header and the lines above.
  F28 records the addendum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants