@launchsecure/launch-kit 0.0.39 → 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/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-DOrnEQMI.js → _baseUniq-BZP7n41F.js} +1 -1
- package/dist/deck-client/assets/{arc-DOWK7V3m.js → arc-31biU3Az.js} +1 -1
- package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-DPhzvk7q.js → architectureDiagram-Q4EWVU46-DHg6Ss--.js} +1 -1
- package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-CwAGy9lU.js → blockDiagram-DXYQGD6D-CUdblaWk.js} +1 -1
- package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-L_g_SS21.js → c4Diagram-AHTNJAMY-MfAO5lak.js} +1 -1
- package/dist/deck-client/assets/channel-BBkRLdnC.js +1 -0
- package/dist/deck-client/assets/{chunk-4BX2VUAB-RKm0LXpu.js → chunk-4BX2VUAB-DQ1MrGgN.js} +1 -1
- package/dist/deck-client/assets/{chunk-4TB4RGXK-Bk0FUbxU.js → chunk-4TB4RGXK-BUJtZ7jO.js} +1 -1
- package/dist/deck-client/assets/{chunk-55IACEB6-Cl3hja-M.js → chunk-55IACEB6-BdSnXB6g.js} +1 -1
- package/dist/deck-client/assets/{chunk-EDXVE4YY-CNIMQCV2.js → chunk-EDXVE4YY-94yZIUI8.js} +1 -1
- package/dist/deck-client/assets/{chunk-FMBD7UC4-DqOvWr1k.js → chunk-FMBD7UC4-PnZ9v6ey.js} +1 -1
- package/dist/deck-client/assets/{chunk-OYMX7WX6-1Kd7yK5u.js → chunk-OYMX7WX6-DXrWNOsV.js} +1 -1
- package/dist/deck-client/assets/{chunk-QZHKN3VN-6_kraYpP.js → chunk-QZHKN3VN-CsIGIDKX.js} +1 -1
- package/dist/deck-client/assets/{chunk-YZCP3GAM-FgAwIWlo.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-CigVnnPr.js → cose-bilkent-S5V4N54A-m126Oh3b.js} +1 -1
- package/dist/deck-client/assets/{dagre-KV5264BT-DHZXTktX.js → dagre-KV5264BT-C2aig8U5.js} +1 -1
- package/dist/deck-client/assets/{diagram-5BDNPKRD-H5k0eauU.js → diagram-5BDNPKRD-CKpoRfGn.js} +1 -1
- package/dist/deck-client/assets/{diagram-G4DWMVQ6-Bg3dFhSY.js → diagram-G4DWMVQ6-Cjh115Ep.js} +1 -1
- package/dist/deck-client/assets/{diagram-MMDJMWI5-CQLC410N.js → diagram-MMDJMWI5-DKlBv_2L.js} +1 -1
- package/dist/deck-client/assets/{diagram-TYMM5635-DFTCHVkP.js → diagram-TYMM5635-CdBh4cEn.js} +1 -1
- package/dist/deck-client/assets/{erDiagram-SMLLAGMA-aiv9GZnL.js → erDiagram-SMLLAGMA-56pn_93p.js} +1 -1
- package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-C6Fhvtsy.js → flowDiagram-DWJPFMVM-BtV3M5xJ.js} +1 -1
- package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-DSaGMPM4.js → ganttDiagram-T4ZO3ILL-DTIsC6Zg.js} +1 -1
- package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-DMjL2Vix.js → gitGraphDiagram-UUTBAWPF-CJYeyCLe.js} +1 -1
- package/dist/deck-client/assets/{graph-B7Vn5lkK.js → graph-BDvMu1Ss.js} +1 -1
- package/dist/deck-client/assets/index-D4eSxcBn.css +1 -0
- package/dist/deck-client/assets/{index-BD36e-tD.js → index-QnGVE9PZ.js} +72 -72
- package/dist/deck-client/assets/{infoDiagram-42DDH7IO-mNi4iygG.js → infoDiagram-42DDH7IO-BWyKJnpW.js} +1 -1
- package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-BwCUmUVt.js → ishikawaDiagram-UXIWVN3A-DXYkdO3T.js} +1 -1
- package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-C6qoqJmJ.js → journeyDiagram-VCZTEJTY-C2zBr-J5.js} +1 -1
- package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-Dz1Tt3sA.js → kanban-definition-6JOO6SKY-CdoYLS4Z.js} +1 -1
- package/dist/deck-client/assets/{layout-CZTyRhOG.js → layout-vOnxnCQU.js} +1 -1
- package/dist/deck-client/assets/{linear--7n7iEvd.js → linear-B0J0WCGz.js} +1 -1
- package/dist/deck-client/assets/{min-Bh130DN8.js → min-B0AXlT9L.js} +1 -1
- package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-CfXcK1qH.js → mindmap-definition-QFDTVHPH-oAybLedr.js} +1 -1
- package/dist/deck-client/assets/{pieDiagram-DEJITSTG-DjVHLAVw.js → pieDiagram-DEJITSTG-BjHyHxGk.js} +1 -1
- package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-CXwvZ1i1.js → quadrantDiagram-34T5L4WZ-dtluDZXs.js} +1 -1
- package/dist/deck-client/assets/{requirementDiagram-MS252O5E-Cl6xm0fR.js → requirementDiagram-MS252O5E-Cq8l7bOl.js} +1 -1
- package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-BOH9sLyh.js → sankeyDiagram-XADWPNL6-C1Vih91z.js} +1 -1
- package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-BC1MYBn6.js → sequenceDiagram-FGHM5R23-CYkd7oQK.js} +1 -1
- package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-kNp9bv8K.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-DKnITsD4.js → timeline-definition-GMOUNBTQ-DZIxSyd1.js} +1 -1
- package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-BdajXRrh.js → vennDiagram-DHZGUBPP-Ct4JVRDM.js} +1 -1
- package/dist/deck-client/assets/wardley-RL74JXVD-V29ycxOW.js +162 -0
- package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-B2hDCDl2.js → wardleyDiagram-NUSXRM2D-D-Ua6Cmi.js} +1 -1
- package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-CvnYFs51.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 +267 -107
- package/dist/server/deck-serve.js +98 -22
- package/dist/server/graph-mcp-entry.js +866 -357
- package/dist/server/orbit-entry.js +91 -7
- package/dist/server/recall-entry.js +94 -12
- package/dist/server/rover-entry.js +1 -1
- package/package.json +1 -1
- package/scaffolds/statusline/statusline-mcp.sh +68 -19
- package/scaffolds/statusline/statusline-wrapper.sh +12 -9
- package/dist/chart-client/assets/index-ysGpLeOW.css +0 -1
- package/dist/client/assets/index-CMN3tlGP.css +0 -32
- package/dist/council-client/assets/index-ChmNX6bZ.css +0 -1
- package/dist/deck-client/assets/channel-DqiACUUq.js +0 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-D23cq2C3.js +0 -1
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-D23cq2C3.js +0 -1
- package/dist/deck-client/assets/clone-C7jSigGq.js +0 -1
- package/dist/deck-client/assets/index-CGbNOpk9.css +0 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-hRsAFc2t.js +0 -1
- package/dist/deck-client/assets/wardley-RL74JXVD-BL802-su.js +0 -162
- /package/dist/chart-client/assets/{index-BlsuXuQ1.js → index-Dzlj-oCj.js} +0 -0
- /package/dist/client/assets/{index-BA7BHBWT.js → index-tTg_ezUF.js} +0 -0
- /package/dist/council-client/assets/{index-jjBWyhry.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) {
|
|
@@ -1685,6 +1734,10 @@ async function startDeckServer(opts = {}) {
|
|
|
1685
1734
|
jsonResponse(res, 200, { config: cfg });
|
|
1686
1735
|
return;
|
|
1687
1736
|
}
|
|
1737
|
+
if (req.method === "GET" && url2.pathname === "/api/deck/courses") {
|
|
1738
|
+
jsonResponse(res, 200, { courses: listCourses(cwd) });
|
|
1739
|
+
return;
|
|
1740
|
+
}
|
|
1688
1741
|
if (req.method === "POST" && url2.pathname === "/api/deck/config") {
|
|
1689
1742
|
try {
|
|
1690
1743
|
const body = JSON.parse(await readBody(req));
|
|
@@ -1783,14 +1836,34 @@ async function startDeckServer(opts = {}) {
|
|
|
1783
1836
|
jsonResponse(res, 404, { ok: false, error: "session not found" });
|
|
1784
1837
|
return;
|
|
1785
1838
|
}
|
|
1839
|
+
let course;
|
|
1786
1840
|
try {
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
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
|
+
}
|
|
1794
1867
|
}
|
|
1795
1868
|
try {
|
|
1796
1869
|
const blocks = Array.isArray(persisted.blocks) ? persisted.blocks : [];
|
|
@@ -1799,24 +1872,27 @@ async function startDeckServer(opts = {}) {
|
|
|
1799
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.`;
|
|
1800
1873
|
const input = { title: id, body, html, sessionId: id, blockCount: blocks.length };
|
|
1801
1874
|
const existing2 = readSyncRecord(cwd, id);
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
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
|
+
}
|
|
1810
1884
|
}
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
}
|
|
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();
|
|
1814
1889
|
writeSyncRecord(cwd, id, {
|
|
1815
1890
|
resourceId,
|
|
1816
1891
|
sharedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1817
|
-
version: persisted.version
|
|
1892
|
+
version: persisted.version,
|
|
1893
|
+
course
|
|
1818
1894
|
});
|
|
1819
|
-
jsonResponse(res, 200, { ok: true, resourceId, updated });
|
|
1895
|
+
jsonResponse(res, 200, { ok: true, resourceId, updated, course });
|
|
1820
1896
|
} catch (err) {
|
|
1821
1897
|
jsonResponse(res, 500, { ok: false, error: String(err) });
|
|
1822
1898
|
}
|