@launchsecure/launch-kit 0.0.38 → 0.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/beacon/beacon.mjs +308 -298
- package/dist/beacon/beacon.mjs.map +1 -1
- package/dist/beacon/beacon.umd.js +6 -6
- package/dist/beacon/beacon.umd.js.map +1 -1
- package/dist/beacon/types/internal/screenshot.d.ts.map +1 -1
- package/dist/chart-client/assets/index-CWJFFDPu.css +1 -0
- package/dist/chart-client/index.html +2 -2
- package/dist/client/assets/index-CTzFcfGV.css +32 -0
- package/dist/client/index.html +2 -2
- package/dist/council-client/assets/index-ArgRc5mN.css +1 -0
- package/dist/council-client/index.html +2 -2
- package/dist/deck-client/assets/{_baseUniq-CgW32Gdk.js → _baseUniq-BZP7n41F.js} +1 -1
- package/dist/deck-client/assets/{arc-D-Mg9gvM.js → arc-31biU3Az.js} +1 -1
- package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-CdTsXsgl.js → architectureDiagram-Q4EWVU46-DHg6Ss--.js} +1 -1
- package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-mwTneYyB.js → blockDiagram-DXYQGD6D-CUdblaWk.js} +1 -1
- package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-C4R8IbjO.js → c4Diagram-AHTNJAMY-MfAO5lak.js} +1 -1
- package/dist/deck-client/assets/channel-BBkRLdnC.js +1 -0
- package/dist/deck-client/assets/{chunk-4BX2VUAB-ZWuRIUwb.js → chunk-4BX2VUAB-DQ1MrGgN.js} +1 -1
- package/dist/deck-client/assets/{chunk-4TB4RGXK-PNHX10sF.js → chunk-4TB4RGXK-BUJtZ7jO.js} +1 -1
- package/dist/deck-client/assets/{chunk-55IACEB6-CD9MUgPr.js → chunk-55IACEB6-BdSnXB6g.js} +1 -1
- package/dist/deck-client/assets/{chunk-EDXVE4YY-C_CpORb3.js → chunk-EDXVE4YY-94yZIUI8.js} +1 -1
- package/dist/deck-client/assets/{chunk-FMBD7UC4-Bg5RoVC-.js → chunk-FMBD7UC4-PnZ9v6ey.js} +1 -1
- package/dist/deck-client/assets/{chunk-OYMX7WX6-DhTwgQwd.js → chunk-OYMX7WX6-DXrWNOsV.js} +1 -1
- package/dist/deck-client/assets/{chunk-QZHKN3VN-C5VLMaFa.js → chunk-QZHKN3VN-CsIGIDKX.js} +1 -1
- package/dist/deck-client/assets/{chunk-YZCP3GAM-NAGHy4Sr.js → chunk-YZCP3GAM-DVkBO9tn.js} +1 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-DFCaeF-7.js +1 -0
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-DFCaeF-7.js +1 -0
- package/dist/deck-client/assets/clone-GCEVRScB.js +1 -0
- package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-CpUczjZk.js → cose-bilkent-S5V4N54A-m126Oh3b.js} +1 -1
- package/dist/deck-client/assets/{dagre-KV5264BT-BOvb07MG.js → dagre-KV5264BT-C2aig8U5.js} +1 -1
- package/dist/deck-client/assets/{diagram-5BDNPKRD-BPxwTiC-.js → diagram-5BDNPKRD-CKpoRfGn.js} +1 -1
- package/dist/deck-client/assets/{diagram-G4DWMVQ6-Dz_gsHgx.js → diagram-G4DWMVQ6-Cjh115Ep.js} +1 -1
- package/dist/deck-client/assets/{diagram-MMDJMWI5-B7z-oVTW.js → diagram-MMDJMWI5-DKlBv_2L.js} +1 -1
- package/dist/deck-client/assets/{diagram-TYMM5635-CAIAglLQ.js → diagram-TYMM5635-CdBh4cEn.js} +1 -1
- package/dist/deck-client/assets/{erDiagram-SMLLAGMA-BiViTWF3.js → erDiagram-SMLLAGMA-56pn_93p.js} +1 -1
- package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-DYVemp0H.js → flowDiagram-DWJPFMVM-BtV3M5xJ.js} +1 -1
- package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-Chc1Iyu1.js → ganttDiagram-T4ZO3ILL-DTIsC6Zg.js} +1 -1
- package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-B7eFgaj5.js → gitGraphDiagram-UUTBAWPF-CJYeyCLe.js} +1 -1
- package/dist/deck-client/assets/{graph-CKaIoNwb.js → graph-BDvMu1Ss.js} +1 -1
- package/dist/deck-client/assets/index-D4eSxcBn.css +1 -0
- package/dist/deck-client/assets/{index-BRawc7RA.js → index-QnGVE9PZ.js} +83 -83
- package/dist/deck-client/assets/{infoDiagram-42DDH7IO-BxsVq7vO.js → infoDiagram-42DDH7IO-BWyKJnpW.js} +1 -1
- package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-DAM7vPwa.js → ishikawaDiagram-UXIWVN3A-DXYkdO3T.js} +1 -1
- package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-Xe20Nf7R.js → journeyDiagram-VCZTEJTY-C2zBr-J5.js} +1 -1
- package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-DS8YguzB.js → kanban-definition-6JOO6SKY-CdoYLS4Z.js} +1 -1
- package/dist/deck-client/assets/{layout-DKMBpzR-.js → layout-vOnxnCQU.js} +1 -1
- package/dist/deck-client/assets/{linear-DTNtBg5h.js → linear-B0J0WCGz.js} +1 -1
- package/dist/deck-client/assets/{min-C4DrxCcA.js → min-B0AXlT9L.js} +1 -1
- package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-B4nEtsw5.js → mindmap-definition-QFDTVHPH-oAybLedr.js} +1 -1
- package/dist/deck-client/assets/{pieDiagram-DEJITSTG-BzHdGNu5.js → pieDiagram-DEJITSTG-BjHyHxGk.js} +1 -1
- package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-CaX0SD4-.js → quadrantDiagram-34T5L4WZ-dtluDZXs.js} +1 -1
- package/dist/deck-client/assets/{requirementDiagram-MS252O5E-QeG4p2ni.js → requirementDiagram-MS252O5E-Cq8l7bOl.js} +1 -1
- package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-BoAwgAj-.js → sankeyDiagram-XADWPNL6-C1Vih91z.js} +1 -1
- package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-Dn4pYYgu.js → sequenceDiagram-FGHM5R23-CYkd7oQK.js} +1 -1
- package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-Is6KRmQV.js → stateDiagram-FHFEXIEX-CtyG8wBK.js} +1 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-BLyKWfcN.js +1 -0
- package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-v64IZGuY.js → timeline-definition-GMOUNBTQ-DZIxSyd1.js} +1 -1
- package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-noh9eouF.js → vennDiagram-DHZGUBPP-Ct4JVRDM.js} +1 -1
- package/dist/deck-client/assets/{wardley-RL74JXVD-cJ_1is2S.js → wardley-RL74JXVD-V29ycxOW.js} +1 -1
- package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-DxR4j737.js → wardleyDiagram-NUSXRM2D-D-Ua6Cmi.js} +1 -1
- package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-B26vodaL.js → xychartDiagram-5P7HB3ND-BPCOuRVl.js} +1 -1
- package/dist/deck-client/index.html +2 -2
- package/dist/server/beacon-monitor-entry.js +106 -24
- package/dist/server/chart-serve.js +544 -247
- package/dist/server/cli.js +743 -324
- package/dist/server/council-entry.js +16 -3
- package/dist/server/council-serve.js +15 -2
- package/dist/server/deck-mcp-entry.js +270 -108
- package/dist/server/deck-serve.js +101 -23
- package/dist/server/fb-wizard.js +0 -0
- package/dist/server/graph-mcp-entry.js +866 -357
- package/dist/server/init-entry.js +152 -25
- package/dist/server/orbit-entry.js +91 -7
- package/dist/server/radar-docker-init-entry.js +0 -0
- package/dist/server/radar-entrypoint-entry.js +0 -0
- package/dist/server/radar-teardown-entry.js +0 -0
- package/dist/server/recall-entry.js +94 -12
- package/dist/server/rover-entry.js +44 -1
- package/package.json +23 -22
- package/scaffolds/ls-marketplace/plugins/kit/commands/activate-statusline.md +8 -7
- package/scaffolds/ls-marketplace/plugins/kit/commands/deactivate-statusline.md +2 -2
- package/scaffolds/ls-marketplace/plugins/kit/skills/comms/SKILL.md +88 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/project-info/SKILL.md +88 -0
- package/scaffolds/ls-marketplace/plugins/kit/skills/slides/SKILL.md +118 -0
- package/scaffolds/migrate-safety/scripts/migrate-with-backup.sh +0 -0
- package/scaffolds/recall-hook/scripts/ensure-recall.sh +0 -0
- package/scaffolds/statusline/statusline-base.sh +20 -0
- package/scaffolds/statusline/statusline-mcp.sh +68 -19
- package/scaffolds/statusline/statusline-wrapper.sh +12 -9
- package/dist/chart-client/assets/index-B6rR0CWx.css +0 -1
- package/dist/client/assets/index-D6uX1lQe.css +0 -32
- package/dist/council-client/assets/index-CleYLarJ.css +0 -1
- package/dist/deck-client/assets/channel-CuSee7GO.js +0 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-_kTisqzs.js +0 -1
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-_kTisqzs.js +0 -1
- package/dist/deck-client/assets/clone-kb3zkY60.js +0 -1
- package/dist/deck-client/assets/index-55P73aS_.css +0 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-Cy45Ttqq.js +0 -1
- /package/dist/chart-client/assets/{index-C_xCi3gW.js → index-Dzlj-oCj.js} +0 -0
- /package/dist/client/assets/{index-CRecYFUA.js → index-tTg_ezUF.js} +0 -0
- /package/dist/council-client/assets/{index-DO-Vn15O.js → index-B1v46vTE.js} +0 -0
|
@@ -1227,7 +1227,7 @@ function readCredFile(repoRoot) {
|
|
|
1227
1227
|
var _config = null;
|
|
1228
1228
|
var _requestId = 0;
|
|
1229
1229
|
var _sessionId = null;
|
|
1230
|
-
function
|
|
1230
|
+
function mcpConfigForProfile(projectRoot, name) {
|
|
1231
1231
|
let cred;
|
|
1232
1232
|
try {
|
|
1233
1233
|
cred = readCredFile(projectRoot);
|
|
@@ -1237,7 +1237,7 @@ function mcpConfigFromCourse(projectRoot) {
|
|
|
1237
1237
|
if (!cred) return null;
|
|
1238
1238
|
const nested = toNested(cred);
|
|
1239
1239
|
if (!nested) return null;
|
|
1240
|
-
const profile = nested.profiles[
|
|
1240
|
+
const profile = nested.profiles[name];
|
|
1241
1241
|
if (!profile?.pat || !profile.serverUrl || !profile.orgSlug || !profile.projectSlug) {
|
|
1242
1242
|
return null;
|
|
1243
1243
|
}
|
|
@@ -1250,6 +1250,37 @@ function mcpConfigFromCourse(projectRoot) {
|
|
|
1250
1250
|
}
|
|
1251
1251
|
};
|
|
1252
1252
|
}
|
|
1253
|
+
function mcpConfigFromCourse(projectRoot) {
|
|
1254
|
+
let cred;
|
|
1255
|
+
try {
|
|
1256
|
+
cred = readCredFile(projectRoot);
|
|
1257
|
+
} catch {
|
|
1258
|
+
return null;
|
|
1259
|
+
}
|
|
1260
|
+
if (!cred) return null;
|
|
1261
|
+
const nested = toNested(cred);
|
|
1262
|
+
if (!nested) return null;
|
|
1263
|
+
return mcpConfigForProfile(projectRoot, nested.active);
|
|
1264
|
+
}
|
|
1265
|
+
function listCourses(projectRoot) {
|
|
1266
|
+
let cred;
|
|
1267
|
+
try {
|
|
1268
|
+
cred = readCredFile(projectRoot);
|
|
1269
|
+
} catch {
|
|
1270
|
+
return [];
|
|
1271
|
+
}
|
|
1272
|
+
if (!cred) return [];
|
|
1273
|
+
const nested = toNested(cred);
|
|
1274
|
+
if (!nested) return [];
|
|
1275
|
+
return Object.entries(nested.profiles).map(([name, p]) => ({
|
|
1276
|
+
name,
|
|
1277
|
+
org: p.orgSlug ?? "",
|
|
1278
|
+
project: p.projectSlug ?? "",
|
|
1279
|
+
serverUrl: p.serverUrl ?? "",
|
|
1280
|
+
active: name === nested.active,
|
|
1281
|
+
usable: Boolean(p.pat && p.serverUrl && p.orgSlug && p.projectSlug)
|
|
1282
|
+
}));
|
|
1283
|
+
}
|
|
1253
1284
|
function loadMcpConfig(projectRoot) {
|
|
1254
1285
|
if (_config) return _config;
|
|
1255
1286
|
const fromCourse = mcpConfigFromCourse(projectRoot);
|
|
@@ -1276,6 +1307,24 @@ function loadMcpConfig(projectRoot) {
|
|
|
1276
1307
|
};
|
|
1277
1308
|
return _config;
|
|
1278
1309
|
}
|
|
1310
|
+
var _overrideLock = Promise.resolve();
|
|
1311
|
+
function withMcpConfig(override, fn) {
|
|
1312
|
+
const run = async () => {
|
|
1313
|
+
const prevConfig = _config;
|
|
1314
|
+
const prevSession = _sessionId;
|
|
1315
|
+
_config = override;
|
|
1316
|
+
_sessionId = null;
|
|
1317
|
+
try {
|
|
1318
|
+
return await fn();
|
|
1319
|
+
} finally {
|
|
1320
|
+
_config = prevConfig;
|
|
1321
|
+
_sessionId = prevSession;
|
|
1322
|
+
}
|
|
1323
|
+
};
|
|
1324
|
+
const result = _overrideLock.then(run, run);
|
|
1325
|
+
_overrideLock = result.then(() => void 0, () => void 0);
|
|
1326
|
+
return result;
|
|
1327
|
+
}
|
|
1279
1328
|
function parseSSE(text) {
|
|
1280
1329
|
const lines = text.split("\n");
|
|
1281
1330
|
for (const line of lines) {
|
|
@@ -1438,6 +1487,7 @@ function listPersistedSessions(cwd) {
|
|
|
1438
1487
|
if (!entry.isDirectory()) continue;
|
|
1439
1488
|
const persisted = readPersistedSession(cwd, entry.name);
|
|
1440
1489
|
if (!persisted) continue;
|
|
1490
|
+
const sync = readSyncRecord(cwd, persisted.id);
|
|
1441
1491
|
sessions.push({
|
|
1442
1492
|
id: persisted.id,
|
|
1443
1493
|
mode: persisted.mode,
|
|
@@ -1445,7 +1495,8 @@ function listPersistedSessions(cwd) {
|
|
|
1445
1495
|
version: persisted.version,
|
|
1446
1496
|
createdAt: persisted.createdAt,
|
|
1447
1497
|
updatedAt: persisted.updatedAt,
|
|
1448
|
-
shared: Boolean(
|
|
1498
|
+
shared: Boolean(sync),
|
|
1499
|
+
stale: Boolean(sync) && persisted.version > (sync?.version ?? 0)
|
|
1449
1500
|
});
|
|
1450
1501
|
}
|
|
1451
1502
|
sessions.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
@@ -1683,6 +1734,10 @@ async function startDeckServer(opts = {}) {
|
|
|
1683
1734
|
jsonResponse(res, 200, { config: cfg });
|
|
1684
1735
|
return;
|
|
1685
1736
|
}
|
|
1737
|
+
if (req.method === "GET" && url2.pathname === "/api/deck/courses") {
|
|
1738
|
+
jsonResponse(res, 200, { courses: listCourses(cwd) });
|
|
1739
|
+
return;
|
|
1740
|
+
}
|
|
1686
1741
|
if (req.method === "POST" && url2.pathname === "/api/deck/config") {
|
|
1687
1742
|
try {
|
|
1688
1743
|
const body = JSON.parse(await readBody(req));
|
|
@@ -1781,14 +1836,34 @@ async function startDeckServer(opts = {}) {
|
|
|
1781
1836
|
jsonResponse(res, 404, { ok: false, error: "session not found" });
|
|
1782
1837
|
return;
|
|
1783
1838
|
}
|
|
1839
|
+
let course;
|
|
1784
1840
|
try {
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1841
|
+
const raw = await readBody(req);
|
|
1842
|
+
if (raw.trim()) {
|
|
1843
|
+
course = JSON.parse(raw).course?.trim() || void 0;
|
|
1844
|
+
}
|
|
1845
|
+
} catch {
|
|
1846
|
+
}
|
|
1847
|
+
let override = null;
|
|
1848
|
+
if (course) {
|
|
1849
|
+
override = mcpConfigForProfile(cwd, course);
|
|
1850
|
+
if (!override) {
|
|
1851
|
+
jsonResponse(res, 400, {
|
|
1852
|
+
ok: false,
|
|
1853
|
+
error: `Course "${course}" is not a usable profile in .launch-secure.cred.config (missing pat/serverUrl/orgSlug/projectSlug?).`
|
|
1854
|
+
});
|
|
1855
|
+
return;
|
|
1856
|
+
}
|
|
1857
|
+
} else {
|
|
1858
|
+
try {
|
|
1859
|
+
loadMcpConfig(cwd);
|
|
1860
|
+
} catch (err) {
|
|
1861
|
+
jsonResponse(res, 400, {
|
|
1862
|
+
ok: false,
|
|
1863
|
+
error: `Cloud sharing needs an active LaunchSecure course (.launch-secure.cred.config) or a "launch-secure" entry in .mcp.json: ${String(err)}`
|
|
1864
|
+
});
|
|
1865
|
+
return;
|
|
1866
|
+
}
|
|
1792
1867
|
}
|
|
1793
1868
|
try {
|
|
1794
1869
|
const blocks = Array.isArray(persisted.blocks) ? persisted.blocks : [];
|
|
@@ -1797,24 +1872,27 @@ async function startDeckServer(opts = {}) {
|
|
|
1797
1872
|
const body = `Shared deck "${id}" \u2014 ${blocks.length} block${blocks.length === 1 ? "" : "s"}${types.length ? ` (${types.join(", ")})` : ""}. Open the Decks tab in the Communication Center to view.`;
|
|
1798
1873
|
const input = { title: id, body, html, sessionId: id, blockCount: blocks.length };
|
|
1799
1874
|
const existing2 = readSyncRecord(cwd, id);
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1875
|
+
const doShare = async () => {
|
|
1876
|
+
if (existing2?.resourceId) {
|
|
1877
|
+
try {
|
|
1878
|
+
const { id: rid2 } = await updateDeck(existing2.resourceId, input);
|
|
1879
|
+
return { resourceId: rid2, updated: true };
|
|
1880
|
+
} catch {
|
|
1881
|
+
const { id: rid2 } = await writeDeck(input);
|
|
1882
|
+
return { resourceId: rid2, updated: false };
|
|
1883
|
+
}
|
|
1808
1884
|
}
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
}
|
|
1885
|
+
const { id: rid } = await writeDeck(input);
|
|
1886
|
+
return { resourceId: rid, updated: false };
|
|
1887
|
+
};
|
|
1888
|
+
const { resourceId, updated } = override ? await withMcpConfig(override, doShare) : await doShare();
|
|
1812
1889
|
writeSyncRecord(cwd, id, {
|
|
1813
1890
|
resourceId,
|
|
1814
1891
|
sharedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1815
|
-
version: persisted.version
|
|
1892
|
+
version: persisted.version,
|
|
1893
|
+
course
|
|
1816
1894
|
});
|
|
1817
|
-
jsonResponse(res, 200, { ok: true, resourceId, updated });
|
|
1895
|
+
jsonResponse(res, 200, { ok: true, resourceId, updated, course });
|
|
1818
1896
|
} catch (err) {
|
|
1819
1897
|
jsonResponse(res, 500, { ok: false, error: String(err) });
|
|
1820
1898
|
}
|
package/dist/server/fb-wizard.js
CHANGED
|
File without changes
|