@launchsecure/launch-kit 0.0.28 → 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.
Files changed (195) hide show
  1. package/dist/beacon/beacon.mjs +2759 -1246
  2. package/dist/beacon/beacon.mjs.map +1 -1
  3. package/dist/beacon/beacon.umd.js +710 -95
  4. package/dist/beacon/beacon.umd.js.map +1 -1
  5. package/dist/beacon/types/core.d.ts +14 -0
  6. package/dist/beacon/types/core.d.ts.map +1 -0
  7. package/dist/beacon/types/ctx.d.ts +14 -0
  8. package/dist/beacon/types/ctx.d.ts.map +1 -0
  9. package/dist/beacon/types/element.d.ts +16 -48
  10. package/dist/beacon/types/element.d.ts.map +1 -1
  11. package/dist/beacon/types/index.d.ts +5 -4
  12. package/dist/beacon/types/index.d.ts.map +1 -1
  13. package/dist/beacon/types/internal/annotation-cache.d.ts +10 -0
  14. package/dist/beacon/types/internal/annotation-cache.d.ts.map +1 -0
  15. package/dist/beacon/types/internal/element-capture.d.ts +19 -0
  16. package/dist/beacon/types/internal/element-capture.d.ts.map +1 -0
  17. package/dist/beacon/types/internal/event-buffer.d.ts +16 -0
  18. package/dist/beacon/types/internal/event-buffer.d.ts.map +1 -0
  19. package/dist/beacon/types/internal/framework-detect.d.ts +6 -0
  20. package/dist/beacon/types/internal/framework-detect.d.ts.map +1 -0
  21. package/dist/beacon/types/internal/markers.d.ts +17 -0
  22. package/dist/beacon/types/internal/markers.d.ts.map +1 -0
  23. package/dist/beacon/types/internal/monitor/capture-dom.d.ts +14 -0
  24. package/dist/beacon/types/internal/monitor/capture-dom.d.ts.map +1 -0
  25. package/dist/beacon/types/internal/monitor/capture-network.d.ts +12 -0
  26. package/dist/beacon/types/internal/monitor/capture-network.d.ts.map +1 -0
  27. package/dist/beacon/types/internal/monitor/overlay.d.ts +16 -0
  28. package/dist/beacon/types/internal/monitor/overlay.d.ts.map +1 -0
  29. package/dist/beacon/types/internal/monitor/session.d.ts +41 -0
  30. package/dist/beacon/types/internal/monitor/session.d.ts.map +1 -0
  31. package/dist/beacon/types/{monitor → internal/monitor}/transport.d.ts +3 -3
  32. package/dist/beacon/types/internal/monitor/transport.d.ts.map +1 -0
  33. package/dist/beacon/types/{monitor/types.d.ts → internal/monitor/wire.d.ts} +69 -27
  34. package/dist/beacon/types/internal/monitor/wire.d.ts.map +1 -0
  35. package/dist/beacon/types/{ui → internal}/pick-mode-overlay.d.ts +4 -5
  36. package/dist/beacon/types/internal/pick-mode-overlay.d.ts.map +1 -0
  37. package/dist/beacon/types/{capture → internal}/picker.d.ts +0 -1
  38. package/dist/beacon/types/internal/picker.d.ts.map +1 -0
  39. package/dist/beacon/types/{ui → internal}/pin-popover.d.ts +1 -1
  40. package/dist/beacon/types/internal/pin-popover.d.ts.map +1 -0
  41. package/dist/beacon/types/{capture → internal}/screenshot.d.ts +1 -0
  42. package/dist/beacon/types/internal/screenshot.d.ts.map +1 -0
  43. package/dist/beacon/types/internal/selector.d.ts.map +1 -0
  44. package/dist/beacon/types/plugins/domEle.d.ts +14 -0
  45. package/dist/beacon/types/plugins/domEle.d.ts.map +1 -0
  46. package/dist/beacon/types/plugins/domSS.d.ts +8 -0
  47. package/dist/beacon/types/plugins/domSS.d.ts.map +1 -0
  48. package/dist/beacon/types/plugins/errors.d.ts +3 -0
  49. package/dist/beacon/types/plugins/errors.d.ts.map +1 -0
  50. package/dist/beacon/types/plugins/index.d.ts +8 -0
  51. package/dist/beacon/types/plugins/index.d.ts.map +1 -0
  52. package/dist/beacon/types/plugins/liveMonitor.d.ts +14 -0
  53. package/dist/beacon/types/plugins/liveMonitor.d.ts.map +1 -0
  54. package/dist/beacon/types/plugins/metadata.d.ts +3 -0
  55. package/dist/beacon/types/plugins/metadata.d.ts.map +1 -0
  56. package/dist/beacon/types/registry.d.ts +33 -0
  57. package/dist/beacon/types/registry.d.ts.map +1 -0
  58. package/dist/beacon/types/styles.d.ts +8 -0
  59. package/dist/beacon/types/styles.d.ts.map +1 -0
  60. package/dist/beacon/types/transport.d.ts +3 -0
  61. package/dist/beacon/types/transport.d.ts.map +1 -0
  62. package/dist/beacon/types/types.d.ts +152 -68
  63. package/dist/beacon/types/types.d.ts.map +1 -1
  64. package/dist/beacon/types/ui/dialog.d.ts +53 -0
  65. package/dist/beacon/types/ui/dialog.d.ts.map +1 -0
  66. package/dist/beacon/types/ui/form.d.ts +7 -0
  67. package/dist/beacon/types/ui/form.d.ts.map +1 -0
  68. package/dist/beacon/types/ui/overlay.d.ts +6 -0
  69. package/dist/beacon/types/ui/overlay.d.ts.map +1 -0
  70. package/dist/deck-client/assets/{_baseUniq-W2JQDmje.js → _baseUniq-DCt2IMRR.js} +1 -1
  71. package/dist/deck-client/assets/{arc-DIBWAId9.js → arc-h-ifqmNR.js} +1 -1
  72. package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-CAIRMvJK.js → architectureDiagram-Q4EWVU46-C9dITSPv.js} +1 -1
  73. package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-BeNaNiOi.js → blockDiagram-DXYQGD6D-BHuJT34t.js} +1 -1
  74. package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-B9Ozi62h.js → c4Diagram-AHTNJAMY-CpvMGtDG.js} +1 -1
  75. package/dist/deck-client/assets/channel-2PZVMiXf.js +1 -0
  76. package/dist/deck-client/assets/{chunk-4BX2VUAB-D7AZ47dt.js → chunk-4BX2VUAB-B6md1VIm.js} +1 -1
  77. package/dist/deck-client/assets/{chunk-4TB4RGXK-DnVnNPcI.js → chunk-4TB4RGXK-BmEnX8ik.js} +1 -1
  78. package/dist/deck-client/assets/{chunk-55IACEB6-UKYs-YNd.js → chunk-55IACEB6-BZPUyZAZ.js} +1 -1
  79. package/dist/deck-client/assets/{chunk-EDXVE4YY-D43b-SKn.js → chunk-EDXVE4YY-BWwNUK-l.js} +1 -1
  80. package/dist/deck-client/assets/{chunk-FMBD7UC4-QzBAoyyW.js → chunk-FMBD7UC4-o7gSppGI.js} +1 -1
  81. package/dist/deck-client/assets/{chunk-OYMX7WX6-Cjif4r6W.js → chunk-OYMX7WX6-C4KoTL5p.js} +1 -1
  82. package/dist/deck-client/assets/{chunk-QZHKN3VN-CqLDirEI.js → chunk-QZHKN3VN-jkf68sDs.js} +1 -1
  83. package/dist/deck-client/assets/{chunk-YZCP3GAM-_FQvmMs4.js → chunk-YZCP3GAM-Cd4yBE7o.js} +1 -1
  84. package/dist/deck-client/assets/classDiagram-6PBFFD2Q-Bt8xBAof.js +1 -0
  85. package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-Bt8xBAof.js +1 -0
  86. package/dist/deck-client/assets/clone-BHQryoDl.js +1 -0
  87. package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-rfrocesE.js → cose-bilkent-S5V4N54A-DeGFUgAV.js} +1 -1
  88. package/dist/deck-client/assets/{dagre-KV5264BT-Bv_7DJat.js → dagre-KV5264BT-ekcYJuUV.js} +1 -1
  89. package/dist/deck-client/assets/{diagram-5BDNPKRD-4F1414G5.js → diagram-5BDNPKRD-YHPk4rV2.js} +1 -1
  90. package/dist/deck-client/assets/{diagram-G4DWMVQ6-C4-Pszqm.js → diagram-G4DWMVQ6-DM-JCd_B.js} +1 -1
  91. package/dist/deck-client/assets/{diagram-MMDJMWI5-B647TIx9.js → diagram-MMDJMWI5-l5FK1ybk.js} +1 -1
  92. package/dist/deck-client/assets/{diagram-TYMM5635-BFAqpezd.js → diagram-TYMM5635-CIN4_1-j.js} +1 -1
  93. package/dist/deck-client/assets/{erDiagram-SMLLAGMA-BfBfrJOC.js → erDiagram-SMLLAGMA-MyinSkEl.js} +1 -1
  94. package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-DX9YAYes.js → flowDiagram-DWJPFMVM-Dk8nn42x.js} +1 -1
  95. package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-DCuiy7wF.js → ganttDiagram-T4ZO3ILL-BU1ihicu.js} +1 -1
  96. package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-CGp1IXUh.js → gitGraphDiagram-UUTBAWPF-BjsTL13C.js} +1 -1
  97. package/dist/deck-client/assets/{graph-B7g8aoxv.js → graph-DJmh-xi7.js} +1 -1
  98. package/dist/deck-client/assets/{index-Dg1r-WSN.js → index-KsShfCV-.js} +3 -3
  99. package/dist/deck-client/assets/{infoDiagram-42DDH7IO-L3fahMkF.js → infoDiagram-42DDH7IO-Dxvy_RB4.js} +1 -1
  100. package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-aS_EjWBZ.js → ishikawaDiagram-UXIWVN3A-DPOaNF1l.js} +1 -1
  101. package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-djTSQZF9.js → journeyDiagram-VCZTEJTY-DMew3K5c.js} +1 -1
  102. package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-CcTHo4CM.js → kanban-definition-6JOO6SKY-csciJFuk.js} +1 -1
  103. package/dist/deck-client/assets/{layout-mEJiadb7.js → layout-Dg4yyms2.js} +1 -1
  104. package/dist/deck-client/assets/{linear-XgTKqyRu.js → linear-BA3zU6gq.js} +1 -1
  105. package/dist/deck-client/assets/{min-Ct9jZdpd.js → min-lz-Ird-p.js} +1 -1
  106. package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-BaFxCGNU.js → mindmap-definition-QFDTVHPH-CCEN8OQV.js} +1 -1
  107. package/dist/deck-client/assets/{pieDiagram-DEJITSTG-CIbYYjtw.js → pieDiagram-DEJITSTG-DM6n1HY7.js} +1 -1
  108. package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-D9EtCOvh.js → quadrantDiagram-34T5L4WZ-_ULoR66n.js} +1 -1
  109. package/dist/deck-client/assets/{requirementDiagram-MS252O5E-xeni9eVG.js → requirementDiagram-MS252O5E-BuwJs7Tn.js} +1 -1
  110. package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-LYeknz9h.js → sankeyDiagram-XADWPNL6-BEsuzkW4.js} +1 -1
  111. package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-RDbsKFZf.js → sequenceDiagram-FGHM5R23-CP2H0YWf.js} +1 -1
  112. package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-BH1Zjglk.js → stateDiagram-FHFEXIEX-B5Gw_NNL.js} +1 -1
  113. package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-4T4wMDXr.js +1 -0
  114. package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-IFXxKptt.js → timeline-definition-GMOUNBTQ-DsoYydQa.js} +1 -1
  115. package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-D-sLkQs9.js → vennDiagram-DHZGUBPP-Dz8JT_ob.js} +1 -1
  116. package/dist/deck-client/assets/wardley-RL74JXVD-DGHQ_Ijv.js +162 -0
  117. package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-BTjjuDU3.js → wardleyDiagram-NUSXRM2D-DN1LJMB1.js} +1 -1
  118. package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-AYbv92n-.js → xychartDiagram-5P7HB3ND-nb0oSfrQ.js} +1 -1
  119. package/dist/deck-client/index.html +1 -1
  120. package/dist/server/beacon-monitor-entry.js +548 -6
  121. package/dist/server/chart-serve.js +920 -249
  122. package/dist/server/cli.js +1599 -595
  123. package/dist/server/course-entry.js +3 -3
  124. package/dist/server/graph-mcp-entry.js +1361 -394
  125. package/dist/server/init-entry.js +799 -195
  126. package/dist/server/orbit-entry.js +135 -7
  127. package/dist/server/parse-worker-entry.js +918 -247
  128. package/package.json +3 -2
  129. package/scaffolds/ls-marketplace/.claude-plugin/marketplace.json +4 -4
  130. package/scaffolds/ls-marketplace/plugins/{ls → kit}/.claude-plugin/plugin.json +1 -10
  131. package/scaffolds/ls-marketplace/plugins/{ls → kit}/commands/activate-beacon.md +2 -2
  132. package/scaffolds/ls-marketplace/plugins/kit/commands/activate-statusline.md +46 -0
  133. package/scaffolds/ls-marketplace/plugins/kit/commands/deactivate-statusline.md +34 -0
  134. package/scaffolds/ls-marketplace/plugins/{ls → kit}/commands/standup.md +52 -38
  135. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-array.md +107 -0
  136. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-clear.md +94 -0
  137. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-pulse.md +82 -0
  138. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-scan.md +66 -0
  139. package/scaffolds/ls-marketplace/plugins/kit/skills/blast-radius.md +101 -0
  140. package/scaffolds/ls-marketplace/plugins/kit/skills/brief.md +112 -0
  141. package/scaffolds/ls-marketplace/plugins/kit/skills/course.md +84 -0
  142. package/scaffolds/ls-marketplace/plugins/kit/skills/debug.md +92 -0
  143. package/scaffolds/ls-marketplace/plugins/kit/skills/deploy-check.md +160 -0
  144. package/scaffolds/ls-marketplace/plugins/kit/skills/diagram.md +134 -0
  145. package/scaffolds/ls-marketplace/plugins/kit/skills/orbit.md +87 -0
  146. package/scaffolds/ls-marketplace/plugins/kit/skills/prototype.md +90 -0
  147. package/scaffolds/ls-marketplace/plugins/kit/skills/recall.md +83 -0
  148. package/scaffolds/ls-marketplace/plugins/{ls/commands → kit/skills}/show-mcp-status.md +8 -8
  149. package/scaffolds/ls-marketplace/plugins/kit/skills/wireframe.md +70 -0
  150. package/scaffolds/statusline/statusline-mcp.sh +204 -0
  151. package/scaffolds/statusline/statusline-wrapper.sh +50 -0
  152. package/dist/beacon/types/capture/element.d.ts +0 -3
  153. package/dist/beacon/types/capture/element.d.ts.map +0 -1
  154. package/dist/beacon/types/capture/events.d.ts +0 -20
  155. package/dist/beacon/types/capture/events.d.ts.map +0 -1
  156. package/dist/beacon/types/capture/framework.d.ts +0 -3
  157. package/dist/beacon/types/capture/framework.d.ts.map +0 -1
  158. package/dist/beacon/types/capture/metadata.d.ts +0 -3
  159. package/dist/beacon/types/capture/metadata.d.ts.map +0 -1
  160. package/dist/beacon/types/capture/overlay.d.ts +0 -7
  161. package/dist/beacon/types/capture/overlay.d.ts.map +0 -1
  162. package/dist/beacon/types/capture/picker.d.ts.map +0 -1
  163. package/dist/beacon/types/capture/screenshot.d.ts.map +0 -1
  164. package/dist/beacon/types/capture/selector.d.ts.map +0 -1
  165. package/dist/beacon/types/monitor/dom.d.ts +0 -13
  166. package/dist/beacon/types/monitor/dom.d.ts.map +0 -1
  167. package/dist/beacon/types/monitor/index.d.ts +0 -19
  168. package/dist/beacon/types/monitor/index.d.ts.map +0 -1
  169. package/dist/beacon/types/monitor/network.d.ts +0 -12
  170. package/dist/beacon/types/monitor/network.d.ts.map +0 -1
  171. package/dist/beacon/types/monitor/transport.d.ts.map +0 -1
  172. package/dist/beacon/types/monitor/types.d.ts.map +0 -1
  173. package/dist/beacon/types/transport/submit.d.ts +0 -3
  174. package/dist/beacon/types/transport/submit.d.ts.map +0 -1
  175. package/dist/beacon/types/ui/button.d.ts +0 -2
  176. package/dist/beacon/types/ui/button.d.ts.map +0 -1
  177. package/dist/beacon/types/ui/drawer.d.ts +0 -33
  178. package/dist/beacon/types/ui/drawer.d.ts.map +0 -1
  179. package/dist/beacon/types/ui/icons.d.ts +0 -9
  180. package/dist/beacon/types/ui/icons.d.ts.map +0 -1
  181. package/dist/beacon/types/ui/monitor-panel.d.ts +0 -19
  182. package/dist/beacon/types/ui/monitor-panel.d.ts.map +0 -1
  183. package/dist/beacon/types/ui/pick-mode-overlay.d.ts.map +0 -1
  184. package/dist/beacon/types/ui/pin-popover.d.ts.map +0 -1
  185. package/dist/deck-client/assets/channel-CRdozqbp.js +0 -1
  186. package/dist/deck-client/assets/classDiagram-6PBFFD2Q-lIZMp57W.js +0 -1
  187. package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-lIZMp57W.js +0 -1
  188. package/dist/deck-client/assets/clone-BtWeSTyJ.js +0 -1
  189. package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-BrV78NDR.js +0 -1
  190. package/dist/deck-client/assets/wardley-RL74JXVD-C010F8l4.js +0 -162
  191. package/scaffolds/ls-marketplace/plugins/ls/commands/beacon-array.md +0 -92
  192. package/scaffolds/ls-marketplace/plugins/ls/commands/beacon-clear.md +0 -68
  193. package/scaffolds/ls-marketplace/plugins/ls/commands/beacon-pulse.md +0 -80
  194. package/scaffolds/ls-marketplace/plugins/ls/commands/beacon-scan.md +0 -62
  195. /package/dist/beacon/types/{capture → internal}/selector.d.ts +0 -0
@@ -0,0 +1,70 @@
1
+ ---
2
+ description: Generate a hand-drawn wireframe mockup using wired-elements and push it to launch-deck for review. Use when the user wants to sketch a UI/page layout before any real implementation — sign-off material for discussion, not production HTML. Calls deck's rich-html block with framework=wired.
3
+ ---
4
+
5
+ # /kit:wireframe
6
+
7
+ Sketch a UI screen as a low-fi wired-elements wireframe and push it to launch-deck. The output is intentionally sketchy (the wired-elements aesthetic) — it communicates structure and information density, not final visual design.
8
+
9
+ Parse `$ARGUMENTS`:
10
+ - **description** (required) — free-form description of the screen, e.g. "settings page with three tabs: profile, billing, integrations; right rail shows recent activity". If absent, ask the user.
11
+ - **--session=<id>** — deck session name. Default `wireframe-<slugified-description-first-3-words>`.
12
+ - **--feedback** — push in `feedback` mode with `prompt: "What's missing from this layout?"` and call `await_feedback` afterward.
13
+ - **--theme=light|dark** — only set when the wireframe ONLY makes sense in one mode. Default: omit (deck's sun/moon toggle wins).
14
+
15
+ Examples:
16
+ - `/kit:wireframe settings page with three tabs: profile, billing, integrations`
17
+ - `/kit:wireframe org dashboard with KPI strip on top, project grid below --feedback`
18
+
19
+ ## Preflight
20
+
21
+ 1. Confirm `mcp__launch-deck__server_status` returns running. If not, call `mcp__launch-deck__start_server` first.
22
+ 2. If the description is shorter than ~8 words OR mentions a real page in this repo, run `mcp__launch-chart__read_graph(type: "page", search: <hint>)` to find a similar existing page first — confirm with the user whether to mirror that page's structure or design new layout from scratch. (This is a courtesy to avoid wireframing something that already exists; skip on `--no-chart`.)
23
+
24
+ ## Build the wired markup
25
+
26
+ Translate the description into a wired-elements page body. Use these elements:
27
+
28
+ | Need | Use |
29
+ |---|---|
30
+ | Container | `<wired-card elevation="2">` |
31
+ | Heading | plain `<h1>` / `<h2>` (wired-card text inherits) |
32
+ | Buttons | `<wired-button>Label</wired-button>` |
33
+ | Input | `<wired-input placeholder="…"></wired-input>` |
34
+ | Checkbox | `<wired-checkbox>Label</wired-checkbox>` |
35
+ | Dropdown | `<wired-combo>` with `<wired-item value="…">…</wired-item>` children |
36
+ | Tabs | `<wired-tabs>` with `<wired-tab name="…">…</wired-tab>` children |
37
+ | Slider | `<wired-slider min=… max=…>` |
38
+ | Divider | `<wired-divider>` |
39
+
40
+ Layout rules:
41
+ - Wrap the page in a top-level `<wired-card>` so it gets the sketched border.
42
+ - Use CSS grid (`display:grid; grid-template-columns: …;`) for multi-column layouts — inline `<style>` is fine, the deck rich-html block renders it.
43
+ - Pad generously (`padding: 24px; gap: 16px`) — the wired-elements aesthetic looks cramped without space.
44
+ - Annotate non-obvious regions with comments like `<!-- right rail: activity feed -->` so the reviewer can navigate the markup.
45
+
46
+ Do NOT include real production CSS, no Tailwind utility classes, no shadcn primitives. This is on-purpose a sketch.
47
+
48
+ ## Push to deck
49
+
50
+ Call `mcp__launch-deck__deck` with:
51
+ - `session: <session>`
52
+ - `mode: "show"` (or `"feedback"` if `--feedback` was passed; also set `prompt`)
53
+ - `blocks: [{ type: "rich-html", framework: "wired", label: <short-title>, content: <body-html>, theme: <theme?> }]`
54
+
55
+ If `--feedback` was passed, immediately call `mcp__launch-deck__await_feedback` with the same session and surface the user's response back.
56
+
57
+ ## Output
58
+
59
+ ```
60
+ wireframe pushed — deck session "<session>" — http://localhost:52829/?session=<session>
61
+ elements: <N> cards, <M> buttons, <K> inputs, <T> tabs
62
+ ```
63
+
64
+ If `--feedback`: also print the feedback comment + any option selections, then ask what to change.
65
+
66
+ ## Constraints
67
+
68
+ - **No production assets.** Don't pull real images, real fonts, real brand colors — the wired sketch IS the point. If the user asks for a "polished" mockup, suggest `/kit:prototype` instead.
69
+ - **Single block per push.** Don't split one wireframe into multiple deck blocks; one screen = one rich-html block.
70
+ - **Iterate via re-push.** Re-running with the same `--session` overwrites; that's the iteration loop.
@@ -0,0 +1,204 @@
1
+ #!/usr/bin/env bash
2
+ # launch-kit MCP chip generator.
3
+ # Emits a colored one-line summary of MCP daemon health, one chip per daemon.
4
+ # Composes into any existing statusline via the launch-kit wrapper.
5
+ #
6
+ # Usage:
7
+ # statusline-mcp.sh # all known chips (recall, chart, deck, council)
8
+ # statusline-mcp.sh --show=recall,chart # only the listed chips
9
+ # statusline-mcp.sh --compact # collapse to `mcp <up>/<total>`
10
+ # green when all up, red if any down
11
+ #
12
+ # Project root is inferred from $LK_STATUSLINE_CWD (set by the wrapper) or
13
+ # $PWD by walking up until a `.launchsecure` dir is found. Silent exit when
14
+ # the cwd is not inside a launchsecure project.
15
+ set -u
16
+
17
+ show=""
18
+ compact=0
19
+ for arg in "$@"; do
20
+ case "$arg" in
21
+ --show=*) show="${arg#--show=}" ;;
22
+ --compact) compact=1 ;;
23
+ esac
24
+ done
25
+ [ -z "$show" ] && show="recall,chart,deck,council"
26
+
27
+ GREEN=$'\033[32m'
28
+ ORANGE=$'\033[33m'
29
+ RED=$'\033[31m'
30
+ RESET=$'\033[0m'
31
+
32
+ find_project_root() {
33
+ # `.recall` only exists at the repo root (launch-recall init creates it
34
+ # there). `.launchsecure` can appear in subdirs too (e.g. packages/cli
35
+ # when graphs are generated for a sub-project), so we prefer .recall as
36
+ # the canonical root marker. Fallback: outermost `.launchsecure` ancestor
37
+ # (walk up and keep overwriting → keeps the highest match).
38
+ local d="${1:-$PWD}"
39
+ local recall_root=""
40
+ local outermost_launchsecure=""
41
+ while [ -n "$d" ] && [ "$d" != "/" ]; do
42
+ if [ -z "$recall_root" ] && [ -d "$d/.recall" ]; then
43
+ recall_root="$d"
44
+ fi
45
+ if [ -d "$d/.launchsecure" ]; then
46
+ outermost_launchsecure="$d"
47
+ fi
48
+ d=$(dirname "$d")
49
+ done
50
+ if [ -n "$recall_root" ]; then echo "$recall_root"; return 0; fi
51
+ if [ -n "$outermost_launchsecure" ]; then echo "$outermost_launchsecure"; return 0; fi
52
+ return 1
53
+ }
54
+
55
+ PROJECT_ROOT=$(find_project_root "${LK_STATUSLINE_CWD:-$PWD}") || exit 0
56
+
57
+ iso_to_epoch() {
58
+ # Input is always UTC (ISO timestamps from .freshness.json end in Z).
59
+ # macOS BSD `date` defaults to local TZ, so without TZ=UTC the timestamp
60
+ # gets misread as local time → wildly wrong age (e.g. 6h instead of 55m).
61
+ local ts="$1"
62
+ ts="${ts%%.*}"; ts="${ts%%Z*}"; ts="${ts%%+*}"
63
+ TZ=UTC date -j -f "%Y-%m-%dT%H:%M:%S" "$ts" +%s 2>/dev/null
64
+ }
65
+
66
+ fmt_age() {
67
+ local then="$1"
68
+ local now diff
69
+ now=$(date +%s)
70
+ diff=$((now - then))
71
+ if [ "$diff" -lt 60 ]; then echo "${diff}s"
72
+ elif [ "$diff" -lt 3600 ]; then echo "$((diff/60))m"
73
+ elif [ "$diff" -lt 86400 ]; then echo "$((diff/3600))h"
74
+ else echo "$((diff/86400))d"
75
+ fi
76
+ }
77
+
78
+ pid_from_lockfile() {
79
+ grep -o '"pid"[^,}]*' "$1" 2>/dev/null | head -1 | sed 's/[^0-9]//g'
80
+ }
81
+
82
+ # Each chip_* function sets two globals so the caller can use both the
83
+ # colored display string (verbose mode) and the abstract state (compact mode)
84
+ # without re-running the underlying probe. Must be called as a bare command
85
+ # (no subshell) so the assignments survive.
86
+ _state=""
87
+ _display=""
88
+
89
+ chip_recall() {
90
+ local pidfile="$PROJECT_ROOT/.recall/watch.pid"
91
+ local repo="$PROJECT_ROOT/.recall/repo.git"
92
+ if [ ! -f "$pidfile" ]; then _state="red"; _display="${RED}recall${RESET}"; return; fi
93
+ local pid
94
+ pid=$(cat "$pidfile" 2>/dev/null) || pid=""
95
+ if [ -z "$pid" ] || ! kill -0 "$pid" 2>/dev/null; then
96
+ _state="red"; _display="${RED}recall${RESET}"
97
+ return
98
+ fi
99
+ if [ -d "$repo" ]; then
100
+ local last
101
+ last=$(git --git-dir="$repo" log -1 --format=%ct 2>/dev/null)
102
+ if [ -n "$last" ]; then
103
+ local now diff age
104
+ now=$(date +%s); diff=$((now - last)); age=$(fmt_age "$last")
105
+ if [ "$diff" -gt 21600 ]; then
106
+ _state="orange"; _display="${ORANGE}recall(${age})${RESET}"
107
+ else
108
+ _state="green"; _display="${GREEN}recall(${age})${RESET}"
109
+ fi
110
+ return
111
+ fi
112
+ fi
113
+ _state="green"; _display="${GREEN}recall${RESET}"
114
+ }
115
+
116
+ chip_chart() {
117
+ # Drift-based color — reflects how out-of-sync the graph is with the code,
118
+ # NOT whether a watcher daemon is alive. A user who regenerated by hand
119
+ # and never started the watcher should still see green when the graph is
120
+ # fresh. Daemon liveness lives in /kit:show-mcp-status.
121
+ #
122
+ # RED — .freshness.json missing OR failedFiles non-empty (broken graph)
123
+ # ORANGE — state != "fresh" (chart MCP says the snapshot has drifted)
124
+ # GREEN — state == "fresh" AND no failed files
125
+ local freshness="$PROJECT_ROOT/.launchsecure/graphs/.freshness.json"
126
+ if [ ! -f "$freshness" ]; then _state="red"; _display="${RED}chart${RESET}"; return; fi
127
+
128
+ local last state_field
129
+ last=$(grep -o '"lastFullRegenAt"[^,}]*' "$freshness" | head -1 | sed 's/.*"\([0-9TZ:.+-]*\)".*/\1/')
130
+ state_field=$(grep -o '"state"[[:space:]]*:[[:space:]]*"[^"]*"' "$freshness" | head -1 | sed 's/.*"\([^"]*\)"$/\1/')
131
+
132
+ # failedFiles is non-empty iff the empty-array literal `[]` isn't present.
133
+ local color state
134
+ if ! grep -q '"failedFiles"[[:space:]]*:[[:space:]]*\[[[:space:]]*\]' "$freshness"; then
135
+ color="$RED"; state="red"
136
+ elif [ "$state_field" != "fresh" ]; then
137
+ color="$ORANGE"; state="orange"
138
+ else
139
+ color="$GREEN"; state="green"
140
+ fi
141
+
142
+ if [ -n "$last" ] && [ "$last" != "null" ]; then
143
+ local epoch age
144
+ epoch=$(iso_to_epoch "$last")
145
+ if [ -n "$epoch" ]; then
146
+ age=$(fmt_age "$epoch")
147
+ _state="$state"; _display="${color}chart(${age})${RESET}"
148
+ return
149
+ fi
150
+ fi
151
+ _state="$state"; _display="${color}chart${RESET}"
152
+ }
153
+
154
+ chip_deck() {
155
+ local lock="$PROJECT_ROOT/.launchsecure/launch-deck.lock"
156
+ if [ -f "$lock" ]; then
157
+ local pid; pid=$(pid_from_lockfile "$lock")
158
+ if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
159
+ _state="green"; _display="${GREEN}deck${RESET}"; return
160
+ fi
161
+ fi
162
+ _state="orange"; _display="${ORANGE}deck${RESET}"
163
+ }
164
+
165
+ chip_council() {
166
+ local lock="$PROJECT_ROOT/.launchsecure/launch-council.lock"
167
+ if [ -f "$lock" ]; then
168
+ local pid; pid=$(pid_from_lockfile "$lock")
169
+ if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
170
+ _state="green"; _display="${GREEN}council${RESET}"; return
171
+ fi
172
+ fi
173
+ _state="orange"; _display="${ORANGE}council${RESET}"
174
+ }
175
+
176
+ show_list=$(echo "$show" | tr ',' ' ')
177
+ total=0
178
+ up=0
179
+ out=""
180
+ for d in $show_list; do
181
+ case "$d" in
182
+ recall) chip_recall ;;
183
+ chart) chip_chart ;;
184
+ deck) chip_deck ;;
185
+ council) chip_council ;;
186
+ *) continue ;;
187
+ esac
188
+ total=$((total + 1))
189
+ [ "$_state" = "green" ] && up=$((up + 1))
190
+ if [ "$compact" = "0" ]; then
191
+ if [ -z "$out" ]; then out="$_display"; else out="${out} · ${_display}"; fi
192
+ fi
193
+ done
194
+
195
+ if [ "$compact" = "1" ]; then
196
+ if [ "$total" -eq 0 ]; then exit 0; fi
197
+ if [ "$up" -eq "$total" ]; then
198
+ printf '%smcp %d/%d%s' "$GREEN" "$up" "$total" "$RESET"
199
+ else
200
+ printf '%smcp %d/%d%s' "$RED" "$up" "$total" "$RESET"
201
+ fi
202
+ else
203
+ printf '%s' "$out"
204
+ fi
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env bash
2
+ # launch-kit statusline wrapper.
3
+ # Runs the user's original statusline command, then appends MCP chip output.
4
+ # Reads Claude Code's statusline JSON from stdin once, fans it out.
5
+ #
6
+ # The original command is stored under `_launchKitStatuslineOriginal.command`
7
+ # in ~/.claude/settings.json (written by `launch-kit statusline activate`).
8
+ # `launch-kit statusline deactivate` restores it to `statusLine.command`.
9
+ set -u
10
+
11
+ input=$(cat)
12
+ settings="$HOME/.claude/settings.json"
13
+
14
+ original_cmd=""
15
+ if [ -f "$settings" ] && command -v jq >/dev/null 2>&1; then
16
+ original_cmd=$(jq -r '._launchKitStatuslineOriginal.command // empty' "$settings" 2>/dev/null || true)
17
+ fi
18
+
19
+ original_output=""
20
+ if [ -n "$original_cmd" ]; then
21
+ original_output=$(printf '%s' "$input" | bash -c "$original_cmd" 2>/dev/null || true)
22
+ fi
23
+
24
+ cwd=""
25
+ if command -v jq >/dev/null 2>&1; then
26
+ cwd=$(printf '%s' "$input" | jq -r '.workspace.current_dir // .cwd // empty' 2>/dev/null || true)
27
+ fi
28
+
29
+ chips=""
30
+ if [ -x "$HOME/.launchsecure/statusline-mcp.sh" ]; then
31
+ # Build args array conditionally; `set -u` + empty `"${args[@]}"` would
32
+ # error on bash 4 (default macOS bash), so test length before expanding.
33
+ args=()
34
+ [ -n "${LK_STATUSLINE_SHOW:-}" ] && args+=("--show=$LK_STATUSLINE_SHOW")
35
+ [ "${LK_STATUSLINE_COMPACT:-0}" = "1" ] && args+=("--compact")
36
+ if [ "${#args[@]}" -eq 0 ]; then
37
+ chips=$(LK_STATUSLINE_CWD="$cwd" "$HOME/.launchsecure/statusline-mcp.sh" 2>/dev/null || true)
38
+ else
39
+ chips=$(LK_STATUSLINE_CWD="$cwd" "$HOME/.launchsecure/statusline-mcp.sh" "${args[@]}" 2>/dev/null || true)
40
+ fi
41
+ fi
42
+
43
+ sep=$'\033[2m | \033[0m'
44
+ if [ -n "$original_output" ] && [ -n "$chips" ]; then
45
+ printf '%s%s%s' "$original_output" "$sep" "$chips"
46
+ elif [ -n "$original_output" ]; then
47
+ printf '%s' "$original_output"
48
+ elif [ -n "$chips" ]; then
49
+ printf '%s' "$chips"
50
+ fi
@@ -1,3 +0,0 @@
1
- import type { RawPinCapture } from '../types';
2
- export declare function capturePin(el: Element): RawPinCapture;
3
- //# sourceMappingURL=element.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/element.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAwD9C,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,aAAa,CAsBrD"}
@@ -1,20 +0,0 @@
1
- import type { CapturedEvent } from '../types';
2
- /**
3
- * Attach `error` and `unhandledrejection` listeners on `window`. Idempotent — safe
4
- * to call repeatedly (e.g., HMR reloads). No-op in non-browser environments.
5
- *
6
- * Called at module load from index.ts so we start capturing before the beacon
7
- * element mounts. Errors that fire during initial page hydration are exactly
8
- * the ones users are most likely to report and least able to describe.
9
- */
10
- export declare function installEventCapture(): void;
11
- /** Snapshot of the captured events buffer. Returns a copy; callers can mutate it. */
12
- export declare function getCapturedEvents(): CapturedEvent[];
13
- /**
14
- * Register a callback that fires every time a new event is added to the buffer.
15
- * Returns an unsubscribe function. Used by the drawer to live-update its chip
16
- * count so users see errors arrive in real-time, regardless of whether the
17
- * widget was opened before or after the error fired.
18
- */
19
- export declare function subscribeToEvents(fn: () => void): () => void;
20
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/events.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAuE9C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CA0C1C;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG5D"}
@@ -1,3 +0,0 @@
1
- import type { Pin } from '../types';
2
- export declare function detectFramework(el: Element): Pin['framework'] | undefined;
3
- //# sourceMappingURL=framework.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/framework.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AA2DpC,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS,CAGzE"}
@@ -1,3 +0,0 @@
1
- import type { Metadata } from '../types';
2
- export declare function captureMetadata(): Metadata;
3
- //# sourceMappingURL=metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AA4BzC,wBAAgB,eAAe,IAAI,QAAQ,CAoB1C"}
@@ -1,7 +0,0 @@
1
- import type { Pin } from '../types';
2
- export declare function drawMarkers(screenshotDataUrl: string, pins: Pin[], viewportSize: {
3
- w: number;
4
- h: number;
5
- dpr: number;
6
- }, pinElements?: WeakMap<Pin, Element>, accent?: string): Promise<string>;
7
- //# sourceMappingURL=overlay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/overlay.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAQpC,wBAAsB,WAAW,CAC/B,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,GAAG,EAAE,EACX,YAAY,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACnD,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EACnC,MAAM,GAAE,MAAuB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAyDjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/picker.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CAoJ7D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/screenshot.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAChC;AA6DD,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwCrF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/capture/selector.ts"],"names":[],"mappings":"AAiCA,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CA6CrD"}
@@ -1,13 +0,0 @@
1
- import type { MonitorClickEvent, MonitorDialogEvent, MonitorRouteEvent } from './types';
2
- type Emit<E> = (event: Omit<E, 'ts' | 'sessionId' | 'seq'>) => void;
3
- interface CaptureCallbacks {
4
- emitClick: Emit<MonitorClickEvent>;
5
- emitRoute: Emit<MonitorRouteEvent>;
6
- emitDialog: Emit<MonitorDialogEvent>;
7
- }
8
- interface Installation {
9
- uninstall(): void;
10
- }
11
- export declare function installDomCapture(cb: CaptureCallbacks): Installation;
12
- export {};
13
- //# sourceMappingURL=dom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/monitor/dom.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAsB,kBAAkB,EAAsB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AAEpE,UAAU,gBAAgB;IACxB,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;CACtC;AAED,UAAU,YAAY;IACpB,SAAS,IAAI,IAAI,CAAC;CACnB;AAqOD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,GAAG,YAAY,CAWpE"}
@@ -1,19 +0,0 @@
1
- import type { MonitorPublicAPI } from './types';
2
- type Listener = (active: boolean, url: string | null) => void;
3
- /** Subscribe to active-state changes. Used by the panel UI to update its display. */
4
- export declare function subscribeToMonitor(fn: Listener): () => void;
5
- export declare const monitor: MonitorPublicAPI;
6
- /**
7
- * Resume a persisted session if one exists in sessionStorage. Called at module
8
- * load. Without this, a page reload during active monitoring silently drops
9
- * capture even though the URL is still configured.
10
- */
11
- export declare function resumeIfPersisted(): void;
12
- /**
13
- * Install the public API on window. Idempotent. Called from index.ts at module
14
- * load so consumers can call `window.__lsBeacon.start(...)` from devtools or
15
- * a bookmarklet without waiting for the element to mount.
16
- */
17
- export declare function installPublicAPI(): void;
18
- export {};
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/monitor/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAgBjB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAkQ9D,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,IAAI,CAG3D;AAED,eAAO,MAAM,OAAO,EAAE,gBAMrB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CASxC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
@@ -1,12 +0,0 @@
1
- import type { MonitorNetworkEvent } from './types';
2
- type Emit = (event: Omit<MonitorNetworkEvent, 'ts' | 'sessionId' | 'seq'>) => void;
3
- interface InstallOptions {
4
- emit: Emit;
5
- verbose: boolean;
6
- }
7
- interface Installation {
8
- uninstall(): void;
9
- }
10
- export declare function installNetworkCapture(opts: InstallOptions): Installation;
11
- export {};
12
- //# sourceMappingURL=network.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/monitor/network.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AAEnF,UAAU,cAAc;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,YAAY;IACpB,SAAS,IAAI,IAAI,CAAC;CACnB;AA6ID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CASxE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/monitor/transport.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAC;AAM1D,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,gBAAgB;IAelC,OAAO,CAAC,sBAAsB,CAE5B;IAEF,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAUlC,4DAA4D;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B5B,0DAA0D;IAC1D,OAAO,CAAC,SAAS;IAoBjB,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,SAAS;CAgBlB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/monitor/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { FeedbackPayload, SubmitResponse } from '../types';
2
- export declare function submitFeedback(endpoint: string, payload: FeedbackPayload, headers?: Record<string, string>): Promise<SubmitResponse>;
3
- //# sourceMappingURL=submit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/transport/submit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEhE,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC,CAgCzB"}
@@ -1,2 +0,0 @@
1
- export declare function createTriggerButton(label?: string): HTMLButtonElement;
2
- //# sourceMappingURL=button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/ui/button.ts"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,CAAC,KAAK,SAAa,GAAG,iBAAiB,CAOzE"}
@@ -1,33 +0,0 @@
1
- import type { CapturedEvent, Pin, Severity } from '../types';
2
- export interface DrawerCallbacks {
3
- onClose: () => void;
4
- onAnnotate: () => void;
5
- onSubmit: () => void;
6
- onPinNoteChange: (pinNumber: number, note: string) => void;
7
- onPinDelete: (pinNumber: number) => void;
8
- onDescriptionChange: (value: string) => void;
9
- onSeverityChange: (sev: Severity) => void;
10
- }
11
- export declare class DrawerView {
12
- readonly root: HTMLDivElement;
13
- readonly bodyEl: HTMLDivElement;
14
- private severities;
15
- private callbacks;
16
- private state;
17
- constructor(severities: Severity[], callbacks: DrawerCallbacks);
18
- open(): void;
19
- close(): void;
20
- minimize(): void;
21
- setPins(pins: Pin[], annotatedScreenshot?: string): void;
22
- setEvents(events: CapturedEvent[]): void;
23
- private updateEventsChip;
24
- getAnnotatedScreenshot(): string | undefined;
25
- setAnnotatedScreenshot(value: string | undefined): void;
26
- setSubmitting(submitting: boolean): void;
27
- setStatus(status: string, kind?: '' | 'error' | 'success'): void;
28
- reset(): void;
29
- getDescription(): string;
30
- getSeverity(): Severity;
31
- private render;
32
- }
33
- //# sourceMappingURL=drawer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/ui/drawer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAI7D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,gBAAgB,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC3C;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CASX;gBAEU,UAAU,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,eAAe;IAiB9D,IAAI;IAKJ,KAAK;IAIL,QAAQ;IAKR,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,mBAAmB,CAAC,EAAE,MAAM;IAWjD,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE;IAKjC,OAAO,CAAC,gBAAgB;IAgCxB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAI5C,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAKhD,aAAa,CAAC,UAAU,EAAE,OAAO;IAKjC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,EAAE,GAAG,OAAO,GAAG,SAAc;IAM7D,KAAK;IAcL,cAAc;IACd,WAAW;IAEX,OAAO,CAAC,MAAM;CAgHf"}
@@ -1,9 +0,0 @@
1
- export declare const ICONS: {
2
- readonly feedback: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/></svg>";
3
- readonly pin: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 17v5\"/><path d=\"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\"/></svg>";
4
- readonly close: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>";
5
- readonly trash: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 6h18\"/><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/></svg>";
6
- readonly send: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m22 2-7 20-4-9-9-4Z\"/><path d=\"M22 2 11 13\"/></svg>";
7
- readonly check: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>";
8
- };
9
- //# sourceMappingURL=icons.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/ui/icons.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;CAOR,CAAC"}
@@ -1,19 +0,0 @@
1
- export interface MonitorPanelOptions {
2
- /** Initial URL to populate the input. Usually from the host element's monitor-url attribute. */
3
- initialUrl?: string | null;
4
- /**
5
- * Whether the host has explicitly opted into the debug panel by setting
6
- * monitor-url. When true, the panel shows even without ?ls-debug=1.
7
- */
8
- hasMonitorUrlAttr: boolean;
9
- }
10
- export interface MonitorPanelHandle {
11
- /** The root element. Caller appends to drawer.root. */
12
- root: HTMLDivElement;
13
- /** Re-evaluate gating + redraw. Call when monitor-url attribute changes. */
14
- update(opts: MonitorPanelOptions): void;
15
- /** Clean up subscriptions. Call from element.disconnectedCallback. */
16
- destroy(): void;
17
- }
18
- export declare function createMonitorPanel(opts: MonitorPanelOptions): MonitorPanelHandle;
19
- //# sourceMappingURL=monitor-panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monitor-panel.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/ui/monitor-panel.ts"],"names":[],"mappings":"AAkHA,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,IAAI,EAAE,cAAc,CAAC;IACrB,4EAA4E;IAC5E,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,sEAAsE;IACtE,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,CAwGhF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pick-mode-overlay.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/ui/pick-mode-overlay.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;qDACiD;IACjD,YAAY,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACnD,0GAA0G;IAC1G,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,sBAA2B,GAAG,eAAe,CA+MxF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pin-popover.d.ts","sourceRoot":"","sources":["../../../../src/beacon-client/ui/pin-popover.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuE5B"}
@@ -1 +0,0 @@
1
- import{aq as o,ar as n}from"./index-Dg1r-WSN.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-DnVnNPcI.js";import{_ as i}from"./index-Dg1r-WSN.js";import"./chunk-FMBD7UC4-QzBAoyyW.js";import"./chunk-YZCP3GAM-_FQvmMs4.js";import"./chunk-55IACEB6-UKYs-YNd.js";import"./chunk-EDXVE4YY-D43b-SKn.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-DnVnNPcI.js";import{_ as i}from"./index-Dg1r-WSN.js";import"./chunk-FMBD7UC4-QzBAoyyW.js";import"./chunk-YZCP3GAM-_FQvmMs4.js";import"./chunk-55IACEB6-UKYs-YNd.js";import"./chunk-EDXVE4YY-D43b-SKn.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./graph-B7g8aoxv.js";var e=4;function a(o){return r(o,e)}export{a as c};
@@ -1 +0,0 @@
1
- import{s as t,b as r,a,S as s}from"./chunk-OYMX7WX6-Cjif4r6W.js";import{_ as i}from"./index-Dg1r-WSN.js";import"./chunk-55IACEB6-UKYs-YNd.js";import"./chunk-EDXVE4YY-D43b-SKn.js";var l={parser:a,get db(){return new s(2)},renderer:r,styles:t,init:i(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{l as diagram};