@terreno/mcp 58.0.2 → 58.0.4
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/CHANGELOG.md +31 -0
- package/README.md +6 -4
- package/dist/docs/templates/bootstrap/frontend/app/_layout.template.tsx +2 -0
- package/dist/docs/upgrades/58.0.3.md +28 -0
- package/dist/docs/versioned/next/explanation/ai-development-loop.md +10 -7
- package/dist/docs/versioned/next/explanation/test-isolation.md +2 -1
- package/dist/docs/versioned/next/explanation/test-sharding.md +113 -0
- package/dist/docs/versioned/next/how-to/README.md +1 -0
- package/dist/docs/versioned/next/how-to/circleci.md +12 -4
- package/dist/docs/versioned/next/how-to/debug-with-mcp.md +10 -1
- package/dist/docs/versioned/next/how-to/fix-code-scanning-alerts.md +43 -0
- package/dist/docs/versioned/next/how-to/run-tests-locally.md +5 -0
- package/dist/docs/versioned/next/how-to/set-up-terreno-mcp.md +3 -1
- package/dist/docs/versioned/next/implementationPlans/mcp-agent-debugger-gaps.md +257 -0
- package/dist/docs/versioned/next/reference/environment-variables.md +2 -0
- package/dist/docs/versioned/next/reference/mcp-server.md +12 -0
- package/dist/docs/versioned/next/reference/test.md +4 -1
- package/dist/docs/versioned/next/tasks/mcp-agent-debugger-gaps.md +151 -0
- package/dist/local/localTools.d.ts.map +1 -1
- package/dist/local/localTools.js +94 -1
- package/dist/local/localTools.js.map +1 -1
- package/dist/local/metro/metroDevSession.d.ts +1 -0
- package/dist/local/metro/metroDevSession.d.ts.map +1 -1
- package/dist/local/metro/metroDevSession.js +104 -1
- package/dist/local/metro/metroDevSession.js.map +1 -1
- package/dist/local/native/nativeLogs.d.ts +12 -0
- package/dist/local/native/nativeLogs.d.ts.map +1 -0
- package/dist/local/native/nativeLogs.js +103 -0
- package/dist/local/native/nativeLogs.js.map +1 -0
- package/dist/local/tools/clientDev.d.ts +22 -0
- package/dist/local/tools/clientDev.d.ts.map +1 -0
- package/dist/local/tools/clientDev.isolated.d.ts +2 -0
- package/dist/local/tools/clientDev.isolated.d.ts.map +1 -0
- package/dist/local/tools/clientDev.isolated.js +55 -0
- package/dist/local/tools/clientDev.isolated.js.map +1 -0
- package/dist/local/tools/clientDev.js +224 -0
- package/dist/local/tools/clientDev.js.map +1 -0
- package/dist/local/tools/readLogs.d.ts.map +1 -1
- package/dist/local/tools/readLogs.js +22 -3
- package/dist/local/tools/readLogs.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +3 -1
- package/dist/tools.js.map +1 -1
- package/package.json +7 -7
- package/src/docs/templates/bootstrap/frontend/app/_layout.template.tsx +2 -0
- package/src/docs/upgrades/58.0.3.md +28 -0
- package/src/docs/versioned/next/explanation/ai-development-loop.md +10 -7
- package/src/docs/versioned/next/explanation/test-isolation.md +2 -1
- package/src/docs/versioned/next/explanation/test-sharding.md +113 -0
- package/src/docs/versioned/next/how-to/README.md +1 -0
- package/src/docs/versioned/next/how-to/circleci.md +12 -4
- package/src/docs/versioned/next/how-to/debug-with-mcp.md +10 -1
- package/src/docs/versioned/next/how-to/fix-code-scanning-alerts.md +43 -0
- package/src/docs/versioned/next/how-to/run-tests-locally.md +5 -0
- package/src/docs/versioned/next/how-to/set-up-terreno-mcp.md +3 -1
- package/src/docs/versioned/next/implementationPlans/mcp-agent-debugger-gaps.md +257 -0
- package/src/docs/versioned/next/reference/environment-variables.md +2 -0
- package/src/docs/versioned/next/reference/mcp-server.md +12 -0
- package/src/docs/versioned/next/reference/test.md +4 -1
- package/src/docs/versioned/next/tasks/mcp-agent-debugger-gaps.md +151 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# Implementation Plan: MCP Agent Debugger Gaps (Network, Dispatch, Storage, Native Logs, Dev Commands)
|
|
2
|
+
|
|
3
|
+
**Status:** Complete — Pick landed 2026-11-06
|
|
4
|
+
**Parent IP:** [mcp-boost-parity.md](mcp-boost-parity.md) (extends the local stdio companion; does not repeat hosted docs/codegen work)
|
|
5
|
+
**Roadmap:** Area=`mcp`, Target=`Next`, Impact=`Feature`
|
|
6
|
+
**Created:** 2026-11-05
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
|
|
10
|
+
Close the remaining agent-debugging gaps compared to integrated RN debuggers (for example
|
|
11
|
+
Xerlock): **network traffic**, **structured Redux dispatch**, **local key-value storage
|
|
12
|
+
read/write**, **native platform logs**, and **app-registered dev commands**. Agents already get
|
|
13
|
+
merged console/backend logs, Mongo, SyncDB/RTK state, navigation, and web driving via
|
|
14
|
+
`terreno-mcp-local`; this plan adds the missing observe/act surfaces without building a
|
|
15
|
+
human debugger UI.
|
|
16
|
+
|
|
17
|
+
## Non-Goals
|
|
18
|
+
|
|
19
|
+
- On-device **SQLite** inspection outside SyncDB/TinyBase (partial overlap with
|
|
20
|
+
`get_syncdb_state`; raw `expo-sqlite` is out of scope).
|
|
21
|
+
- **Push notification** simulation, **network throttle**, and **React component tree /
|
|
22
|
+
profiler** MCP tools (human DevTools + screenshots + `get_client_state` remain the path).
|
|
23
|
+
- **Zustand** as a first-class framework integration (apps may expose Zustand via
|
|
24
|
+
`registerTerrenoDevCommand` only).
|
|
25
|
+
- Taking **`metro-mcp`** as a dependency (implement on the existing CDP session in
|
|
26
|
+
`metroDevSession.ts`).
|
|
27
|
+
- New **hosted** (`terreno-mcp`) tools — all work is **`terreno-mcp-local`** plus small
|
|
28
|
+
**`@terreno/syncdb`** / bootstrap dev hooks.
|
|
29
|
+
|
|
30
|
+
## Decisions
|
|
31
|
+
|
|
32
|
+
| # | Question | Decision |
|
|
33
|
+
|---|----------|----------|
|
|
34
|
+
| D1 | Separate `read_network` tool vs extend `read_logs`? | **Extend `read_logs`** with source `network` (chronological merge with other sources when omitted). |
|
|
35
|
+
| D2 | Depend on `metro-mcp` vs in-house? | **In-house** on `mcp-server/src/local/metro/metroDevSession.ts` (same Hermes CDP connection as `app` / `evaluate`). |
|
|
36
|
+
| D3 | Writable local storage in v1? | **Yes** — `write_local_storage` requires `TERRENO_MCP_EVAL=1`; reads are always allowed. |
|
|
37
|
+
| D4 | Build order | **Network → dispatch + storage → native logs → dev commands → docs**. |
|
|
38
|
+
| D5 | React tree snapshot | **Defer** — not in this plan. |
|
|
39
|
+
|
|
40
|
+
## Architecture
|
|
41
|
+
|
|
42
|
+
### Tool surface (after this plan)
|
|
43
|
+
|
|
44
|
+
| Tool | Server | Purpose |
|
|
45
|
+
|------|--------|---------|
|
|
46
|
+
| `read_logs` | local | Existing sources `backend`, `browser`, `metro`, `app`; **add** `network`, `native`. |
|
|
47
|
+
| `last_error` | local | Unchanged; may surface errors from new sources when level is `error`. |
|
|
48
|
+
| `dispatch_client_action` | local | Dispatch a Redux action on `globalThis.__TERRENO_STORE__` via CDP (EVAL-gated). |
|
|
49
|
+
| `read_local_storage` | local | Read AsyncStorage keys (and opt-in SecureStore key names) via dev global adapter. |
|
|
50
|
+
| `write_local_storage` | local | Write one key (EVAL-gated); never writes SecureStore unless app registers an explicit allowlist entry. |
|
|
51
|
+
| `list_dev_commands` | local | List `{name, description, inputSchema}` from `globalThis.__TERRENO_DEV_COMMANDS__`. |
|
|
52
|
+
| `invoke_dev_command` | local | Run a registered handler by name (EVAL-gated). |
|
|
53
|
+
|
|
54
|
+
Existing tools (`get_client_state`, `syncdb_*`, `evaluate`, `navigate`, `browser`, …) are
|
|
55
|
+
unchanged.
|
|
56
|
+
|
|
57
|
+
### CDP network capture (D1, D2)
|
|
58
|
+
|
|
59
|
+
Extend `metroDevSession.ts`:
|
|
60
|
+
|
|
61
|
+
1. After attaching to the debug target, enable CDP domains **`Runtime`** (existing) and
|
|
62
|
+
**`Network`**.
|
|
63
|
+
2. Maintain a ring buffer (same cap as console, default 2000) of normalized entries:
|
|
64
|
+
- `timestamp`, `method`, `url`, `status`, `mimeType`, `durationMs` when available
|
|
65
|
+
- Request/response **header maps** with **`Authorization`**, **`Cookie`**, and
|
|
66
|
+
**`set-auth-token`** redacted
|
|
67
|
+
- Optional truncated **response body** (text only, max 4 KiB per entry; skip binary)
|
|
68
|
+
3. `read_logs` with `sources: ["network"]` (or default merge) maps the ring into the same
|
|
69
|
+
JSON shape as other sources, with `source: "network"`.
|
|
70
|
+
4. `connection` metadata reuses the existing CDP status block; document that enabling
|
|
71
|
+
Network shares the single Hermes debugger slot with DevTools contention rules already
|
|
72
|
+
documented for `app`.
|
|
73
|
+
|
|
74
|
+
No separate MCP tool name.
|
|
75
|
+
|
|
76
|
+
### Redux dispatch (D3, D4 phase 2)
|
|
77
|
+
|
|
78
|
+
`dispatch_client_action`:
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
// Input (strict JSON schema)
|
|
82
|
+
{
|
|
83
|
+
type: string; // required Redux action type
|
|
84
|
+
payload?: unknown; // optional JSON-serializable payload
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Implementation:
|
|
89
|
+
|
|
90
|
+
1. Refuse unless `TERRENO_MCP_EVAL=1` (same posture as `evaluate` / `navigate`).
|
|
91
|
+
2. Prefer in-process read of `globalThis.__TERRENO_STORE__` when the MCP process shares the
|
|
92
|
+
app heap (tests); otherwise CDP `Runtime.evaluate` with a fixed snippet that calls
|
|
93
|
+
`globalThis.__TERRENO_STORE__?.dispatch({type, payload})` and returns `{ok, error?}`.
|
|
94
|
+
3. Validate `type` is a non-empty string; reject non-JSON-serializable payloads before evaluate.
|
|
95
|
+
4. Tool description tells agents to use `get_client_state` first, then dispatch, then
|
|
96
|
+
`read_logs` / `get_client_state` again.
|
|
97
|
+
|
|
98
|
+
Requires `registerTerrenoDevStore(store)` in consumer apps (already in bootstrap /
|
|
99
|
+
`create-terreno-app`).
|
|
100
|
+
|
|
101
|
+
### Local storage (D3, D4 phase 2)
|
|
102
|
+
|
|
103
|
+
Dev-only adapter on the app (new **`@terreno/syncdb`** export, wired in bootstrap template and
|
|
104
|
+
`example-frontend`):
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
registerTerrenoDevStorage({
|
|
108
|
+
asyncStorage: true, // default: wire AsyncStorage getAllKeys/getItem/setItem
|
|
109
|
+
secureStoreKeyAllowlist?: string[]; // optional SecureStore keys readable/writable via MCP
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Sets `globalThis.__TERRENO_DEV_STORAGE__` with `{listKeys, get, set}` in `__DEV__` only.
|
|
114
|
+
|
|
115
|
+
MCP tools:
|
|
116
|
+
|
|
117
|
+
- **`read_local_storage`**: `{keys?: string[], prefix?: string}` — returns key/value pairs;
|
|
118
|
+
omit keys to return all keys from `listKeys()` (cap 200 keys, 8 KiB per value in output).
|
|
119
|
+
- **`write_local_storage`**: `{key, value}` — EVAL-gated; rejects keys not allowed (SecureStore
|
|
120
|
+
keys not on allowlist).
|
|
121
|
+
|
|
122
|
+
MMKV and custom stores: apps register via `registerTerrenoDevCommand` or extend the adapter in
|
|
123
|
+
app code (document pattern; no MMKV in framework).
|
|
124
|
+
|
|
125
|
+
### Native logs (D4 phase 3)
|
|
126
|
+
|
|
127
|
+
Extend `read_logs` with source **`native`**:
|
|
128
|
+
|
|
129
|
+
| Platform | Mechanism | When unavailable |
|
|
130
|
+
|----------|-----------|------------------|
|
|
131
|
+
| Android emulator/device | `adb logcat -d -t <N>` subprocess; optional `TERRENO_ADB_SERIAL` | Clear status: `adb` not on PATH or no device |
|
|
132
|
+
| iOS Simulator | `xcrun simctl spawn booted log stream --style compact` with timeout/read cap | No booted sim or Xcode tools missing |
|
|
133
|
+
|
|
134
|
+
Entries use `source: "native"`, plain-text `raw`, parsed `level` when log line matches common
|
|
135
|
+
patterns. **Not** merged into `last_error` unless line matches error heuristics (document
|
|
136
|
+
behavior). Opt-in env **`TERRENO_NATIVE_LOGS=0`** disables subprocess collection (default on).
|
|
137
|
+
|
|
138
|
+
Web and Metro-only sessions: `native` source returns empty with status note.
|
|
139
|
+
|
|
140
|
+
### Dev commands (D4 phase 4)
|
|
141
|
+
|
|
142
|
+
App API ( **`@terreno/syncdb`** ):
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
registerTerrenoDevCommand({
|
|
146
|
+
name: "seedTodos",
|
|
147
|
+
description: "Insert three fixture todos for the signed-in user",
|
|
148
|
+
inputSchema: { type: "object", properties: { count: { type: "number" } } },
|
|
149
|
+
handler: async ({count}) => ({created: count ?? 3}),
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Registry: `globalThis.__TERRENO_DEV_COMMANDS__` — map of name → `{description, inputSchema,
|
|
154
|
+
handler}` (handlers run only inside the app via CDP evaluate, same as dispatch).
|
|
155
|
+
|
|
156
|
+
MCP:
|
|
157
|
+
|
|
158
|
+
- **`list_dev_commands`** — no args; JSON list of `{name, description, inputSchema}`.
|
|
159
|
+
- **`invoke_dev_command`** — `{name, arguments?}`; EVAL-gated; returns JSON-serializable
|
|
160
|
+
result or structured error.
|
|
161
|
+
|
|
162
|
+
Example: register one command in `example-frontend` that toggles a feature flag in AsyncStorage
|
|
163
|
+
to prove the loop.
|
|
164
|
+
|
|
165
|
+
## Notifications
|
|
166
|
+
|
|
167
|
+
None.
|
|
168
|
+
|
|
169
|
+
## UI
|
|
170
|
+
|
|
171
|
+
No user-visible UI. Dev hooks are `__DEV__` only and no-op in production builds.
|
|
172
|
+
|
|
173
|
+
## Phases
|
|
174
|
+
|
|
175
|
+
| Phase | Scope | Depends on |
|
|
176
|
+
|-------|-------|------------|
|
|
177
|
+
| 1. Network via CDP | `metroDevSession` Network domain + `read_logs` `network` source | — |
|
|
178
|
+
| 2. Dispatch + storage | `dispatch_client_action`, storage adapter, read/write tools, bootstrap + example | 1 (shares CDP) |
|
|
179
|
+
| 3. Native logs | `read_logs` `native` source, adb/simctl collectors | — (parallel with 2 after 1) |
|
|
180
|
+
| 4. Dev commands | Registry API, `list_dev_commands`, `invoke_dev_command`, example command | 2 (same evaluate path) |
|
|
181
|
+
| 5. Documentation | Reference, how-to, explainer updates; real captured outputs | 1–4 |
|
|
182
|
+
|
|
183
|
+
## Feature Flags & Migrations
|
|
184
|
+
|
|
185
|
+
- No data migrations.
|
|
186
|
+
- All new app hooks are stripped or no-op when `!__DEV__`.
|
|
187
|
+
- `TERRENO_MCP_EVAL=1` remains opt-in; bootstrap must not enable it by default.
|
|
188
|
+
- New env vars: `TERRENO_NATIVE_LOGS` (default on), `TERRENO_ADB_SERIAL` (optional).
|
|
189
|
+
|
|
190
|
+
## Risks
|
|
191
|
+
|
|
192
|
+
- **CDP load**: Enabling Network increases traffic on the single Hermes session; keep ring caps
|
|
193
|
+
and body truncation strict.
|
|
194
|
+
- **Secret leakage**: Redact auth headers; never log request bodies that look like JWTs (regex
|
|
195
|
+
heuristic in normalizer).
|
|
196
|
+
- **Storage writes**: Mis-invoked `write_local_storage` can corrupt auth tokens; tool description
|
|
197
|
+
and docs warn to prefer `syncdb_action` for synced data.
|
|
198
|
+
- **Native log volume**: Cap lines per `read_logs` call; default `entries` applies per source.
|
|
199
|
+
- **`invoke_dev_command`**: Arbitrary app code — same trust model as `evaluate`; dev-only registry.
|
|
200
|
+
|
|
201
|
+
## Not Included / Future Work
|
|
202
|
+
|
|
203
|
+
- SQLite file browser, notification dispatcher, network throttling, React tree/profiler MCP
|
|
204
|
+
tools, first-party MMKV adapter.
|
|
205
|
+
|
|
206
|
+
## Files to Create / Modify
|
|
207
|
+
|
|
208
|
+
| Area | Files |
|
|
209
|
+
|------|--------|
|
|
210
|
+
| CDP | `mcp-server/src/local/metro/metroDevSession.ts`, tests |
|
|
211
|
+
| Logs | `mcp-server/src/local/tools/readLogs.ts`, tests |
|
|
212
|
+
| Runtime tools | `mcp-server/src/local/tools/runtime.ts` or new `clientDispatch.ts`, `localStorage.ts`, `devCommands.ts` |
|
|
213
|
+
| Registry | `syncdb/src/devMcpRegistry.ts` (or split files), `syncdb/src/index.ts`, tests |
|
|
214
|
+
| Bootstrap | `mcp-server/src/docs/templates/bootstrap/frontend/**`, `create-terreno-app` store bootstrap |
|
|
215
|
+
| Example | `example-frontend/app/_layout.tsx`, optional `devCommands.ts` |
|
|
216
|
+
| Docs | `docs/reference/mcp-server.md`, `docs/how-to/debug-with-mcp.md`, `docs/explanation/ai-development-loop.md`, `docs/reference/environment-variables.md`, `mcp-server/README.md` |
|
|
217
|
+
|
|
218
|
+
## Task List
|
|
219
|
+
|
|
220
|
+
See [`docs/tasks/mcp-agent-debugger-gaps.md`](../tasks/mcp-agent-debugger-gaps.md).
|
|
221
|
+
|
|
222
|
+
## E2E tests
|
|
223
|
+
|
|
224
|
+
| ID | Spec or flow | Layer | Proves | Written in |
|
|
225
|
+
| --- | --- | --- | --- | --- |
|
|
226
|
+
| E1 | `mcp-server/src/local/localServer.e2e.test.ts` (extend) | process | `read_logs` returns at least one `network` entry after CDP mock emits `Network.responseReceived` | Task 1.3 |
|
|
227
|
+
| E2 | `example-frontend/e2e/mcp-network-debug.spec.ts` | browser | A failing API call produces a 403/404 visible via agent workflow documented in how-to (page triggers fetch; test asserts backend log + optional network source when Metro attached in CI) | Task 5.2 |
|
|
228
|
+
|
|
229
|
+
If CI cannot attach Metro CDP reliably, Task 5.2 records `None — Metro CDP not in CI` and E2
|
|
230
|
+
becomes a manual evidence step in Task 5.1 only; unit/E1 coverage remains required.
|
|
231
|
+
|
|
232
|
+
**Pick note (2026-11-06):** E2 browser spec not added — Metro CDP is not reliable in CI. E1
|
|
233
|
+
(`localServer.e2e.test.ts`) plus unit tests satisfy automated proof.
|
|
234
|
+
|
|
235
|
+
## Regression cases
|
|
236
|
+
|
|
237
|
+
None — no hard-to-automate change
|
|
238
|
+
|
|
239
|
+
## User guide
|
|
240
|
+
|
|
241
|
+
None — operator/agent documentation only; no end-user workflow change
|
|
242
|
+
|
|
243
|
+
## Acceptance Criteria
|
|
244
|
+
|
|
245
|
+
- [x] `read_logs` documents and returns entries with `source: "network"` when the app performs
|
|
246
|
+
fetch/XHR over CDP, with auth headers redacted in captured output.
|
|
247
|
+
- [x] `read_logs` documents and returns entries with `source: "native"` on Android (adb) and
|
|
248
|
+
iOS Simulator when tools are available, with clear status when not.
|
|
249
|
+
- [x] `dispatch_client_action` dispatches a known action in `example-frontend` under
|
|
250
|
+
`TERRENO_MCP_EVAL=1` and `get_client_state` reflects the new state.
|
|
251
|
+
- [x] `read_local_storage` / `write_local_storage` round-trip a key in `example-frontend` dev
|
|
252
|
+
build; write refused without `TERRENO_MCP_EVAL=1`.
|
|
253
|
+
- [x] `list_dev_commands` / `invoke_dev_command` list and run the example-frontend registered
|
|
254
|
+
command with EVAL gate on invoke only.
|
|
255
|
+
- [x] Reference and how-to pages list every new tool and source with real output captured in
|
|
256
|
+
Task 5.1.
|
|
257
|
+
- [x] `bun run mcp:build`, affected package tests, and `bun run lint` pass.
|
|
@@ -121,6 +121,8 @@ Hosting platforms scope variables per environment. Vercel has **Production**, **
|
|
|
121
121
|
| `TERRENO_PROJECT_ROOT` | `terreno-mcp-local`, `terreno` CLI | ❌ | nearest Terreno project root | No | tooling |
|
|
122
122
|
| `TERRENO_METRO_URL` | `terreno-mcp-local` | ❌ | frontend script port or `http://localhost:8082` | No | tooling |
|
|
123
123
|
| `TERRENO_MCP_EVAL` | `terreno-mcp-local` | ❌ | disabled | No | tooling |
|
|
124
|
+
| `TERRENO_NATIVE_LOGS` | `terreno-mcp-local` `read_logs` source `native` | ❌ | enabled (`0` disables) | No | tooling |
|
|
125
|
+
| `TERRENO_ADB_SERIAL` | `terreno-mcp-local` native Android logs | ❌ | default `adb` device | No | tooling |
|
|
124
126
|
| `TERRENO_WEB_URL` | `terreno` CLI | ❌ | `http://localhost:8082` | No | tooling |
|
|
125
127
|
| `BUN_CHROME_PATH` | Bun WebView | ❌ | browser auto-discovery | No | tooling |
|
|
126
128
|
| `TERRENO_OPENAPI` | `terreno` CLI | ❌ | — | No | tooling |
|
|
@@ -159,6 +159,18 @@ privately and are not returned. Start the local MCP with
|
|
|
159
159
|
See [Debug a Terreno app with MCP](../how-to/debug-with-mcp.md) for examples and
|
|
160
160
|
safety guidance.
|
|
161
161
|
|
|
162
|
+
### Dev client hooks (`@terreno/syncdb`)
|
|
163
|
+
|
|
164
|
+
| Tool | EVAL | Registration |
|
|
165
|
+
| --- | --- | --- |
|
|
166
|
+
| `read_logs` / `last_error` | no | sources include **network** and **native** |
|
|
167
|
+
| `dispatch_client_action` | yes | `registerTerrenoDevClientDispatch` |
|
|
168
|
+
| `read_local_storage` / `write_local_storage` | write | `registerTerrenoDevStorage` (reads redact auth-like keys) |
|
|
169
|
+
| `list_dev_commands` / `invoke_dev_command` | invoke | `registerTerrenoDevCommand` |
|
|
170
|
+
|
|
171
|
+
Network capture redacts `Authorization`, `Cookie`, `Set-Cookie`, and `Set-Auth-Token`.
|
|
172
|
+
Failed requests include the URL from the matching `requestWillBeSent` `requestId`.
|
|
173
|
+
|
|
162
174
|
### terreno_search_docs
|
|
163
175
|
|
|
164
176
|
BM25-style keyword search over markdown bundled with the MCP server: `docs/resources/*.md`, synced Diátaxis docs under `docs/versioned/`, and per-component excerpts derived from `ui-types-documentation.json`. **Prefer this tool before guessing** Terreno APIs (same posture as Laravel Boost `search-docs`).
|
|
@@ -361,7 +361,10 @@ exist or has no `smoke` script is an error.
|
|
|
361
361
|
## Coverage gates
|
|
362
362
|
|
|
363
363
|
Package CI uses `scripts/check-coverage.ts` (`bun run test:coverage`, default 95%
|
|
364
|
-
functions and lines) as the live gate.
|
|
364
|
+
functions and lines) as the live gate. It runs the suite as concurrent
|
|
365
|
+
`bun test --shard` processes and gates the merged LCOV; a sharded run below the
|
|
366
|
+
threshold is confirmed with one unsplit pass
|
|
367
|
+
([Test sharding](../explanation/test-sharding.md)). Bun 1.4.2+ may exit 1 on bunfig
|
|
365
368
|
`coverageThreshold` before isolated LCOV merges; the script continues when tests
|
|
366
369
|
reported `0 fail` and then enforces 95% on the merged report. The blocks
|
|
367
370
|
coverage pass sets `--max-concurrency=1`, because Bun's default 20-way run
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Task List: MCP Agent Debugger Gaps
|
|
2
|
+
|
|
3
|
+
See: [`docs/implementationPlans/mcp-agent-debugger-gaps.md`](../implementationPlans/mcp-agent-debugger-gaps.md)
|
|
4
|
+
|
|
5
|
+
## Instructions for the implementing agent
|
|
6
|
+
|
|
7
|
+
- Implement in phase order (1 → 5). Phases 2 and 3 may overlap after Phase 1 lands CDP Network
|
|
8
|
+
enablement.
|
|
9
|
+
- Every tool and `read_logs` source documented in `docs/reference/mcp-server.md` must be exercised
|
|
10
|
+
in Task 5.1; paste **real** JSON/text into the docs (no fabricated examples).
|
|
11
|
+
- State-changing tools (`dispatch_client_action`, `write_local_storage`, `invoke_dev_command`)
|
|
12
|
+
must refuse when `TERRENO_MCP_EVAL` is unset, matching `evaluate` / `navigate`.
|
|
13
|
+
- Run `bun run mcp:build`, `bun run compile`, and `bun run lint` before each commit. Run tests
|
|
14
|
+
under `mcp-server/` and any touched package (`syncdb`, `create-terreno-app`).
|
|
15
|
+
- Update docs in the same slice as code (`update-docs` skill conventions).
|
|
16
|
+
|
|
17
|
+
## Phase 1: CDP network capture
|
|
18
|
+
|
|
19
|
+
- [x] **Task 1.1**: Enable Network domain on the Metro CDP session
|
|
20
|
+
- Description: In `metroDevSession.ts`, after the debugger WebSocket attaches, send
|
|
21
|
+
`Network.enable` alongside `Runtime.enable`. Handle `Network.requestWillBeSent`,
|
|
22
|
+
`Network.responseReceived`, and optionally `Network.loadingFailed`. Push normalized entries
|
|
23
|
+
onto a dedicated ring with redaction for sensitive headers and truncated text bodies. Export
|
|
24
|
+
`snapshotNetworkRing()` for `readLogs`. Add unit tests with mocked WebSocket messages.
|
|
25
|
+
- Files: `mcp-server/src/local/metro/metroDevSession.ts`, `mcp-server/src/local/metro/metroDevSession.test.ts`
|
|
26
|
+
- Depends on: —
|
|
27
|
+
- Acceptance: tests cover at least one request/response pair and header redaction; ring respects
|
|
28
|
+
max size.
|
|
29
|
+
|
|
30
|
+
- [x] **Task 1.2**: Wire `network` into `read_logs` and connection status
|
|
31
|
+
- Description: Extend `readLogs.ts` to include source `network` in default merge and in
|
|
32
|
+
`sources` filtering. Include network buffer status in the JSON `connection` block (same
|
|
33
|
+
pattern as `app` / metro events). Ensure `last_error` does not treat HTTP 4xx as error
|
|
34
|
+
unless the captured entry level is `error` (network entries default to `info`).
|
|
35
|
+
- Files: `mcp-server/src/local/tools/readLogs.ts`, tests beside readLogs or metro session
|
|
36
|
+
- Depends on: Task 1.1
|
|
37
|
+
- Acceptance: `read_logs` with `sources: ["network"]` returns entries after a mocked CDP
|
|
38
|
+
response; merged output sorts by timestamp with other sources.
|
|
39
|
+
|
|
40
|
+
- [x] **Task 1.3**: Local server E2E for network source
|
|
41
|
+
- Description: Extend `localServer.e2e.test.ts` (or dedicated test) so the MCP client calls
|
|
42
|
+
`read_logs` and receives a `network`-sourced line from the test harness CDP mock — satisfies
|
|
43
|
+
E1 in the IP.
|
|
44
|
+
- Files: `mcp-server/src/local/localServer.e2e.test.ts`
|
|
45
|
+
- Depends on: Task 1.2
|
|
46
|
+
- Acceptance: E1 passes in CI; `bun run mcp:build` succeeds.
|
|
47
|
+
|
|
48
|
+
## Phase 2: Dispatch and local storage
|
|
49
|
+
|
|
50
|
+
- [x] **Task 2.1**: `registerTerrenoDevStorage` in `@terreno/syncdb`
|
|
51
|
+
- Description: Add dev-only registry on `globalThis.__TERRENO_DEV_STORAGE__` with AsyncStorage
|
|
52
|
+
wiring and optional SecureStore allowlist. Export from `@terreno/syncdb` and
|
|
53
|
+
`@terreno/syncdb/devMcpRegistry` (concrete path per no-barrel rules). Tests with mocked
|
|
54
|
+
AsyncStorage. No-op when not `__DEV__`.
|
|
55
|
+
- Files: `syncdb/src/devMcpRegistry.ts` (or split), `syncdb/src/index.ts`, tests
|
|
56
|
+
- Depends on: —
|
|
57
|
+
- Acceptance: tests prove list/get/set; production guard no-ops.
|
|
58
|
+
|
|
59
|
+
- [x] **Task 2.2**: `registerTerrenoDevCommand` in `@terreno/syncdb`
|
|
60
|
+
- Description: Dev-only map on `globalThis.__TERRENO_DEV_COMMANDS__` with register/list
|
|
61
|
+
metadata and serializable `inputSchema` (JSON Schema subset). Handler invocation only through
|
|
62
|
+
a single `runTerrenoDevCommand(name, args)` used by MCP evaluate path. Tests for register,
|
|
63
|
+
duplicate name error, and invoke.
|
|
64
|
+
- Files: same module as Task 2.1, tests
|
|
65
|
+
- Depends on: Task 2.1 (same file OK)
|
|
66
|
+
- Acceptance: handler runs in test via direct call; registry cleared between tests.
|
|
67
|
+
|
|
68
|
+
- [x] **Task 2.3**: MCP tools `dispatch_client_action`, `read_local_storage`, `write_local_storage`
|
|
69
|
+
- Description: Add tools in `localTools.ts` and handlers under `mcp-server/src/local/tools/`.
|
|
70
|
+
Implement CDP evaluate fallbacks mirroring `get_client_state` / `evaluate`. Gate writes and
|
|
71
|
+
dispatch on `TERRENO_MCP_EVAL=1`. Register schemas and descriptions (when to use vs
|
|
72
|
+
`syncdb_action`).
|
|
73
|
+
- Files: `mcp-server/src/local/localTools.ts`, new tool modules, `localTools.test.ts`
|
|
74
|
+
- Depends on: Task 1.1 (CDP), Task 2.1
|
|
75
|
+
- Acceptance: unit tests for EVAL gate, dispatch success/failure, storage read cap, write
|
|
76
|
+
rejection without EVAL.
|
|
77
|
+
|
|
78
|
+
- [x] **Task 2.4**: Wire bootstrap and example app
|
|
79
|
+
- Description: Call `registerTerrenoDevStorage({asyncStorage: true})` from bootstrap template
|
|
80
|
+
and `example-frontend/app/_layout.tsx` (with `registerTerrenoDevStore` already present).
|
|
81
|
+
Update `create-terreno-app` generated store if it duplicates layout wiring.
|
|
82
|
+
- Files: `mcp-server/src/docs/templates/bootstrap/frontend/app/_layout.template.tsx`,
|
|
83
|
+
`example-frontend/app/_layout.tsx`, `create-terreno-app/src/generate.ts` if needed
|
|
84
|
+
- Depends on: Task 2.1, Task 2.3
|
|
85
|
+
- Acceptance: example app compiles; manual smoke: `read_local_storage` returns persist keys
|
|
86
|
+
after login.
|
|
87
|
+
|
|
88
|
+
## Phase 3: Native platform logs
|
|
89
|
+
|
|
90
|
+
- [x] **Task 3.1**: Native log collectors
|
|
91
|
+
- Description: Add `mcp-server/src/local/native/` (or under `tools/`) with
|
|
92
|
+
`snapshotNativeLogs({entries})` using adb and simctl as in the IP. Respect
|
|
93
|
+
`TERRENO_NATIVE_LOGS=0` and `TERRENO_ADB_SERIAL`. Return structured `{lines, status}`.
|
|
94
|
+
- Files: new module + tests with mocked spawn
|
|
95
|
+
- Depends on: —
|
|
96
|
+
- Acceptance: tests cover happy path, missing adb, missing sim; line cap enforced.
|
|
97
|
+
|
|
98
|
+
- [x] **Task 3.2**: `read_logs` source `native`
|
|
99
|
+
- Description: Integrate Task 3.1 into `readLogs.ts`; document platform requirements in tool
|
|
100
|
+
JSON output when empty.
|
|
101
|
+
- Files: `readLogs.ts`, tests
|
|
102
|
+
- Depends on: Task 3.1
|
|
103
|
+
- Acceptance: `read_logs` with `sources: ["native"]` returns entries or explicit status.
|
|
104
|
+
|
|
105
|
+
## Phase 4: Dev command MCP surface
|
|
106
|
+
|
|
107
|
+
- [x] **Task 4.1**: MCP tools `list_dev_commands` and `invoke_dev_command`
|
|
108
|
+
- Description: List metadata from registry via in-process or CDP read. Invoke via evaluate
|
|
109
|
+
calling `runTerrenoDevCommand` (EVAL-gated). Wire in `localTools.ts`.
|
|
110
|
+
- Files: `mcp-server/src/local/tools/devCommands.ts`, `localTools.ts`, tests
|
|
111
|
+
- Depends on: Task 2.2, Task 2.3
|
|
112
|
+
- Acceptance: list returns registered commands; invoke runs example handler in test mock.
|
|
113
|
+
|
|
114
|
+
- [x] **Task 4.2**: Example dev command
|
|
115
|
+
- Description: Register one command in `example-frontend` (for example clear a dev-only
|
|
116
|
+
AsyncStorage key or flip a debug flag) and document it in how-to as the sample invoke.
|
|
117
|
+
- Files: `example-frontend/**` (small module + `_layout` import)
|
|
118
|
+
- Depends on: Task 4.1, Task 2.4
|
|
119
|
+
- Acceptance: with `TERRENO_MCP_EVAL=1`, invoke succeeds and effect observable via
|
|
120
|
+
`read_local_storage` or `get_client_state`.
|
|
121
|
+
|
|
122
|
+
## Phase 5: Documentation and verification
|
|
123
|
+
|
|
124
|
+
- [x] **Task 5.1**: Capture real tool output
|
|
125
|
+
- Description: Run example backend + frontend + Metro. Record verbatim output for: `read_logs`
|
|
126
|
+
with `network` and `native` (or status when native unavailable), `dispatch_client_action`,
|
|
127
|
+
`read_local_storage`, `write_local_storage`, `list_dev_commands`, `invoke_dev_command`.
|
|
128
|
+
Save transcripts under `/opt/cursor/artifacts/` or `.terreno/pipeline/` for doc authors.
|
|
129
|
+
- Files: none (evidence bundle)
|
|
130
|
+
- Depends on: Tasks 1.3, 3.2, 4.2
|
|
131
|
+
- Acceptance: evidence file paths referenced in PR body; every new surface has at least one
|
|
132
|
+
captured sample.
|
|
133
|
+
|
|
134
|
+
- [x] **Task 5.2**: Update reference and explainer docs
|
|
135
|
+
- Description: Update `docs/reference/mcp-server.md` (tool tables, env vars,
|
|
136
|
+
can/cannot-see), `docs/how-to/debug-with-mcp.md` (symptom → tool table rows for wrong API
|
|
137
|
+
data, auth token in storage, native-only crash), `docs/explanation/ai-development-loop.md`
|
|
138
|
+
(Observe stage + cannot-see adjustments), `docs/reference/environment-variables.md`,
|
|
139
|
+
`mcp-server/README.md`. Use Task 5.1 outputs only.
|
|
140
|
+
- Files: listed above
|
|
141
|
+
- Depends on: Task 5.1
|
|
142
|
+
- Acceptance: grep for new tool names in reference matches `localTools.ts`; loop diagram
|
|
143
|
+
mentions `network` and `native` sources.
|
|
144
|
+
|
|
145
|
+
- [x] **Task 5.3**: Browser E2E or documented CI skip
|
|
146
|
+
- Description: Add `example-frontend/e2e/mcp-network-debug.spec.ts` per E2 if feasible; if Metro
|
|
147
|
+
CDP is not available in CI, document skip in spec comment and IP Activity Log; ensure E1
|
|
148
|
+
still satisfies automated proof.
|
|
149
|
+
- Files: `example-frontend/e2e/mcp-network-debug.spec.ts` (optional)
|
|
150
|
+
- Depends on: Task 5.2
|
|
151
|
+
- Acceptance: E2 runs in `bun run frontend:e2e` or IP records why not.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localTools.d.ts","sourceRoot":"","sources":["../../src/local/localTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"localTools.d.ts","sourceRoot":"","sources":["../../src/local/localTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,8BAA8B,CAAC;AAEvD,OAAO,EAAkB,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAmC/D,eAAO,MAAM,aAAa,EAAE,IAAI,EAoR/B,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,gBAAe,OAAO,UAAuB,KAC5C,CAAC,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC,CAAC,CAmL3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,SAvLxB,MAAM,QACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC,CAqLI,CAAC"}
|
package/dist/local/localTools.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { applicationInfo } from "./tools/applicationInfo.js";
|
|
2
2
|
import { isBrowserAction, useBrowser } from "./tools/browser.js";
|
|
3
|
+
import { dispatchClientAction, invokeDevCommand, listDevCommands, readLocalStorage, writeLocalStorage, } from "./tools/clientDev.js";
|
|
3
4
|
import { databaseQuery } from "./tools/databaseQuery.js";
|
|
4
5
|
import { databaseSchema } from "./tools/databaseSchema.js";
|
|
5
6
|
import { lastError, readLogs } from "./tools/readLogs.js";
|
|
@@ -67,7 +68,7 @@ export const localMcpTools = [
|
|
|
67
68
|
name: "database_query",
|
|
68
69
|
},
|
|
69
70
|
{
|
|
70
|
-
description: "Merged log tail from `.terreno/logs/app.log` (backend JSONL), `.terreno/logs/browser.log`, Metro `/events`,
|
|
71
|
+
description: "Merged log tail from `.terreno/logs/app.log` (backend JSONL), `.terreno/logs/browser.log`, Metro `/events`, Hermes console and CDP **network** via Metro, and optional **native** platform logs (adb/simctl).",
|
|
71
72
|
inputSchema: {
|
|
72
73
|
additionalProperties: false,
|
|
73
74
|
properties: {
|
|
@@ -183,6 +184,62 @@ export const localMcpTools = [
|
|
|
183
184
|
},
|
|
184
185
|
name: "navigate",
|
|
185
186
|
},
|
|
187
|
+
{
|
|
188
|
+
description: "Dispatch a dev client action on `globalThis.__TERRENO_DEV_CLIENT_DISPATCH__` (requires `registerTerrenoDevClientDispatch` from `@terreno/syncdb` in __DEV__). Gated by `TERRENO_MCP_EVAL=1`. Prefer `syncdb_action` for synced collection writes.",
|
|
189
|
+
inputSchema: {
|
|
190
|
+
additionalProperties: false,
|
|
191
|
+
properties: {
|
|
192
|
+
payload: { description: "Optional JSON-serializable action payload" },
|
|
193
|
+
type: { description: "Redux action type string", type: "string" },
|
|
194
|
+
},
|
|
195
|
+
required: ["type"],
|
|
196
|
+
type: "object",
|
|
197
|
+
},
|
|
198
|
+
name: "dispatch_client_action",
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
description: "Read AsyncStorage keys registered through `registerTerrenoDevStorage()` in the running app (via CDP when needed).",
|
|
202
|
+
inputSchema: {
|
|
203
|
+
additionalProperties: false,
|
|
204
|
+
properties: {
|
|
205
|
+
keys: { items: { type: "string" }, type: "array" },
|
|
206
|
+
prefix: { description: "Filter keys starting with this prefix", type: "string" },
|
|
207
|
+
},
|
|
208
|
+
type: "object",
|
|
209
|
+
},
|
|
210
|
+
name: "read_local_storage",
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
description: "Write one AsyncStorage key through the dev storage adapter. Gated by `TERRENO_MCP_EVAL=1`.",
|
|
214
|
+
inputSchema: {
|
|
215
|
+
additionalProperties: false,
|
|
216
|
+
properties: {
|
|
217
|
+
key: { type: "string" },
|
|
218
|
+
value: { type: "string" },
|
|
219
|
+
},
|
|
220
|
+
required: ["key", "value"],
|
|
221
|
+
type: "object",
|
|
222
|
+
},
|
|
223
|
+
name: "write_local_storage",
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
description: "List dev commands registered with `registerTerrenoDevCommand()` in the running app.",
|
|
227
|
+
inputSchema: { additionalProperties: false, properties: {}, type: "object" },
|
|
228
|
+
name: "list_dev_commands",
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
description: "Invoke a dev command by name. Gated by `TERRENO_MCP_EVAL=1`. Use `list_dev_commands` first.",
|
|
232
|
+
inputSchema: {
|
|
233
|
+
additionalProperties: false,
|
|
234
|
+
properties: {
|
|
235
|
+
arguments: { additionalProperties: true, type: "object" },
|
|
236
|
+
name: { type: "string" },
|
|
237
|
+
},
|
|
238
|
+
required: ["name"],
|
|
239
|
+
type: "object",
|
|
240
|
+
},
|
|
241
|
+
name: "invoke_dev_command",
|
|
242
|
+
},
|
|
186
243
|
{
|
|
187
244
|
description: "Drive the web app with Bun 1.4's built-in headless WebView. Open a persistent session, click/type/press/scroll, inspect the rendered page, save screenshots, then close it. Use snapshot and screenshot as proof after exercising a changed flow.",
|
|
188
245
|
inputSchema: {
|
|
@@ -327,6 +384,42 @@ export const createLocalToolCallHandler = (browserRunner = useBrowser) => {
|
|
|
327
384
|
const text = await navigate({ path: typeof args.path === "string" ? args.path : "" });
|
|
328
385
|
return { content: [{ text, type: "text" }] };
|
|
329
386
|
}
|
|
387
|
+
case "dispatch_client_action": {
|
|
388
|
+
const text = await dispatchClientAction({
|
|
389
|
+
payload: args.payload,
|
|
390
|
+
type: typeof args.type === "string" ? args.type : "",
|
|
391
|
+
});
|
|
392
|
+
return { content: [{ text, type: "text" }] };
|
|
393
|
+
}
|
|
394
|
+
case "read_local_storage": {
|
|
395
|
+
const text = await readLocalStorage({
|
|
396
|
+
keys: Array.isArray(args.keys)
|
|
397
|
+
? args.keys.filter((k) => typeof k === "string")
|
|
398
|
+
: undefined,
|
|
399
|
+
prefix: typeof args.prefix === "string" ? args.prefix : undefined,
|
|
400
|
+
});
|
|
401
|
+
return { content: [{ text, type: "text" }] };
|
|
402
|
+
}
|
|
403
|
+
case "write_local_storage": {
|
|
404
|
+
const text = await writeLocalStorage({
|
|
405
|
+
key: typeof args.key === "string" ? args.key : "",
|
|
406
|
+
value: typeof args.value === "string" ? args.value : "",
|
|
407
|
+
});
|
|
408
|
+
return { content: [{ text, type: "text" }] };
|
|
409
|
+
}
|
|
410
|
+
case "list_dev_commands": {
|
|
411
|
+
const text = await listDevCommands();
|
|
412
|
+
return { content: [{ text, type: "text" }] };
|
|
413
|
+
}
|
|
414
|
+
case "invoke_dev_command": {
|
|
415
|
+
const text = await invokeDevCommand({
|
|
416
|
+
arguments: typeof args.arguments === "object" && args.arguments !== null
|
|
417
|
+
? args.arguments
|
|
418
|
+
: undefined,
|
|
419
|
+
name: typeof args.name === "string" ? args.name : "",
|
|
420
|
+
});
|
|
421
|
+
return { content: [{ text, type: "text" }] };
|
|
422
|
+
}
|
|
330
423
|
case "browser": {
|
|
331
424
|
if (!isBrowserAction(args.action)) {
|
|
332
425
|
throw new Error(`Unknown or missing browser action: ${String(args.action)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localTools.js","sourceRoot":"","sources":["../../src/local/localTools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"localTools.js","sourceRoot":"","sources":["../../src/local/localTools.ts"],"names":[],"mappings":"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"}
|