@remits/remits-cli 0.1.97 → 0.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/package.json +1 -1
- package/skills/remits-cli/SKILL.md +105 -22
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ remits-cli install --skills --overwrite true
|
|
|
63
63
|
- `components clear` clears staged entries. Scope it with `--component-type` and/or `--component-id`. Component ids are type-local, so an id alone clears that one component when the id is staged in only one family; if the same id is staged across multiple families it returns an ambiguity error asking you to add `--component-type`. With no filter it clears every staged entry for the current branch; pass `--all` to force the full-branch wipe explicitly.
|
|
64
64
|
- `components stage`, `components status`, and `components clear` print concise summaries by default. Add `--json` or `--verbose` to print the full server response. `components stage` separates local working-tree component deltas from the full materialized staging cache count.
|
|
65
65
|
- `components sync` performs a server-side sync from the git remote into the Remits platform for the selected branch. It does not run local git commands. After a successful non-dry-run sync, the platform clears the branch/user staging scope so staged aliases cannot keep shadowing the newly synced DB rows.
|
|
66
|
-
- On trunk, `components sync` performs the full repo-to-DB reconcile. On a non-trunk branch, it writes `ComponentVariant` overlays only and may refresh branch-local `account-info.json`
|
|
66
|
+
- On trunk, `components sync` performs the full repo-to-DB reconcile. On a non-trunk branch, it writes `ComponentVariant` overlays only and may refresh branch-local `account-info.json`, `account-hierarchy.json`, and `account-configurations.json` for the subscribing account that initiated the sync. `--dry-run` is accepted only for non-trunk variant syncs and reports overrides/additions/tombstones without writing variants, caching the sync SHA, updating metadata, or clearing staging. Add `--summary` to dry-run output when you only need counts, removals/tombstones, errors, skipped items, and warnings. `--force-tombstones` is accepted only for non-trunk variant syncs and should be used only when missing trunk component files are intentional tombstone overrides.
|
|
67
67
|
- `components commit` is a convenience wrapper that performs local git commit/push, then `components sync`, then local `git fetch`/`git pull --ff-only`.
|
|
68
68
|
- `components sync` returns the post-sync branch SHA produced by the platform. `components commit` verifies that `origin/<branch>` and local `HEAD` both match that exact SHA after the final pull.
|
|
69
69
|
- `components push` is deprecated and currently behaves the same as `components stage`.
|
|
@@ -173,7 +173,7 @@ There are two separate state areas:
|
|
|
173
173
|
|
|
174
174
|
- `remits-cli start` prints or records a localhost dashboard URL such as `http://127.0.0.1:8787/`.
|
|
175
175
|
- Open that page in a browser to inspect the full local remits-cli integration state without manually opening JSON files.
|
|
176
|
-
- The page refreshes automatically and includes the latest global state files plus per-repo `account-info.json`, local tools snapshot, and current session log tail for every indexed account repo.
|
|
176
|
+
- The page refreshes automatically and includes the latest global state files plus per-repo `account-info.json`, local tools snapshot, and current session log tail for every indexed account repo. Large account configuration fields live in `account-configurations.json` and should be opened only when needed.
|
|
177
177
|
|
|
178
178
|
## Tmux Activity Log
|
|
179
179
|
|
package/package.json
CHANGED
|
@@ -31,6 +31,7 @@ description: Use remits-cli for fast branch-scoped component staging, test execu
|
|
|
31
31
|
- [HTTP audits](#http-audits)
|
|
32
32
|
- [AI activity](#ai-activity)
|
|
33
33
|
- [Node Reference Table](#node-reference-table)
|
|
34
|
+
- [Runtime node and `localMode`](#runtime-node-and-localmode)
|
|
34
35
|
- [Getting Started](#getting-started)
|
|
35
36
|
- [Authentication](#authentication)
|
|
36
37
|
- [Host vs Data Mode](#host-vs-data-mode)
|
|
@@ -88,6 +89,7 @@ description: Use remits-cli for fast branch-scoped component staging, test execu
|
|
|
88
89
|
- [`mcp_run_agent`](#mcp_run_agent)
|
|
89
90
|
- [Controlling a live agent — `pause` / `unpause` / `interrupt`](#controlling-a-live-agent--pause--unpause--interrupt)
|
|
90
91
|
- [`mcp_system_logs`](#mcp_system_logs)
|
|
92
|
+
- [`mcp_user_activity`](#mcp_user_activity)
|
|
91
93
|
- [`mcp_performance_trace`](#mcp_performance_trace)
|
|
92
94
|
- [`mcp_event_diagnostics`](#mcp_event_diagnostics)
|
|
93
95
|
- [`mcp_component_view`](#mcp_component_view)
|
|
@@ -159,9 +161,10 @@ Two more, easily confused: top-level **`componentBranches`** lists the variant b
|
|
|
159
161
|
account type and parent hierarchy first, and work only from an existing indexed repo unless the user
|
|
160
162
|
explicitly asks you to clone one.
|
|
161
163
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
164
|
+
For access questions — "who can see this client account?", "why does this user see the wrong data?" — use
|
|
165
|
+
`mcp_account_user_admin` first (`action:'users'`, `action:'user'`, or `action:'user_update'`). Use
|
|
166
|
+
`mcp_sql_query` only when you need raw join-table investigation. Remember a user's custom fields are stored
|
|
167
|
+
**per bound account**, so the same person can differ per account.
|
|
165
168
|
|
|
166
169
|
Use `remits-cli` for everything else: staging changes, running tests, generating embeddable tokens,
|
|
167
170
|
committing work, and diagnosing production issues.
|
|
@@ -345,6 +348,8 @@ These files are decision inputs. Read them when the related decision depends on
|
|
|
345
348
|
- Read when the question is about available tool names, cached schemas, or why a tool invocation shape may be invalid.
|
|
346
349
|
- `account-info.json`
|
|
347
350
|
- Read in the target repo before making component changes or assuming account ownership.
|
|
351
|
+
- `account-configurations.json`
|
|
352
|
+
- Read only when account configuration values matter. It is generated separately because configuration maps can be large and `account-info.json` deliberately omits them.
|
|
348
353
|
|
|
349
354
|
Do not rely on memory for these indexes. Read the file that governs the decision you are making.
|
|
350
355
|
|
|
@@ -509,6 +514,7 @@ here is the tool and the filterable fields:
|
|
|
509
514
|
| `object_log` | `mcp_record_listing` / `mcp_record_view` | `type`, `description`, `content`, `threadGroupingId` |
|
|
510
515
|
| `event` | `mcp_record_listing` / `mcp_record_view` | `action`, `status`, `eventDate`, `threadGroupingId` |
|
|
511
516
|
| `alert` | `mcp_record_listing` / `mcp_record_view` | `status`, `type`, `active`, `threadGroupingId` |
|
|
517
|
+
| user activity session | `mcp_user_activity` | `userId`, `accountId`, `sessionKey`, `focusedOnly`, `traceId` pivots |
|
|
512
518
|
|
|
513
519
|
`mcp_record_listing` finds candidates when you do not know the id; `mcp_record_view` opens an exact one;
|
|
514
520
|
`mcp_object_activity` returns one Object's whole timeline in order.
|
|
@@ -522,6 +528,8 @@ different lanes (see `platform-overview.md` → *Test and Production Data Lanes*
|
|
|
522
528
|
- **`threadGroupingId`** — groups every record and log line from one processing chain, and is also the
|
|
523
529
|
request's trace id. Pivot into `mcp_system_logs` and `mcp_performance_trace`.
|
|
524
530
|
- **`node`** — resolves to `serviceName` + `region` for log queries (table below).
|
|
531
|
+
- **`sessionKey`** — salted user-activity session key. Pivot `mcp_user_activity` `sessions` → `story`;
|
|
532
|
+
each beat then carries a `traceId` / `threadGroupingId` for trace and log investigation.
|
|
525
533
|
- **`sessionId`** — pivots into persisted AI activity via `mcp_ai_session_search`.
|
|
526
534
|
|
|
527
535
|
### Reading a record's `content` — persisted context, not a memory dump
|
|
@@ -602,6 +610,29 @@ before reading the persisted request/response is guessing.
|
|
|
602
610
|
|
|
603
611
|
`mcp_system_logs` accepts `node` directly and resolves it automatically.
|
|
604
612
|
|
|
613
|
+
### Runtime node and `localMode`
|
|
614
|
+
|
|
615
|
+
The deployed `remits` service in `us-east5` (`remitsAdmin-east5`) runs with the platform setting
|
|
616
|
+
`localMode=true`. If someone says "localModel" in this context, confirm they mean this `localMode`
|
|
617
|
+
setting. Operationally, immediate async follow-on work stays on the same Cloud Run service/node instead of
|
|
618
|
+
being sharded to `remits-actions`:
|
|
619
|
+
|
|
620
|
+
- Pub/Sub-style follow-on messages are handled locally after commit.
|
|
621
|
+
- Near-immediate tasks are handled locally when `localMode` is enabled. Future scheduled tasks still use
|
|
622
|
+
Cloud Tasks.
|
|
623
|
+
- Local worker hops preserve the run context, including staged-source resolution, data mode,
|
|
624
|
+
`threadGroupingId`, and trace correlation.
|
|
625
|
+
- Durable boundaries such as async HTTP ingress and Events carry that same run context across the queue.
|
|
626
|
+
|
|
627
|
+
For investigations on the default deployed host (`https://remits-529558023549.us-east5.run.app`), do not
|
|
628
|
+
assume "async" means `remitsActions` / `us-east1`. Start with `node:"remitsAdmin-east5"` and the
|
|
629
|
+
`threadGroupingId`; pivot to `remitsActions` only when the Event delivery envelope, log line, or returned
|
|
630
|
+
node says the work actually ran there.
|
|
631
|
+
|
|
632
|
+
This does not change the data-lane rule: a non-null `TestMode` can exist only to carry branch/staged-source
|
|
633
|
+
resolution. Data isolation is decided by CLI `--data-mode`: a branch-scoped `--data-mode prod` run is still
|
|
634
|
+
prod data, while `--data-mode test` remains isolated test data.
|
|
635
|
+
|
|
605
636
|
## Getting Started
|
|
606
637
|
|
|
607
638
|
### Authentication
|
|
@@ -764,7 +795,7 @@ the file. Omit the key; the platform fills it in on sync:
|
|
|
764
795
|
```yaml
|
|
765
796
|
# components/embeddables/new_MerchantPortal.meta.yml — no `id:` yet
|
|
766
797
|
name: Merchant Portal
|
|
767
|
-
summary: One-line statement of what this component is for.
|
|
798
|
+
summary: One-line statement of what this component is for. This is the compact text account-info.json uses first.
|
|
768
799
|
description: |
|
|
769
800
|
Longer technical description with line-number references to the key logic.
|
|
770
801
|
path: /page/merchant-portal # Readers and Embeddables only
|
|
@@ -875,13 +906,15 @@ If the work is tied to a support ticket:
|
|
|
875
906
|
|
|
876
907
|
Before committing, update metadata so the next session understands what changed:
|
|
877
908
|
|
|
878
|
-
1. **`.meta.yml` sidecars** — Update `description
|
|
909
|
+
1. **`.meta.yml` sidecars** — Update `summary`, `description`, and `mermaid` for each modified component. `summary` is what drives the compact component description in generated `account-info.json`; `description` is the fallback when no summary is set and is capped in that file.
|
|
879
910
|
2. **`README.md`** — If the change affects account-level capabilities or workflows.
|
|
880
911
|
3. **New components** — Always fill in `.meta.yml` immediately.
|
|
881
912
|
|
|
882
|
-
`account-info.json` is read-only — never edit it. It regenerates automatically after sync.
|
|
883
|
-
|
|
884
|
-
|
|
913
|
+
`account-info.json` is read-only — never edit it. It regenerates automatically after sync. Component
|
|
914
|
+
entries prefer `summary`, fall back to capped `description`, and cap `mermaid`; relationships remain as
|
|
915
|
+
generated. On a trunk sync it describes the owning repo account. On a subscriber-initiated variant sync it
|
|
916
|
+
describes the subscribing account reached through the branch edge, even though the component files still
|
|
917
|
+
belong to the owner's repo.
|
|
885
918
|
|
|
886
919
|
#### Temporary Experiment Workflow
|
|
887
920
|
|
|
@@ -1156,8 +1189,9 @@ link carries what?"
|
|
|
1156
1189
|
the edge `domainName`. An **edge** host wins over the account's own, and additionally supplies the path
|
|
1157
1190
|
travelled — which is what makes that edge's branch variants apply.
|
|
1158
1191
|
|
|
1159
|
-
**Users are not part of this graph** (see `platform-overview.md`).
|
|
1160
|
-
`
|
|
1192
|
+
**Users are not part of this graph** (see `platform-overview.md`). Use `mcp_account_user_admin`
|
|
1193
|
+
(`action:'users'`, `action:'user'`, or `action:'user_update'`) for user membership and account-scoped user
|
|
1194
|
+
fields. Drop to `mcp_sql_query` against `user` / `user_account` only for raw join-table evidence.
|
|
1161
1195
|
|
|
1162
1196
|
## Branched Component Variants (per-account component overrides)
|
|
1163
1197
|
|
|
@@ -1415,9 +1449,19 @@ Before starting an investigation outside the confirmed current repo:
|
|
|
1415
1449
|
5. `mcp_record_listing` — search or filter alerts, events, object logs, or objects when you need to find the suspicious record first.
|
|
1416
1450
|
6. `mcp_record_view` — drill into suspicious entries for full content.
|
|
1417
1451
|
7. `mcp_ai_session_search` — if the workflow involves AI, inspect session groupings, prompts, tool definitions, and responses in human-readable form.
|
|
1418
|
-
8. `
|
|
1419
|
-
9. `
|
|
1420
|
-
10. `
|
|
1452
|
+
8. `mcp_user_activity` — for "user X is slow right now" reports, list sessions by `userId`/`accountId`, open the session story, and use the returned beat pivots.
|
|
1453
|
+
9. `mcp_performance_trace` — for slow/sluggish reports, open the beat `traceId` with `action:"trace"`; use `action:"slowest"` when you only have a broad time window.
|
|
1454
|
+
10. `mcp_system_logs` — correlate via `threadGroupingId` for raw log context when the trace needs supporting log lines.
|
|
1455
|
+
11. `mcp_component_view`/`mcp_component_grep` — explain how the responsible component works.
|
|
1456
|
+
|
|
1457
|
+
**Slow / sluggish user report:**
|
|
1458
|
+
|
|
1459
|
+
1. Resolve the reporting user/account with `mcp_account_user_admin` if you only have an email/name.
|
|
1460
|
+
2. Call `mcp_user_activity` with `action:"sessions"` and `userId` or `accountId`.
|
|
1461
|
+
3. Open the likely row with `action:"story"` and inspect beat labels, status, `ms`, `node`, and `traceId`.
|
|
1462
|
+
4. Open slow or failed beat pivots with `mcp_performance_trace` before querying raw logs.
|
|
1463
|
+
5. Use the returned `mcp_system_logs` pivot only when the trace needs surrounding log lines.
|
|
1464
|
+
6. If there is no live session, call `mcp_user_activity` `action:"watch"` for the user/account, ask for reproduction, then read `sessions`/`story` again. Focused sessions retain sanitized request detail and emit archived `REMITS_ACTIVITY` log lines.
|
|
1421
1465
|
|
|
1422
1466
|
**Error or Alert Investigation:**
|
|
1423
1467
|
1. `mcp_record_listing` — search by alert type, content, error text, action, status, `threadGroupingId`, or other exact-match record properties when you do not yet know the record ID.
|
|
@@ -1531,8 +1575,8 @@ its behavior against component source:
|
|
|
1531
1575
|
`databaseName` (the account's own override, often null) vs `resolvedDatabaseName` (the storage namespace
|
|
1532
1576
|
actually in effect); `branchName` (the repo sync branch) and `lastRepoSync`; `domainName` vs
|
|
1533
1577
|
`resolvedDomainName` (the custom host in effect, which differs when reached through an edge host);
|
|
1534
|
-
`
|
|
1535
|
-
/ `componentOwnerAccountName`.
|
|
1578
|
+
`authPath` / `targetPath` (login and post-login landing routes); `editMode`; and — when a component
|
|
1579
|
+
branch is in effect — `componentBranch` plus `componentOwnerAccountId` / `componentOwnerAccountName`.
|
|
1536
1580
|
- `resolution.relationships` — **every structural link upward**, primary first: `parentAccountId` /
|
|
1537
1581
|
`parentAccountName` / `parentAccountCode` / `parentAccountType`, `primary` (true for the one link that
|
|
1538
1582
|
mirrors the account's primary parent), `active`, and the three independent link-scoped properties
|
|
@@ -1578,11 +1622,13 @@ account).
|
|
|
1578
1622
|
without a browser):
|
|
1579
1623
|
|
|
1580
1624
|
- `action: 'account_create'` — create a child under `parentAccountId`, with its **primary relationship edge**,
|
|
1581
|
-
applying `type` / `databaseName` / `domainName` / `
|
|
1582
|
-
`editMode` / … **at birth**. That ordering matters: the storage
|
|
1583
|
-
and the parent's cascaded schema fields are written into it
|
|
1584
|
-
same-name account under that parent comes back with
|
|
1585
|
-
|
|
1625
|
+
applying `type` / `databaseName` / `domainName` / `authPath` / `targetPath` / `code` /
|
|
1626
|
+
`repositoryNameOverride` / `branchName` / `editMode` / … **at birth**. That ordering matters: the storage
|
|
1627
|
+
namespace is resolved from those properties, and the parent's cascaded schema fields are written into it
|
|
1628
|
+
during creation. Idempotent — an existing same-name account under that parent comes back with
|
|
1629
|
+
`reusedExisting: true`, unchanged.
|
|
1630
|
+
- `action: 'account_structure'` — change those properties on an existing account, including account-level
|
|
1631
|
+
custom host, login path, and landing path.
|
|
1586
1632
|
- `action: 'edge_add'` / `'edge_update'` / `'edge_remove'` — manage a membership `AccountRelationship` edge to
|
|
1587
1633
|
`parentAccountId`, including the three independent edge properties `branchName` (which component code runs),
|
|
1588
1634
|
`databaseName` (a path-scoped storage-namespace override — **live**, and inherited by everything below
|
|
@@ -1948,6 +1994,42 @@ Query Cloud Run service logs.
|
|
|
1948
1994
|
{"node": "remitsAdmin-east5", "timeRange": "4h", "severity": "ERROR"}
|
|
1949
1995
|
```
|
|
1950
1996
|
|
|
1997
|
+
### `mcp_user_activity`
|
|
1998
|
+
Read live user activity sessions and control focused capture. Use this before trace/log spelunking when
|
|
1999
|
+
the report is user-centric, for example "User abc is reporting slow responses." It wraps the same
|
|
2000
|
+
Redis-backed store as System → Activity and returns ready pivots to traces, logs, and component source.
|
|
2001
|
+
|
|
2002
|
+
Common flows:
|
|
2003
|
+
|
|
2004
|
+
```bash
|
|
2005
|
+
# Find what one user is doing right now
|
|
2006
|
+
remits-cli tool --name mcp_user_activity --input '{"action":"sessions","userId":3,"limit":10}' --data-mode prod
|
|
2007
|
+
|
|
2008
|
+
# Open a returned sessionKey and inspect its beats
|
|
2009
|
+
remits-cli tool --name mcp_user_activity --input '{"action":"story","sessionKey":"c_46ee68bba67003a6","limit":50}' --data-mode prod
|
|
2010
|
+
|
|
2011
|
+
# Arm focused capture, ask the user to reproduce, then read the story again
|
|
2012
|
+
remits-cli tool --name mcp_user_activity --input '{"action":"watch","userId":3,"minutes":30}' --data-mode prod
|
|
2013
|
+
```
|
|
2014
|
+
|
|
2015
|
+
| Parameter | Required | Description |
|
|
2016
|
+
|-----------|----------|-------------|
|
|
2017
|
+
| `action` | no | `sessions`, `story`, `watch`, `unwatch`, `forget`, `status`, or `archive`. Default: `sessions`. |
|
|
2018
|
+
| `userId` / `accountId` | no | Filter sessions/archive or choose the focus subject for `watch`/`unwatch`. One is required for `watch`/`unwatch`. |
|
|
2019
|
+
| `sessionKey` | for `story`/`forget` | Salted activity session key returned by `sessions`; not a raw browser/session credential. |
|
|
2020
|
+
| `focusedOnly` | no | For `sessions`, return only focused/watched sessions. |
|
|
2021
|
+
| `sinceMs` | no | For `sessions`, lower bound on last-seen epoch milliseconds. Defaults to the activity TTL window. |
|
|
2022
|
+
| `limit` | no | Session/story/archive row cap. Defaults: sessions=100, story=200, archive=50. |
|
|
2023
|
+
| `minutes` | no | Watch TTL for `watch`; defaults to `activity.focus.ttl.minutes`. |
|
|
2024
|
+
| `traceId` / `threadGroupingId` | no | For `archive`, narrow focused activity log pivot to one trace. |
|
|
2025
|
+
| `lookbackHours` | no | For `archive`, Cloud Logging window in the returned `mcp_system_logs` pivot. Default 24, max 168. |
|
|
2026
|
+
| `node` / `serviceName` / `region` | no | For `archive`, target for the returned `mcp_system_logs` pivot. `node` defaults to `remitsAdmin-east5`. |
|
|
2027
|
+
|
|
2028
|
+
Reading rule: use `sessions` → `story` to build the behavioral timeline, then open a slow or failed beat's
|
|
2029
|
+
`mcp_performance_trace` pivot. Use `watch` when the user can reproduce and no live story exists. Use
|
|
2030
|
+
`archive` only for watched/focused sessions; ordinary activity lives in Redis and expires with the activity
|
|
2031
|
+
TTL.
|
|
2032
|
+
|
|
1951
2033
|
### `mcp_performance_trace`
|
|
1952
2034
|
Read Remits request traces through the same `traces(...)` DSL that powers the admin Diagnostics "Request
|
|
1953
2035
|
traces" panel. Use this before raw log spelunking for slow or sluggish requests because it returns profiled
|
|
@@ -2528,12 +2610,13 @@ For tests specifically:
|
|
|
2528
2610
|
| Long-running tool times out | For `mcp_run_action`/`mcp_run_agent`, use the tool's own `executionMode:"async"` and poll with a `controlAction:"status"` call (see "Tool Execution Lifecycle"). For other long tools without their own async, use `remits-cli tool --async true` and poll `remits-cli tool status --call-id <callId>`. `--timeout-ms` only adjusts the per-request HTTP timeout; it is not a substitute for async. |
|
|
2529
2611
|
| Need to continue tracking a long Action or Agent after terminal disconnect | Read `./.remits-cli/tool-responses/<callId>.json` for the returned `actionRunId`/`agentRunId`/`sessionId`/`threadGroupingId`. Re-poll the run with a `controlAction:"status"` call carrying that `actionRunId`/`agentRunId`, or inspect the agent session via `mcp_ai_session_search` with the `sessionId`. |
|
|
2530
2612
|
| Staged change has no effect in a live (non-CLI) run | Staged overrides resolve only under a CLI TestMode (`branchName`+`cliUserId`). Live webhooks and other non-CLI runtime paths still use the DB (trunk, or the account's subscribed variant). `commit` to make it durable. See "Component Resolution". |
|
|
2531
|
-
| Need to know an account's shape (role, type, parents, namespace, branch) | Read `resolution` — from the repo's `account-info.json`, or `mcp_account_user_admin` `action:'account'` (cheap), or `mcp_account_view` (full inventory): `role`/`summary`, `type`, `resolvedDatabaseName`, `relationships`, `componentBranch`, plus top-level `componentBranches`. Never infer structure from the account's name. |
|
|
2613
|
+
| Need to know an account's shape (role, type, parents, namespace, branch, host/login routes) | Read `resolution` — from the repo's `account-info.json`, or `mcp_account_user_admin` `action:'account'` (cheap), or `mcp_account_view` (full inventory): `role`/`summary`, `type`, `resolvedDatabaseName`, `domainName`/`resolvedDomainName`, `authPath`/`targetPath`, `relationships`, `componentBranch`, plus top-level `componentBranches`. Never infer structure from the account's name. |
|
|
2532
2614
|
| Need the account tree below an account, or its users | In a local repo, read `account-hierarchy.json` for the generated tree. For live data, use `mcp_account_user_admin` (`action:'hierarchy'` with a `depth`, or `action:'users'`). `account-info.json` deliberately omits the tree. |
|
|
2615
|
+
| Need account configuration values | In a local repo, read `account-configurations.json`. For live data, use `mcp_account_user_admin` (`action:'account'`) or `mcp_account_view`. `account-info.json` deliberately omits configurations. |
|
|
2533
2616
|
| An account has two parents and you don't know which one a run used | `resolution.relationships` lists every link with its own `branchName`/`databaseName`/`domainName`. A membership-only account with SEVERAL edges resolves **trunk and inherits nothing** until a path is named (`--as-account`, `--variant-branch`, or an edge host) — that is by design, not a bug. With exactly ONE membership edge it inherits normally, descendants included. |
|
|
2534
2617
|
| Documents missing / written to the wrong place | Compare `resolution.databaseName` (the account's own override) with `resolution.resolvedDatabaseName` (what is actually in effect), and check for a `databaseName` on one of the `relationships` edges. Data does not inherit; components do. |
|
|
2535
2618
|
| A custom hostname resolves to an unexpected account | Compare `resolution.domainName` with `resolvedDomainName` and the edge `domainName`s. An **edge** host wins over the account's own host and additionally supplies the path travelled (which is what makes that edge's branch variants apply). |
|
|
2536
|
-
| Need users of an account,
|
|
2619
|
+
| Need users of an account, accounts of a user, or account-scoped user fields | Use `mcp_account_user_admin` (`action:'users'`, `action:'user'`, or `action:'user_update'`). Use `mcp_sql_query` on `user` / `user_account` only for raw join-table investigation. Remember user custom fields are stored **per bound account**, so the same person can differ per account. |
|
|
2537
2620
|
| One account behaves differently from its siblings on the same component | It probably subscribes to a **branch variant**. Check `remits-cli components branches` and `remits-cli components branch <name> --subscribers`, and reproduce with `remits-cli test run --as-account <ID>`. Do NOT "fix" this by adding per-account logic to the origin component. |
|
|
2538
2621
|
| Edits on a feature branch seem to run against trunk code | You are likely on the **trunk** branch, or passed `--variant-branch none`. Run `remits-cli components status` — it states which world the working tree resolves. |
|
|
2539
2622
|
| A component vanished for one account after a variant-branch sync | Its file is missing from that branch, so the sync created a **tombstone** that hides it from subscribers. Restore the file on the branch and re-sync. Trunk is unaffected. |
|