Skip to content

Feat/v2 monorepo#5

Merged
mrdulasolutions merged 5 commits intomainfrom
feat/v2-monorepo
Apr 21, 2026
Merged

Feat/v2 monorepo#5
mrdulasolutions merged 5 commits intomainfrom
feat/v2-monorepo

Conversation

@mrdulasolutions
Copy link
Copy Markdown
Owner

No description provided.

MRDula and others added 5 commits April 21, 2026 08:27
plugin/build-bundle.sh
- Claude Desktop's Local-uploads loader rejects flat zips (everything at
  archive root) with "wrong format". Rebuild the bundle by staging the
  plugin into a `reva-turbo/` directory first and zipping that — the
  archive now contains `reva-turbo/.claude-plugin/plugin.json`, which is
  what the uploader expects.
- Move from `zip --exclude` to `rsync` for the staging copy so dotfiles
  (`.claude-plugin/`, `.claude/settings.json`) land cleanly and macOS
  AppleDouble cruft (`._*`, `__MACOSX`) is scrubbed before archiving.
- Print top-level entries after build as a sanity check.

README.md
- Correct skill count: 48, not 46. Drop the stale "20 commands" claim
  (no `commands/` dir exists — the plugin ships skills only).
- Update example router URL to the real Railway-assigned shape
  (`mcp-router-production-*.up.railway.app`); the `reva-ops.up...`
  example never existed.
- Rework the Rev A customizations section to match what reva.py actually
  seeds now: 8 custom fields with concrete names, explain why JSON-shaped
  payloads ride as `text` (Nakatomi's field_type set is scalar-only),
  name the full 12-stage pipeline sequence.
- Fix the repository-layout tree: `railway/template.yaml` is reference-
  only (not executable), call that out; drop the "3 plugins" phrasing
  (the DBs are Railway-managed *plugins* in Railway's terminology but
  calling them that here conflates them with the Claude plugin); list
  docs/ contents accurately (ARCHITECTURE_V2.md and AUTH.md both exist).
- Point plugin-install instructions at Claude Desktop's actual menu and
  tell users not to pre-unzip the bundle (the top-level dir is what
  Desktop expects to see).
- Add a pointer to the Railway GitHub App one-time install flow, which
  is the main admin-side surprise on first deploy.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
No plugin code change — 2.0.1 exists purely so the GitHub Release asset
name (reva-turbo-2.0.1.zip) differs from 2.0.0. Users who hit the
"wrong format" upload error on 2.0.0 can tell from the filename alone
they're getting a different bundle. Also corrects the manifest's skill
count (46 → 48) to match reality.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Claude Desktop rejected 2.0.1 with "Plugin validation failed". Root
cause: Desktop's plugin.json schema for `mcpServers` only accepts
command-based (stdio) entries. My `{type:"http", url:..., headers:...}`
shape is valid in ~/.claude.json (Claude Code CLI) but not in a plugin
manifest.

Fix: wrap the remote router behind npx mcp-remote, the standard stdio↔
HTTP-MCP bridge. mcp-remote reads the URL and `--header` argv and
proxies MCP frames to our FastMCP endpoint.

```
"mcpServers": {
  "reva": {
    "command": "npx",
    "args": ["-y", "mcp-remote",
             "${user_config.mcp_url}",
             "--header", "Authorization: Bearer ${user_config.api_key}"]
  }
}
```

The `${user_config.*}` placeholders are what Desktop prompts the user
for on enable, so the bearer token never lands in plaintext config —
it flows through the plugin's userConfig vault on each spawn.

Also promote node >= 18 from optional to required in `requirements`
(it's on the critical path now — without it, `npx mcp-remote` can't
run and the user sees no tools).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Before this change, a new PM's first run at Rev A required an 8-section
local wizard (company, partners, shipping, documents, voice, …) even
though every value was identical across PMs and already lived on the
router. PMs also had to re-seed the Manufacturing RFQ pipeline per
workspace because /signup dropped them in an empty personal space.

Four structural fixes so a non-technical PM gets from zip install to
working engine in one question:

1. Server-side company profile. Seed publishes the Rev A company profile,
   escalation matrix, 5-role skill map, and memory taxonomy into
   workspace.data. The router exposes them via three new MCP tools:
   reva_whoami, reva_get_company_profile, reva_get_workspace_config.
   Plugin pulls on first run and caches to ~/.reva-turbo/state/.

2. Role-only first-run. revmyengine is now server-driven: call
   reva_whoami, ask ONE question (PM / sales / compliance / C-level /
   eng), call reva_set_user_role, done. The legacy 8-section wizard is
   kept but marked admin-only. New /role, /refresh, /connected inline
   commands expose the server config surface.

3. reva_set_user_role escalates through the router's admin token so
   regular member PMs can self-assign a role without admin creds
   (Nakatomi's PATCH /workspace is owner/admin-only).

4. cross.py /memory/link call was hitting the wrong endpoint
   (/memory-links) with the wrong field names (entity_type/entity_id/
   memory_id/summary). Fixed to /memory/link with correct schema
   (connector/external_id/crm_entity_type/crm_entity_id/note/data).
   reva_remember_about_entity now actually works; the Nakatomi endpoint
   doesn't require connector registry membership for link storage.

Signup UX:
- 3-step progress indicator (mint key → install plugin → run engine).
- Post-signup shows the GitHub Releases download link and the exact
  mcp_url to paste into Claude Desktop's plugin config.
- Explicit hygiene warning: remove any legacy standalone Nakatomi or
  AutoMem MCP connectors — the plugin bundles both under prefixed tool
  names (crm_*/mem_*/reva_*) and duplicates surface raw unprefixed
  tools that break intent routing.

Plugin bumps to 2.1.0 (description now reflects server-driven onboarding).
Build-bundle's top-level-entries reporter fixed — the file-count line
was leaking into the summary when the archive had many nested files.

Verified against production:
- Router advertises 28 tools (24 original + 4 new).
- Test PM signup → lands in workspace "reva", sees all 28 tools.
- reva_set_user_role from a member token updates workspace.data and
  subsequent reva_whoami returns the new role (needs_role → false).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Removes the Desktop-Settings hunt that non-tech PMs kept tripping on.
The plugin now self-configures from a pasted nk_... key:

- New bin/reva-mcp-launch.sh replaces ${user_config.*} substitution.
  Reads creds from ~/.reva-turbo/state/mcp-credentials.env, falls back
  to the baked-in Rev A Railway URL. Desktop no longer prompts for
  anything on plugin enable.
- revmyengine preflight rewritten: literal signup URL, three-beat
  script (mint → /connect in chat → restart), new /connect command
  that validates against /auth/me before saving and masks the key in
  all output. /connected diagnostic branches on creds-file presence.
- Signup page Step 2/3 updated: no more "Claude prompts for two
  values" (2.1.1 has no userConfig). Success banner shows the exact
  /connect one-liner.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@mrdulasolutions mrdulasolutions merged commit 521b614 into main Apr 21, 2026
3 checks passed
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