@rubytech/create-sitedesk-code 0.1.510 → 0.1.512

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.
Files changed (30) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/package.json +3 -0
  3. package/payload/platform/plugins/admin/skills/deck-pages/SKILL.md +2 -2
  4. package/payload/platform/plugins/admin/skills/skill-builder/SKILL.md +1 -1
  5. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +10 -0
  6. package/payload/platform/plugins/business-assistant/skills/e-sign/SKILL.md +15 -34
  7. package/payload/platform/plugins/business-assistant/skills/e-sign/stamp.mjs +269 -0
  8. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/references/profile.md +5 -5
  9. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +2 -2
  10. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +1 -1
  11. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +1 -1
  12. package/payload/platform/scripts/check-no-esm-require.mjs +6 -0
  13. package/payload/platform/scripts/logs-read.sh +117 -36
  14. package/payload/platform/scripts/logs-read.test.sh +234 -0
  15. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  16. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +13 -0
  17. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  18. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +7 -3
  19. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -1
  20. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +17 -11
  21. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -1
  22. package/payload/server/maxy-edge.js +6 -2
  23. package/payload/server/public/assets/admin-6QN-k3zQ.js +1 -0
  24. package/payload/server/public/assets/admin-6QN-k3zQ.js.br +0 -0
  25. package/payload/server/public/assets/admin-6QN-k3zQ.js.gz +0 -0
  26. package/payload/server/public/index.html +1 -1
  27. package/payload/server/server.js +777 -349
  28. package/payload/server/public/assets/admin-DGr1HuPg.js +0 -1
  29. package/payload/server/public/assets/admin-DGr1HuPg.js.br +0 -0
  30. package/payload/server/public/assets/admin-DGr1HuPg.js.gz +0 -0
@@ -158,7 +158,14 @@ VALID_TYPES="agent-stream, system, session, error, heartbeat, public, server, mc
158
158
  # checkpoint emitted across edge.log + server.log: edge-side inbound/outcome,
159
159
  # admin-auth gate verdict, chat-route handler entry. Absence of a row at any
160
160
  # checkpoint localises the failure to one stage of the ingress pipeline.
161
- CHAT_ATTEMPT_GREP='\[edge-admin\] inbound|\[edge-admin\] outcome|\[admin-auth\] outcome|\[chat-route\] entered'
161
+ #
162
+ # The `ts=` group is optional and sits between the tag and the keyword because
163
+ # that is where Task 2024 put it: the shipped line is
164
+ # `[edge-admin] ts=<ISO> inbound …` (edge.ts:182, 193; edge-admin.ts:48, 52).
165
+ # Requiring tag and keyword adjacent matched zero lines and reported the
166
+ # absence as an edge-side silence (Task 2032). Optional rather than required,
167
+ # so the pattern is not pinned to one format version a second time.
168
+ CHAT_ATTEMPT_GREP='\[edge-admin\] (ts=[^ ]+ )?(inbound|outcome)|\[admin-auth\] outcome|\[chat-route\] entered'
162
169
 
163
170
  # Authoritative sessionKey character set.
164
171
  # Writer-side emits `sk_<hex16>` filenames; the underscore must
@@ -194,8 +201,8 @@ keeps the legacy per-account stream-log read.
194
201
  Per-session stream-log types (agent-stream, system, session, error, public)
195
202
  require sessionKey; platform-scoped types (server, vnc, heartbeat, mem) ignore the id.
196
203
  chat-attempts is --tail-only — it aggregates the four ingress checkpoints
197
- ([edge-admin] inbound, [admin-auth] outcome, [chat-route] entered,
198
- [edge-admin] outcome) into one timeline.
204
+ ([edge-admin] ts=<ISO> inbound, [admin-auth] outcome, [chat-route] entered,
205
+ [edge-admin] ts=<ISO> outcome) into one timeline.
199
206
  EOF
200
207
  exit 2
201
208
  }
@@ -218,16 +225,22 @@ validate_type() {
218
225
  # came from the edge process (edge.log) or maxy-ui (server.log). On a
219
226
  # successful chat POST the timeline reads:
220
227
  #
221
- # [edge-admin] inbound method=POST path=/api/admin/chat token=present (edge.log)
222
- # [admin-auth] outcome=accept … (server.log)
223
- # [chat-route] entered route=admin method=POST cacheKey=… … (server.log)
224
- # [edge-admin] outcome method=POST path=/api/admin/chat status=200 … (edge.log)
228
+ # [edge-admin] ts=… inbound method=POST path=/api/admin/chat … (edge.log)
229
+ # [admin-auth] outcome=accept … (server.log)
230
+ # [chat-route] entered route=admin method=POST cacheKey=… … (server.log)
231
+ # [edge-admin] ts=… outcome method=POST path=… status=200 … (edge.log)
225
232
  #
226
233
  # Any missing row in that sequence is itself diagnostic. Three-strike rule:
227
234
  # zero edge inbound = browser/network problem; inbound present + admin-auth
228
235
  # missing = handler unreachable; admin-auth=reject = auth failure; entered
229
236
  # missing after accept = Hono routing regression; outcome missing = upstream
230
237
  # proxy crash.
238
+ #
239
+ # The two log families are stamped differently and neither is negotiable here:
240
+ # edge.log self-stamps `ts=` inside the line (Task 2024), server.log is stamped
241
+ # at the line start by server-init-line-stamper.cjs. Reading only the leading
242
+ # 19 characters yielded `[edge-admin] ts=202` on every edge line, so the window
243
+ # filter and the sort both have to read whichever form the line carries.
231
244
  chat_attempts_mode() {
232
245
  local minutes="${1:-5}"
233
246
  if ! [[ "$minutes" =~ ^[0-9]+$ ]]; then
@@ -236,57 +249,125 @@ chat_attempts_mode() {
236
249
  fi
237
250
 
238
251
  local EDGE_LOG="$CONFIG_DIR/logs/edge.log"
239
- local since_epoch
240
- since_epoch=$(date -u -v-"${minutes}"M +%s 2>/dev/null || date -u -d "${minutes} minutes ago" +%s 2>/dev/null || true)
241
- if [[ -z "$since_epoch" ]]; then
252
+ local since_iso
253
+ since_iso=$(date -u -v-"${minutes}"M +%Y-%m-%dT%H:%M:%S 2>/dev/null || date -u -d "${minutes} minutes ago" +%Y-%m-%dT%H:%M:%S 2>/dev/null || true)
254
+ if [[ -z "$since_iso" ]]; then
242
255
  echo "Error: could not compute time window — neither BSD nor GNU date available" >&2
243
256
  exit 2
244
257
  fi
245
258
 
246
- # Each log line carries an ISO-8601 timestamp at the head (server.log via
247
- # pino, edge.log via console both written line-buffered with leading
248
- # `YYYY-MM-DDTHH:MM:SS` then either `.sssZ` or a space). awk filters to
249
- # the time window; sed prefixes the source filename so the timeline
250
- # remains attributable; sort -k1 keeps chronological order.
259
+ # Emits `<ts>\t<source>\t<line>` into $tmp, where <ts> is the line's own
260
+ # timestamp to millisecond precision, or `-` when the line carries none.
261
+ # ISO-8601 UTC strings compare lexicographically in time order, which is why
262
+ # the window test is a string comparison and not a `date` subprocess per
263
+ # matched line, which is what the previous form spawned on both dialects.
264
+ #
265
+ # Milliseconds are load-bearing, not decoration. Both families emit
266
+ # `toISOString()`, and the whole ingress quartet normally completes inside
267
+ # one wall-clock second, so a key truncated to seconds collides on all four
268
+ # rows and the sort falls back to file-append order — which puts both edge
269
+ # rows first and reproduces the clustering this mode was fixed to stop.
270
+ #
271
+ # An undated line reaches $tmp with `-` as its key. It cannot be placed in
272
+ # the window or in the sequence, so it is listed separately below rather
273
+ # than merged into the timeline. It is never discarded: a matched line
274
+ # dropped in silence is the exact fault this mode was fixed for.
251
275
  local filter_awk='
252
- BEGIN { since = '"$since_epoch"' }
253
276
  {
254
- ts = substr($0, 1, 19)
255
- gsub("T", " ", ts)
256
- cmd = "date -u -j -f \"%Y-%m-%d %H:%M:%S\" \"" ts "\" +%s 2>/dev/null || date -u -d \"" ts "\" +%s 2>/dev/null"
257
- cmd | getline epoch
258
- close(cmd)
259
- if (epoch >= since) print
277
+ ts = "-"
278
+ if (match($0, /ts=[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/)) {
279
+ ts = substr($0, RSTART + 3, 23)
280
+ } else if ($0 ~ /^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/) {
281
+ ts = substr($0, 1, 23)
282
+ }
283
+ if (ts == "-" || ts >= since) print ts "\t" src "\t" $0
260
284
  }
261
285
  '
262
286
 
263
- local hits=0
264
287
  local tmp
265
288
  tmp=$(mktemp -t chat-attempts.XXXXXX)
266
289
  trap 'rm -f "$tmp"' EXIT
267
290
 
268
291
  if [[ -f "$EDGE_LOG" ]]; then
269
- grep -E "$CHAT_ATTEMPT_GREP" "$EDGE_LOG" 2>/dev/null | awk "$filter_awk" | sed 's|^|edge.log |' >> "$tmp" || true
292
+ grep -E "$CHAT_ATTEMPT_GREP" "$EDGE_LOG" 2>/dev/null \
293
+ | awk -v since="$since_iso" -v src="edge.log" "$filter_awk" >> "$tmp" || true
270
294
  fi
271
295
  if [[ -f "$SERVER_LOG" ]]; then
272
- grep -E "$CHAT_ATTEMPT_GREP" "$SERVER_LOG" 2>/dev/null | awk "$filter_awk" | sed 's|^|server.log|' >> "$tmp" || true
296
+ grep -E "$CHAT_ATTEMPT_GREP" "$SERVER_LOG" 2>/dev/null \
297
+ | awk -v since="$since_iso" -v src="server.log" "$filter_awk" >> "$tmp" || true
273
298
  fi
274
299
 
275
- hits=$(wc -l < "$tmp" | tr -d ' ')
276
- if [[ "$hits" -eq 0 ]]; then
277
- echo "# chat-attempts (last ${minutes} min) no events" >&2
278
- echo "-- trailer: type=chat-attempts window_min=${minutes} matches=0 searched=edge.log,server.log" >&2
300
+ # Per-source tallies. One aggregate count is what made the miss silent:
301
+ # `edge=0` folded into the same "no events" line as a genuinely quiet window,
302
+ # so a reader that could not see the edge read as an edge that said nothing.
303
+ local counts edge_hits edge_undated server_hits server_undated hits undated
304
+ counts=$(awk -F'\t' '
305
+ { if ($1 == "-") u[$2]++; else m[$2]++ }
306
+ END { printf "%d %d %d %d", m["edge.log"], u["edge.log"], m["server.log"], u["server.log"] }
307
+ ' "$tmp")
308
+ read -r edge_hits edge_undated server_hits server_undated <<< "$counts"
309
+ hits=$((edge_hits + server_hits))
310
+ undated=$((edge_undated + server_undated))
311
+
312
+ local edge_state="present"
313
+ [[ -f "$EDGE_LOG" ]] || edge_state="absent:$EDGE_LOG"
314
+ local server_state="present"
315
+ [[ -f "$SERVER_LOG" ]] || server_state="absent:$SERVER_LOG"
316
+
317
+ local trailer="-- trailer: type=chat-attempts window_min=${minutes} matches=${hits} edge=${edge_hits} server=${server_hits} undated=${undated} searched=edge.log,server.log"
318
+
319
+ # Nothing matched at all, dated or not. Only here can the mode say anything
320
+ # about whether a request arrived, and even here only if it could read the
321
+ # edge log — a file it never opened proves nothing about the traffic.
322
+ if [[ "$hits" -eq 0 && "$undated" -eq 0 ]]; then
323
+ echo "# chat-attempts (last ${minutes} min) — no ingress checkpoints matched" >&2
324
+ echo "# edge.log=${edge_state} server.log=${server_state}" >&2
325
+ if [[ -f "$EDGE_LOG" ]]; then
326
+ # What a genuine zero means, now that the patterns track the shipped
327
+ # lines: the first checkpoint is the edge accepting a connection, so its
328
+ # absence places the fault before this device. Saying it here is the
329
+ # point of the fix — the reader used to produce this same output when it
330
+ # simply could not see the edge lines.
331
+ echo "# The edge patterns track the shipped \`[edge-admin] ts=<ISO> …\` shape, so this" >&2
332
+ echo "# is an absence in the logs, not in the reader: no request reached the edge in" >&2
333
+ echo "# this window. Look at the browser, DNS, or the tunnel — the admin server is" >&2
334
+ echo "# never in the path of a request that never arrived." >&2
335
+ else
336
+ echo "# edge.log is not on disk, so the edge checkpoints could not be read at all." >&2
337
+ echo "# This says nothing about whether a request arrived. Check that the edge service" >&2
338
+ echo "# is running and writing to the path above before drawing any conclusion." >&2
339
+ fi
340
+ echo "$trailer" >&2
279
341
  exit 1
280
342
  fi
281
343
 
282
- echo "# chat-attempts (last ${minutes} min — chronological)"
283
- echo ""
284
- # Sort by the timestamp column that begins immediately after the source-file
285
- # prefix. Prefix is "edge.log " or "server.log" both 10 chars before the
286
- # timestamp begins, so column 11 onward is the chronological key.
287
- sort -k1.11 "$tmp"
344
+ if [[ "$hits" -gt 0 ]]; then
345
+ echo "# chat-attempts (last ${minutes} min — chronological)"
346
+ echo ""
347
+ # Sort on the extracted timestamp column, then drop it. The previous form
348
+ # sorted on a fixed byte offset that only landed on a timestamp for
349
+ # server.log lines, so edge rows clustered rather than interleaved. `-s`
350
+ # keeps edge before server on an exact millisecond tie; LC_ALL=C makes the
351
+ # byte ordering deterministic across locales.
352
+ LC_ALL=C sort -t$'\t' -k1,1 -s "$tmp" \
353
+ | awk -F'\t' '$1 != "-" { printf "%-10s %s\n", $2, $3 }'
354
+ else
355
+ echo "# chat-attempts (last ${minutes} min) — no datable checkpoint in the window"
356
+ fi
357
+
358
+ # Matched but undatable. Shown, because a matched edge line is evidence that
359
+ # a request DID arrive, and suppressing it while reporting silence is how
360
+ # this mode misread the edge in the first place. Listed in file order and
361
+ # outside the timeline, because an undated line has no position in it.
362
+ if [[ "$undated" -gt 0 ]]; then
363
+ echo ""
364
+ echo "# ${undated} matched line(s) carry no timestamp and cannot be placed in the window."
365
+ echo "# An edge line written before the \`ts=\` stamp carries no clock. File order:"
366
+ awk -F'\t' '$1 == "-" { printf "%-10s %s\n", $2, $3 }' "$tmp"
367
+ fi
368
+
288
369
  echo "" >&2
289
- echo "-- trailer: type=chat-attempts window_min=${minutes} matches=${hits} searched=edge.log,server.log" >&2
370
+ echo "$trailer" >&2
290
371
  exit 0
291
372
  }
292
373
 
@@ -188,11 +188,245 @@ case_mem_absent() {
188
188
  return 0
189
189
  }
190
190
 
191
+ # --- chat-attempts helpers (Task 2032) ---
192
+ # The fixtures are dated off the same clock the script computes its window
193
+ # from, so no case depends on a literal timestamp ageing out.
194
+ iso_minutes_ago() {
195
+ local m="$1"
196
+ date -u -v-"${m}"M +%Y-%m-%dT%H:%M:%S 2>/dev/null \
197
+ || date -u -d "${m} minutes ago" +%Y-%m-%dT%H:%M:%S 2>/dev/null
198
+ }
199
+
200
+ # --- Case 6 (Task 2032): all four checkpoints match, interleaved by time ---
201
+ case_chat_attempts_quartet() {
202
+ local root="/tmp/maxy-logs-read-test-6-$$"
203
+ local script
204
+ script=$(setup_install_tree "$root")
205
+ local logs="$HOME/.$(basename "$root")/logs"
206
+ # Four distinct seconds, all inside the 5-minute window, in ingress order.
207
+ # Distinct rather than paired so the ordering assertion below is strict and
208
+ # does not depend on how the sort breaks a tie.
209
+ local t0 t1 t2 t3
210
+ t0=$(iso_minutes_ago 4); t1=$(iso_minutes_ago 3)
211
+ t2=$(iso_minutes_ago 2); t3=$(iso_minutes_ago 1)
212
+
213
+ # Shipped shapes: edge.log self-stamps `ts=` after the tag (edge.ts:182,193);
214
+ # server.log is stamped at the line start by server-init-line-stamper.cjs.
215
+ {
216
+ echo "[edge-admin] ts=${t0}.100Z inbound method=POST path=/api/admin/chat token=present allowlist-branch=passthrough"
217
+ echo "[edge-admin] ts=${t3}.900Z outcome method=POST path=/api/admin/chat status=200 duration_ms=812"
218
+ } > "$logs/edge.log"
219
+ {
220
+ echo "${t1}.200Z [admin-auth] outcome=accept path=/api/admin/chat cacheKey=deadbeef…"
221
+ echo "${t2}.300Z [chat-route] entered route=admin method=POST cacheKey=deadbeef"
222
+ } > "$logs/server.log"
223
+
224
+ local stdout stderr rc=0
225
+ stdout=$("$script" --tail chat-attempts 5 2>/tmp/maxy-logs-read-stderr-6-$$) || rc=$?
226
+ stderr=$(cat /tmp/maxy-logs-read-stderr-6-$$)
227
+ rm -f /tmp/maxy-logs-read-stderr-6-$$
228
+
229
+ cleanup_install_tree "$root"
230
+
231
+ if [[ $rc -ne 0 ]]; then echo " expected exit 0, got $rc"; return 1; fi
232
+ if [[ "$stdout" != *"inbound"* ]]; then echo " timeline missing edge inbound"; return 1; fi
233
+ if [[ "$stdout" != *"[edge-admin]"*"outcome"* ]]; then echo " timeline missing edge outcome"; return 1; fi
234
+ if [[ "$stdout" != *"[admin-auth] outcome=accept"* ]]; then echo " timeline missing admin-auth"; return 1; fi
235
+ if [[ "$stdout" != *"[chat-route] entered"* ]]; then echo " timeline missing chat-route"; return 1; fi
236
+ if [[ "$stderr" != *"edge=2"* ]]; then echo " trailer missing edge=2: $stderr"; return 1; fi
237
+ if [[ "$stderr" != *"server=2"* ]]; then echo " trailer missing server=2: $stderr"; return 1; fi
238
+ if [[ "$stderr" != *"undated=0"* ]]; then echo " trailer missing undated=0: $stderr"; return 1; fi
239
+
240
+ # Chronological: inbound (t0) precedes the edge outcome (t3), and the
241
+ # chat-route row sits between them. A fixed-column sort put the two edge
242
+ # rows adjacent instead, which is the ordering defect this pins.
243
+ local first mid last
244
+ first=$(echo "$stdout" | grep -n 'inbound' | head -1 | cut -d: -f1)
245
+ mid=$(echo "$stdout" | grep -n '\[chat-route\] entered' | head -1 | cut -d: -f1)
246
+ last=$(echo "$stdout" | grep -n '\[edge-admin\].*outcome' | head -1 | cut -d: -f1)
247
+ if [[ -z "$first" || -z "$mid" || -z "$last" ]]; then
248
+ echo " could not locate rows: inbound=$first chat-route=$mid outcome=$last"; return 1
249
+ fi
250
+ if [[ "$first" -ge "$mid" || "$mid" -ge "$last" ]]; then
251
+ echo " rows not in chronological order: inbound=$first chat-route=$mid outcome=$last"
252
+ return 1
253
+ fi
254
+ return 0
255
+ }
256
+
257
+ # --- Case 7 (Task 2032): genuine zero says so distinctly ---
258
+ case_chat_attempts_genuine_zero() {
259
+ local root="/tmp/maxy-logs-read-test-7-$$"
260
+ local script
261
+ script=$(setup_install_tree "$root")
262
+ local logs="$HOME/.$(basename "$root")/logs"
263
+ local t0
264
+ t0=$(iso_minutes_ago 1)
265
+ # Both files exist and hold traffic; none of it is a chat-ingress checkpoint.
266
+ echo "[edge] ts=${t0}.000Z upstream http error path=/api/whatsapp err=ECONNREFUSED err-class=econnrefused-coldstart upstream=127.0.0.1:19201" > "$logs/edge.log"
267
+ echo "${t0}.000Z [server-init] watchdog enabled (ping-interval-ms=15000 deadline-ms=30000)" > "$logs/server.log"
268
+
269
+ local stderr rc=0
270
+ "$script" --tail chat-attempts 5 >/dev/null 2>/tmp/maxy-logs-read-stderr-7-$$ || rc=$?
271
+ stderr=$(cat /tmp/maxy-logs-read-stderr-7-$$)
272
+ rm -f /tmp/maxy-logs-read-stderr-7-$$
273
+
274
+ cleanup_install_tree "$root"
275
+
276
+ if [[ $rc -ne 1 ]]; then echo " expected exit 1, got $rc"; return 1; fi
277
+ if [[ "$stderr" != *"edge=0"* || "$stderr" != *"server=0"* ]]; then
278
+ echo " trailer missing per-source zeroes: $stderr"; return 1
279
+ fi
280
+ if [[ "$stderr" != *"no request reached the edge"* ]]; then
281
+ echo " zero-hit message does not state what a genuine zero means: $stderr"; return 1
282
+ fi
283
+ return 0
284
+ }
285
+
286
+ # --- Case 8 (Task 2032): the window excludes an older edge line ---
287
+ case_chat_attempts_window() {
288
+ local root="/tmp/maxy-logs-read-test-8-$$"
289
+ local script
290
+ script=$(setup_install_tree "$root")
291
+ local logs="$HOME/.$(basename "$root")/logs"
292
+ local recent old
293
+ recent=$(iso_minutes_ago 1)
294
+ old=$(iso_minutes_ago 90)
295
+ {
296
+ echo "[edge-admin] ts=${old}.000Z inbound method=POST path=/api/admin/chat token=present allowlist-branch=passthrough"
297
+ echo "[edge-admin] ts=${recent}.000Z inbound method=GET path=/api/admin/version token=absent allowlist-branch=passthrough"
298
+ } > "$logs/edge.log"
299
+ : > "$logs/server.log"
300
+
301
+ local stdout stderr rc=0
302
+ stdout=$("$script" --tail chat-attempts 5 2>/tmp/maxy-logs-read-stderr-8-$$) || rc=$?
303
+ stderr=$(cat /tmp/maxy-logs-read-stderr-8-$$)
304
+ rm -f /tmp/maxy-logs-read-stderr-8-$$
305
+
306
+ cleanup_install_tree "$root"
307
+
308
+ if [[ $rc -ne 0 ]]; then echo " expected exit 0, got $rc"; return 1; fi
309
+ if [[ "$stdout" == *"$old"* ]]; then echo " out-of-window line was not filtered"; return 1; fi
310
+ if [[ "$stdout" != *"$recent"* ]]; then echo " in-window line missing"; return 1; fi
311
+ if [[ "$stderr" != *"edge=1"* ]]; then echo " trailer edge count wrong: $stderr"; return 1; fi
312
+ return 0
313
+ }
314
+
315
+ # --- Case 9 (Task 2032): the whole quartet inside one second still orders ---
316
+ # The four checkpoints of one chat POST normally complete in a few hundred
317
+ # milliseconds, so they share a wall-clock second. A sort key truncated to
318
+ # seconds collides on all four and falls back to file-append order, which puts
319
+ # both edge rows first — the clustering this mode was fixed to stop.
320
+ case_chat_attempts_subsecond_order() {
321
+ local root="/tmp/maxy-logs-read-test-9-$$"
322
+ local script
323
+ script=$(setup_install_tree "$root")
324
+ local logs="$HOME/.$(basename "$root")/logs"
325
+ local s
326
+ s=$(iso_minutes_ago 1)
327
+ {
328
+ echo "[edge-admin] ts=${s}.010Z inbound method=POST path=/api/admin/chat token=present allowlist-branch=passthrough"
329
+ echo "[edge-admin] ts=${s}.230Z outcome method=POST path=/api/admin/chat status=200 duration_ms=220"
330
+ } > "$logs/edge.log"
331
+ {
332
+ echo "${s}.050Z [admin-auth] outcome=accept path=/api/admin/chat cacheKey=deadbeef"
333
+ echo "${s}.070Z [chat-route] entered route=public method=POST"
334
+ } > "$logs/server.log"
335
+
336
+ local stdout rc=0
337
+ stdout=$("$script" --tail chat-attempts 5 2>/dev/null) || rc=$?
338
+
339
+ cleanup_install_tree "$root"
340
+
341
+ if [[ $rc -ne 0 ]]; then echo " expected exit 0, got $rc"; return 1; fi
342
+ local n_in n_auth n_route n_out
343
+ n_in=$(echo "$stdout" | grep -n 'inbound' | head -1 | cut -d: -f1)
344
+ n_auth=$(echo "$stdout" | grep -n '\[admin-auth\]' | head -1 | cut -d: -f1)
345
+ n_route=$(echo "$stdout" | grep -n '\[chat-route\]' | head -1 | cut -d: -f1)
346
+ n_out=$(echo "$stdout" | grep -n '\[edge-admin\].*outcome' | head -1 | cut -d: -f1)
347
+ if [[ -z "$n_in" || -z "$n_auth" || -z "$n_route" || -z "$n_out" ]]; then
348
+ echo " missing a row: in=$n_in auth=$n_auth route=$n_route out=$n_out"; return 1
349
+ fi
350
+ if [[ "$n_in" -ge "$n_auth" || "$n_auth" -ge "$n_route" || "$n_route" -ge "$n_out" ]]; then
351
+ echo " sub-second rows out of order: in=$n_in auth=$n_auth route=$n_route out=$n_out"
352
+ echo "$stdout"
353
+ return 1
354
+ fi
355
+ return 0
356
+ }
357
+
358
+ # --- Case 10 (Task 2032): an undated match is never narrated as edge silence ---
359
+ # The grep matches the `[edge-admin] inbound` shape written before the `ts=`
360
+ # no timestamp. Such a line cannot be placed in the window, but it is evidence
361
+ # that a request DID reach the edge, so the mode must not answer with the
362
+ # genuine-zero verdict.
363
+ case_chat_attempts_undated_not_silence() {
364
+ local root="/tmp/maxy-logs-read-test-10-$$"
365
+ local script
366
+ script=$(setup_install_tree "$root")
367
+ local logs="$HOME/.$(basename "$root")/logs"
368
+ echo "[edge-admin] inbound method=POST path=/api/admin/chat token=present allowlist-branch=passthrough" > "$logs/edge.log"
369
+ : > "$logs/server.log"
370
+
371
+ local stdout stderr rc=0
372
+ stdout=$("$script" --tail chat-attempts 5 2>/tmp/maxy-logs-read-stderr-10-$$) || rc=$?
373
+ stderr=$(cat /tmp/maxy-logs-read-stderr-10-$$)
374
+ rm -f /tmp/maxy-logs-read-stderr-10-$$
375
+
376
+ cleanup_install_tree "$root"
377
+
378
+ if [[ $rc -ne 0 ]]; then echo " expected exit 0 (a match is a match), got $rc"; return 1; fi
379
+ if [[ "$stderr" == *"no request reached the edge"* || "$stdout" == *"no request reached the edge"* ]]; then
380
+ echo " matched an edge line and still claimed no request reached the edge"; return 1
381
+ fi
382
+ if [[ "$stdout" != *"carry no timestamp"* ]]; then
383
+ echo " undated match not surfaced in the output: $stdout"; return 1
384
+ fi
385
+ if [[ "$stdout" != *"[edge-admin] inbound"* ]]; then
386
+ echo " undated line itself not printed"; return 1
387
+ fi
388
+ if [[ "$stderr" != *"undated=1"* ]]; then echo " trailer undated count wrong: $stderr"; return 1; fi
389
+ return 0
390
+ }
391
+
392
+ # --- Case 11 (Task 2032): a missing edge.log is reader blindness, not silence ---
393
+ case_chat_attempts_edge_log_absent() {
394
+ local root="/tmp/maxy-logs-read-test-11-$$"
395
+ local script
396
+ script=$(setup_install_tree "$root")
397
+ local logs="$HOME/.$(basename "$root")/logs"
398
+ # server.log exists, edge.log does not.
399
+ : > "$logs/server.log"
400
+ rm -f "$logs/edge.log"
401
+
402
+ local stderr rc=0
403
+ "$script" --tail chat-attempts 5 >/dev/null 2>/tmp/maxy-logs-read-stderr-11-$$ || rc=$?
404
+ stderr=$(cat /tmp/maxy-logs-read-stderr-11-$$)
405
+ rm -f /tmp/maxy-logs-read-stderr-11-$$
406
+
407
+ cleanup_install_tree "$root"
408
+
409
+ if [[ $rc -ne 1 ]]; then echo " expected exit 1, got $rc"; return 1; fi
410
+ if [[ "$stderr" == *"no request reached the edge"* ]]; then
411
+ echo " claimed no request arrived while edge.log was unreadable"; return 1
412
+ fi
413
+ if [[ "$stderr" != *"edge.log is not on disk"* ]]; then
414
+ echo " did not state that the edge checkpoints were unreadable: $stderr"; return 1
415
+ fi
416
+ return 0
417
+ }
418
+
191
419
  run_case "sessionKey file present → exit 0" case_file_present
192
420
  run_case "no file → exit 1 + missing-on-resolve" case_missing
193
421
  run_case "ambiguous prefix → exit 1, refuses to pick" case_ambiguous
194
422
  run_case "--tail mem present → exit 0 + sampler lines" case_mem_present
195
423
  run_case "--tail mem absent → exit 1 + not-found message" case_mem_absent
424
+ run_case "chat-attempts quartet matches and interleaves" case_chat_attempts_quartet
425
+ run_case "chat-attempts genuine zero states what it means" case_chat_attempts_genuine_zero
426
+ run_case "chat-attempts window excludes an older line" case_chat_attempts_window
427
+ run_case "chat-attempts orders four rows inside one second" case_chat_attempts_subsecond_order
428
+ run_case "chat-attempts undated match is not edge silence" case_chat_attempts_undated_not_silence
429
+ run_case "chat-attempts absent edge.log is reader blindness" case_chat_attempts_edge_log_absent
196
430
 
197
431
  echo ""
198
432
  echo "================================================"
@@ -1 +1 @@
1
- {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAmB3B,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAA;AAwF7B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAkEpG;;;gFAGgF;AAChF,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAQ1C;AA2BD,MAAM,WAAW,UAAU;IACzB;qEACiE;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB;6CACyC;IACzC,eAAe,EAAE,MAAM,CAAA;IACvB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,4DAA4D;IAC5D,GAAG,EAAE,SAAS,CAAA;IACd;;kEAE8D;IAC9D,MAAM,EAAE,OAAO,CAAA;IACf;;;sEAGkE;IAClE,UAAU,EAAE,OAAO,CAAA;IACnB;yEACqE;IACrE,MAAM,EAAE,OAAO,CAAA;IACf;iCAC6B;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;;kBAKc;IACd,cAAc,EAAE,MAAM,CAAA;CACvB;AAoCD;;;;;uDAKuD;AACvD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE3E;AAYD;;8DAE8D;AAC9D,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;0EAI0E;AAC1E,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED;;;;;6EAK6E;AAC7E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,MAAM,GAAG,QAAQ,CAMpB;AAED;;;uEAGuE;AACvE,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;;sCAGsC;AACtC,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE/E;AAED;;;;wEAIwE;AACxE,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAKpE;AAED;;0DAE0D;AAC1D,wBAAgB,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAEtE;AAED;0EAC0E;AAC1E,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;mEAGmE;AACnE,wBAAgB,cAAc,IAAI,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAM1E;AAED;;;;4DAI4D;AAC5D,wBAAgB,yBAAyB,IAAI,IAAI,CAIhD;AAED;;;;8DAI8D;AAC9D,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAGD;;;yDAGyD;AACzD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAGtE;AAED,MAAM,MAAM,kBAAkB,GAC1B,wBAAwB,GACxB,kBAAkB,GAClB,kBAAkB,GAClB,2BAA2B,GAC3B,yBAAyB,GACzB,qBAAqB,GAIrB,YAAY,GACZ,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,sBAAsB,GACtB,yBAAyB,GAGzB,wBAAwB,GAGxB,sBAAsB,CAAA;AAE1B,MAAM,MAAM,oBAAoB,GAC5B,wBAAwB,GACxB,yBAAyB,GACzB,YAAY,CAAA;AAEhB,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,wBAAwB,CAAA;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,yBAAyB,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;iDAEiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;6CAS6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB;;;;8CAI0C;IAC1C,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,OAAO,EAAE,UAAU,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,sBAAsB,GAAG,wBAAwB,GAAG,kBAAkB,CAAA;CAAE,CAAA;AAEnG,MAAM,WAAW,SAAS;IACxB;;;;qDAIiD;IACjD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,SAAS,CAAA;IAC5G;;;;;;;;yEAQqE;IACrE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,SAAS,CAAA;IAC3I,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB;;sFAEkF;IAClF,OAAO,EAAE,MAAM,CAAA;IACf;qDACiD;IACjD,gBAAgB,EAAE,MAAM,CAAA;IACxB;6DACyD;IACzD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,SAAS,CAAA;IAClB,IAAI,EAAE,cAAc,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;IACrD,wBAAwB,EAAE,MAAM,CAAA;IAChC;;;;;sBAKkB;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,CAAA;IACxB;;;;;;2CAMuC;IACvC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9C;;;;;mEAK+D;IAC/D,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAA;IACvB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAA;IACnB;;2DAEuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACxC;;;;;;iEAM6D;IAC7D,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE;;;;;;;;;;2BAUuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;4CAMwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;+DAI2D;IAC3D,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE;QAC3B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;QACtD,SAAS,EAAE,MAAM,CAAA;KAClB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B;;sDAEkD;IAClD,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC;;mDAE+C;IAC/C,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;;;4CAIwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B;;;;;;qEAMiE;IACjE,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;6DAIyD;IACzD,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAK7C,CAAA;AAEF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;yEAKqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACzC,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;IACvC,iBAAiB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;wCAGoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;kCAK8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;2EACuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;;kEAS8D;IAC9D,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;;oFAKgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;wEAGoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;8BAE0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;4EAMwE;IACxE,cAAc,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE;;;uCAGmC;IACnC,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E;;;8EAG0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;8EAI0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;wDAGoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;gEAI4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAKD,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAA;AAChD,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAA2B,CAAA;AAEjF,UAAU,oBAAoB;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB;;;kBAGc;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd;;;;;mDAK+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;kEAO8D;IAC9D,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;0EAMsE;IACtE,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd;;;;mBAIe;IACf,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IACzC;;;;kEAI8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;0EAIsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;gEAG4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,KAAK,oBAAoB,GACrB;IACE,EAAE,EAAE,IAAI,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB;;;;+DAI2D;IAC3D,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;CAC/D,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjC;;;;;;sBAMsB;AACtB,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAmCzF;AAED;;;;;;;;;;;;;;;;;;;;;;;sBAuBsB;AACtB,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAanF;AAED;;;;;;;;sBAQsB;AACtB,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/C;IACD,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC,CAqBA;AAED;;;;yCAIyC;AACzC,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,gBAAgB,GAAG,QAAQ,CAAC,EAChI,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgDxB;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAsHpF;AAqOD;8CAC8C;AAC9C,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEhE;AACD,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAgDD;;mEAEmE;AACnE,wBAAgB,iCAAiC,IAAI,IAAI,CAKxD;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CA6xC/F;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd;2EACuE;IACvE,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;;;;;wEAMoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC;;;;;;8CAM0C;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED;;;;;;;gEAOgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,gBAAgB,CAAA;IACjD;;;;;;+BAM2B;IAC3B,YAAY,EACR,IAAI,GACJ,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,qBAAqB,GACrB,OAAO,GACP,gBAAgB,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;YAqBY;AACZ,wBAAgB,oBAAoB,CAClC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EACxB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3C,UAAU,EAAE,MAAM,GACjB,IAAI,CAiCN;AAwED;;;;;;;;;;;;;;wEAcwE;AACxE,wBAAsB,WAAW,CAC/B,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CA2F7B;AAED;6EAC6E;AAC7E,eAAO,MAAM,WAAW,oBAAc,CAAA;AAEtC;;;;sDAIsD;AACtD,wBAAgB,WAAW,IAAI,MAAM,CAMpC;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDA+BkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IACtC,cAAc,IAAI,MAAM,EAAE,CAAA;IAC1B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAC9C,aAAa,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,IAAI,MAAM,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,0BAA0B,EAAE,MAAM,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,uBAAuB,CAgDvF;AAED;;;;;;;;;sBASsB;AACtB,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EACxB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,GAChB,UAAU,CAoBZ;AAED;;;;;;;;qBAQqB;AACrB,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EACxB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,GACd;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CASrC;AAED;2DAC2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAA;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;iFASiF;AACjF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAA;AAG5C,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,gBAAgB,CAalB"}
@@ -1919,6 +1919,19 @@ export async function spawnClaudeSession(deps, args) {
1919
1919
  // pid-file watcher subscription on /rc-spawn binds. A resume that
1920
1920
  // already had bridgeIds keeps them; a fresh spawn starts empty.
1921
1921
  bridgeIds: priorSidecar?.bridgeIds ?? [],
1922
+ // Task 2038 — the owning account. `accountId` is optional on the sidecar
1923
+ // type, so this literal omitting it compiled cleanly and every /spawn
1924
+ // sidecar since Task 983 has loaded back as null: the reader routes then
1925
+ // dropped the row (`meta.accountId === null` → continue) and the
1926
+ // duplicate-sender audit bucketed it under `account=-`. /rc-spawn already
1927
+ // stamps its own write (http-server.ts, `effectiveAccountId`); this is the
1928
+ // /spawn twin. `passiveAccountId` is the account this sidecar's own
1929
+ // directory belongs to: `sidecarPath` derives from `deps.spawnCwd`, which
1930
+ // the http-server overrides to the sub-account for a passive intake spawn
1931
+ // (Task 1490) and leaves at the house otherwise — the same two branches
1932
+ // `passiveAccountId` resolves. Never empty (`deps.accountId` is required
1933
+ // config), so there is no unresolved-owner case to refuse.
1934
+ accountId: passiveAccountId,
1922
1935
  // Task 1440 — the exact scope value stamped into spawnEnv above (one
1923
1936
  // resolution, reused), so the census's independent sidecar source can never
1924
1937
  // drift from the injected env.