@abitat_reece/host-daemon 0.1.11 → 0.1.13

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.
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- import { appendFile, mkdir } from "node:fs/promises";
2
+ import { appendFile, mkdir, writeFile } from "node:fs/promises";
3
3
  import { homedir } from "node:os";
4
4
  import { dirname, join } from "node:path";
5
5
  const REDACTED = "[redacted]";
@@ -8,6 +8,7 @@ const BEARER_VALUE_PATTERN = /Bearer\s+[-._~+/=A-Za-z0-9]+/gu;
8
8
  const EXPO_PUSH_TOKEN_PATTERN = /(?:Expo|Exponent)PushToken\[[^\]]+\]/gu;
9
9
  const DEFAULT_ACTIVITY_WINDOW_MS = 30_000;
10
10
  const DEFAULT_DEDUPE_WINDOW_MS = 60_000;
11
+ const LOCAL_NOON_HOUR = 12;
11
12
  const ACTIVE_STATUSES = new Set(["awaiting_approval", "queued", "running"]);
12
13
  const LIFECYCLE_EVENTS = new Set([
13
14
  "codex.app_server.bootstrap_connected",
@@ -30,8 +31,6 @@ const TASK_EVENTS = [
30
31
  ];
31
32
  const ACTIVITY_SCOPED_EVENTS = new Set([
32
33
  "codex.thread.messages_flattened",
33
- "codex.thread_read.call",
34
- "codex.thread_read.result",
35
34
  "completion.poll.result",
36
35
  "completion.states.list.result",
37
36
  "completion.states.result",
@@ -39,6 +38,8 @@ const ACTIVITY_SCOPED_EVENTS = new Set([
39
38
  ]);
40
39
  const SUPPRESSED_IDLE_EVENTS = new Set([
41
40
  "codex.app_server.bootstrap",
41
+ "codex.thread_read.call",
42
+ "codex.thread_read.result",
42
43
  "completion.poll.start",
43
44
  "conversations.list.result",
44
45
  "mobile_request.authenticated",
@@ -62,6 +63,7 @@ export function createMobileControlDiagnosticsLogger(options = {}) {
62
63
  let flushQueued = false;
63
64
  let pendingLines = "";
64
65
  let pendingWrite = Promise.resolve();
66
+ let dailyClearTimer = null;
65
67
  function flushPendingLines() {
66
68
  flushQueued = false;
67
69
  const lines = pendingLines;
@@ -80,6 +82,31 @@ export function createMobileControlDiagnosticsLogger(options = {}) {
80
82
  .catch(() => undefined);
81
83
  return pendingWrite;
82
84
  }
85
+ function clearLogFile() {
86
+ flushQueued = false;
87
+ pendingLines = "";
88
+ recentWrites.clear();
89
+ activeUntilMs = 0;
90
+ pendingWrite = pendingWrite
91
+ .then(async () => {
92
+ if (!directoryReady) {
93
+ await mkdir(dirname(logPath), { recursive: true });
94
+ directoryReady = true;
95
+ }
96
+ await writeFile(logPath, "", "utf8");
97
+ })
98
+ .catch(() => undefined);
99
+ return pendingWrite;
100
+ }
101
+ function scheduleDailyClear() {
102
+ if (options.dailyClear === false) {
103
+ return;
104
+ }
105
+ dailyClearTimer = setTimeout(() => {
106
+ void clearLogFile().finally(scheduleDailyClear);
107
+ }, millisecondsUntilNextLocalNoon(now()));
108
+ dailyClearTimer.unref?.();
109
+ }
83
110
  function scheduleFlush() {
84
111
  if (flushQueued) {
85
112
  return;
@@ -87,7 +114,17 @@ export function createMobileControlDiagnosticsLogger(options = {}) {
87
114
  flushQueued = true;
88
115
  queueMicrotask(flushPendingLines);
89
116
  }
117
+ scheduleDailyClear();
90
118
  return {
119
+ clear() {
120
+ return clearLogFile();
121
+ },
122
+ close() {
123
+ if (dailyClearTimer) {
124
+ clearTimeout(dailyClearTimer);
125
+ dailyClearTimer = null;
126
+ }
127
+ },
91
128
  logPath,
92
129
  flush() {
93
130
  return flushPendingLines();
@@ -108,8 +145,8 @@ export function createMobileControlDiagnosticsLogger(options = {}) {
108
145
  return;
109
146
  }
110
147
  const redactedFields = redactDiagnosticsFields(fields);
111
- if (shouldDedupeDiagnosticsFileEntry(level, event)) {
112
- const dedupeKey = JSON.stringify([level, event, stableDiagnosticsValue(redactedFields)]);
148
+ const dedupeKey = diagnosticsDedupeKey(level, event, redactedFields);
149
+ if (dedupeKey) {
113
150
  const lastWrittenAt = recentWrites.get(dedupeKey) ?? 0;
114
151
  if (timestampMs - lastWrittenAt < dedupeWindowMs) {
115
152
  return;
@@ -130,6 +167,29 @@ export function createMobileControlDiagnosticsLogger(options = {}) {
130
167
  }
131
168
  };
132
169
  }
170
+ export function createConsoleMirroredDiagnosticsLogger(base, target = console) {
171
+ return {
172
+ clear: () => base.clear?.() ?? Promise.resolve(),
173
+ close: () => base.close?.(),
174
+ flush: () => base.flush?.() ?? Promise.resolve(),
175
+ log(level, event, fields = {}) {
176
+ const result = base.log(level, event, fields);
177
+ if (shouldMirrorDiagnosticsToConsole(level, event, fields)) {
178
+ const line = formatConsoleDiagnosticsLine(event, redactDiagnosticsFields(fields));
179
+ if (level === "error") {
180
+ target.error(line);
181
+ }
182
+ else if (level === "warn") {
183
+ target.warn(line);
184
+ }
185
+ else {
186
+ target.log(line);
187
+ }
188
+ }
189
+ return result;
190
+ }
191
+ };
192
+ }
133
193
  export function logDiagnostics(logger, level, event, fields = {}) {
134
194
  try {
135
195
  const result = logger?.log(level, event, fields);
@@ -141,6 +201,14 @@ export function logDiagnostics(logger, level, event, fields = {}) {
141
201
  // Diagnostics must never change the local-control request path.
142
202
  }
143
203
  }
204
+ export function millisecondsUntilNextLocalNoon(now) {
205
+ const nextNoon = new Date(now);
206
+ nextNoon.setHours(LOCAL_NOON_HOUR, 0, 0, 0);
207
+ if (now.getTime() >= nextNoon.getTime()) {
208
+ nextNoon.setDate(nextNoon.getDate() + 1);
209
+ }
210
+ return nextNoon.getTime() - now.getTime();
211
+ }
144
212
  export function promptDiagnostics(prompt) {
145
213
  return {
146
214
  promptHash: createHash("sha256").update(prompt).digest("hex").slice(0, 16),
@@ -193,6 +261,9 @@ function shouldWriteDiagnosticsFileEntry(level, event, fields, isActive) {
193
261
  if (LIFECYCLE_EVENTS.has(event) || isTaskEvent(event)) {
194
262
  return true;
195
263
  }
264
+ if (isRelayRequestLifecycleEvent(event)) {
265
+ return isRelayTaskRequest(fields);
266
+ }
196
267
  if (ACTIVITY_SCOPED_EVENTS.has(event)) {
197
268
  return isActive;
198
269
  }
@@ -201,11 +272,23 @@ function shouldWriteDiagnosticsFileEntry(level, event, fields, isActive) {
201
272
  }
202
273
  return true;
203
274
  }
204
- function shouldDedupeDiagnosticsFileEntry(level, event) {
205
- return (level === "info" &&
275
+ function diagnosticsDedupeKey(level, event, fields) {
276
+ if (event === "codex.thread_item.unknown") {
277
+ return JSON.stringify([
278
+ level,
279
+ event,
280
+ fields.conversationId,
281
+ fields.threadId,
282
+ fields.codexItemType
283
+ ]);
284
+ }
285
+ if (level === "info" &&
206
286
  (ACTIVITY_SCOPED_EVENTS.has(event) ||
207
287
  event === "push.send.skipped" ||
208
- event === "relay.reconnect.scheduled"));
288
+ event === "relay.reconnect.scheduled")) {
289
+ return JSON.stringify([level, event, stableDiagnosticsValue(fields)]);
290
+ }
291
+ return null;
209
292
  }
210
293
  function isTaskEvent(event) {
211
294
  return TASK_EVENTS.some((taskEvent) => taskEvent.endsWith(".") ? event.startsWith(taskEvent) : event === taskEvent);
@@ -217,6 +300,56 @@ function positiveNumberField(fields, key) {
217
300
  const value = fields[key];
218
301
  return typeof value === "number" && Number.isFinite(value) && value > 0;
219
302
  }
303
+ function isRelayRequestLifecycleEvent(event) {
304
+ return (event === "relay.request.received" ||
305
+ event === "relay.request.forward" ||
306
+ event === "relay.request.result");
307
+ }
308
+ function isRelayTaskRequest(fields) {
309
+ const method = String(fields.method ?? "GET").toUpperCase();
310
+ const path = String(fields.path ?? "");
311
+ if (method !== "GET") {
312
+ return true;
313
+ }
314
+ return path === "/pairing/consume" || path === "/api/mobile/pairing/complete";
315
+ }
316
+ function shouldMirrorDiagnosticsToConsole(level, event, fields) {
317
+ if (event === "codex.thread_item.unknown" ||
318
+ event === "codex.turn.completed_without_visible_assistant") {
319
+ return false;
320
+ }
321
+ if (event.startsWith("conversation.start.") ||
322
+ event.startsWith("conversation.continue.") ||
323
+ event.startsWith("pairing.") ||
324
+ event.startsWith("relay.connect.") ||
325
+ event === "relay.heartbeat.stale" ||
326
+ event === "relay.request.failure") {
327
+ return true;
328
+ }
329
+ if (event === "relay.request.result") {
330
+ return String(fields.method ?? "GET").toUpperCase() !== "GET";
331
+ }
332
+ return level === "error" || level === "warn";
333
+ }
334
+ function formatConsoleDiagnosticsLine(event, fields) {
335
+ const keys = [
336
+ "method",
337
+ "path",
338
+ "status",
339
+ "error",
340
+ "relayId",
341
+ "requestId",
342
+ "conversationId",
343
+ "projectId",
344
+ "transport",
345
+ "reason",
346
+ "delayMs"
347
+ ];
348
+ const values = keys.flatMap((key) => Object.prototype.hasOwnProperty.call(fields, key) && fields[key] !== undefined
349
+ ? [`${key}=${String(fields[key])}`]
350
+ : []);
351
+ return `[mobile-control] ${event}${values.length > 0 ? ` ${values.join(" ")}` : ""}`;
352
+ }
220
353
  function pruneRecentDiagnosticsWrites(recentWrites, timestampMs, dedupeWindowMs) {
221
354
  if (recentWrites.size < 500) {
222
355
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics-log.js","sourceRoot":"","sources":["../../src/local-control/diagnostics-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics-log.js","sourceRoot":"","sources":["../../src/local-control/diagnostics-log.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ interface RelayStore {
11
11
  getRelayKeyMaterials(relayId: string): Promise<RelayKeyMaterial[]>;
12
12
  }
13
13
  interface HandleRelayRequestInput {
14
+ diagnostics?: MobileControlDiagnosticsLogger;
14
15
  envelope: RelayEncryptedEnvelope;
15
16
  fetch?: typeof fetch;
16
17
  localEndpoint: string;
@@ -1 +1 @@
1
- {"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/local-control/relay-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EACL,sBAAsB,EAKtB,KAAK,sBAAsB,EAE5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,8BAA8B,EACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC5B;AAED,UAAU,UAAU;IAClB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CACpE;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACvD,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAeD,UAAU,6BAA6B;IACrC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,IAAI,CAAC;IAClE,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC7F,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACjG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,mCA8BtE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB;;EAkH5D;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,6BAA6B;;;;EA2DlF;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,iBAmChF"}
1
+ {"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/local-control/relay-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EACL,sBAAsB,EAKtB,KAAK,sBAAsB,EAE5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,8BAA8B,EACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC5B;AAED,UAAU,UAAU;IAClB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CACpE;AAED,UAAU,uBAAuB;IAC/B,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACvD,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAeD,UAAU,6BAA6B;IACrC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,IAAI,CAAC;IAClE,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC7F,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACjG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,mCA6DtE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB;;EAmH5D;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,6BAA6B;;;;EA2DlF;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,iBAgDhF"}
@@ -13,19 +13,44 @@ export async function handleRelayRequest(input) {
13
13
  if (!request) {
14
14
  continue;
15
15
  }
16
- validateRelayEnvelopeFreshness({ createdAt: input.envelope.createdAt });
17
- replayCache.assertFresh(request.requestId);
18
- const localResponse = await forwardToLocalApi({
19
- fetch: input.fetch ?? fetch,
20
- localEndpoint: input.localEndpoint,
21
- request
22
- });
23
- return encryptRelayEnvelope(key, {
24
- body: localResponse.body,
25
- headers: localResponse.headers,
26
- requestId: request.requestId,
27
- status: localResponse.status
28
- });
16
+ const requestDiagnostics = {
17
+ keyId: keyMaterial.id,
18
+ keyKind: keyMaterial.kind,
19
+ method: request.method,
20
+ path: request.path,
21
+ relayId: input.relayId,
22
+ requestId: request.requestId
23
+ };
24
+ try {
25
+ validateRelayEnvelopeFreshness({ createdAt: input.envelope.createdAt });
26
+ replayCache.assertFresh(request.requestId);
27
+ logDiagnostics(input.diagnostics, "info", "relay.request.received", requestDiagnostics);
28
+ logDiagnostics(input.diagnostics, "info", "relay.request.forward", requestDiagnostics);
29
+ const localResponse = await forwardToLocalApi({
30
+ fetch: input.fetch ?? fetch,
31
+ localEndpoint: input.localEndpoint,
32
+ request
33
+ });
34
+ logDiagnostics(input.diagnostics, "info", "relay.request.result", {
35
+ ...requestDiagnostics,
36
+ status: localResponse.status
37
+ });
38
+ return encryptRelayEnvelope(key, {
39
+ body: localResponse.body,
40
+ headers: localResponse.headers,
41
+ requestId: request.requestId,
42
+ status: localResponse.status
43
+ });
44
+ }
45
+ catch (error) {
46
+ logDiagnostics(input.diagnostics, statusCode(error) >= 500 ? "error" : "warn", "relay.request.failure", {
47
+ ...requestDiagnostics,
48
+ error: errorDiagnostics(error),
49
+ status: statusCode(error)
50
+ });
51
+ markRelayDiagnosticsLogged(error);
52
+ throw error;
53
+ }
29
54
  }
30
55
  throw new Error("Relay request could not be decrypted by this Mac");
31
56
  }
@@ -78,6 +103,7 @@ export function startRelayClient(input) {
78
103
  return;
79
104
  }
80
105
  void handleRelaySocketMessage(String(data), {
106
+ diagnostics: input.diagnostics,
81
107
  fetch: input.fetch,
82
108
  localEndpoint: input.localEndpoint,
83
109
  relayId: input.relayId,
@@ -204,6 +230,14 @@ export async function handleRelaySocketMessage(raw, input) {
204
230
  envelope = await handleRelayRequest({ ...input, envelope: message.envelope });
205
231
  }
206
232
  catch (error) {
233
+ if (!hasRelayDiagnosticsLogged(error)) {
234
+ logDiagnostics(input.diagnostics, statusCode(error) >= 500 ? "error" : "warn", "relay.request.failure", {
235
+ error: errorDiagnostics(error),
236
+ relayId: input.relayId,
237
+ requestId: message.requestId,
238
+ status: statusCode(error)
239
+ });
240
+ }
207
241
  send({
208
242
  error: errorMessage(error),
209
243
  requestId: message.requestId,
@@ -219,14 +253,28 @@ export async function handleRelaySocketMessage(raw, input) {
219
253
  });
220
254
  }
221
255
  async function forwardToLocalApi(input) {
222
- const response = await input.fetch(new URL(input.request.path, input.localEndpoint), {
223
- body: input.request.body === undefined ? undefined : JSON.stringify(input.request.body),
224
- headers: input.request.headers,
225
- method: input.request.method
226
- });
256
+ let response;
257
+ try {
258
+ response = await input.fetch(new URL(input.request.path, input.localEndpoint), {
259
+ body: input.request.body === undefined ? undefined : JSON.stringify(input.request.body),
260
+ headers: input.request.headers,
261
+ method: input.request.method
262
+ });
263
+ }
264
+ catch (error) {
265
+ throw Object.assign(new Error(`Unable to reach local API for ${input.request.method} ${input.request.path}: ${errorMessage(error)}`), { statusCode: 502 });
266
+ }
227
267
  const text = await response.text();
228
268
  const contentType = response.headers.get("content-type") ?? "";
229
- const body = contentType.includes("application/json") && text ? JSON.parse(text) : text;
269
+ let body = text;
270
+ if (contentType.includes("application/json") && text) {
271
+ try {
272
+ body = JSON.parse(text);
273
+ }
274
+ catch (error) {
275
+ throw Object.assign(new Error(`Invalid JSON response from local API for ${input.request.method} ${input.request.path}: ${errorMessage(error)}`), { statusCode: 502 });
276
+ }
277
+ }
230
278
  return {
231
279
  body,
232
280
  headers: {
@@ -291,4 +339,14 @@ function statusCode(error) {
291
339
  function errorMessage(error) {
292
340
  return error instanceof Error ? error.message : String(error);
293
341
  }
342
+ function markRelayDiagnosticsLogged(error) {
343
+ if (error && typeof error === "object") {
344
+ Object.assign(error, { relayDiagnosticsLogged: true });
345
+ }
346
+ }
347
+ function hasRelayDiagnosticsLogged(error) {
348
+ return (Boolean(error) &&
349
+ typeof error === "object" &&
350
+ error.relayDiagnosticsLogged === true);
351
+ }
294
352
  //# sourceMappingURL=relay-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/local-control/relay-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/local-control/relay-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/local-control/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/local-control/server.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { createServer } from "node:http";
2
- import { mkdir, writeFile } from "node:fs/promises";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import { randomBytes } from "node:crypto";
4
4
  import { dirname, join } from "node:path";
5
5
  import { defaultLocalAttachmentDirectory } from "./state.js";
6
- import { attachmentDiagnostics, errorDiagnostics, logDiagnostics, promptDiagnostics } from "./diagnostics-log.js";
6
+ import { attachmentDiagnostics, errorDiagnostics, logDiagnostics, mobileControlDiagnosticsLogPath, promptDiagnostics } from "./diagnostics-log.js";
7
7
  const LOCAL_WORKSPACE_ID = "local";
8
+ const MAX_MOBILE_DIAGNOSTICS_LOG_BYTES = 3 * 1024 * 1024;
8
9
  export async function startLocalControlServer(input) {
9
10
  const identity = await input.store.getMacIdentity();
10
11
  const diagnostics = input.diagnostics;
@@ -105,6 +106,12 @@ export async function startLocalControlServer(input) {
105
106
  });
106
107
  return;
107
108
  }
109
+ if (method === "GET" && path === "/api/mobile/diagnostics/log") {
110
+ const log = await mobileDiagnosticsLogDownload(diagnostics);
111
+ await clearMobileDiagnosticsLog(diagnostics);
112
+ writeJson(response, 200, { log });
113
+ return;
114
+ }
108
115
  if (method === "GET" && path === "/api/mobile/projects") {
109
116
  const projects = await input.codex.listProjects();
110
117
  logDiagnostics(diagnostics, "info", "projects.list.result", {
@@ -614,6 +621,51 @@ function numberQuery(value) {
614
621
  const parsed = Number(value);
615
622
  return Number.isFinite(parsed) ? parsed : undefined;
616
623
  }
624
+ async function mobileDiagnosticsLogDownload(diagnostics) {
625
+ await diagnostics?.flush?.();
626
+ const logPath = mobileControlDiagnosticsLogPath();
627
+ let bytes;
628
+ try {
629
+ bytes = await readFile(logPath);
630
+ }
631
+ catch (error) {
632
+ if (error.code !== "ENOENT") {
633
+ throw error;
634
+ }
635
+ bytes = Buffer.from([
636
+ "No Abitat mobile-control diagnostics log exists yet.",
637
+ `Expected path: ${logPath}`,
638
+ "Start or use iPhone control on this Mac, then request the log again.",
639
+ ""
640
+ ].join("\n"), "utf8");
641
+ }
642
+ const truncated = bytes.byteLength > MAX_MOBILE_DIAGNOSTICS_LOG_BYTES;
643
+ const body = truncated
644
+ ? Buffer.concat([
645
+ Buffer.from(`[Abitat diagnostics log truncated to last ${MAX_MOBILE_DIAGNOSTICS_LOG_BYTES} bytes]\n`, "utf8"),
646
+ bytes.subarray(bytes.byteLength - MAX_MOBILE_DIAGNOSTICS_LOG_BYTES)
647
+ ])
648
+ : bytes;
649
+ return {
650
+ dataBase64: body.toString("base64"),
651
+ mimeType: "text/plain",
652
+ name: mobileDiagnosticsLogFileName(),
653
+ size: body.byteLength,
654
+ truncated
655
+ };
656
+ }
657
+ function mobileDiagnosticsLogFileName(date = new Date()) {
658
+ const compact = date.toISOString().replace(/\D/gu, "").slice(0, 14);
659
+ return `abitat-mobile-control-${compact.slice(0, 8)}-${compact.slice(8)}.log`;
660
+ }
661
+ async function clearMobileDiagnosticsLog(diagnostics) {
662
+ if (diagnostics?.clear) {
663
+ await diagnostics.clear();
664
+ return;
665
+ }
666
+ await mkdir(dirname(mobileControlDiagnosticsLogPath()), { recursive: true });
667
+ await writeFile(mobileControlDiagnosticsLogPath(), "", "utf8");
668
+ }
617
669
  function messageCounts(messages) {
618
670
  const counts = {
619
671
  assistant: 0,