@launchsecure/launch-kit 0.0.29 → 0.0.30
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/beacon/beacon.mjs +2759 -1246
- package/dist/beacon/beacon.mjs.map +1 -1
- package/dist/beacon/beacon.umd.js +710 -95
- package/dist/beacon/beacon.umd.js.map +1 -1
- package/dist/beacon/types/core.d.ts +14 -0
- package/dist/beacon/types/core.d.ts.map +1 -0
- package/dist/beacon/types/ctx.d.ts +14 -0
- package/dist/beacon/types/ctx.d.ts.map +1 -0
- package/dist/beacon/types/element.d.ts +16 -48
- package/dist/beacon/types/element.d.ts.map +1 -1
- package/dist/beacon/types/index.d.ts +5 -4
- package/dist/beacon/types/index.d.ts.map +1 -1
- package/dist/beacon/types/internal/annotation-cache.d.ts +10 -0
- package/dist/beacon/types/internal/annotation-cache.d.ts.map +1 -0
- package/dist/beacon/types/internal/element-capture.d.ts +19 -0
- package/dist/beacon/types/internal/element-capture.d.ts.map +1 -0
- package/dist/beacon/types/internal/event-buffer.d.ts +16 -0
- package/dist/beacon/types/internal/event-buffer.d.ts.map +1 -0
- package/dist/beacon/types/internal/framework-detect.d.ts +6 -0
- package/dist/beacon/types/internal/framework-detect.d.ts.map +1 -0
- package/dist/beacon/types/internal/markers.d.ts +17 -0
- package/dist/beacon/types/internal/markers.d.ts.map +1 -0
- package/dist/beacon/types/internal/monitor/capture-dom.d.ts +14 -0
- package/dist/beacon/types/internal/monitor/capture-dom.d.ts.map +1 -0
- package/dist/beacon/types/internal/monitor/capture-network.d.ts +12 -0
- package/dist/beacon/types/internal/monitor/capture-network.d.ts.map +1 -0
- package/dist/beacon/types/internal/monitor/overlay.d.ts +16 -0
- package/dist/beacon/types/internal/monitor/overlay.d.ts.map +1 -0
- package/dist/beacon/types/internal/monitor/session.d.ts +41 -0
- package/dist/beacon/types/internal/monitor/session.d.ts.map +1 -0
- package/dist/beacon/types/{monitor → internal/monitor}/transport.d.ts +3 -3
- package/dist/beacon/types/internal/monitor/transport.d.ts.map +1 -0
- package/dist/beacon/types/{monitor/types.d.ts → internal/monitor/wire.d.ts} +69 -27
- package/dist/beacon/types/internal/monitor/wire.d.ts.map +1 -0
- package/dist/beacon/types/{ui → internal}/pick-mode-overlay.d.ts +4 -5
- package/dist/beacon/types/internal/pick-mode-overlay.d.ts.map +1 -0
- package/dist/beacon/types/{capture → internal}/picker.d.ts +0 -1
- package/dist/beacon/types/internal/picker.d.ts.map +1 -0
- package/dist/beacon/types/{ui → internal}/pin-popover.d.ts +1 -1
- package/dist/beacon/types/internal/pin-popover.d.ts.map +1 -0
- package/dist/beacon/types/{capture → internal}/screenshot.d.ts +1 -0
- package/dist/beacon/types/internal/screenshot.d.ts.map +1 -0
- package/dist/beacon/types/internal/selector.d.ts.map +1 -0
- package/dist/beacon/types/plugins/domEle.d.ts +14 -0
- package/dist/beacon/types/plugins/domEle.d.ts.map +1 -0
- package/dist/beacon/types/plugins/domSS.d.ts +8 -0
- package/dist/beacon/types/plugins/domSS.d.ts.map +1 -0
- package/dist/beacon/types/plugins/errors.d.ts +3 -0
- package/dist/beacon/types/plugins/errors.d.ts.map +1 -0
- package/dist/beacon/types/plugins/index.d.ts +8 -0
- package/dist/beacon/types/plugins/index.d.ts.map +1 -0
- package/dist/beacon/types/plugins/liveMonitor.d.ts +14 -0
- package/dist/beacon/types/plugins/liveMonitor.d.ts.map +1 -0
- package/dist/beacon/types/plugins/metadata.d.ts +3 -0
- package/dist/beacon/types/plugins/metadata.d.ts.map +1 -0
- package/dist/beacon/types/registry.d.ts +33 -0
- package/dist/beacon/types/registry.d.ts.map +1 -0
- package/dist/beacon/types/styles.d.ts +8 -0
- package/dist/beacon/types/styles.d.ts.map +1 -0
- package/dist/beacon/types/transport.d.ts +3 -0
- package/dist/beacon/types/transport.d.ts.map +1 -0
- package/dist/beacon/types/types.d.ts +152 -68
- package/dist/beacon/types/types.d.ts.map +1 -1
- package/dist/beacon/types/ui/dialog.d.ts +53 -0
- package/dist/beacon/types/ui/dialog.d.ts.map +1 -0
- package/dist/beacon/types/ui/form.d.ts +7 -0
- package/dist/beacon/types/ui/form.d.ts.map +1 -0
- package/dist/beacon/types/ui/overlay.d.ts +6 -0
- package/dist/beacon/types/ui/overlay.d.ts.map +1 -0
- package/dist/deck-client/assets/{_baseUniq-W2JQDmje.js → _baseUniq-DCt2IMRR.js} +1 -1
- package/dist/deck-client/assets/{arc-DIBWAId9.js → arc-h-ifqmNR.js} +1 -1
- package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-CAIRMvJK.js → architectureDiagram-Q4EWVU46-C9dITSPv.js} +1 -1
- package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-BeNaNiOi.js → blockDiagram-DXYQGD6D-BHuJT34t.js} +1 -1
- package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-B9Ozi62h.js → c4Diagram-AHTNJAMY-CpvMGtDG.js} +1 -1
- package/dist/deck-client/assets/channel-2PZVMiXf.js +1 -0
- package/dist/deck-client/assets/{chunk-4BX2VUAB-D7AZ47dt.js → chunk-4BX2VUAB-B6md1VIm.js} +1 -1
- package/dist/deck-client/assets/{chunk-4TB4RGXK-DnVnNPcI.js → chunk-4TB4RGXK-BmEnX8ik.js} +1 -1
- package/dist/deck-client/assets/{chunk-55IACEB6-UKYs-YNd.js → chunk-55IACEB6-BZPUyZAZ.js} +1 -1
- package/dist/deck-client/assets/{chunk-EDXVE4YY-D43b-SKn.js → chunk-EDXVE4YY-BWwNUK-l.js} +1 -1
- package/dist/deck-client/assets/{chunk-FMBD7UC4-QzBAoyyW.js → chunk-FMBD7UC4-o7gSppGI.js} +1 -1
- package/dist/deck-client/assets/{chunk-OYMX7WX6-Cjif4r6W.js → chunk-OYMX7WX6-C4KoTL5p.js} +1 -1
- package/dist/deck-client/assets/{chunk-QZHKN3VN-CqLDirEI.js → chunk-QZHKN3VN-jkf68sDs.js} +1 -1
- package/dist/deck-client/assets/{chunk-YZCP3GAM-_FQvmMs4.js → chunk-YZCP3GAM-Cd4yBE7o.js} +1 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-Bt8xBAof.js +1 -0
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-Bt8xBAof.js +1 -0
- package/dist/deck-client/assets/clone-BHQryoDl.js +1 -0
- package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-rfrocesE.js → cose-bilkent-S5V4N54A-DeGFUgAV.js} +1 -1
- package/dist/deck-client/assets/{dagre-KV5264BT-Bv_7DJat.js → dagre-KV5264BT-ekcYJuUV.js} +1 -1
- package/dist/deck-client/assets/{diagram-5BDNPKRD-4F1414G5.js → diagram-5BDNPKRD-YHPk4rV2.js} +1 -1
- package/dist/deck-client/assets/{diagram-G4DWMVQ6-C4-Pszqm.js → diagram-G4DWMVQ6-DM-JCd_B.js} +1 -1
- package/dist/deck-client/assets/{diagram-MMDJMWI5-B647TIx9.js → diagram-MMDJMWI5-l5FK1ybk.js} +1 -1
- package/dist/deck-client/assets/{diagram-TYMM5635-BFAqpezd.js → diagram-TYMM5635-CIN4_1-j.js} +1 -1
- package/dist/deck-client/assets/{erDiagram-SMLLAGMA-BfBfrJOC.js → erDiagram-SMLLAGMA-MyinSkEl.js} +1 -1
- package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-DX9YAYes.js → flowDiagram-DWJPFMVM-Dk8nn42x.js} +1 -1
- package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-DCuiy7wF.js → ganttDiagram-T4ZO3ILL-BU1ihicu.js} +1 -1
- package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-CGp1IXUh.js → gitGraphDiagram-UUTBAWPF-BjsTL13C.js} +1 -1
- package/dist/deck-client/assets/{graph-B7g8aoxv.js → graph-DJmh-xi7.js} +1 -1
- package/dist/deck-client/assets/{index-Dg1r-WSN.js → index-KsShfCV-.js} +3 -3
- package/dist/deck-client/assets/{infoDiagram-42DDH7IO-L3fahMkF.js → infoDiagram-42DDH7IO-Dxvy_RB4.js} +1 -1
- package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-aS_EjWBZ.js → ishikawaDiagram-UXIWVN3A-DPOaNF1l.js} +1 -1
- package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-djTSQZF9.js → journeyDiagram-VCZTEJTY-DMew3K5c.js} +1 -1
- package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-CcTHo4CM.js → kanban-definition-6JOO6SKY-csciJFuk.js} +1 -1
- package/dist/deck-client/assets/{layout-mEJiadb7.js → layout-Dg4yyms2.js} +1 -1
- package/dist/deck-client/assets/{linear-XgTKqyRu.js → linear-BA3zU6gq.js} +1 -1
- package/dist/deck-client/assets/{min-Ct9jZdpd.js → min-lz-Ird-p.js} +1 -1
- package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-BaFxCGNU.js → mindmap-definition-QFDTVHPH-CCEN8OQV.js} +1 -1
- package/dist/deck-client/assets/{pieDiagram-DEJITSTG-CIbYYjtw.js → pieDiagram-DEJITSTG-DM6n1HY7.js} +1 -1
- package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-D9EtCOvh.js → quadrantDiagram-34T5L4WZ-_ULoR66n.js} +1 -1
- package/dist/deck-client/assets/{requirementDiagram-MS252O5E-xeni9eVG.js → requirementDiagram-MS252O5E-BuwJs7Tn.js} +1 -1
- package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-LYeknz9h.js → sankeyDiagram-XADWPNL6-BEsuzkW4.js} +1 -1
- package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-RDbsKFZf.js → sequenceDiagram-FGHM5R23-CP2H0YWf.js} +1 -1
- package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-BH1Zjglk.js → stateDiagram-FHFEXIEX-B5Gw_NNL.js} +1 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-4T4wMDXr.js +1 -0
- package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-IFXxKptt.js → timeline-definition-GMOUNBTQ-DsoYydQa.js} +1 -1
- package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-D-sLkQs9.js → vennDiagram-DHZGUBPP-Dz8JT_ob.js} +1 -1
- package/dist/deck-client/assets/wardley-RL74JXVD-DGHQ_Ijv.js +162 -0
- package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-BTjjuDU3.js → wardleyDiagram-NUSXRM2D-DN1LJMB1.js} +1 -1
- package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-AYbv92n-.js → xychartDiagram-5P7HB3ND-nb0oSfrQ.js} +1 -1
- package/dist/deck-client/index.html +1 -1
- package/dist/server/beacon-monitor-entry.js +548 -6
- package/dist/server/chart-serve.js +917 -248
- package/dist/server/cli.js +1368 -374
- package/dist/server/council-entry.js +0 -0
- package/dist/server/fb-wizard.js +0 -0
- package/dist/server/graph-mcp-entry.js +1326 -322
- package/dist/server/init-entry.js +16 -11
- package/dist/server/orbit-entry.js +135 -7
- package/dist/server/parse-worker-entry.js +918 -247
- package/package.json +22 -22
- package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-array.md +107 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-clear.md +94 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-pulse.md +82 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-scan.md +66 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/blast-radius.md +101 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/brief.md +112 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/course.md +84 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/debug.md +92 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/deploy-check.md +160 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/diagram.md +134 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/orbit.md +87 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/prototype.md +90 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/recall.md +83 -0
- package/scaffolds/ls-marketplace/plugins/kit/{commands → skills}/show-mcp-status.md +4 -4
- package/scaffolds/ls-marketplace/plugins/kit/skills/wireframe.md +70 -0
- package/scaffolds/migrate-safety/scripts/migrate-with-backup.sh +0 -0
- package/scaffolds/recall-hook/scripts/ensure-recall.sh +0 -0
- package/scaffolds/statusline/statusline-mcp.sh +21 -9
- package/dist/beacon/types/capture/element.d.ts +0 -3
- package/dist/beacon/types/capture/element.d.ts.map +0 -1
- package/dist/beacon/types/capture/events.d.ts +0 -20
- package/dist/beacon/types/capture/events.d.ts.map +0 -1
- package/dist/beacon/types/capture/framework.d.ts +0 -3
- package/dist/beacon/types/capture/framework.d.ts.map +0 -1
- package/dist/beacon/types/capture/metadata.d.ts +0 -3
- package/dist/beacon/types/capture/metadata.d.ts.map +0 -1
- package/dist/beacon/types/capture/overlay.d.ts +0 -7
- package/dist/beacon/types/capture/overlay.d.ts.map +0 -1
- package/dist/beacon/types/capture/picker.d.ts.map +0 -1
- package/dist/beacon/types/capture/screenshot.d.ts.map +0 -1
- package/dist/beacon/types/capture/selector.d.ts.map +0 -1
- package/dist/beacon/types/monitor/dom.d.ts +0 -13
- package/dist/beacon/types/monitor/dom.d.ts.map +0 -1
- package/dist/beacon/types/monitor/index.d.ts +0 -19
- package/dist/beacon/types/monitor/index.d.ts.map +0 -1
- package/dist/beacon/types/monitor/network.d.ts +0 -12
- package/dist/beacon/types/monitor/network.d.ts.map +0 -1
- package/dist/beacon/types/monitor/transport.d.ts.map +0 -1
- package/dist/beacon/types/monitor/types.d.ts.map +0 -1
- package/dist/beacon/types/transport/submit.d.ts +0 -3
- package/dist/beacon/types/transport/submit.d.ts.map +0 -1
- package/dist/beacon/types/ui/button.d.ts +0 -2
- package/dist/beacon/types/ui/button.d.ts.map +0 -1
- package/dist/beacon/types/ui/drawer.d.ts +0 -33
- package/dist/beacon/types/ui/drawer.d.ts.map +0 -1
- package/dist/beacon/types/ui/icons.d.ts +0 -9
- package/dist/beacon/types/ui/icons.d.ts.map +0 -1
- package/dist/beacon/types/ui/monitor-panel.d.ts +0 -19
- package/dist/beacon/types/ui/monitor-panel.d.ts.map +0 -1
- package/dist/beacon/types/ui/pick-mode-overlay.d.ts.map +0 -1
- package/dist/beacon/types/ui/pin-popover.d.ts.map +0 -1
- package/dist/deck-client/assets/channel-CRdozqbp.js +0 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-lIZMp57W.js +0 -1
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-lIZMp57W.js +0 -1
- package/dist/deck-client/assets/clone-BtWeSTyJ.js +0 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-BrV78NDR.js +0 -1
- package/dist/deck-client/assets/wardley-RL74JXVD-C010F8l4.js +0 -162
- package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-array.md +0 -92
- package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-clear.md +0 -68
- package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-pulse.md +0 -80
- package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-scan.md +0 -62
- /package/dist/beacon/types/{capture → internal}/selector.d.ts +0 -0
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Show the array of launch-beacon monitor sessions in `.launchsecure/` — which is most recent, how many events each has, last event time, suspected liveness. Use to confirm a session is being recorded, find an old session to inspect, or audit disk usage. Read-only.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /kit:beacon-array
|
|
6
|
-
|
|
7
|
-
Liveness + inventory across every `launch-beacon monitor` session this repo has recorded — one row per beacon in the array.
|
|
8
|
-
|
|
9
|
-
`$ARGUMENTS` may be `full` for an expanded report. Empty → terse one-line-per-session summary.
|
|
10
|
-
|
|
11
|
-
## Preflight
|
|
12
|
-
|
|
13
|
-
List the NDJSON files. If none, say so plainly:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
ls -t .launchsecure/beacon-*.ndjson 2>/dev/null || { echo "No beacon sessions found in .launchsecure/. Start one with: npx launch-beacon monitor"; exit 0; }
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
If the listing is empty (the command above succeeded but produced no output because `2>/dev/null` swallowed the error and no files matched), check explicitly:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
SESSIONS=$(ls -t .launchsecure/beacon-*.ndjson 2>/dev/null)
|
|
23
|
-
test -n "$SESSIONS" || { echo "No beacon sessions found in .launchsecure/. Start one with: npx launch-beacon monitor"; exit 0; }
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Per-session facts to collect
|
|
27
|
-
|
|
28
|
-
For each session file (newest first), gather:
|
|
29
|
-
- **token** — slice between `beacon-` and `.ndjson` in the filename
|
|
30
|
-
- **events** — `wc -l < <file>`
|
|
31
|
-
- **last_ts** — parse the last JSON line's `.ts` field (epoch ms). Use a one-liner like:
|
|
32
|
-
```bash
|
|
33
|
-
tail -n 1 "$F" | sed -n 's/.*"ts":\([0-9]*\).*/\1/p'
|
|
34
|
-
```
|
|
35
|
-
- **last_kind** — same trick on `.kind` from the last line
|
|
36
|
-
- **mtime** — `stat -f "%m" "$F"` on macOS or `stat -c "%Y" "$F"` on Linux. Use whichever your shell supports; fall back to `ls -lt` parse if neither.
|
|
37
|
-
- **size** — file size in bytes (`stat` again; or `wc -c < "$F"`)
|
|
38
|
-
|
|
39
|
-
Use the mtime to compute **age** ("just now", "2m ago", "1h ago"). Do the arithmetic yourself (current epoch minus mtime); don't shell out for time formatting.
|
|
40
|
-
|
|
41
|
-
## Liveness heuristic
|
|
42
|
-
|
|
43
|
-
Mark a session as **active** if its mtime is within the last 5 seconds — that's the maximum interval the receiver flushes batches. Otherwise **idle**. Sessions older than 30 minutes are **stale** (the receiver enforces a 30-min cap, so anything older is from a previous monitor run).
|
|
44
|
-
|
|
45
|
-
## Default output (no arguments)
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
.launchsecure/
|
|
49
|
-
● 8f3c2a91 247 events click (just now) ACTIVE
|
|
50
|
-
a1b2c3d4 89 events error (12m ago) idle
|
|
51
|
-
2557799f 1,247 events route (2h ago) stale
|
|
52
|
-
|
|
53
|
-
3 sessions, 1 active.
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Rules:
|
|
57
|
-
- Glyph: `●` (filled) for active, blank for idle/stale.
|
|
58
|
-
- Columns: token (8 chars) — events (right-aligned) — last event "kind (age)" — status word.
|
|
59
|
-
- Summary line: total count + how many active.
|
|
60
|
-
- Plain text, monospace alignment.
|
|
61
|
-
|
|
62
|
-
## Full output (`/kit:beacon-array full`)
|
|
63
|
-
|
|
64
|
-
Same per-session block as default, but expand each into a block with extra fields:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
● 8f3c2a91 — ACTIVE
|
|
68
|
-
file: .launchsecure/beacon-8f3c2a91.ndjson
|
|
69
|
-
size: 42.1 KB
|
|
70
|
-
events: 247
|
|
71
|
-
started: 2026-05-21T07:12:33Z (8m ago)
|
|
72
|
-
last event: 2026-05-21T07:20:51Z (just now)
|
|
73
|
-
last kind: click
|
|
74
|
-
kinds: click 142, fetch 71, route 12, error 3, dialog 9, probe 10
|
|
75
|
-
|
|
76
|
-
a1b2c3d4 — idle
|
|
77
|
-
file: .launchsecure/beacon-a1b2c3d4.ndjson
|
|
78
|
-
...
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
`kinds:` is a histogram from `grep -oE '"kind":"[a-z]+"' <file> | sort | uniq -c | sort -rn`. Format as `kind1 N1, kind2 N2, …` newest-first by count.
|
|
82
|
-
|
|
83
|
-
`started:` = first line's `.ts`; `last event:` = last line's `.ts`.
|
|
84
|
-
|
|
85
|
-
End with the same summary line as default.
|
|
86
|
-
|
|
87
|
-
## Constraints
|
|
88
|
-
|
|
89
|
-
- **Read-only.** No deletion, no rotation, no auto-cleanup.
|
|
90
|
-
- **Fast.** Default view should be sub-second even with many session files. Don't full-parse JSON — line counts + first/last line sed is enough.
|
|
91
|
-
- **Plain text.** No markdown tables, no fenced blocks in the actual output.
|
|
92
|
-
- **Don't suggest cleanup.** That's `/kit:beacon-clear`'s job. Stale sessions are informational, not an error.
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Wipe launch-beacon monitor session NDJSON files. Default clears only the latest session (so you can start a clean repro); pass `all` to remove every `.launchsecure/beacon-*.ndjson`. Always shows what will be deleted and asks for confirmation. Destructive.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /kit:beacon-clear
|
|
6
|
-
|
|
7
|
-
Clean slate before a fresh repro. The receiver appends to the same NDJSON file across reconnects of the same session, so an existing file accumulates noise from earlier attempts — clearing first makes the new stream easier to reason about.
|
|
8
|
-
|
|
9
|
-
Parse `$ARGUMENTS`:
|
|
10
|
-
- empty → clear the most recent session file only
|
|
11
|
-
- `all` → clear every `.launchsecure/beacon-*.ndjson`
|
|
12
|
-
- a specific token or filename → clear that one file (must match a real path)
|
|
13
|
-
|
|
14
|
-
## Preflight
|
|
15
|
-
|
|
16
|
-
List candidate files. If none, say so and stop:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
SESSIONS=$(ls -t .launchsecure/beacon-*.ndjson 2>/dev/null)
|
|
20
|
-
test -n "$SESSIONS" || { echo "No beacon sessions found in .launchsecure/. Nothing to clear."; exit 0; }
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Decide the **target set** based on `$ARGUMENTS`:
|
|
24
|
-
- empty → first line of `$SESSIONS` (the newest)
|
|
25
|
-
- `all` → all lines of `$SESSIONS`
|
|
26
|
-
- otherwise → resolve to a single path (try `.launchsecure/beacon-<arg>.ndjson` first, then the literal arg). If it doesn't exist or isn't inside `.launchsecure/`, refuse with a clear message.
|
|
27
|
-
|
|
28
|
-
## Refusal rule
|
|
29
|
-
|
|
30
|
-
Refuse with a clear message if:
|
|
31
|
-
- the target set is empty
|
|
32
|
-
- any target path resolves outside `.launchsecure/` (defence against `..` injection from `$ARGUMENTS`)
|
|
33
|
-
- the active monitor session is being written *right now* (mtime within the last 5 seconds) — print a one-line warning and ask the user to stop the monitor first, e.g.:
|
|
34
|
-
```
|
|
35
|
-
⚠ .launchsecure/beacon-8f3c2a91.ndjson was written 2s ago — looks active.
|
|
36
|
-
Stop the receiver (Ctrl+C in the launch-beacon monitor terminal) and re-run /kit:beacon-clear.
|
|
37
|
-
```
|
|
38
|
-
The user can still force by passing the token explicitly as the argument — but never silently nuke an actively-written file.
|
|
39
|
-
|
|
40
|
-
## Confirmation
|
|
41
|
-
|
|
42
|
-
Print what's about to be deleted and ask before doing it.
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
About to delete 1 file:
|
|
46
|
-
.launchsecure/beacon-a1b2c3d4.ndjson 89 events, 12m ago
|
|
47
|
-
|
|
48
|
-
Confirm? (y/N)
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
For `all`, list every file with its size + age. Don't truncate the list — the user should see all of it.
|
|
52
|
-
|
|
53
|
-
Wait for explicit `y`/`yes`. Anything else → abort with `Cancelled. No files were deleted.`
|
|
54
|
-
|
|
55
|
-
## Delete
|
|
56
|
-
|
|
57
|
-
`rm` each target. After deletion, print a one-line summary:
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
✓ deleted 1 file (89 events freed).
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Constraints
|
|
64
|
-
|
|
65
|
-
- **Destructive — always confirm.** Even if `$ARGUMENTS` is `all`, ask first.
|
|
66
|
-
- **Scope-locked to `.launchsecure/`.** Reject anything outside that directory, even if the user passes an absolute path. We never delete files we didn't write.
|
|
67
|
-
- **No undo.** NDJSON is local-only; we don't ship recall integration for it (recall is for source files). Be explicit in the confirmation message.
|
|
68
|
-
- **Don't stop the monitor server.** This command only clears files. The receiver keeps running and will reopen the same file on its next write — which is fine, the file just starts empty again.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Show the most recent error from the active launch-beacon monitor session, plus the N events that preceded it (default 10). Answers "what was happening when it broke" without scrolling through the full stream. Read-only.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /kit:beacon-pulse
|
|
6
|
-
|
|
7
|
-
The "what happened just before this error" command — a single pulse, freezing the moment the beacon caught a failure. When a bug fires, the actual story is usually the chain of events leading up to it: the click that triggered a state change, the failed fetch that left auth in a bad state, the route change that mounted the wrong component.
|
|
8
|
-
|
|
9
|
-
Parse `$ARGUMENTS` as one optional integer — the count of preceding events to include. Default 10. Cap at 100.
|
|
10
|
-
|
|
11
|
-
## Preflight
|
|
12
|
-
|
|
13
|
-
Same as `/kit:beacon-scan` — find the latest NDJSON; if none, stop:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
LATEST=$(ls -t .launchsecure/beacon-*.ndjson 2>/dev/null | head -1)
|
|
17
|
-
test -n "$LATEST" || { echo "No beacon sessions found. Start one with: npx launch-beacon monitor"; exit 0; }
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Locate the most recent error
|
|
21
|
-
|
|
22
|
-
Errors are events with `"kind":"error"` or `"kind":"unhandledrejection"`. Find the line number of the LAST such line in the file:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
ERR_LINE=$(grep -nE '"kind":"(error|unhandledrejection)"' "$LATEST" | tail -1 | cut -d: -f1)
|
|
26
|
-
test -n "$ERR_LINE" || { echo "No errors in the current session. Use /kit:beacon-scan to browse all events."; exit 0; }
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Pull the window
|
|
30
|
-
|
|
31
|
-
`N` is the user-supplied count (default 10). Read the file lines from `max(1, ERR_LINE-N)` through `ERR_LINE`:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
N="${1:-10}"
|
|
35
|
-
START=$(( ERR_LINE - N ))
|
|
36
|
-
[ "$START" -lt 1 ] && START=1
|
|
37
|
-
sed -n "${START},${ERR_LINE}p" "$LATEST"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
That's your input. The error itself is the last line; everything before is context.
|
|
41
|
-
|
|
42
|
-
## Output
|
|
43
|
-
|
|
44
|
-
Render a **timeline** with the error visually separated at the bottom:
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
session: .launchsecure/beacon-<token>.ndjson
|
|
48
|
-
window: 10 events before error at line 247
|
|
49
|
-
|
|
50
|
-
12:34:51 click button.submit-btn
|
|
51
|
-
12:34:51 fetch POST 401 /api/sessions (120ms) FAILED
|
|
52
|
-
12:34:51 fetch GET 401 /api/me (45ms) FAILED
|
|
53
|
-
12:34:52 route /login → /dashboard (pushState)
|
|
54
|
-
...
|
|
55
|
-
|
|
56
|
-
╴╴╴╴ ERROR ╴╴╴╴
|
|
57
|
-
12:34:53 error Cannot read properties of undefined (reading 'orgSlug')
|
|
58
|
-
at apps/Console.tsx:42:18
|
|
59
|
-
stack: Console.render
|
|
60
|
-
React.renderWithHooks
|
|
61
|
-
React.beginWork
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Format rules:
|
|
65
|
-
- One line per event, same SUMMARY format as `/kit:beacon-scan`.
|
|
66
|
-
- The error block at the end gets the message + (truncated) stack frames if present.
|
|
67
|
-
- Separator above the error is the visual cue.
|
|
68
|
-
|
|
69
|
-
After the timeline, write **one short paragraph** of analysis: what does the chain *look* like? Common patterns:
|
|
70
|
-
- 401s → error referencing user/org → "auth expired or org context missing"
|
|
71
|
-
- click → no observable effect → click again → error → "first click handler crashed silently; second click landed on something else"
|
|
72
|
-
- route change → error → "component on the new route blew up during initial render"
|
|
73
|
-
|
|
74
|
-
Don't dive into a fix — name the suspected proximate cause, suggest one concrete next step (which file to read, which probe to add, which `/kit:beacon-scan <kind>` to drill into).
|
|
75
|
-
|
|
76
|
-
## Constraints
|
|
77
|
-
|
|
78
|
-
- **Read-only.**
|
|
79
|
-
- **Most recent error only.** If the user wants an earlier one, they can clear the session (`/kit:beacon-clear`) and reproduce, or grep manually.
|
|
80
|
-
- **Plain text.** Same monospace conventions as `/kit:beacon-scan`.
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Scan recent events from the active launch-beacon monitor session. Defaults to last 50 events across all kinds; pass a kind (`error`, `click`, `fetch`, `route`, `dialog`, `probe`, etc.) to filter, and/or a numeric limit. Reads `.launchsecure/beacon-*.ndjson` — the file written by `launch-beacon monitor`. Read-only.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /kit:beacon-scan
|
|
6
|
-
|
|
7
|
-
Recent runtime events captured by a `launch-beacon monitor` session. Use this as the first step when investigating something that just happened in the browser — clicks, failed network calls, errors, route changes, probe() calls, dialog mount/unmount.
|
|
8
|
-
|
|
9
|
-
Parse `$ARGUMENTS` as up to two tokens (space-separated):
|
|
10
|
-
- A **kind filter**: one of `error`, `unhandledrejection`, `fetch`, `xhr`, `click`, `mousedown`, `route`, `dialog`, `probe`. Anything else is treated as a limit.
|
|
11
|
-
- A **limit**: integer. Default 50.
|
|
12
|
-
|
|
13
|
-
Examples:
|
|
14
|
-
- `/kit:beacon-scan` → last 50 events of any kind
|
|
15
|
-
- `/kit:beacon-scan error` → last 50 errors only
|
|
16
|
-
- `/kit:beacon-scan click 20` → last 20 click events
|
|
17
|
-
- `/kit:beacon-scan 100` → last 100 events of any kind
|
|
18
|
-
|
|
19
|
-
## Preflight
|
|
20
|
-
|
|
21
|
-
Find the most recent NDJSON file via Bash. If none exist, say so plainly and stop — there's nothing to scan.
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
LATEST=$(ls -t .launchsecure/beacon-*.ndjson 2>/dev/null | head -1)
|
|
25
|
-
test -n "$LATEST" || { echo "No beacon sessions found in .launchsecure/. Start one with: npx launch-beacon monitor"; exit 0; }
|
|
26
|
-
echo "session: $LATEST"
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Scan
|
|
30
|
-
|
|
31
|
-
If no kind filter, `tail -n <limit> "$LATEST"`.
|
|
32
|
-
|
|
33
|
-
If a kind filter is set, `grep '"kind":"<kind>"' "$LATEST" | tail -n <limit>`. The events are NDJSON, one per line — `grep` over the literal `"kind":"X"` substring is safe because the `kind` field is always the first or near-first key serialised by the beacon client.
|
|
34
|
-
|
|
35
|
-
Capture the raw JSON lines as the input to your analysis.
|
|
36
|
-
|
|
37
|
-
## Output
|
|
38
|
-
|
|
39
|
-
Group events visually by **time** (most recent last — chronological order matches the user's intuition for "what happened"). For each event, render one line:
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
HH:MM:SS KIND SUMMARY
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Where SUMMARY is a one-liner pulled from the event body:
|
|
46
|
-
- **error / unhandledrejection** → `message` (truncate ≤ 80 chars)
|
|
47
|
-
- **fetch / xhr** → `METHOD status url (durationMs)` — flag `FAILED` if `failed:true`
|
|
48
|
-
- **click / mousedown** → `target.selector` and, when `hitMatchesTarget === false`, also append `(occluded by <hitTarget.selector>)` — that's exactly the diagnostic the user is here for
|
|
49
|
-
- **route** → `from → to (via)`
|
|
50
|
-
- **dialog** → `<action> <selector>` (e.g. `mount dialog#xyz` or `unmount section[role=dialog]`)
|
|
51
|
-
- **probe** → `<label>: <truncated JSON>`
|
|
52
|
-
|
|
53
|
-
After the timeline, if anything looks suspicious (clusters of failed network calls, a click followed by no observable effect, a `hitMatchesTarget:false` event, an unhandled rejection), call it out in **one short paragraph** at the end. Don't analyze every event — only surface the standouts.
|
|
54
|
-
|
|
55
|
-
If the buffer is empty after filtering, say so: `No events match that filter in <session>.`
|
|
56
|
-
|
|
57
|
-
## Constraints
|
|
58
|
-
|
|
59
|
-
- **Read-only.** Never delete, modify, or write to the NDJSON file. Wiping is `/kit:beacon-clear`.
|
|
60
|
-
- **Always use the latest session by default.** If the user wants a specific session, they'll pass it as a third token — accept any of `<token>`, `<filename>`, or absolute path, and resolve to a valid `.launchsecure/beacon-*.ndjson` path before scanning. Reject with a clear error if it doesn't exist.
|
|
61
|
-
- **Plain text output.** Monospace alignment beats markdown tables here. The user is reading this fast during a debug loop.
|
|
62
|
-
- **Don't speculate on root cause.** Surface anomalies; let the user direct the next query (often: `/kit:beacon-pulse` for context around the latest error).
|
|
File without changes
|