@launchsecure/launch-kit 0.0.41 → 0.0.42

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 (60) hide show
  1. package/dist/deck-client/assets/{_baseUniq-mvYvzeEJ.js → _baseUniq-BrhDuG3C.js} +1 -1
  2. package/dist/deck-client/assets/{arc-CX4ylnp2.js → arc-DXtPHMhw.js} +1 -1
  3. package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-BkR-5IRK.js → architectureDiagram-Q4EWVU46-Cs9IdLQQ.js} +1 -1
  4. package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-DVNQht7c.js → blockDiagram-DXYQGD6D--wpvoBAt.js} +1 -1
  5. package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-Cbq1rlG8.js → c4Diagram-AHTNJAMY-BNIKE8-Z.js} +1 -1
  6. package/dist/deck-client/assets/channel-Bb5wIjTD.js +1 -0
  7. package/dist/deck-client/assets/{chunk-4BX2VUAB-D58Co4lU.js → chunk-4BX2VUAB-Bz3EWmUo.js} +1 -1
  8. package/dist/deck-client/assets/{chunk-4TB4RGXK-BYvhTm3d.js → chunk-4TB4RGXK-D55BBvVZ.js} +1 -1
  9. package/dist/deck-client/assets/{chunk-55IACEB6-oWukUhYg.js → chunk-55IACEB6-BzjEcoTi.js} +1 -1
  10. package/dist/deck-client/assets/{chunk-EDXVE4YY-Cm58kVnZ.js → chunk-EDXVE4YY-CH1vs4Lu.js} +1 -1
  11. package/dist/deck-client/assets/{chunk-FMBD7UC4-Dg-i7kzi.js → chunk-FMBD7UC4-CVRnaGM0.js} +1 -1
  12. package/dist/deck-client/assets/{chunk-OYMX7WX6-C72wigPl.js → chunk-OYMX7WX6-BCTV_aEZ.js} +1 -1
  13. package/dist/deck-client/assets/{chunk-QZHKN3VN-CLgeuAKw.js → chunk-QZHKN3VN-BqM8r4ee.js} +1 -1
  14. package/dist/deck-client/assets/{chunk-YZCP3GAM-HDDlJ5oI.js → chunk-YZCP3GAM-Rhbb691A.js} +1 -1
  15. package/dist/deck-client/assets/classDiagram-6PBFFD2Q-CN-ZYMbT.js +1 -0
  16. package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-CN-ZYMbT.js +1 -0
  17. package/dist/deck-client/assets/clone-D6e7poKG.js +1 -0
  18. package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-CUXQKg2M.js → cose-bilkent-S5V4N54A-fWyBR9Nn.js} +1 -1
  19. package/dist/deck-client/assets/{dagre-KV5264BT-C5M-fVDc.js → dagre-KV5264BT-Ds0Sqext.js} +1 -1
  20. package/dist/deck-client/assets/{diagram-5BDNPKRD-CcVsQ0S8.js → diagram-5BDNPKRD-BGz_X007.js} +1 -1
  21. package/dist/deck-client/assets/{diagram-G4DWMVQ6-DJswXyep.js → diagram-G4DWMVQ6-C78jeb-r.js} +1 -1
  22. package/dist/deck-client/assets/{diagram-MMDJMWI5-CGT76fm1.js → diagram-MMDJMWI5-BdoHW8mF.js} +1 -1
  23. package/dist/deck-client/assets/{diagram-TYMM5635-BBsYUNN6.js → diagram-TYMM5635-C8i9zc-U.js} +1 -1
  24. package/dist/deck-client/assets/{erDiagram-SMLLAGMA-DKWYEHQS.js → erDiagram-SMLLAGMA-DplAZ-yG.js} +1 -1
  25. package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-DLuDYIKT.js → flowDiagram-DWJPFMVM-F3N9yTAB.js} +1 -1
  26. package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-B19b6Qtj.js → ganttDiagram-T4ZO3ILL-DebdM4S5.js} +1 -1
  27. package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-BYLAfYVS.js → gitGraphDiagram-UUTBAWPF-htCk0oPz.js} +1 -1
  28. package/dist/deck-client/assets/{graph-CfzQUfPh.js → graph-Dtxc2PT4.js} +1 -1
  29. package/dist/deck-client/assets/{index-DlwdTgE_.js → index-CwAiam97.js} +2 -2
  30. package/dist/deck-client/assets/{infoDiagram-42DDH7IO-Dp3mUA9c.js → infoDiagram-42DDH7IO-gTxegviJ.js} +1 -1
  31. package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-BhrNX_jI.js → ishikawaDiagram-UXIWVN3A-DYSEsfUK.js} +1 -1
  32. package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-B5lJI492.js → journeyDiagram-VCZTEJTY-DgVc1q4D.js} +1 -1
  33. package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-D9-lmhQf.js → kanban-definition-6JOO6SKY-DcOf3i9N.js} +1 -1
  34. package/dist/deck-client/assets/{layout-CfIe_Su8.js → layout-CHP9HIw4.js} +1 -1
  35. package/dist/deck-client/assets/{linear-09ZFRoh_.js → linear-XjVb7x4Q.js} +1 -1
  36. package/dist/deck-client/assets/{mermaid.core-BaQyIOvj.js → mermaid.core-bouKOnsR.js} +4 -4
  37. package/dist/deck-client/assets/{min-CYwCzYaL.js → min-Jl4GV9DB.js} +1 -1
  38. package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-CouFxf6C.js → mindmap-definition-QFDTVHPH-FXXf4cJx.js} +1 -1
  39. package/dist/deck-client/assets/{pieDiagram-DEJITSTG-DMB1ufC0.js → pieDiagram-DEJITSTG-Dl4plCTi.js} +1 -1
  40. package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-CBiOKudN.js → quadrantDiagram-34T5L4WZ-BeOEeelg.js} +1 -1
  41. package/dist/deck-client/assets/{requirementDiagram-MS252O5E-BMc3GJkx.js → requirementDiagram-MS252O5E-CBh1jchM.js} +1 -1
  42. package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-CxACUncm.js → sankeyDiagram-XADWPNL6-BK6gG-ub.js} +1 -1
  43. package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-Ch-P3Mzc.js → sequenceDiagram-FGHM5R23-BtQwzsF5.js} +1 -1
  44. package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-Cy8n7Yzk.js → stateDiagram-FHFEXIEX--kLQOi8R.js} +1 -1
  45. package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-CHEPjgB0.js +1 -0
  46. package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-C2V4sSkm.js → timeline-definition-GMOUNBTQ-CQ_-CLh7.js} +1 -1
  47. package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-YOqt4VbE.js → vennDiagram-DHZGUBPP-DBhKYAFT.js} +1 -1
  48. package/dist/deck-client/assets/{wardley-RL74JXVD-Bxo5x40D.js → wardley-RL74JXVD-DLKe29q9.js} +1 -1
  49. package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-DW9SOqbx.js → wardleyDiagram-NUSXRM2D-Brb8ezsV.js} +1 -1
  50. package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-D-rZvZOL.js → xychartDiagram-5P7HB3ND-LogZ0Az9.js} +1 -1
  51. package/dist/deck-client/index.html +1 -1
  52. package/dist/server/deck-mcp-entry.js +137 -2
  53. package/dist/server/deck-serve.js +93 -1
  54. package/dist/server/rover-entry.js +1 -1
  55. package/package.json +1 -1
  56. package/dist/deck-client/assets/channel-B9GC-CLn.js +0 -1
  57. package/dist/deck-client/assets/classDiagram-6PBFFD2Q-CFBvYQ9j.js +0 -1
  58. package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-CFBvYQ9j.js +0 -1
  59. package/dist/deck-client/assets/clone-n-WQlAGe.js +0 -1
  60. package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-C14VKCzi.js +0 -1
@@ -1441,6 +1441,24 @@ async function updateDeck(commentId, input) {
1441
1441
  async function deleteDeck(commentId) {
1442
1442
  await callTool("communication_delete", { comment_id: commentId });
1443
1443
  }
1444
+ function authorLabel(c) {
1445
+ return c.author?.name || c.author?.email || "unknown";
1446
+ }
1447
+ async function readCloudDeck(commentId) {
1448
+ const result = await callTool("communication_read", {
1449
+ resource_type: "deck",
1450
+ limit: 50
1451
+ });
1452
+ const deck = result?.comments?.find((c) => c.id === commentId);
1453
+ if (!deck) return null;
1454
+ return {
1455
+ id: deck.id,
1456
+ title: deck.title ?? "(untitled deck)",
1457
+ author: authorLabel(deck),
1458
+ html: typeof deck.fields?.deckHtml === "string" ? deck.fields.deckHtml : null,
1459
+ blocks: Array.isArray(deck.fields?.deckBlocks) && deck.fields.deckBlocks.length > 0 ? deck.fields.deckBlocks : null
1460
+ };
1461
+ }
1444
1462
  function currentMcpOrigin() {
1445
1463
  const config = _config;
1446
1464
  if (!config) throw new Error("MCP config not loaded \u2014 call loadMcpConfig first");
@@ -1487,6 +1505,10 @@ function sessionDir(cwd, session) {
1487
1505
  function sessionJsonPath(cwd, session) {
1488
1506
  return import_node_path4.default.join(sessionDir(cwd, session), "session.json");
1489
1507
  }
1508
+ function sessionIdFromCloud(title, fallbackId) {
1509
+ const slug = title.trim().replace(/[^a-zA-Z0-9._-]+/g, "-").replace(/^[-.]+|[-.]+$/g, "").slice(0, 80);
1510
+ return slug || `deck-${fallbackId.slice(0, 8)}`;
1511
+ }
1490
1512
  function readPersistedSession(cwd, session) {
1491
1513
  try {
1492
1514
  const raw = import_node_fs4.default.readFileSync(sessionJsonPath(cwd, session), "utf-8");
@@ -1532,7 +1554,9 @@ function listPersistedSessions(cwd) {
1532
1554
  shared: Boolean(sync),
1533
1555
  stale: Boolean(sync) && persisted.version > (sync?.version ?? 0),
1534
1556
  shareUrl: sync?.publicShareUrl,
1535
- course: sync?.course
1557
+ course: sync?.course,
1558
+ watching: sync?.watching,
1559
+ watchedFrom: sync?.watchedFrom
1536
1560
  });
1537
1561
  }
1538
1562
  sessions.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
@@ -1931,6 +1955,74 @@ async function startDeckServer(opts = {}) {
1931
1955
  jsonResponse(res, 200, { sessions: listPersistedSessions(cwd) });
1932
1956
  return;
1933
1957
  }
1958
+ const pullMatch = url2.pathname.match(/^\/api\/cloud-decks\/([^/]+)\/pull$/);
1959
+ if (pullMatch && req.method === "POST") {
1960
+ const deckId = decodeURIComponent(pullMatch[1]);
1961
+ let course;
1962
+ try {
1963
+ const raw = await readBody(req);
1964
+ if (raw.trim()) {
1965
+ const parsed = JSON.parse(raw);
1966
+ course = parsed.course?.trim() || void 0;
1967
+ }
1968
+ } catch {
1969
+ }
1970
+ const cfg = resolveShareConfig(cwd, course);
1971
+ if ("error" in cfg) {
1972
+ jsonResponse(res, 400, { ok: false, error: cfg.error });
1973
+ return;
1974
+ }
1975
+ try {
1976
+ const deck = await runWithShareConfig(cfg.override, () => readCloudDeck(deckId));
1977
+ if (!deck) {
1978
+ jsonResponse(res, 404, { ok: false, error: `No shared deck "${deckId}" in this course.` });
1979
+ return;
1980
+ }
1981
+ if (!deck.html && !deck.blocks) {
1982
+ jsonResponse(res, 422, { ok: false, error: "That deck carries no viewable content (no deckHtml or deckBlocks)." });
1983
+ return;
1984
+ }
1985
+ const session = sessionIdFromCloud(deck.title, deck.id);
1986
+ const sessionEncoded = encodeURIComponent(session);
1987
+ let blocks;
1988
+ if (deck.html) {
1989
+ const dir = sessionDir(cwd, session);
1990
+ import_node_fs4.default.mkdirSync(dir, { recursive: true });
1991
+ import_node_fs4.default.writeFileSync(import_node_path4.default.join(dir, "imported.html"), deck.html);
1992
+ blocks = [{ type: "iframe", label: deck.title, src: `/deck-files/${sessionEncoded}/imported.html` }];
1993
+ } else {
1994
+ blocks = deck.blocks;
1995
+ }
1996
+ const persisted = writePersistedSession(cwd, session, { mode: "show", blocks });
1997
+ writeSyncRecord(cwd, session, {
1998
+ resourceId: deck.id,
1999
+ sharedAt: (/* @__PURE__ */ new Date()).toISOString(),
2000
+ version: persisted.version,
2001
+ course,
2002
+ watching: true,
2003
+ watchedFrom: deck.author
2004
+ });
2005
+ broadcastToClients({
2006
+ type: "session",
2007
+ session,
2008
+ mode: "show",
2009
+ blocks,
2010
+ version: persisted.version
2011
+ });
2012
+ jsonResponse(res, 200, {
2013
+ ok: true,
2014
+ session,
2015
+ deckId: deck.id,
2016
+ title: deck.title,
2017
+ author: deck.author,
2018
+ blockCount: blocks.length,
2019
+ course
2020
+ });
2021
+ } catch (err) {
2022
+ jsonResponse(res, 500, { ok: false, error: String(err) });
2023
+ }
2024
+ return;
2025
+ }
1934
2026
  const shareMatch = url2.pathname.match(/^\/api\/sessions\/([^/]+)\/share$/);
1935
2027
  if (shareMatch && req.method === "POST") {
1936
2028
  const id = decodeURIComponent(shareMatch[1]);
@@ -608,7 +608,7 @@ var require_package = __commonJS({
608
608
  "package.json"(exports2, module2) {
609
609
  module2.exports = {
610
610
  name: "@launchsecure/launch-kit",
611
- version: "0.0.41",
611
+ version: "0.0.42",
612
612
  description: "LaunchSecure toolkit \u2014 launch-sequencer (pipeline runner + terminal bridge), launch-radar (feedback webhook receiver), launch-chart (project graph MCP), launch-deck (visual playground MCP), launch-kit-beacon (feedback Web Component), launch-recall (file-watcher backup). launch-pod is the container image these run inside.",
613
613
  license: "MIT",
614
614
  author: "LaunchSecure - AutomateWithUs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@launchsecure/launch-kit",
3
- "version": "0.0.41",
3
+ "version": "0.0.42",
4
4
  "description": "LaunchSecure toolkit — launch-sequencer (pipeline runner + terminal bridge), launch-radar (feedback webhook receiver), launch-chart (project graph MCP), launch-deck (visual playground MCP), launch-kit-beacon (feedback Web Component), launch-recall (file-watcher backup). launch-pod is the container image these run inside.",
5
5
  "license": "MIT",
6
6
  "author": "LaunchSecure - AutomateWithUs",
@@ -1 +0,0 @@
1
- import{aq as o,ar as n}from"./mermaid.core-BaQyIOvj.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-BYvhTm3d.js";import{_ as i}from"./mermaid.core-BaQyIOvj.js";import"./chunk-FMBD7UC4-Dg-i7kzi.js";import"./chunk-YZCP3GAM-HDDlJ5oI.js";import"./chunk-55IACEB6-oWukUhYg.js";import"./chunk-EDXVE4YY-Cm58kVnZ.js";import"./index-DlwdTgE_.js";var n={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{n as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-BYvhTm3d.js";import{_ as i}from"./mermaid.core-BaQyIOvj.js";import"./chunk-FMBD7UC4-Dg-i7kzi.js";import"./chunk-YZCP3GAM-HDDlJ5oI.js";import"./chunk-55IACEB6-oWukUhYg.js";import"./chunk-EDXVE4YY-Cm58kVnZ.js";import"./index-DlwdTgE_.js";var n={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{n as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./graph-CfzQUfPh.js";var e=4;function a(o){return r(o,e)}export{a as c};
@@ -1 +0,0 @@
1
- import{s as e,b as r,a,S as s}from"./chunk-OYMX7WX6-C72wigPl.js";import{_ as i}from"./mermaid.core-BaQyIOvj.js";import"./chunk-55IACEB6-oWukUhYg.js";import"./chunk-EDXVE4YY-Cm58kVnZ.js";import"./index-DlwdTgE_.js";var p={parser:a,get db(){return new s(2)},renderer:r,styles:e,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{p as diagram};