Skip to content

feat(presence): initiate the guided form-fill from God and the ⌥⌥ launcher - #51

Open
sameeeeeeep wants to merge 1 commit into
mainfrom
claude/god-fillguide
Open

feat(presence): initiate the guided form-fill from God and the ⌥⌥ launcher#51
sameeeeeeep wants to merge 1 commit into
mainfrom
claude/god-fillguide

Conversation

@sameeeeeeep

Copy link
Copy Markdown
Owner

The founder's ask

"I could just copy my form, attach clipboard to either god or launcher… say help me fill this with guide… it would then use the data to set it up for me, yeah?"

Now: yeah.

Two entry points wired

God path — copy the form, ⌃⌃, tap Add on the clipboard chip, say "help me fill this with guide":

  • god.mjs gains a [FILLGUIDE:[["label","value"],…]] action tag + a GUIDED FORM FILL protocol block. God maps the form's fields to values it actually has — the user's ~/.relay/identity.json details (now fed into the prompt), the active project context (already rides via context-selection.json/contexts.json), or something the user said. Hard rules in-prompt: never invent a value, never secrets.
  • The tag hands off to Swift over the proven god-action.json lane (same as DRIVE) and exits; executeGodAction raises the native teach fill-guide — one step per field, value pre-loaded on the clipboard, ⌘V to paste, auto-advance on paste/field-non-empty, user's clipboard restored at the end.
  • No new consent surface: the spoken ask initiates it, and the guide itself is the consent — every value visible per step, pasted by the user's own hand, esc aborts.

Launcher path — copy the form, ⌥⌥:

  • The existing clipboard offer chip gains a Fill form button → writes the existing ~/.relay/fill-form trigger (same one the menu item + scripts use) and closes the launcher. The deterministic identity.json label-match takes it from there (zero tokens, docs/FORM-FILL.md).

What stayed untouched

Guide runtime (CursorGuide.swift), the daemon guide_run verb, the deterministic matcher, consent topology. raiseFillGuide(pairs, source:) is factored out so both paths share one raiser.

Verified

  • node --check green; FILLGUIDE parse unit-tested headless (pair form, object form, malformed → graceful fall-through; other tags unaffected; stripTags drops it from the spoken line).
  • packages/menubar/build.sh builds clean (only pre-existing macOS 26 deprecation warnings).
  • Not live-tested end-to-end against a real form (needs the user's running app + a spoken turn).

🤖 Generated with Claude Code

…ncher

The founder flow: copy a form → ask God "help me fill this with guide" (with the
clipboard chip attached), or hit ⌥⌥ and tap Fill form on the clipboard offer — and
the guided cursor walks you field by field, each value pre-loaded for ⌘V.

- god.mjs: new [FILLGUIDE:[["label","value"],…]] action tag + GUIDED FORM FILL
  protocol block (fed the user's identity.json details; active project context
  already rides the prompt). Values must be REAL (identity/project/said) — never
  invented, never secrets. Hand-off to Swift via the proven god-action.json lane.
- RelayMenuBar: raiseFillGuide(pairs, source:) factored out of the deterministic
  fillFormFromClipboard path; executeGodAction gains case "fillguide" (raises the
  same teach fill-guide, source "God"); the no-consent fast lane covers fillguide
  like drive — the guide itself is the consent surface (visible values, user
  pastes each, esc aborts).
- NotchLauncherView: the clipboard offer chip gains a "Fill form" button → writes
  the existing ~/.relay/fill-form trigger and closes the launcher; the deterministic
  identity.json match takes it from there.

Co-Authored-By: Claude Fable 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.

1 participant