@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@launchsecure/launch-kit",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
4
4
  "description": "LaunchSecure toolkit — launch-pod (pipeline), launch-chart (project graph MCP), launch-deck (visual playground MCP), launch-kit-beacon (feedback Web Component), launch-recall (file-watcher backup).",
5
5
  "license": "MIT",
6
6
  "author": "LaunchSecure - AutomateWithUs",
@@ -67,6 +67,7 @@
67
67
  "html-to-image": "^1.11.13",
68
68
  "node-pty": "^1.2.0-beta.12",
69
69
  "pg": "^8.13.0",
70
+ "pgsql-parser": "^17.9.15",
70
71
  "tree-sitter": "^0.21.1",
71
72
  "tree-sitter-typescript": "^0.23.2",
72
73
  "typescript": "^5.5.0",
@@ -112,7 +113,7 @@
112
113
  "build:council-client": "vite build --config vite.council.config.ts",
113
114
  "build:client": "vite build",
114
115
  "build:chart-client": "vite build --config vite.chart.config.ts",
115
- "build:server": "esbuild src/server/cli.ts src/server/fb-wizard.ts src/server/graph-mcp-entry.ts src/server/chart-serve.ts src/server/deck-mcp-entry.ts src/server/deck-serve.ts src/server/council-entry.ts src/server/council-serve.ts src/server/recall-entry.ts src/server/init-entry.ts src/server/orbit-entry.ts src/server/course-entry.ts src/server/beacon-monitor-entry.ts src/server/parse-worker-entry.ts --bundle --platform=node --target=node18 --outdir=dist/server --external:node-pty --external:ws --external:typescript --external:web-tree-sitter --external:tree-sitter-typescript --external:cloudflared --external:pg --external:pg-native && rm -rf dist/server/public && cp -r ../claude-code-web/src/public dist/server/public && rm -rf dist/server/graph/queries && mkdir -p dist/server/graph && cp -r src/server/graph/queries dist/server/graph/queries",
116
+ "build:server": "esbuild src/server/cli.ts src/server/fb-wizard.ts src/server/graph-mcp-entry.ts src/server/chart-serve.ts src/server/deck-mcp-entry.ts src/server/deck-serve.ts src/server/council-entry.ts src/server/council-serve.ts src/server/recall-entry.ts src/server/init-entry.ts src/server/orbit-entry.ts src/server/course-entry.ts src/server/beacon-monitor-entry.ts src/server/parse-worker-entry.ts --bundle --platform=node --target=node18 --outdir=dist/server --external:node-pty --external:ws --external:typescript --external:web-tree-sitter --external:tree-sitter-typescript --external:cloudflared --external:pg --external:pg-native --external:pgsql-parser --external:libpg-query && rm -rf dist/server/public && cp -r ../claude-code-web/src/public dist/server/public && rm -rf dist/server/graph/queries && mkdir -p dist/server/graph && cp -r src/server/graph/queries dist/server/graph/queries",
116
117
  "dev:client": "vite",
117
118
  "dev:chart": "pnpm build:server && pnpm build:chart-client && node dist/server/graph-mcp-entry.js serve",
118
119
  "dev:server": "pnpm build:server && node dist/server/cli.js",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "launchsecure",
2
+ "name": "launch-secure",
3
3
  "description": "LaunchSecure plugins for Claude Code — in-app feedback widget activation, and future LS-namespaced workflows. Distributed locally via launch-kit init today; the same catalog will move to github.com/launchsecure/claude-plugins for centralized updates.",
4
4
  "owner": {
5
5
  "name": "LaunchSecure — AutomateWithUs",
@@ -7,9 +7,9 @@
7
7
  },
8
8
  "plugins": [
9
9
  {
10
- "name": "ls",
11
- "source": "./plugins/ls",
12
- "description": "LS-namespaced slash commands. Exposes /ls:activate-beacon to wire the launch-kit-beacon in-app feedback widget into the current project."
10
+ "name": "kit",
11
+ "source": "./plugins/kit",
12
+ "description": "Kit-namespaced slash commands. Exposes /kit:activate-beacon to wire the launch-kit-beacon in-app feedback widget into the current project."
13
13
  }
14
14
  ]
15
15
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "ls",
2
+ "name": "kit",
3
3
  "version": "0.1.0",
4
4
  "description": "LaunchSecure commands for Claude Code — in-app feedback widget activation, daily standups posted to the Comm Hub, and future LS-namespaced workflows.",
5
5
  "author": {
@@ -15,14 +15,5 @@
15
15
  "feedback",
16
16
  "standup",
17
17
  "daily-update"
18
- ],
19
- "commands": [
20
- "./commands/activate-beacon.md",
21
- "./commands/standup.md",
22
- "./commands/show-mcp-status.md",
23
- "./commands/beacon-scan.md",
24
- "./commands/beacon-pulse.md",
25
- "./commands/beacon-array.md",
26
- "./commands/beacon-clear.md"
27
18
  ]
28
19
  }
@@ -10,7 +10,7 @@ This command does the integration as a normal dev cycle — read the layout, pro
10
10
 
11
11
  ## Preflight
12
12
 
13
- 1. Confirm `.launch-secure.cred.config` exists at the repo root. If missing, stop and tell the user to run `npx launch-kit init` first — without the cred file the scaffolded `/api/feedback` route has no upstream credentials.
13
+ 1. Confirm `.launch-secure.cred.config` exists at the repo root. If missing, stop and tell the user to run `npx @launchsecure/launch-kit init` first — without the cred file the scaffolded `/api/feedback` route has no upstream credentials.
14
14
  2. Read `package.json` to detect framework:
15
15
  - **Next.js App Router** — `next` in deps AND `app/` or `src/app/` directory present.
16
16
  - **Next.js Pages Router** — `next` in deps AND `pages/` directory (no `app/`).
@@ -202,7 +202,7 @@ For Astro, SvelteKit, Nuxt, Express, plain HTML, etc.: do NOT attempt to edit ap
202
202
 
203
203
  ## Idempotency
204
204
 
205
- Re-running `/ls:activate-beacon`:
205
+ Re-running `/kit:activate-beacon`:
206
206
  - If `BeaconMount.tsx` exists, leave it alone unless the user explicitly asks to regenerate.
207
207
  - If `<launch-kit-beacon>` is already mounted in the layout, do NOT add a duplicate. Offer to update attributes (endpoint, position) or migrate trigger mode.
208
208
  - If `app/api/feedback/route.ts` exists, do NOT overwrite. Diff against the scaffold template and ask whether to merge.
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: Wire launch-kit's MCP daemon chips into the user's existing Claude Code statusline. Additive — does not create or replace an existing statusline, only appends colored chips (recall/chart/deck/council) showing each daemon's liveness + last-activity age. Idempotent. Run /kit:deactivate-statusline to undo.
3
+ ---
4
+
5
+ # /kit:activate-statusline
6
+
7
+ Extends the user's existing `~/.claude/settings.json` statusline so MCP daemon health appears alongside whatever they already show (project name, git branch, context %, etc.).
8
+
9
+ ## What it does
10
+
11
+ 1. Reads `~/.claude/settings.json` and checks for an existing `statusLine.command`.
12
+ - If absent → reports plainly that the user must create their own statusline first. Do NOT scaffold one — launch-kit only EXTENDS, never CREATES.
13
+ 2. Writes two scripts under `~/.launchsecure/`:
14
+ - `statusline-mcp.sh` — emits the colored MCP chips.
15
+ - `statusline-wrapper.sh` — runs the user's original command, then appends chips.
16
+ 3. Replaces `statusLine.command` with the wrapper, stashing the original under `_launchKitStatuslineOriginal` inside the same settings.json (single source of truth, no sidecar state).
17
+ 4. Idempotent: if the wrapper is already wired, refreshes the chip scripts only.
18
+
19
+ ## How to run
20
+
21
+ Shell out to the kit binary:
22
+
23
+ ```bash
24
+ launch-kit statusline activate # all chips
25
+ launch-kit statusline activate --show=recall,chart # only these
26
+ launch-kit statusline activate --show=recall,chart,deck,council # explicit all
27
+ ```
28
+
29
+ The `--show` flag accepts any comma-separated subset of `recall,chart,deck,council`. Omitting it shows all four. Re-running activate with a different `--show` updates the chip set in place — no need to deactivate first.
30
+
31
+ If the published bin isn't on PATH (dev repo, monorepo), fall back to:
32
+
33
+ ```bash
34
+ node packages/cli/dist/server/init-entry.js statusline activate [--show=...]
35
+ ```
36
+
37
+ If the user passed an argument to the slash command (e.g. `/kit:activate-statusline recall,chart`), forward it as `--show=$ARGUMENTS`.
38
+
39
+ The command prints one of:
40
+ - `✓ activated …` — newly wrapped
41
+ - `✓ refreshed …` — already wrapped, scripts refreshed
42
+ - `✗ no-statusline …` — user has no statusline; report this and stop, do not propose creating one
43
+
44
+ ## After running
45
+
46
+ Restart any open Claude Code session for the statusline to pick up the wrapper. Subsequent sessions render the chips automatically.
@@ -0,0 +1,34 @@
1
+ ---
2
+ description: Remove launch-kit's MCP daemon chips from the user's Claude Code statusline. Restores the original statusLine.command from the snapshot under _launchKitStatuslineOriginal and deletes the kit-managed wrapper + chip scripts. Idempotent — silently reports if nothing to undo.
3
+ ---
4
+
5
+ # /kit:deactivate-statusline
6
+
7
+ Reverses `/kit:activate-statusline`. Restores `~/.claude/settings.json`'s `statusLine.command` to whatever it pointed at before activation.
8
+
9
+ ## What it does
10
+
11
+ 1. Reads `~/.claude/settings.json`.
12
+ 2. If `_launchKitStatuslineOriginal` is present, copies it back to `statusLine` and deletes the stash key.
13
+ 3. Removes `~/.launchsecure/statusline-wrapper.sh` and `~/.launchsecure/statusline-mcp.sh`.
14
+ 4. If `_launchKitStatuslineOriginal` is absent → reports "not active" and stops.
15
+
16
+ ## How to run
17
+
18
+ ```bash
19
+ launch-kit statusline deactivate
20
+ ```
21
+
22
+ Or, in a dev repo:
23
+
24
+ ```bash
25
+ node packages/cli/dist/server/init-entry.js statusline deactivate
26
+ ```
27
+
28
+ The command prints one of:
29
+ - `✓ deactivated …`
30
+ - `✗ not-active …`
31
+
32
+ ## After running
33
+
34
+ Restart any open Claude Code session for the statusline change to take effect.
@@ -1,21 +1,20 @@
1
1
  ---
2
- description: Draft a daily standup from work done since the last push, group themes using launch-chart, show the draft, and post to LaunchSecure Comm Hub as a daily_update after explicit confirmation.
2
+ description: Draft a daily standup from work done since the last push, surface in-progress local work and follow-ups, show the draft, and post to LaunchSecure Comm Hub as a daily_update after explicit confirmation.
3
3
  ---
4
4
 
5
5
  # Standup
6
6
 
7
- Generates a daily-update comment for the LaunchSecure Comm Hub. Pulls commits since the last push (with fallbacks), groups them by codebase layer/module using `launch-chart`, drafts a summary in the project's house style, shows it to the user, and posts only after the user confirms. Never posts without explicit "yes".
7
+ Generates a daily-update comment for the LaunchSecure Comm Hub. Pulls commits since the last push (with fallbacks), surfaces what's still in-flight locally (uncommitted work, explicit follow-ups, in-progress work items), drafts a summary in the project's house style, shows it to the user, and posts only after the user confirms. Never posts without explicit "yes".
8
8
 
9
9
  ## Preflight
10
10
 
11
- 1. Verify `.launch-secure.cred.config` exists at the repo root. If missing, abort and tell the user to run `npx launch-kit init` first — without the cred file the `launch-secure` MCP cannot authenticate, so we cannot read prior standups or post the new one.
11
+ 1. Verify `.launch-secure.cred.config` exists at the repo root. If missing, abort and tell the user to run `npx @launchsecure/launch-kit init` first — without the cred file the `launch-secure` MCP cannot authenticate, so we cannot read prior standups or post the new one.
12
12
  2. Verify we are inside a git repo (`git rev-parse --git-dir`). If not, abort with a clear message.
13
- 3. Record the current branch (`git rev-parse --abbrev-ref HEAD`).
14
- 4. Detect whether `launch-chart` is wired by calling `mcp__launch-chart__detect_project_stack`. If the call fails or returns nothing, fall back to git-only grouping (note this in the final summary).
13
+ 3. Record the current branch (`git rev-parse --abbrev-ref HEAD`) and current git email (`git config user.email`).
15
14
 
16
15
  ## Gather
17
16
 
18
- Pull data from layered sources, in this order:
17
+ Pull data from layered sources, in this order. Default to git + commit messages — they already carry the structure. Only reach for `launch-chart` in the explicit case described in step 3.
19
18
 
20
19
  ### 1. Determine the window
21
20
 
@@ -27,34 +26,42 @@ Tell the user which window was used in one short line ("Using commits since last
27
26
 
28
27
  ### 2. Collect change context
29
28
 
30
- - `git diff --stat @{push}..HEAD` (or whichever window was chosen) — file paths + line counts. Drives theme grouping in the next step.
29
+ - `git diff --stat @{push}..HEAD` (or whichever window was chosen) — file paths + line counts. Drives theme grouping.
31
30
  - `git log --pretty=format:'%h %s' <window>` — short subject lines for quick scan.
31
+ - `git log --pretty=format:'%h%n%B%n---' <window>` — full commit bodies. Needed for step 4 (follow-up detection).
32
32
  - Branch names + PR references in commit messages (look for `#<digits>`, `LS-<id>`, branch slugs like `fix/foo-bar`). These are work-item handles.
33
33
 
34
- ### 3. Group by layer/module using launch-chart
34
+ ### 3. Group into themes
35
35
 
36
- This is the chart's job do **not** group by file path string-matching. For each changed file (deduped from the diff stat):
36
+ **Default: group by commit-message scope.** Conventional-commit subjects like `feat(launch-kit): …`, `refactor(server): …`, `chore(lint): …` already declare the themeuse the scope as the theme name. Multiple commits with the same scope collapse into one `→ <Scope>` section.
37
37
 
38
- - Call `mcp__launch-chart__read_graph({ search: "<file basename>", layer: "<best guess: ui|api|db|static>" })` to resolve the file to a graph node, OR
39
- - Call `mcp__launch-chart__read_graph({ node_id: "<full path>" })` if the file path matches a known node id format
38
+ **Only escalate to `launch-chart` when ALL of these are true:**
39
+ - Window has ≥20 changed files across ≥5 top-level directories, AND
40
+ - Commit scopes are missing, inconsistent, or too coarse to reveal structure (e.g. everything is `chore: …` or untagged).
40
41
 
41
- From the resolved nodes, pull each node's `module` and `layer` fields. Group commits/files into themes by `module` first, then by `layer` when `module` is missing. Common LS modules: `auth`, `pda`, `pda-guides`, `pda-shell`, `radar`, `chart`, `orbit`, `recall`, `comms`, `board`, `webhooks`, `feedback`, `briefs`, `mcp`, etc.
42
+ In that case: call `mcp__launch-chart__detect_project_stack` to verify the chart is wired, then for each changed file call `mcp__launch-chart__read_graph({ search: "<basename>" })` and group by the resolved node's `module` field. Common LS modules: `auth`, `pda`, `pda-guides`, `pda-shell`, `radar`, `chart`, `orbit`, `recall`, `comms`, `board`, `webhooks`, `feedback`, `briefs`, `mcp`.
42
43
 
43
- If a file doesn't resolve in the chart (new file, non-TS, config), bucket it under "Misc" or by directory (`scripts/`, `docs/`, `.github/`).
44
+ Files that don't resolve in the chart (new files, non-TS, config) bucket under "Misc" or by directory.
44
45
 
45
- ### 4. Audit pass (optional, skip if it slows things down)
46
+ ### 4. Collect in-progress signals (the "what's still in flight" data)
46
47
 
47
- Call `mcp__launch-chart__audit_layer({ layer: "all" })` to surface any drift introduced today (schema_drift, unprotected_routes, dead_screens, hardcoded_values). If the audit reports new issues that didn't exist before (best-effort compare against the prior standup's audit if possible, otherwise just report current state), flag them in the closing `----` block.
48
+ This is the data that makes the standup honest about what's still open, not just what shipped. Always run all three:
48
49
 
49
- ### 5. Blast radius for the biggest changes (deploy-safety signal)
50
+ **4a. Uncommitted local work** — `git status --short`. Group by area (e.g. `scripts/`, `.claude/`, untracked dirs). Filter out build artifacts that don't represent intentional work (`.launchsecure/graphs/*.json`, `node_modules`, `dist`, `.next`). What remains is in-flight code or scaffolds — surface it under "Pending / in-progress".
50
51
 
51
- For the top-3 files by lines-changed in `git diff --stat`, call `mcp__launch-chart__blast_points({ node_id: "<file>", hops: 2 })`. If any of them has a blast radius of >10 dependent nodes, note it as a deploy-risk signal in the `----` block ("touched X which has 24 downstream consumers review before deploy").
52
+ **4b. Follow-up flags in commit bodies** — grep the full commit bodies pulled in step 2 for these patterns (case-insensitive): `follow-up`, `followup`, `TODO`, `flagged`, `deferred`, `not patched`, `rolled back`, `revert`, `queued`, `to be solved`, `next pass`. Each hit is a self-declared open item by the author surface the sentence verbatim or paraphrased under "Pending / in-progress".
52
53
 
53
- ### 6. Work-item linkage
54
+ **4c. In-progress work items assigned to current user** — call `mcp__launch-secure__work_items_list({ assignee_email: "<git email from preflight>", status: "IN_PROGRESS" })`. For each returned item, capture title + id. Don't list more than 5; if more exist, list 5 + "(N more)".
54
55
 
55
- For each work-item handle found in commit messages, call `mcp__launch-secure__work_items_list` (or `work_item_get` if you have an ID) to pull title + status. If any work items were closed today (status changed to DONE/COMPLETED), call them out in the closing block.
56
+ If any of 4a/4b/4c return nothing, that section just doesn't appear in the draft. Don't fabricate filler.
56
57
 
57
- ### 7. Release detection
58
+ ### 5. Work-item closure linkage
59
+
60
+ For each work-item handle found in commit messages from step 2 (regex `#\d+|LS-\w+`), call `mcp__launch-secure__work_item_get({ id: "<id>" })` (or `work_items_list` with id filter). If any status changed to DONE/COMPLETED, call them out in the closing `----` block as a one-liner.
61
+
62
+ Skip this step if no handles were found in commit messages — don't pull the full work-items list to fish for closures.
63
+
64
+ ### 6. Release detection
58
65
 
59
66
  A commit qualifies the post for the `release` tag if ANY of the following are true:
60
67
  - `package.json` `version` field changed in `git diff @{push}..HEAD -- package.json`
@@ -66,7 +73,7 @@ If any are true, set `addReleaseTag = true`. Otherwise `false`.
66
73
 
67
74
  ## Draft
68
75
 
69
- Produce the standup in the **exact** house format. This is the format Prajyot uses for human-written daily updates (verified against the May 18, 19, 20 posts in the Comm Hub):
76
+ Produce the standup in the **exact** house format. This is the format Prajyot uses for human-written daily updates (verified against the May 18, 19, 20, 21 posts in the Comm Hub):
70
77
 
71
78
  ```
72
79
  Hey @everyone
@@ -85,6 +92,16 @@ Pushed <N> commits to <branch> today. Highlights:
85
92
 
86
93
  ----
87
94
 
95
+ Pending / in-progress:
96
+
97
+ → <Pending area 1>
98
+ - <one-line item — what's open, why, where>
99
+
100
+ → <Pending area 2>
101
+ - <one-line item>
102
+
103
+ ----
104
+
88
105
  <one-line PSA or deploy-safety note. Examples: "TS clean, no schema/migration changes, safe to deploy." or "Includes prisma migration <name> — run migrate-with-backup.sh before deploy.">
89
106
 
90
107
  Thanks
@@ -94,20 +111,21 @@ Thanks
94
111
 
95
112
  - `Hey @everyone` — exactly this. Not "Hey team", not "Hi everyone". Single line, blank line after.
96
113
  - `Pushed N commits to <branch> today. Highlights:` — replace `<branch>` with the actual branch from preflight. If the window was a fallback (not "since last push"), say "Drafted N commits' worth of work on <branch> today. Highlights:" instead — be honest about the window.
97
- - `→ <Theme>` — right-arrow + space + theme name. Theme names come from chart's `module` grouping (e.g. "→ Radar", "→ Webhooks", "→ Chart / Freshness"). Capitalize the first letter.
114
+ - `→ <Theme>` — right-arrow + space + theme name. Theme names come from commit-message scope (default) or chart module grouping (escalated case). Capitalize the first letter.
98
115
  - `- <bullet>` — plain hyphen + space. Bullets are **outcomes**, not commit messages. Translate "feat(radar): add transcript view" into "Structured transcript view with overlay reply drawer". Drop scope prefixes and verb tense.
99
116
  - Blank line between themes.
100
- - `----` — four hyphens, on its own line, blank line above and below.
101
- - The closing block: one short line is fine. Don't pad.
117
+ - `----` — four hyphens, on its own line, blank line above and below. Used twice: once to open the Pending block, once to close it.
118
+ - **Pending / in-progress block** omit entirely if steps 4a/4b/4c all returned nothing. If present, populate from those three sources. Each `→` sub-heading names an area (e.g. `→ Feedback widget`, `→ Codex config writer`, `→ Beacon monitor UX`). Bullets are short, factual, name the file or symbol when relevant.
119
+ - Closing block: one short line is fine. Don't pad. Mention work-item closures + any deploy-affecting changes here.
102
120
  - `Thanks` — exact word, no comma, no name signature (the post's author is attached automatically).
103
121
 
104
122
  **Constraints:**
105
123
 
106
124
  - Plain text only. No `**bold**`, no `*italic*`, no backticks, no `# headers`, no markdown link syntax. The Comm Hub renders as plain text.
107
- - Aim for ≤ 350 words total. Standups are skim-able; trim aggressively.
125
+ - Aim for ≤ 400 words total (was 350; bumped to accommodate the Pending block). Standups are skim-able; trim aggressively.
108
126
  - Top 3–6 themes is the sweet spot. If you have 20 commits in 12 different modules, collapse the small ones into a "→ Misc" theme.
109
127
  - Bullets should be **outcome-shaped**: what landed in the product, not what the diff did. "Multi-select EventTypesPicker on subscription forms" beats "modified components/webhooks/EventTypesPicker.tsx".
110
- - Mention work-item closures and any deploy-affecting changes (migrations, env var changes, breaking API changes) in the closing block.
128
+ - Pending items are honest snapshots, not commitments. "Drawer fix reverted to be solved fresh" is fine; "will be fixed by EOD" is not.
111
129
 
112
130
  ## Confirm
113
131
 
@@ -127,7 +145,7 @@ Anything ambiguous → treat as "edit, what would you like changed?".
127
145
 
128
146
  Before posting, call `mcp__launch-secure__communication_read({ tag: "daily_update", limit: 5 })`. If any returned comment has:
129
147
  - `resourceType: "comment"` (not `"daily_update"` — that's bot-only, distinct stream)
130
- - `author.email` matches the current user's email (from `git config user.email`)
148
+ - `author.email` matches the current user's email (from preflight)
131
149
  - `createdAt` within the last 12 hours
132
150
 
133
151
  …then a manual daily_update already exists from today. Offer:
@@ -156,22 +174,18 @@ On success: report the comment ID and a friendly "posted to LS Comm Hub" line. I
156
174
 
157
175
  On failure: surface the error verbatim. Don't retry automatically — auth or schema errors deserve human attention. The draft is preserved in chat so the user can retry manually.
158
176
 
159
- ## Tag handling
160
-
161
- Before adding any tag, you may verify it exists via `mcp__launch-secure__tags_list`. The `daily_update` and `release` tags are standard in LS projects; if either is missing, the post will still succeed but the tag won't attach. Surface this as a warning, not a blocker.
162
-
163
177
  ## Idempotency
164
178
 
165
- Re-running `/ls:standup`:
179
+ Re-running `/kit:standup`:
166
180
  - Always re-pulls the window fresh. No cached state.
167
181
  - Duplicate check handles same-day reposts.
168
182
  - The draft is never written to disk — only shown in chat. User can copy it manually if they cancel.
169
183
 
170
184
  ## Notes for the assistant
171
185
 
172
- - Use `launch-chart` for grouping, not grep/glob. The whole point is producing themes that match how the codebase is organized, not how files are named.
173
- - The user's preference is short, terse standups (verified style across May 18→20 posts). Default to under-rather-than-over.
174
- - "Outcome bullet, not commit message" is the single most important transform. A standup full of "feat(x): add y" reads like a changelog, not a status.
175
- - Never assume `release` tag without evidence (see Release detection above). False positives confuse downstream consumers.
176
- - Don't ask the user clarifying questions before drafting — produce a first cut, then iterate. The draft is cheap; the conversation isn't.
177
- - If `launch-chart` is unavailable (no `.launchchart.json`, MCP not responding), fall back to grouping by top-level path segment (`src/app/api/` "API", `src/client/components/board/` "Board", etc.) and note "chart unavailable, grouped by path" in chat (not in the post).
186
+ - **Default to git, not the chart.** Conventional-commit scopes already declare themes; only reach for `launch-chart` when scopes are missing or inconsistent across ≥20 files / ≥5 directories. This was the most common failure of the previous prompt chart calls produced no different grouping than commit-scope grouping would have.
187
+ - **The Pending / in-progress block is the standup's main job, not the shipped-themes block.** Shipped work is visible in `git log`; what's still open isn't. Always run the three step-4 gathers.
188
+ - **Don't ask clarifying questions before drafting.** Produce a first cut from whatever data step 1–6 returned, then iterate. The draft is cheap; the conversation isn't.
189
+ - **Outcome bullet, not commit message** is the single most important transform. A standup full of "feat(x): add y" reads like a changelog, not a status.
190
+ - **Never assume `release` tag without evidence** (see step 6). False positives confuse downstream consumers.
191
+ - **If a step's tool fails**, note it inline and continue with the remaining sources don't abort the whole standup over one failed call.
@@ -0,0 +1,107 @@
1
+ ---
2
+ description: Show the array of launch-beacon monitor sessions via the launch-beacon MCP — which is most recent, how many events each has, last event time, suspected liveness. Use to confirm a session is being recorded, find an old session to inspect, or audit disk usage. Read-only.
3
+ ---
4
+
5
+ # /kit:beacon-array
6
+
7
+ Liveness + inventory across every `launch-beacon monitor` session this repo has recorded — one row per beacon in the array.
8
+
9
+ Parse `$ARGUMENTS` as space-separated tokens, in any order:
10
+ - `full` — expanded report. Empty → terse one-line-per-session summary.
11
+ - `--worktree=<slug>` — orbit worktree slug. Forwarded to MCP as the `worktree` arg.
12
+ - `--project_root=<path>` — explicit project root (absolute, or relative to cwd). Forwarded as `project_root`. Takes precedence over `--worktree`.
13
+
14
+ Examples:
15
+ - `/kit:beacon-array` → terse one-line-per-session summary
16
+ - `/kit:beacon-array full` → expanded report
17
+ - `/kit:beacon-array --worktree=beacon_rewrite` → enumerate sessions captured in that worktree
18
+ - `/kit:beacon-array full --worktree=beacon_rewrite` → expanded report for that worktree
19
+
20
+ ## Enumerate sessions
21
+
22
+ Call `mcp__local-launch-beacon__beacon_sessions`, forwarding `worktree` / `project_root` if supplied. Returns an array of per-session summaries: token, event count, kind breakdown, first/last seq, last event timestamp.
23
+
24
+ If the response is `{sessions: []}` OR `{error: ...}`, **alert the user with the exact MCP error string**, then walk the fallback below — do NOT silently `ls`.
25
+
26
+ **Fallback when the MCP returns nothing:**
27
+ 1. If the user did NOT pass `--worktree` / `--project_root` and `launch-orbit` has worktrees registered for this repo, suggest re-running with `--worktree=<slug>` before falling back to the filesystem.
28
+ 2. Look for `.launchsecure/beacon-*.ndjson` in cwd, then in up to 2 parent dirs. Use the `Read` tool — never `ls`, `find`, or globbing as the primary path.
29
+ 3. If files are found at an alternative path, tell the user the path mismatch explicitly: `"MCP scans <root>/.launchsecure/ but sessions live at <found-path>. Reading directly."`
30
+ 4. If nothing is found anywhere, stop with: `"No beacon sessions found in .launchsecure/. Start one with: npx launch-beacon monitor"`.
31
+
32
+ ## Per-session facts
33
+
34
+ For each session the MCP returns:
35
+ - **token** — session id
36
+ - **events** — total event count
37
+ - **last_ts** — last event timestamp (epoch ms)
38
+ - **last_kind** — kind of the last event (read from the kind breakdown's most-recent entry, or call `beacon_event(seq: last_seq)` for certainty)
39
+ - **kinds** — kind breakdown map (`{click: 142, fetch: 71, …}`)
40
+ - **first_seq / last_seq** — bounds
41
+
42
+ Compute **age** from `last_ts` (current epoch minus `last_ts`):
43
+ - < 5s → "just now"
44
+ - < 60s → "Ns ago"
45
+ - < 1h → "Nm ago"
46
+ - < 24h → "Nh ago"
47
+ - else → "Nd ago"
48
+
49
+ ## Liveness heuristic
50
+
51
+ - **active** — `last_ts` is within the last 5 seconds (matches the receiver's batch-flush interval)
52
+ - **idle** — between 5 seconds and 30 minutes
53
+ - **stale** — older than 30 minutes (the receiver enforces a 30-min cap)
54
+
55
+ ## Default output (no arguments)
56
+
57
+ ```
58
+ .launchsecure/
59
+ ● 8f3c2a91 247 events click (just now) ACTIVE
60
+ a1b2c3d4 89 events error (12m ago) idle
61
+ 2557799f 1,247 events route (2h ago) stale
62
+
63
+ 3 sessions, 1 active.
64
+ ```
65
+
66
+ Rules:
67
+ - Glyph: `●` (filled) for active, blank for idle/stale.
68
+ - Columns: token (8 chars) — events (right-aligned, thousands-separated) — last event "kind (age)" — status word.
69
+ - Sort newest-first by `last_ts`.
70
+ - Summary line: total count + how many active.
71
+ - Plain text, monospace alignment.
72
+
73
+ ## Full output (`/kit:beacon-array full`)
74
+
75
+ Same per-session block as default, then expand each:
76
+
77
+ ```
78
+ ● 8f3c2a91 — ACTIVE
79
+ events: 247
80
+ last event: 2026-05-26T12:20:51Z (just now)
81
+ last kind: click
82
+ kinds: click 142, fetch 71, route 12, error 3, dialog 9, probe 10
83
+ seq range: 1–247
84
+ started: 2026-05-26T12:12:33Z (8m ago)
85
+
86
+ a1b2c3d4 — idle
87
+ ...
88
+ ```
89
+
90
+ For the `started` timestamp, call `mcp__local-launch-beacon__beacon_event` with `seq: <first_seq>, session: <token>` (and forward the same `worktree` / `project_root` args you used on `beacon_sessions`) and read its `ts`. Only do this for the full view — skip in the default view to keep it sub-second.
91
+
92
+ `kinds:` formatted as `kind1 N1, kind2 N2, …` sorted by count desc, comma-separated.
93
+
94
+ End with the same summary line as default.
95
+
96
+ ## File size
97
+
98
+ The `beacon_sessions` summary does NOT include byte size. Both default and full views omit it — size isn't load-bearing for diagnosis. If the user explicitly asks ("how big is this file?"), fall back to `Read`-then-count or `wc -c` for that single file and tell them so: `"MCP doesn't expose byte size — falling back to wc -c."`.
99
+
100
+ ## Constraints
101
+
102
+ - **MCP-first.** Use `beacon_sessions` and `beacon_event` — never `ls`, `wc`, `stat`, `tail`, `sed` as the primary path.
103
+ - **Alert on fallback.** If the MCP can't answer, say so verbatim before reading the files directly.
104
+ - **Read-only.** No deletion, no rotation, no auto-cleanup.
105
+ - **Fast.** Default view should be sub-second even with many sessions.
106
+ - **Plain text.** No markdown tables, no fenced blocks in the actual output.
107
+ - **Don't suggest cleanup.** That's `/kit:beacon-clear`'s job. Stale sessions are informational, not an error.
@@ -0,0 +1,94 @@
1
+ ---
2
+ description: Soft-delete launch-beacon monitor session NDJSON files. Default clears only the latest session (so you can start a clean repro); pass `all` to clear every `.launchsecure/beacon-*.ndjson`. Always shows what will be cleared and asks for confirmation. Recoverable from `.launchsecure/.trash/<ts>/`.
3
+ ---
4
+
5
+ # /kit:beacon-clear
6
+
7
+ Clean slate before a fresh repro. The receiver appends to the same NDJSON file across reconnects of the same session, so an existing file accumulates noise from earlier attempts — clearing first makes the new stream easier to reason about.
8
+
9
+ Parse `$ARGUMENTS` as space-separated tokens, in any order:
10
+ - empty → clear the most recent session file only
11
+ - `all` → clear every `.launchsecure/beacon-*.ndjson` in the target dir
12
+ - a specific token or filename → clear that one file (must match a real path)
13
+ - `--worktree=<slug>` — orbit worktree slug. Forwarded to MCP as the `worktree` arg; the soft-delete acts on the worktree's `.launchsecure/`.
14
+ - `--project_root=<path>` — explicit project root (absolute, or relative to cwd). Forwarded as `project_root`. Takes precedence over `--worktree`.
15
+
16
+ Examples:
17
+ - `/kit:beacon-clear` → clear the most recent session in cwd's `.launchsecure/`
18
+ - `/kit:beacon-clear all` → clear every session in cwd's `.launchsecure/`
19
+ - `/kit:beacon-clear all --worktree=beacon_rewrite` → clear every session in that worktree's `.launchsecure/`
20
+
21
+ ## Enumerate candidates
22
+
23
+ Call `mcp__local-launch-beacon__beacon_sessions`, forwarding `worktree` / `project_root` if supplied. Use `token`, `last_ts`, `events`, and `path` (absolute) from the response. **The filesystem operations below MUST use `path` from this response — never reconstruct paths from `.launchsecure/beacon-<token>.ndjson` relative to cwd**, because with `--worktree` / `--project_root` the real directory is elsewhere.
24
+
25
+ If the response is `{sessions: []}` OR `{error: ...}`, **alert the user with the exact MCP error string**, then walk the fallback below — do NOT silently `ls`.
26
+
27
+ **Fallback when the MCP returns nothing:**
28
+ 1. If the user did NOT pass `--worktree` / `--project_root` and `launch-orbit` has worktrees registered for this repo, suggest re-running with `--worktree=<slug>` before falling back to the filesystem.
29
+ 2. Look for `.launchsecure/beacon-*.ndjson` in cwd, then in up to 2 parent dirs. Use the `Read` tool — never `ls`, `find`, or globbing as the primary path.
30
+ 3. If files are found at an alternative path, tell the user the path mismatch and ASK before proceeding — the user may not want to clear files at an unexpected location.
31
+ 4. If nothing is found anywhere, stop with: `"No beacon sessions found in .launchsecure/. Nothing to clear."`.
32
+
33
+ ## Decide target set
34
+
35
+ - empty → most-recent session (highest `last_ts`)
36
+ - `all` → every session the MCP returned
37
+ - otherwise → resolve `$ARGUMENTS` to a single token: try the literal arg first as a session id, then strip a `.ndjson` suffix, then try matching against the filename portion of a path containing `beacon-<token>.ndjson`. Refuse with a clear message if none match.
38
+
39
+ ## Refusal rules
40
+
41
+ Refuse with a clear message if:
42
+ - the target set is empty
43
+ - any target resolves outside `.launchsecure/` (defence against `..` injection from `$ARGUMENTS` — even if the user passes an absolute path)
44
+ - the active session is being written *right now* (`last_ts` within the last 5 seconds) — print a one-line warning and ask the user to stop the monitor first:
45
+ ```
46
+ ⚠ .launchsecure/beacon-8f3c2a91.ndjson was last written 2s ago — looks active.
47
+ Stop the receiver (Ctrl+C in the launch-beacon monitor terminal) and re-run /kit:beacon-clear.
48
+ ```
49
+ The user can still force by passing the token explicitly — but never silently nuke an actively-written file.
50
+
51
+ ## Confirmation
52
+
53
+ Print what's about to be moved and ask before doing it.
54
+
55
+ ```
56
+ About to soft-delete 1 file:
57
+ .launchsecure/beacon-a1b2c3d4.ndjson 89 events, 12m ago
58
+
59
+ Recoverable from .launchsecure/.trash/<UTC-timestamp>/ until manually purged.
60
+
61
+ Confirm? (y/N)
62
+ ```
63
+
64
+ For `all`, list every file with event count + age. Don't truncate.
65
+
66
+ Wait for explicit `y`/`yes`. Anything else → abort with `Cancelled. No files were moved.`
67
+
68
+ ## Soft-delete (move, don't rm)
69
+
70
+ Create `<sessionDir>/.trash/<UTC-ISO-timestamp>/` and `mv` each target into it, where `<sessionDir>` is `dirname(path)` from the `beacon_sessions` response — NOT a hard-coded `.launchsecure/`. This matters when `--worktree` or `--project_root` was passed, because the dir is then the worktree's `.launchsecure/`, not cwd's. **Never `rm`.** This is the mitigation for the recall coverage gap — recall doesn't snapshot `.launchsecure/*` today (tracked in LS work item #144). Soft-delete preserves the option to recover within the same machine.
71
+
72
+ ```bash
73
+ SESSION_DIR=$(dirname "<path-from-beacon_sessions>") # e.g. /repo/.claude/worktrees/foo/.launchsecure
74
+ TRASH="$SESSION_DIR/.trash/$(date -u +%Y%m%dT%H%M%SZ)"
75
+ mkdir -p "$TRASH"
76
+ mv "$SESSION_DIR/beacon-<token>.ndjson" "$TRASH/"
77
+ ```
78
+
79
+ After the move, print:
80
+
81
+ ```
82
+ ✓ moved 1 file to .launchsecure/.trash/20260526T142233Z/ (89 events archived).
83
+ Recover with: mv .launchsecure/.trash/20260526T142233Z/beacon-a1b2c3d4.ndjson .launchsecure/
84
+ ```
85
+
86
+ For `all`, print the count and the trash dir once; don't list every recovery command.
87
+
88
+ ## Constraints
89
+
90
+ - **MCP-first for enumeration.** Use `beacon_sessions` — never `ls` as the primary path.
91
+ - **Destructive — always confirm.** Even if `$ARGUMENTS` is `all`, ask first.
92
+ - **Scope-locked to the session dir.** The session dir is `dirname(path)` from `beacon_sessions` (typically `.launchsecure/`, but `<worktree>/.launchsecure/` when `--worktree`/`--project_root` is passed). Reject any target outside the dir the MCP told you about, even if the user passes an absolute path. We never touch files we didn't write.
93
+ - **Soft-delete only.** Never `rm` — always `mv` into `.launchsecure/.trash/<ts>/`. The trash dir is not auto-pruned; cleaning it up is a deliberate user action.
94
+ - **Don't stop the monitor server.** This command only moves files. The receiver keeps running and will reopen the same file on its next write — which is fine, the file just starts empty again.