@gravitylabsllc/porthole 0.2.1 → 0.2.2
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/dist/device.js +56 -1
- package/dist/device.js.map +1 -1
- package/dist/eventKinds.js +115 -0
- package/dist/eventKinds.js.map +1 -0
- package/dist/index.js +65 -17
- package/dist/index.js.map +1 -1
- package/dist/moment.js +14 -0
- package/dist/moment.js.map +1 -1
- package/dist/timeline.js +10 -1
- package/dist/timeline.js.map +1 -1
- package/dist/trace.js +69 -0
- package/dist/trace.js.map +1 -1
- package/package.json +1 -1
- package/src/device.ts +58 -0
- package/src/eventKinds.ts +142 -0
- package/src/index.ts +76 -19
- package/src/moment.ts +24 -0
- package/src/timeline.ts +10 -1
- package/src/trace.ts +121 -0
- package/ui/dist/assets/index-ChVI8dOL.js +70 -0
- package/ui/dist/index.html +1 -1
- package/ui/dist/assets/index-h7VNB9Fl.js +0 -70
package/dist/trace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravitylabsllc/porthole",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "MCP server and live timeline for Porthole: query a running Android app for recomposition counts, frame timing, main-thread stalls, navigation, state, in-flight work and logs, and capture and query Perfetto system traces.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/device.ts
CHANGED
|
@@ -175,6 +175,36 @@ export class DeviceClient extends EventEmitter {
|
|
|
175
175
|
*/
|
|
176
176
|
protocolMismatch: string | null = null;
|
|
177
177
|
|
|
178
|
+
/**
|
|
179
|
+
* GRA-197: null unless `hello.packageName` disagrees with
|
|
180
|
+
* [applicationId] — set synchronously in `connect()`'s hello handler,
|
|
181
|
+
* right beside [protocolMismatch] and for the same reasons: computed the
|
|
182
|
+
* instant `hello` lands rather than deferred to whichever tool asks
|
|
183
|
+
* later, so a reader is never looking at a stale answer for a previous
|
|
184
|
+
* connection, and cleared wherever `protocolMismatch` is (the "close"
|
|
185
|
+
* handler below), since both are facts about the `hello` that produced
|
|
186
|
+
* them and neither survives it.
|
|
187
|
+
*
|
|
188
|
+
* Unlike `protocolMismatch`, this is a refusal to trust *identity*, not
|
|
189
|
+
* *wire format* — the app answering the port is a real, working Porthole
|
|
190
|
+
* app, just not the one this server was configured for (another Porthole
|
|
191
|
+
* app on the device holding the same port is the concrete incident this
|
|
192
|
+
* guards, GRA-197's own report). The founder's ruling is "warn loudly, do
|
|
193
|
+
* not refuse": this never blocks a request or a connection, it only
|
|
194
|
+
* surfaces the fact everywhere a caller might otherwise be misled by an
|
|
195
|
+
* unqualified "connected".
|
|
196
|
+
*/
|
|
197
|
+
packageMismatch: string | null = null;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* GRA-197: what this server was started for, from `PORTHOLE_APPLICATION_ID`
|
|
201
|
+
* — undefined when unset, which means "no expectation configured" and
|
|
202
|
+
* disables the check entirely (see the hello handler): a server pointed at
|
|
203
|
+
* an app on purpose, with no plugin-generated `.mcp.json` in the loop at
|
|
204
|
+
* all, must see no behaviour change from this ticket.
|
|
205
|
+
*/
|
|
206
|
+
private readonly applicationId: string | undefined;
|
|
207
|
+
|
|
178
208
|
/**
|
|
179
209
|
* GRA-53 `#session-writer`: null (persistence off) unless a sessions root
|
|
180
210
|
* is given. `undefined`/omitted is the default on purpose — every existing
|
|
@@ -190,9 +220,11 @@ export class DeviceClient extends EventEmitter {
|
|
|
190
220
|
private readonly host: string,
|
|
191
221
|
readonly port: number,
|
|
192
222
|
sessionsRoot?: string,
|
|
223
|
+
applicationId?: string,
|
|
193
224
|
) {
|
|
194
225
|
super();
|
|
195
226
|
this.sessions = sessionsRoot ? new SessionWriter(sessionsRoot) : null;
|
|
227
|
+
this.applicationId = applicationId;
|
|
196
228
|
}
|
|
197
229
|
|
|
198
230
|
start(): void {
|
|
@@ -271,6 +303,20 @@ export class DeviceClient extends EventEmitter {
|
|
|
271
303
|
`${PROTOCOL_VERSION}. Update the app's Porthole runtime dependency to a version that ` +
|
|
272
304
|
`speaks protocol ${PROTOCOL_VERSION}, or pin the npm package this MCP server runs from ` +
|
|
273
305
|
`(in .mcp.json) to the version that matches the app.`;
|
|
306
|
+
// GRA-197: same placement and the same reasoning as protocolMismatch
|
|
307
|
+
// just above — computed the instant hello lands, synchronously, so
|
|
308
|
+
// it sits between `this.hello = hello` and the emit below without
|
|
309
|
+
// reopening GRA-191's race. `this.applicationId` unset means no
|
|
310
|
+
// expectation was configured at all (an ordinary `porthole { }`
|
|
311
|
+
// with no applicationId, or a server started with no
|
|
312
|
+
// PORTHOLE_APPLICATION_ID), which must be indistinguishable from
|
|
313
|
+
// today's behaviour rather than read as "expected no package".
|
|
314
|
+
this.packageMismatch =
|
|
315
|
+
this.applicationId === undefined || hello.packageName === this.applicationId
|
|
316
|
+
? null
|
|
317
|
+
: `Connected to \`${hello.packageName}\`, but this MCP server was configured for ` +
|
|
318
|
+
`\`${this.applicationId}\` (PORTHOLE_APPLICATION_ID). Another Porthole app on the ` +
|
|
319
|
+
`device is holding the port — stop it, or give this app its own port.`;
|
|
274
320
|
// GRA-191: `this.hello = hello` above and this emit must stay
|
|
275
321
|
// exactly this close together, with nothing between them that can
|
|
276
322
|
// yield to the event loop. GRA-53 used to put
|
|
@@ -351,6 +397,8 @@ export class DeviceClient extends EventEmitter {
|
|
|
351
397
|
// gone (a new connection will get its own, possibly no longer
|
|
352
398
|
// mismatched) there is nothing left for this to still be true about.
|
|
353
399
|
this.protocolMismatch = null;
|
|
400
|
+
// GRA-197: same reasoning, same place.
|
|
401
|
+
this.packageMismatch = null;
|
|
354
402
|
this.failPending("device disconnected");
|
|
355
403
|
this.setState("disconnected");
|
|
356
404
|
this.scheduleReconnect();
|
|
@@ -555,6 +603,16 @@ export class DeviceClient extends EventEmitter {
|
|
|
555
603
|
" 2. the adb bridge is up: 'adb forward tcp:PORT tcp:PORT', which",
|
|
556
604
|
" 'porthole ui' and './gradlew portholeConnect' both do for you",
|
|
557
605
|
` 3. nothing else on this machine is holding ${this.port}`,
|
|
606
|
+
// GRA-197: the two cases that incident's own report named — a wrong
|
|
607
|
+
// app answering is only reachable from here for a device that is not
|
|
608
|
+
// even accepting connections on the port; a device that is, but
|
|
609
|
+
// answers as the wrong app, is packageMismatch's territory above,
|
|
610
|
+
// reached while "connected", not from this message at all.
|
|
611
|
+
" 4. another Porthole app on the device isn't already holding this port — stop it, or " +
|
|
612
|
+
"give this app its own port with 'porthole { port.set(...) }'",
|
|
613
|
+
" 5. there's only one adb transport for this device — wireless plus wired both attached " +
|
|
614
|
+
"makes 'adb forward' ambiguous and it fails silently for this port; pin one with " +
|
|
615
|
+
"'porthole { deviceSerial.set(...) }'",
|
|
558
616
|
]
|
|
559
617
|
.filter(Boolean)
|
|
560
618
|
.join("\n");
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Copyright 2026 Gravity Labs
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Every value `EventFrame.event` can carry — the runtime's own
|
|
6
|
+
* `EventKinds` object (`runtime/src/main/kotlin/live/gravitylabs/porthole/
|
|
7
|
+
* protocol/Protocol.kt`), mirrored on this side of the wire.
|
|
8
|
+
*
|
|
9
|
+
* This is the one list `timeline`'s `kinds` filter can be asked about (see
|
|
10
|
+
* `index.ts`'s `kinds` zod param, generated from this array so the
|
|
11
|
+
* description text cannot list a kind the filter does not actually accept,
|
|
12
|
+
* or omit one it does) and the one `eventKinds.test.ts` compares against
|
|
13
|
+
* Protocol.kt's own source, so a kind added on only one side of the wire
|
|
14
|
+
* fails a test instead of one side silently not recognising it. Order here
|
|
15
|
+
* is the order the description groups them in: the nine kinds a UI lane
|
|
16
|
+
* already showed before GRA-200, then the rest.
|
|
17
|
+
*
|
|
18
|
+
* Deliberately does NOT include `DeviceCollector`'s own sub-kinds
|
|
19
|
+
* (`profile`, `trimMemory`, `foreground`, …) — those travel inside a
|
|
20
|
+
* `device` event's `data.kind` field, never as `EventFrame.event` itself,
|
|
21
|
+
* so `kinds: ["trimMemory"]` would silently match nothing. `trace.ts`'s
|
|
22
|
+
* `resolveProfile`/`findingsOf` read them by their own literal strings,
|
|
23
|
+
* matching Protocol.kt's separate `DeviceEventKinds` object.
|
|
24
|
+
*/
|
|
25
|
+
export const EVENT_KINDS = [
|
|
26
|
+
"recompose",
|
|
27
|
+
"state_write",
|
|
28
|
+
"frame",
|
|
29
|
+
"nav",
|
|
30
|
+
"http_start",
|
|
31
|
+
"http_end",
|
|
32
|
+
"db_start",
|
|
33
|
+
"db_end",
|
|
34
|
+
"log",
|
|
35
|
+
"log_append",
|
|
36
|
+
"mark",
|
|
37
|
+
"device",
|
|
38
|
+
"exit",
|
|
39
|
+
"work_start",
|
|
40
|
+
"work_end",
|
|
41
|
+
"blocked",
|
|
42
|
+
"gc",
|
|
43
|
+
"memory",
|
|
44
|
+
] as const;
|
|
45
|
+
|
|
46
|
+
export type EventKind = (typeof EVENT_KINDS)[number];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* One clause of `timeline`'s `kinds` description: which of [EVENT_KINDS]
|
|
50
|
+
* this covers, and one sentence saying where each is narrated — GRA-200's
|
|
51
|
+
* own requirement, so an agent reading the tool's schema does not have to
|
|
52
|
+
* call `timeline` once per kind to discover that `exit` is better read from
|
|
53
|
+
* `porthole_status` or that `device` is mostly raw but its startup profile
|
|
54
|
+
* feeds two other tools' numbers.
|
|
55
|
+
*/
|
|
56
|
+
export interface KindGroup {
|
|
57
|
+
kinds: readonly EventKind[];
|
|
58
|
+
/** One clause, no leading capital, no trailing period — joined below. */
|
|
59
|
+
narrated: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const KIND_GROUPS: readonly KindGroup[] = [
|
|
63
|
+
{
|
|
64
|
+
kinds: ["exit"],
|
|
65
|
+
narrated:
|
|
66
|
+
"narrated in `porthole_status` (its `exits` list and `exitTrace` RPC); `findings`' own " +
|
|
67
|
+
"`alsoInWindow` block also inventories every exit in the window it examined, including the " +
|
|
68
|
+
"ones that did not cross a severity worth a finding on their own",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
kinds: ["memory", "gc"],
|
|
72
|
+
narrated:
|
|
73
|
+
"raw here; `gc` becomes a `findings` entry only when a collection blocks the app, and a " +
|
|
74
|
+
"device's `trimMemory` sub-kind (below) becomes one whenever the system actually asks for " +
|
|
75
|
+
"memory back — `memory`'s own periodic samples never do, and stay raw everywhere but " +
|
|
76
|
+
"`findings`' `alsoInWindow` count",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
kinds: ["device"],
|
|
80
|
+
narrated:
|
|
81
|
+
"raw here; its one-time startup profile sub-kind is what `findings` and `frames` read their " +
|
|
82
|
+
"frame budget from, and its other sub-kinds cover lifecycle changes (`foreground`/" +
|
|
83
|
+
"`background`), rotation, theme, font scale, power and network — see `DeviceEventKinds` in " +
|
|
84
|
+
"Protocol.kt for the full set",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
kinds: [
|
|
88
|
+
"recompose",
|
|
89
|
+
"state_write",
|
|
90
|
+
"frame",
|
|
91
|
+
"nav",
|
|
92
|
+
"http_start",
|
|
93
|
+
"http_end",
|
|
94
|
+
"db_start",
|
|
95
|
+
"db_end",
|
|
96
|
+
"log",
|
|
97
|
+
],
|
|
98
|
+
narrated: "raw here, as before",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
kinds: ["log_append", "mark", "work_start", "work_end", "blocked"],
|
|
102
|
+
narrated: "raw here",
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Refuses to describe a set of groups that silently drops or invents a
|
|
108
|
+
* kind — a clause removed from `groups` without removing its kind from
|
|
109
|
+
* `kinds` (or the reverse) throws here rather than shipping a description
|
|
110
|
+
* that quietly stopped matching the filter it documents. Exported (rather
|
|
111
|
+
* than inlined into [timelineKindsDescription]) so a test can hand it a
|
|
112
|
+
* synthetic, deliberately-broken group list without having to break the
|
|
113
|
+
* real [KIND_GROUPS]/[EVENT_KINDS] to prove the check works at all.
|
|
114
|
+
*/
|
|
115
|
+
export function validateKindCoverage<K extends string>(
|
|
116
|
+
groups: readonly { kinds: readonly K[] }[],
|
|
117
|
+
kinds: readonly K[],
|
|
118
|
+
): void {
|
|
119
|
+
const covered = groups.flatMap((g) => g.kinds);
|
|
120
|
+
const coveredSet = new Set(covered);
|
|
121
|
+
const missing = kinds.filter((k) => !coveredSet.has(k));
|
|
122
|
+
if (missing.length > 0) {
|
|
123
|
+
throw new Error(`timelineKindsDescription() does not narrate: ${missing.join(", ")}`);
|
|
124
|
+
}
|
|
125
|
+
if (covered.length !== coveredSet.size) {
|
|
126
|
+
throw new Error("timelineKindsDescription() lists the same kind in more than one group.");
|
|
127
|
+
}
|
|
128
|
+
const known = new Set(kinds);
|
|
129
|
+
const unknown = covered.filter((k) => !known.has(k));
|
|
130
|
+
if (unknown.length > 0) {
|
|
131
|
+
throw new Error(`timelineKindsDescription() narrates a kind EVENT_KINDS does not have: ${unknown.join(", ")}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Builds `timeline`'s `kinds` param description from [KIND_GROUPS] — see [validateKindCoverage]. */
|
|
136
|
+
export function timelineKindsDescription(): string {
|
|
137
|
+
validateKindCoverage(KIND_GROUPS, EVENT_KINDS);
|
|
138
|
+
const clauses = KIND_GROUPS.map(
|
|
139
|
+
(g) => `${g.kinds.map((k) => `\`${k}\``).join("/")} — ${g.narrated}`,
|
|
140
|
+
);
|
|
141
|
+
return "Filter by event kind. " + clauses.join("; ") + ".";
|
|
142
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -24,7 +24,17 @@ import { existsSync, mkdirSync, statSync } from "node:fs";
|
|
|
24
24
|
import { spawnSync } from "node:child_process";
|
|
25
25
|
import { join, resolve } from "node:path";
|
|
26
26
|
import { pathToFileURL } from "node:url";
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
alsoInWindowOf,
|
|
29
|
+
alsoInWindowSentence,
|
|
30
|
+
buildTrace,
|
|
31
|
+
describeBudget,
|
|
32
|
+
num,
|
|
33
|
+
resolveProfile,
|
|
34
|
+
str,
|
|
35
|
+
type Finding,
|
|
36
|
+
} from "./trace.js";
|
|
37
|
+
import { timelineKindsDescription } from "./eventKinds.js";
|
|
28
38
|
import {
|
|
29
39
|
UNKNOWN_DEVICE_ID,
|
|
30
40
|
clippedMsOf,
|
|
@@ -43,6 +53,12 @@ const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url),
|
|
|
43
53
|
const HOST = process.env.PORTHOLE_HOST ?? "127.0.0.1";
|
|
44
54
|
const PORT = Number(process.env.PORTHOLE_PORT ?? 8677);
|
|
45
55
|
const UI_PORT = Number(process.env.PORTHOLE_UI_PORT ?? 8678);
|
|
56
|
+
/**
|
|
57
|
+
* GRA-197: the plugin's own knowledge of which app this server is for, when
|
|
58
|
+
* it wrote one — absent (not empty) when it did not, which is what tells
|
|
59
|
+
* `DeviceClient` to skip the check entirely rather than compare against "".
|
|
60
|
+
*/
|
|
61
|
+
const APPLICATION_ID = process.env.PORTHOLE_APPLICATION_ID || undefined;
|
|
46
62
|
|
|
47
63
|
/**
|
|
48
64
|
* GRA-89: how much longer than the plan's own recording duration
|
|
@@ -215,7 +231,9 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
215
231
|
// persistence; a test that injects its own `options.device` (the harness
|
|
216
232
|
// in `testing/harness.ts`, or a hand-built fake) is unaffected — this
|
|
217
233
|
// branch only runs when nothing was injected.
|
|
218
|
-
const device =
|
|
234
|
+
const device =
|
|
235
|
+
options.device ??
|
|
236
|
+
new DeviceClient(HOST, PORT, sessionsRootPath(resolveProjectRoot().directory), APPLICATION_ID);
|
|
219
237
|
const timeline = options.timeline ?? new TimelineServer(device, UI_PORT);
|
|
220
238
|
const adbEnv = options.adbEnv;
|
|
221
239
|
const adbBinary = options.adbBinary;
|
|
@@ -867,7 +885,16 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
867
885
|
const firstEver = pendingFirstEverNote;
|
|
868
886
|
pendingFirstEverNote = null;
|
|
869
887
|
const narrated = firstEver ? `${firstEver}${summary}` : summary;
|
|
870
|
-
|
|
888
|
+
// GRA-197: "warn loudly, do not refuse" means every successful result,
|
|
889
|
+
// from every tool, leads with the package mismatch while one stands —
|
|
890
|
+
// here, in the one place all of them pass through, so no tool can
|
|
891
|
+
// forget it (the same reason the GRA-55 banner lives here and not in
|
|
892
|
+
// each handler). A summary that already *is* the mismatch text —
|
|
893
|
+
// porthole_status's, and findings' empty-ring branch — is left alone
|
|
894
|
+
// rather than said twice.
|
|
895
|
+
const mismatch = device.packageMismatch;
|
|
896
|
+
const led = mismatch && !summary.startsWith(mismatch) ? `⚠ ${mismatch}\n${narrated}` : narrated;
|
|
897
|
+
const withBanner = banner ? `${banner}\n${led}` : led;
|
|
871
898
|
const withSinceLast =
|
|
872
899
|
payload !== null && typeof payload === "object" && !Array.isArray(payload)
|
|
873
900
|
? { ...(payload as Record<string, unknown>), sinceLast }
|
|
@@ -1028,6 +1055,9 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1028
1055
|
// reading structured data (not just the text) can branch on it
|
|
1029
1056
|
// without string-matching `summary`.
|
|
1030
1057
|
protocolMismatch: device.protocolMismatch,
|
|
1058
|
+
// GRA-197: same shape, beside it — null unless PORTHOLE_APPLICATION_ID
|
|
1059
|
+
// was configured and disagrees with the connected hello.
|
|
1060
|
+
packageMismatch: device.packageMismatch,
|
|
1031
1061
|
sdkDir: sdkDir.directory,
|
|
1032
1062
|
sdkDirSource: sdkDir.source,
|
|
1033
1063
|
projectRoot: projectRoot.directory,
|
|
@@ -1036,17 +1066,21 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1036
1066
|
exits,
|
|
1037
1067
|
exitTrace: exitTraceResult,
|
|
1038
1068
|
};
|
|
1039
|
-
// GRA-96: a
|
|
1069
|
+
// GRA-96/GRA-197: a mismatch takes priority over the normal "here is
|
|
1040
1070
|
// what's connected" sentence — hello did land and the socket is fine,
|
|
1041
|
-
// but the one thing worth saying is that
|
|
1042
|
-
//
|
|
1043
|
-
//
|
|
1044
|
-
//
|
|
1045
|
-
//
|
|
1071
|
+
// but the one thing worth saying is that something disagrees, not the
|
|
1072
|
+
// collector list a mismatched build may not even be able to report
|
|
1073
|
+
// honestly. packageMismatch leads: talking to the wrong app entirely
|
|
1074
|
+
// is the more fundamental problem, and its protocol is not this
|
|
1075
|
+
// server's concern until it is talking to the right one. This is what
|
|
1076
|
+
// turns AC1's "specific, actionable message... not a generic failure"
|
|
1077
|
+
// into the actual summary text an agent reads, rather than a field it
|
|
1078
|
+
// has to know to check.
|
|
1046
1079
|
const summary =
|
|
1047
1080
|
notice +
|
|
1048
1081
|
deathNotice +
|
|
1049
1082
|
(pending ??
|
|
1083
|
+
device.packageMismatch ??
|
|
1050
1084
|
device.protocolMismatch ??
|
|
1051
1085
|
`Connected to ${device.hello!.packageName} on ${device.hello!.device} ` +
|
|
1052
1086
|
`(API ${device.hello!.sdkInt}). Collectors: ${device.hello!.collectors.join(", ")}.`);
|
|
@@ -1075,7 +1109,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1075
1109
|
"there being nothing there.\n\n" +
|
|
1076
1110
|
"An empty list means nothing crossed a threshold in this window. It does not mean the app " +
|
|
1077
1111
|
"is fast, and it does not mean the window contained the problem — check `window` against " +
|
|
1078
|
-
"the moment you care about before concluding anything from silence
|
|
1112
|
+
"the moment you care about before concluding anything from silence.\n\n" +
|
|
1113
|
+
"`alsoInWindow` (present only when there is something to say) is an inventory, not a second " +
|
|
1114
|
+
"opinion: process exits, device events, memory samples, GC and memory-trim signals that " +
|
|
1115
|
+
"were in the window whether or not they crossed a threshold worth a finding — an exit " +
|
|
1116
|
+
"already covered by a finding above still appears here too, because a finding is a " +
|
|
1117
|
+
"judgement and this is a count. Absent means genuinely nothing to add, not that this tool " +
|
|
1118
|
+
"declined to look.",
|
|
1079
1119
|
inputSchema: windowShape,
|
|
1080
1120
|
annotations: { readOnlyHint: true },
|
|
1081
1121
|
},
|
|
@@ -1118,6 +1158,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1118
1158
|
if (pending !== null) {
|
|
1119
1159
|
return ok(notice + pending, { window: null, findings: [], connected, exitedProcess });
|
|
1120
1160
|
}
|
|
1161
|
+
// GRA-197: the same "leads with it" rule porthole_status's summary
|
|
1162
|
+
// follows, on an otherwise unrelated tool — a mismatched app is worth
|
|
1163
|
+
// saying here too, not only from porthole_status, since this is
|
|
1164
|
+
// often the first tool an agent calls.
|
|
1165
|
+
if (device.packageMismatch) {
|
|
1166
|
+
return ok(notice + device.packageMismatch, { window: null, findings: [], connected, exitedProcess });
|
|
1167
|
+
}
|
|
1121
1168
|
const summary = `Connected to ${device.hello!.packageName}, nothing buffered yet. Ask again in a moment.`;
|
|
1122
1169
|
return ok(notice + summary, { window: null, findings: [], connected, exitedProcess });
|
|
1123
1170
|
}
|
|
@@ -1234,6 +1281,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1234
1281
|
|
|
1235
1282
|
const findings = trace.findings.map(withFollowUp);
|
|
1236
1283
|
|
|
1284
|
+
// GRA-200: built from the same windowed `events` `trace` itself came
|
|
1285
|
+
// from, so this can never name a different window than the findings
|
|
1286
|
+
// beside it. See alsoInWindowOf's own comment in trace.ts for why an
|
|
1287
|
+
// exit that already produced a finding still appears here too.
|
|
1288
|
+
const also = alsoInWindowOf(events);
|
|
1289
|
+
const alsoSentence = alsoInWindowSentence(also);
|
|
1290
|
+
|
|
1237
1291
|
// GRA-55: classified against whatever the *previous* findings call
|
|
1238
1292
|
// left in the watermark, before this call's own digest overwrites it
|
|
1239
1293
|
// — order matters here, `recordDigest` below must come after reading
|
|
@@ -1270,6 +1324,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1270
1324
|
findings: classified.findings,
|
|
1271
1325
|
connected,
|
|
1272
1326
|
exitedProcess,
|
|
1327
|
+
// GRA-200: absent, not `{}` or all-undefined, when there is nothing
|
|
1328
|
+
// to list — see alsoInWindowOf's own comment for why this is what
|
|
1329
|
+
// keeps the common case's payload byte-identical to before this
|
|
1330
|
+
// ticket. The spread (not `alsoInWindow: also`) is what actually
|
|
1331
|
+
// omits the key when `also` is `undefined`, rather than shipping a
|
|
1332
|
+
// key whose value happens to be `undefined`.
|
|
1333
|
+
...(also ? { alsoInWindow: also } : {}),
|
|
1273
1334
|
};
|
|
1274
1335
|
|
|
1275
1336
|
const shortfall = clipped.start + clipped.end;
|
|
@@ -1287,7 +1348,8 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1287
1348
|
"it is a question the buffer cannot answer."
|
|
1288
1349
|
: `Nothing crossed a threshold in the ${Math.round(span.ms / 1000)}s examined ` +
|
|
1289
1350
|
`(${events.length} events). That is not the same as the app being fast.${missing}`) +
|
|
1290
|
-
classificationNote
|
|
1351
|
+
classificationNote +
|
|
1352
|
+
(alsoSentence ? ` ${alsoSentence}` : ""),
|
|
1291
1353
|
payload,
|
|
1292
1354
|
);
|
|
1293
1355
|
}
|
|
@@ -1304,7 +1366,8 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
1304
1366
|
return ok(
|
|
1305
1367
|
notice +
|
|
1306
1368
|
`${findings.length} finding(s) over ${Math.round(span.ms / 1000)}s (${tally}). ` +
|
|
1307
|
-
`Worst: ${worst.title} [${worst.confidence}].${missing}${classificationNote}
|
|
1369
|
+
`Worst: ${worst.title} [${worst.confidence}].${missing}${classificationNote}` +
|
|
1370
|
+
(alsoSentence ? ` ${alsoSentence}` : ""),
|
|
1308
1371
|
payload,
|
|
1309
1372
|
);
|
|
1310
1373
|
},
|
|
@@ -2376,13 +2439,7 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
|
|
|
2376
2439
|
"what the app was doing while a call was open.",
|
|
2377
2440
|
inputSchema: {
|
|
2378
2441
|
...windowShape,
|
|
2379
|
-
kinds: z
|
|
2380
|
-
.array(z.string())
|
|
2381
|
-
.optional()
|
|
2382
|
-
.describe(
|
|
2383
|
-
"Filter by event name: recompose, state_write, frame, nav, http_start, http_end, " +
|
|
2384
|
-
"db_start, db_end, log.",
|
|
2385
|
-
),
|
|
2442
|
+
kinds: z.array(z.string()).optional().describe(timelineKindsDescription()),
|
|
2386
2443
|
limit: z
|
|
2387
2444
|
.number()
|
|
2388
2445
|
.int()
|
package/src/moment.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2026 Gravity Labs
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import type { DeviceEvent } from "./device.js";
|
|
4
|
+
import { alsoInWindowOf, alsoInWindowSentence, type AlsoInWindow } from "./trace.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* What the app was doing at one moment.
|
|
@@ -48,6 +49,15 @@ export interface Moment {
|
|
|
48
49
|
stalls: Array<{ durationMs: number; top: string; at: number }>;
|
|
49
50
|
frames: { missed: number; worstMs: number };
|
|
50
51
|
logs: Array<{ level: string; tag: string; message: string; at: number }>;
|
|
52
|
+
/**
|
|
53
|
+
* GRA-200: the same inventory `findings`' payload carries, scoped to this
|
|
54
|
+
* moment's own `window` rather than to whatever span `findings` was asked
|
|
55
|
+
* about — so a process exit that lands inside the few seconds either side
|
|
56
|
+
* of `at` is visible here even when nobody has called `findings` for this
|
|
57
|
+
* window at all. Absent, not empty, when there is nothing to add — see
|
|
58
|
+
* `alsoInWindowOf`'s own comment in trace.ts.
|
|
59
|
+
*/
|
|
60
|
+
alsoInWindow?: AlsoInWindow;
|
|
51
61
|
}
|
|
52
62
|
|
|
53
63
|
/**
|
|
@@ -232,6 +242,12 @@ export function momentOf(events: DeviceEvent[], at: number, spreadMs = 2_000): M
|
|
|
232
242
|
|
|
233
243
|
const frames = events.filter((e) => e.event === "frame" && within(e));
|
|
234
244
|
|
|
245
|
+
// GRA-200: scoped to this moment's own window, not the whole buffer — the
|
|
246
|
+
// same function `findings` calls, on a different slice of the same
|
|
247
|
+
// `events`, which is what keeps the two tools' wording identical for the
|
|
248
|
+
// same underlying fact instead of two hand-written descriptions of it.
|
|
249
|
+
const alsoInWindow = alsoInWindowOf(events.filter(within));
|
|
250
|
+
|
|
235
251
|
return {
|
|
236
252
|
at,
|
|
237
253
|
window: { from, to },
|
|
@@ -268,6 +284,7 @@ export function momentOf(events: DeviceEvent[], at: number, spreadMs = 2_000): M
|
|
|
268
284
|
message: str(e.data.message).slice(0, 300),
|
|
269
285
|
at: e.t,
|
|
270
286
|
})),
|
|
287
|
+
...(alsoInWindow ? { alsoInWindow } : {}),
|
|
271
288
|
};
|
|
272
289
|
}
|
|
273
290
|
|
|
@@ -302,5 +319,12 @@ export function describe(moment: Moment): string {
|
|
|
302
319
|
parts.push(`State written just before: ${keys.join(", ")}.`);
|
|
303
320
|
}
|
|
304
321
|
|
|
322
|
+
// GRA-200: the same sentence findings' own summary appends for the same
|
|
323
|
+
// underlying fact (see alsoInWindowOf/alsoInWindowSentence in trace.ts) —
|
|
324
|
+
// most often an exit that falls inside this moment's window, which
|
|
325
|
+
// otherwise had no way to surface here at all.
|
|
326
|
+
const alsoSentence = alsoInWindowSentence(moment.alsoInWindow);
|
|
327
|
+
if (alsoSentence) parts.push(alsoSentence);
|
|
328
|
+
|
|
305
329
|
return parts.join(" ");
|
|
306
330
|
}
|
package/src/timeline.ts
CHANGED
|
@@ -309,7 +309,11 @@ export class TimelineServer {
|
|
|
309
309
|
this.startedAt = startedAt;
|
|
310
310
|
this.events = [];
|
|
311
311
|
}
|
|
312
|
-
|
|
312
|
+
// GRA-197: read synchronously, same call stack as the "hello" emit
|
|
313
|
+
// itself (see device.ts's own comment on packageMismatch) — this
|
|
314
|
+
// listener runs before anything else can observe a later hello, so
|
|
315
|
+
// there is no staleness window to worry about here either.
|
|
316
|
+
this.broadcast({ type: "hello", hello, packageMismatch: this.device.packageMismatch });
|
|
313
317
|
void this.backfill();
|
|
314
318
|
});
|
|
315
319
|
}
|
|
@@ -936,6 +940,11 @@ export class TimelineServer {
|
|
|
936
940
|
type: "init",
|
|
937
941
|
state: this.device.state,
|
|
938
942
|
hello: this.device.hello,
|
|
943
|
+
// GRA-197: so a tab opened after the mismatch was established
|
|
944
|
+
// (not only one open live through the hello that caused it) still
|
|
945
|
+
// sees it — the same reason `state`/`hello` themselves are sent
|
|
946
|
+
// here rather than left for the client to infer from silence.
|
|
947
|
+
packageMismatch: this.device.packageMismatch,
|
|
939
948
|
events: this.events,
|
|
940
949
|
}),
|
|
941
950
|
);
|