@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.
Files changed (191) 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 +917 -248
  122. package/dist/server/cli.js +1368 -374
  123. package/dist/server/council-entry.js +0 -0
  124. package/dist/server/fb-wizard.js +0 -0
  125. package/dist/server/graph-mcp-entry.js +1326 -322
  126. package/dist/server/init-entry.js +16 -11
  127. package/dist/server/orbit-entry.js +135 -7
  128. package/dist/server/parse-worker-entry.js +918 -247
  129. package/package.json +22 -22
  130. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-array.md +107 -0
  131. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-clear.md +94 -0
  132. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-pulse.md +82 -0
  133. package/scaffolds/ls-marketplace/plugins/kit/skills/beacon-scan.md +66 -0
  134. package/scaffolds/ls-marketplace/plugins/kit/skills/blast-radius.md +101 -0
  135. package/scaffolds/ls-marketplace/plugins/kit/skills/brief.md +112 -0
  136. package/scaffolds/ls-marketplace/plugins/kit/skills/course.md +84 -0
  137. package/scaffolds/ls-marketplace/plugins/kit/skills/debug.md +92 -0
  138. package/scaffolds/ls-marketplace/plugins/kit/skills/deploy-check.md +160 -0
  139. package/scaffolds/ls-marketplace/plugins/kit/skills/diagram.md +134 -0
  140. package/scaffolds/ls-marketplace/plugins/kit/skills/orbit.md +87 -0
  141. package/scaffolds/ls-marketplace/plugins/kit/skills/prototype.md +90 -0
  142. package/scaffolds/ls-marketplace/plugins/kit/skills/recall.md +83 -0
  143. package/scaffolds/ls-marketplace/plugins/kit/{commands → skills}/show-mcp-status.md +4 -4
  144. package/scaffolds/ls-marketplace/plugins/kit/skills/wireframe.md +70 -0
  145. package/scaffolds/migrate-safety/scripts/migrate-with-backup.sh +0 -0
  146. package/scaffolds/recall-hook/scripts/ensure-recall.sh +0 -0
  147. package/scaffolds/statusline/statusline-mcp.sh +21 -9
  148. package/dist/beacon/types/capture/element.d.ts +0 -3
  149. package/dist/beacon/types/capture/element.d.ts.map +0 -1
  150. package/dist/beacon/types/capture/events.d.ts +0 -20
  151. package/dist/beacon/types/capture/events.d.ts.map +0 -1
  152. package/dist/beacon/types/capture/framework.d.ts +0 -3
  153. package/dist/beacon/types/capture/framework.d.ts.map +0 -1
  154. package/dist/beacon/types/capture/metadata.d.ts +0 -3
  155. package/dist/beacon/types/capture/metadata.d.ts.map +0 -1
  156. package/dist/beacon/types/capture/overlay.d.ts +0 -7
  157. package/dist/beacon/types/capture/overlay.d.ts.map +0 -1
  158. package/dist/beacon/types/capture/picker.d.ts.map +0 -1
  159. package/dist/beacon/types/capture/screenshot.d.ts.map +0 -1
  160. package/dist/beacon/types/capture/selector.d.ts.map +0 -1
  161. package/dist/beacon/types/monitor/dom.d.ts +0 -13
  162. package/dist/beacon/types/monitor/dom.d.ts.map +0 -1
  163. package/dist/beacon/types/monitor/index.d.ts +0 -19
  164. package/dist/beacon/types/monitor/index.d.ts.map +0 -1
  165. package/dist/beacon/types/monitor/network.d.ts +0 -12
  166. package/dist/beacon/types/monitor/network.d.ts.map +0 -1
  167. package/dist/beacon/types/monitor/transport.d.ts.map +0 -1
  168. package/dist/beacon/types/monitor/types.d.ts.map +0 -1
  169. package/dist/beacon/types/transport/submit.d.ts +0 -3
  170. package/dist/beacon/types/transport/submit.d.ts.map +0 -1
  171. package/dist/beacon/types/ui/button.d.ts +0 -2
  172. package/dist/beacon/types/ui/button.d.ts.map +0 -1
  173. package/dist/beacon/types/ui/drawer.d.ts +0 -33
  174. package/dist/beacon/types/ui/drawer.d.ts.map +0 -1
  175. package/dist/beacon/types/ui/icons.d.ts +0 -9
  176. package/dist/beacon/types/ui/icons.d.ts.map +0 -1
  177. package/dist/beacon/types/ui/monitor-panel.d.ts +0 -19
  178. package/dist/beacon/types/ui/monitor-panel.d.ts.map +0 -1
  179. package/dist/beacon/types/ui/pick-mode-overlay.d.ts.map +0 -1
  180. package/dist/beacon/types/ui/pin-popover.d.ts.map +0 -1
  181. package/dist/deck-client/assets/channel-CRdozqbp.js +0 -1
  182. package/dist/deck-client/assets/classDiagram-6PBFFD2Q-lIZMp57W.js +0 -1
  183. package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-lIZMp57W.js +0 -1
  184. package/dist/deck-client/assets/clone-BtWeSTyJ.js +0 -1
  185. package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-BrV78NDR.js +0 -1
  186. package/dist/deck-client/assets/wardley-RL74JXVD-C010F8l4.js +0 -162
  187. package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-array.md +0 -92
  188. package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-clear.md +0 -68
  189. package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-pulse.md +0 -80
  190. package/scaffolds/ls-marketplace/plugins/kit/commands/beacon-scan.md +0 -62
  191. /package/dist/beacon/types/{capture → internal}/selector.d.ts +0 -0
@@ -0,0 +1,83 @@
1
+ ---
2
+ description: Recover a file/dir from launch-recall's shadow-git backup. Lists snapshot history for a path and (with explicit confirmation) restores a specific snapshot into the working tree. Read-only by default; restore is one-shot and prompts before overwriting.
3
+ ---
4
+
5
+ # /kit:recall
6
+
7
+ Surface and restore deletions/modifications captured by the launch-recall watcher (the shadow git repo at `.recall/repo.git`). Use when something was accidentally deleted, overwritten, or auto-formatted away.
8
+
9
+ Parse `$ARGUMENTS` — first token is the subcommand:
10
+
11
+ - **status** — quick watcher liveness + last snapshot age.
12
+ - **doctor** — fuller health check (shadow_repo / watcher_alive / recent_snapshot).
13
+ - **history <path>** — `[--limit=N]` — list snapshots that touched the path. Default limit 20.
14
+ - **show <path> <sha>** — display the file's content from that snapshot (no write).
15
+ - **restore &lt;path&gt; &lt;sha&gt;** — `[--to=<target-path>]` — restore the file. Prompts before overwriting unless the path doesn't exist on disk.
16
+ - **diff &lt;path&gt; &lt;sha&gt;** — show a unified diff vs current working-tree (or "(file deleted from working tree)" if absent).
17
+
18
+ Examples:
19
+ - `/kit:recall status`
20
+ - `/kit:recall history src/server/comms/build-feed.ts`
21
+ - `/kit:recall show src/server/comms/build-feed.ts a1b2c3d`
22
+ - `/kit:recall diff src/server/comms/build-feed.ts a1b2c3d`
23
+ - `/kit:recall restore src/server/comms/build-feed.ts a1b2c3d`
24
+ - `/kit:recall restore prisma/schema.prisma a1b2c3d --to=prisma/schema.recovered.prisma`
25
+
26
+ ## Preflight
27
+
28
+ Confirm the recall MCP is wired by attempting `mcp__launch-recall__recall_status`. If neither cloud nor local is callable, stop and tell the user: `"launch-recall MCP not wired in this project. Run \`npx @launchsecure/launch-kit refresh\` (or \`npx launch-recall init\` for the shadow repo)."` Per project memory, prefer the cloud namespace; this skill works with either.
29
+
30
+ ## Per-subcommand behavior
31
+
32
+ ### status
33
+
34
+ `mcp__launch-recall__recall_status` → one line: `recall <alive/dead> pid <N> last snap <X ago>`.
35
+
36
+ ### doctor
37
+
38
+ `mcp__launch-recall__recall_doctor` → render the checks as a 3-line report:
39
+
40
+ ```
41
+ recall — health
42
+ shadow_repo ✓ /Users/.../.recall/repo.git
43
+ watcher_alive ✓ pid 12456
44
+ recent_snapshot ✓ 2m ago
45
+ ```
46
+
47
+ ### history
48
+
49
+ `mcp__launch-recall__recall_history(path: <path>, limit: <limit>)` → one row per snapshot: `sha age message`. Render most-recent first.
50
+
51
+ If the array is empty, say so verbatim and suggest cause: `"No snapshots touch <path>. Either the path was ignored by recall's config, or the file simply never changed during this watcher's lifetime."` Then offer to print `recall.report` for context.
52
+
53
+ ### show
54
+
55
+ The recall MCP exposes history but not a `show` tool directly. Implement by:
56
+ 1. Read `mcp__launch-recall__recall_status` → `shadowRepoPath` (or read the config — `.recall/repo.git` is the default).
57
+ 2. Use `git --git-dir=<shadow> --work-tree=<repo> show <sha>:<path>` via Bash.
58
+ 3. Print the file content (truncate at 500 lines; surface the truncation explicitly).
59
+
60
+ ### diff
61
+
62
+ Same as `show`, but `git --git-dir=<shadow> show <sha>:<path>` piped through `diff -u - <path>` (or print "file deleted from working tree" if missing). Cap diff at 500 lines.
63
+
64
+ ### restore
65
+
66
+ This is the only write operation. Strict protocol — per project memory `feedback_no_dumb_reverts.md`, destructive ops require explicit confirmation.
67
+
68
+ 1. Resolve target path: `--to=<target>` if given, else the original `<path>`.
69
+ 2. If the target exists on disk:
70
+ - Print a side-by-side summary: `current size <N> bytes, snapshot size <M> bytes`.
71
+ - Show the first ~20 lines of the diff (current → snapshot).
72
+ - Ask: `"Overwrite <target>? (yes / show full diff / no)"` — wait for explicit `yes`.
73
+ 3. If the target does NOT exist on disk (file was deleted), restore without prompt but tell the user before writing: `"Restoring deleted file to <target> from snapshot <sha>."`
74
+ 4. Use `git --git-dir=<shadow> show <sha>:<path> > <target>` (or `git checkout <sha> -- <path>` against the shadow with `--work-tree=<repo>`).
75
+ 5. After restore, print: `"Restored. Recall just captured a new snapshot of the restore itself — your previous working-tree state is also recoverable (run \`/kit:recall history <target>\` to confirm)."`
76
+
77
+ ## Constraints
78
+
79
+ - **Read-only by default.** Only `restore` writes; everything else reads.
80
+ - **Restore requires confirmation** when overwriting an existing file. Never auto-overwrite even when the user passes the sha — per project memory, destructive ops need explicit `yes`.
81
+ - **No `git reset`, no `git clean`, no `rm`.** Recall restores via `git show > file`; never run anything that could lose more than the one file requested.
82
+ - **Don't suggest enabling recall for the user.** If recall isn't wired, point at refresh — don't auto-init.
83
+ - **Quote both pieces of advice when the file is unchanged.** If `history` returns nothing AND the file exists on disk, say BOTH "path may be in recall's ignore list" AND "the file may simply have no churn" — don't guess which.
@@ -12,7 +12,7 @@ Read $ARGUMENTS to decide output verbosity:
12
12
 
13
13
  ## Preflight
14
14
 
15
- 1. Verify the launch-recall MCP is wired by checking whether `mcp__launch-recall__recall_status` (or `mcp__local-launch-recall__recall_status` for dev repos) is callable. If neither is available, say so plainly: "launch-recall MCP not wired in this project — nothing to report" and stop.
15
+ 1. Verify the launch-recall MCP is wired by attempting `mcp__launch-recall__recall_status` (or `mcp__local-launch-recall__recall_status` for dev repos). If neither is callable, **alert the user verbatim**: `"launch-recall MCP not wired in this project — nothing to report. (Skill is MCP-first; no shell fallback for daemon status.)"` and stop.
16
16
  2. Pick whichever recall MCP is available. Prefer the project-level published one (`mcp__launch-recall__*`) unless only the local dev one is wired.
17
17
 
18
18
  ## Daemons
@@ -36,7 +36,7 @@ Or if dead:
36
36
  ```
37
37
  recall ✗ dead pidfile missing/stale
38
38
 
39
- 1 daemon down. Run /kit:show-mcp-status full for details, or restart the watcher (kill any stale pid, then either start a new Claude Code session — the SessionStart hook respawns it — or run `node packages/cli/dist/server/recall-entry.js watch` from this repo).
39
+ 1 daemon down. Run /kit:show-mcp-status full for details, or restart the watcher (kill any stale pid, then either start a new Claude Code session — the SessionStart hook respawns it — or run `npx -y -p @launchsecure/launch-kit launch-recall watch` from the project root).
40
40
  ```
41
41
 
42
42
  Rules for the default view:
@@ -103,7 +103,7 @@ Don't over-warn — if a repo has genuinely been idle (e.g. you opened it for th
103
103
 
104
104
  ## Notes for the assistant
105
105
 
106
- - Use the wired `launch-recall` MCP tools — do not shell out to `node packages/cli/dist/server/recall-entry.js status` even though it works. Going through MCP makes this command portable across projects that have launch-kit init'd via npx vs dev-build.
106
+ - **MCP-first, no shell fallback.** Use the wired `launch-recall` MCP tools — do NOT shell out to `node packages/cli/dist/server/recall-entry.js status` or `ps`-based liveness checks. If the MCP isn't wired, the preflight step already stops the skill no silent grep/find.
107
107
  - When listing recent snaps, use the `recentSnapshots` array from `recall_report`. It's already sorted newest-first; just truncate.
108
108
  - For "X ago" formatting, do the math yourself. Don't fetch any time service.
109
- - If you find yourself wanting to add features beyond status display (restart the watcher, prune snaps, etc.) — stop. Those belong in separate `/kit:*` commands. This one is a status pane.
109
+ - If you find yourself wanting to add features beyond status display (restart the watcher, prune snaps, etc.) — stop. Those belong in separate `/kit:*` skills. This one is a status pane.
@@ -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.
File without changes
@@ -114,19 +114,31 @@ chip_recall() {
114
114
  }
115
115
 
116
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
117
125
  local freshness="$PROJECT_ROOT/.launchsecure/graphs/.freshness.json"
118
126
  if [ ! -f "$freshness" ]; then _state="red"; _display="${RED}chart${RESET}"; return; fi
119
- local last
127
+
128
+ local last state_field
120
129
  last=$(grep -o '"lastFullRegenAt"[^,}]*' "$freshness" | head -1 | sed 's/.*"\([0-9TZ:.+-]*\)".*/\1/')
121
- local lock="$PROJECT_ROOT/.launchsecure/launch-chart.lock"
122
- local color="$ORANGE"; local state="orange"
123
- if [ -f "$lock" ]; then
124
- local pid
125
- pid=$(pid_from_lockfile "$lock")
126
- if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
127
- color="$GREEN"; state="green"
128
- fi
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"
129
140
  fi
141
+
130
142
  if [ -n "$last" ] && [ "$last" != "null" ]; then
131
143
  local epoch age
132
144
  epoch=$(iso_to_epoch "$last")
@@ -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};