@launchsecure/launch-kit 0.0.32 → 0.0.34

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 (93) hide show
  1. package/dist/chart-client/assets/{index-B__ARB8k.js → index-DFu2xIrM.js} +2 -2
  2. package/dist/chart-client/assets/index-DpKO9p0s.css +1 -0
  3. package/dist/chart-client/index.html +2 -2
  4. package/dist/client/assets/{index-h8kMzVtG.js → index-Cbw6bVdx.js} +2 -2
  5. package/dist/client/assets/index-Dv6dD2zY.css +32 -0
  6. package/dist/client/index.html +2 -2
  7. package/dist/council-client/assets/index-AqQ9Sei6.css +1 -0
  8. package/dist/council-client/assets/{index-CWaDcsFR.js → index-CAsmGTzg.js} +2 -2
  9. package/dist/council-client/index.html +2 -2
  10. package/dist/deck-client/assets/{_baseUniq-C7GsHvgg.js → _baseUniq-BiVx0WO_.js} +1 -1
  11. package/dist/deck-client/assets/{arc-CSrZRINY.js → arc-DGMkiEzS.js} +1 -1
  12. package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-zoB-G17J.js → architectureDiagram-Q4EWVU46-Y2WRmHtk.js} +1 -1
  13. package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-BRjjtYH6.js → blockDiagram-DXYQGD6D-_Lbfu5BQ.js} +1 -1
  14. package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-C3D3sd2U.js → c4Diagram-AHTNJAMY-CTqpYTBX.js} +1 -1
  15. package/dist/deck-client/assets/channel-DB6LxW_l.js +1 -0
  16. package/dist/deck-client/assets/{chunk-4BX2VUAB-DhpDMOPO.js → chunk-4BX2VUAB-liEIbPHs.js} +1 -1
  17. package/dist/deck-client/assets/{chunk-4TB4RGXK-BIRgPXRl.js → chunk-4TB4RGXK-CCc6lYvL.js} +1 -1
  18. package/dist/deck-client/assets/{chunk-55IACEB6-BF24dwDZ.js → chunk-55IACEB6-D02jJUR2.js} +1 -1
  19. package/dist/deck-client/assets/{chunk-EDXVE4YY-CW75Y61B.js → chunk-EDXVE4YY-BFmGMbLD.js} +1 -1
  20. package/dist/deck-client/assets/{chunk-FMBD7UC4-B5-oyL79.js → chunk-FMBD7UC4-6wFLOVcJ.js} +1 -1
  21. package/dist/deck-client/assets/{chunk-OYMX7WX6-BB2bHe_Q.js → chunk-OYMX7WX6-Bnr8RiBf.js} +1 -1
  22. package/dist/deck-client/assets/{chunk-QZHKN3VN-D80eZO4B.js → chunk-QZHKN3VN-Ct82MksJ.js} +1 -1
  23. package/dist/deck-client/assets/{chunk-YZCP3GAM-Dz9787p_.js → chunk-YZCP3GAM-BXmN1diQ.js} +1 -1
  24. package/dist/deck-client/assets/classDiagram-6PBFFD2Q-g944ZyG8.js +1 -0
  25. package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-g944ZyG8.js +1 -0
  26. package/dist/deck-client/assets/clone-DiIRH1pI.js +1 -0
  27. package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-MQjiZLcL.js → cose-bilkent-S5V4N54A-CmQCT-mH.js} +1 -1
  28. package/dist/deck-client/assets/{dagre-KV5264BT-DG4EcLpJ.js → dagre-KV5264BT-DDdSa9EX.js} +1 -1
  29. package/dist/deck-client/assets/{diagram-5BDNPKRD-1n7hM3Gc.js → diagram-5BDNPKRD-Bccks2xJ.js} +1 -1
  30. package/dist/deck-client/assets/{diagram-G4DWMVQ6-CYMarncV.js → diagram-G4DWMVQ6-CPPNgxmQ.js} +1 -1
  31. package/dist/deck-client/assets/{diagram-MMDJMWI5-DSisoipe.js → diagram-MMDJMWI5-KrD300pS.js} +1 -1
  32. package/dist/deck-client/assets/{diagram-TYMM5635-Btnq49OJ.js → diagram-TYMM5635-DefnLuQf.js} +1 -1
  33. package/dist/deck-client/assets/{erDiagram-SMLLAGMA-Cu2Hb_Tz.js → erDiagram-SMLLAGMA-DI9FfnFP.js} +1 -1
  34. package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-CGJzUzsO.js → flowDiagram-DWJPFMVM-twKyd3Fx.js} +1 -1
  35. package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-D9sqGUBT.js → ganttDiagram-T4ZO3ILL-Wau3jhBr.js} +1 -1
  36. package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-C0QwX2od.js → gitGraphDiagram-UUTBAWPF-D9GgYXwb.js} +1 -1
  37. package/dist/deck-client/assets/{graph-CcBjOQCl.js → graph-BhNLzyXS.js} +1 -1
  38. package/dist/deck-client/assets/index-B-YQq5b5.css +1 -0
  39. package/dist/deck-client/assets/{index-0arwoc0z.js → index-BtQBaQ7s.js} +3 -3
  40. package/dist/deck-client/assets/{infoDiagram-42DDH7IO-DTimhhhS.js → infoDiagram-42DDH7IO-TylGlSG-.js} +1 -1
  41. package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-DxOxg_B4.js → ishikawaDiagram-UXIWVN3A-DAT8icpg.js} +1 -1
  42. package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-Bpq0qa4j.js → journeyDiagram-VCZTEJTY-D3v_XL72.js} +1 -1
  43. package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-aTIrpcVO.js → kanban-definition-6JOO6SKY-DNUOBiNr.js} +1 -1
  44. package/dist/deck-client/assets/{layout-DqglLR2E.js → layout-COfodgwF.js} +1 -1
  45. package/dist/deck-client/assets/{linear-D5GxehPc.js → linear-DmTsuIvK.js} +1 -1
  46. package/dist/deck-client/assets/{min-DXLfSREq.js → min-BW1F7i1D.js} +1 -1
  47. package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-mO5Vys7I.js → mindmap-definition-QFDTVHPH-CErFzKWl.js} +1 -1
  48. package/dist/deck-client/assets/{pieDiagram-DEJITSTG-Dm0gzdAr.js → pieDiagram-DEJITSTG-DW5F757o.js} +1 -1
  49. package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-Daq7j3qD.js → quadrantDiagram-34T5L4WZ-B1S2-TfI.js} +1 -1
  50. package/dist/deck-client/assets/{requirementDiagram-MS252O5E-CmwV95um.js → requirementDiagram-MS252O5E-BY5BAR-5.js} +1 -1
  51. package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-BOYl3Nkf.js → sankeyDiagram-XADWPNL6-CE1Cp9HS.js} +1 -1
  52. package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-BuUjhIcW.js → sequenceDiagram-FGHM5R23-IaHnbKye.js} +1 -1
  53. package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-LUZ_uwio.js → stateDiagram-FHFEXIEX-CwPJm9hU.js} +1 -1
  54. package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-DQYa2M1q.js +1 -0
  55. package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-CDUxCCAW.js → timeline-definition-GMOUNBTQ-DVFGGSgN.js} +1 -1
  56. package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-BRb24Tf7.js → vennDiagram-DHZGUBPP-C1194MJi.js} +1 -1
  57. package/dist/deck-client/assets/wardley-RL74JXVD-CHZiUbBa.js +162 -0
  58. package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-BLGlYrQz.js → wardleyDiagram-NUSXRM2D-hpwdFfGj.js} +1 -1
  59. package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-De31MSnk.js → xychartDiagram-5P7HB3ND-DYkotwy8.js} +1 -1
  60. package/dist/deck-client/index.html +2 -2
  61. package/dist/server/chart-serve.js +167 -2
  62. package/dist/server/cli.js +328 -42
  63. package/dist/server/course-entry.js +1 -1
  64. package/dist/server/graph-mcp-entry.js +180 -4
  65. package/dist/server/init-entry.js +1133 -219
  66. package/dist/server/launch-radar-entry.js +45 -0
  67. package/dist/server/parse-worker-entry.js +167 -2
  68. package/dist/server/radar-docker-init-entry.js +644 -0
  69. package/dist/server/radar-entrypoint-entry.js +99 -0
  70. package/dist/server/radar-teardown-entry.js +478 -0
  71. package/dist/server/recall-entry.js +4 -1
  72. package/dist/server/rover-entry.js +20122 -0
  73. package/package.json +7 -5
  74. package/scaffolds/ls-marketplace/plugins/kit/commands/activate-statusline.md +5 -5
  75. package/scaffolds/ls-marketplace/plugins/kit/commands/standup.md +6 -6
  76. package/scaffolds/ls-marketplace/plugins/kit/skills/analyse/SKILL.md +6 -0
  77. package/scaffolds/ls-marketplace/plugins/kit/skills/brief/SKILL.md +40 -48
  78. package/scaffolds/ls-marketplace/plugins/kit/skills/debug/SKILL.md +45 -20
  79. package/scaffolds/ls-marketplace/plugins/kit/skills/deploy-check/SKILL.md +76 -67
  80. package/scaffolds/ls-marketplace/plugins/kit/skills/handoff/SKILL.md +132 -0
  81. package/scaffolds/ls-marketplace/plugins/kit/skills/ship/SKILL.md +290 -0
  82. package/scaffolds/statusline/statusline-mcp.sh +82 -2
  83. package/scaffolds/statusline/statusline-wrapper.sh +8 -1
  84. package/dist/chart-client/assets/index-CDIhdgWg.css +0 -1
  85. package/dist/client/assets/index-CfW4n40I.css +0 -32
  86. package/dist/council-client/assets/index-CZim6x1u.css +0 -1
  87. package/dist/deck-client/assets/channel-8ReQnQfH.js +0 -1
  88. package/dist/deck-client/assets/classDiagram-6PBFFD2Q-cRxTeGkK.js +0 -1
  89. package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-cRxTeGkK.js +0 -1
  90. package/dist/deck-client/assets/clone-LSHZ3K6R.js +0 -1
  91. package/dist/deck-client/assets/index-BlTlhxFW.css +0 -1
  92. package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-CnnRwE5D.js +0 -1
  93. package/dist/deck-client/assets/wardley-RL74JXVD-B0BYyVBY.js +0 -162
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
+ // If the importer is in node compatibility mode or this is not an ESM
19
+ // file that has been converted to a CommonJS file using a Babel-
20
+ // compatible transform (i.e. "__esModule" has not been set), then set
21
+ // "default" to the CommonJS "module.exports" for node compatibility.
22
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
+ mod
24
+ ));
25
+
26
+ // src/server/launch-radar-entry.ts
27
+ var import_node_child_process = require("node:child_process");
28
+ var import_node_path = __toESM(require("node:path"));
29
+ var sequencerEntry = import_node_path.default.join(__dirname, "cli.js");
30
+ var child = (0, import_node_child_process.spawn)(process.execPath, [sequencerEntry, "radar", ...process.argv.slice(2)], {
31
+ stdio: "inherit"
32
+ });
33
+ var forward = (sig) => () => {
34
+ try {
35
+ child.kill(sig);
36
+ } catch {
37
+ }
38
+ };
39
+ process.on("SIGTERM", forward("SIGTERM"));
40
+ process.on("SIGINT", forward("SIGINT"));
41
+ process.on("SIGHUP", forward("SIGHUP"));
42
+ child.on("exit", (code, signal) => {
43
+ if (signal) process.kill(process.pid, signal);
44
+ else process.exit(code ?? 0);
45
+ });
@@ -346,6 +346,7 @@ function emptyParsedFile(absPath) {
346
346
  return {
347
347
  name: absPath.split("/").pop() ?? absPath,
348
348
  exports: [],
349
+ defines: [],
349
350
  imports: [],
350
351
  reExports: [],
351
352
  jsxElements: /* @__PURE__ */ new Set(),
@@ -458,6 +459,34 @@ function parseFileTS(absPath) {
458
459
  reExports.push({ name: "*", from: caps["reexport.wildcard.source"], isWildcard: true });
459
460
  }
460
461
  }
462
+ const definesSet = /* @__PURE__ */ new Set();
463
+ function recordCallable(decl) {
464
+ if (decl.type === "function_declaration" || decl.type === "generator_function_declaration") {
465
+ const id = childOfType(decl, "identifier");
466
+ if (id) definesSet.add(id.text);
467
+ return;
468
+ }
469
+ if (decl.type === "class_declaration") {
470
+ const id = childOfType(decl, "type_identifier") ?? childOfType(decl, "identifier");
471
+ if (id) definesSet.add(id.text);
472
+ return;
473
+ }
474
+ if (decl.type === "lexical_declaration" || decl.type === "variable_declaration") {
475
+ for (const d of childrenOfType(decl, "variable_declarator")) {
476
+ const id = childOfType(d, "identifier");
477
+ if (!id) continue;
478
+ const isCallable = !!childOfType(d, "arrow_function") || !!childOfType(d, "function_expression") || !!childOfType(d, "function") || !!childOfType(d, "generator_function");
479
+ if (isCallable) definesSet.add(id.text);
480
+ }
481
+ }
482
+ }
483
+ for (const child of root.children) {
484
+ if (child.type === "export_statement") {
485
+ for (const gc of child.children) recordCallable(gc);
486
+ } else {
487
+ recordCallable(child);
488
+ }
489
+ }
461
490
  const jsxElements = /* @__PURE__ */ new Set();
462
491
  const jsxQuery = getQuery("jsx-elements");
463
492
  const jsxCaptures = jsxQuery.captures(root);
@@ -546,7 +575,7 @@ function parseFileTS(absPath) {
546
575
  }
547
576
  }
548
577
  const name = defaultName ?? firstValueExport ?? firstTypeExport ?? "";
549
- return { name, exports: exportsOrdered, imports, reExports, jsxElements, navigations, fetchCalls };
578
+ return { name, exports: exportsOrdered, defines: [...definesSet], imports, reExports, jsxElements, navigations, fetchCalls };
550
579
  }
551
580
  function extractDbCallsTS(absPath) {
552
581
  const tree = parseSource(absPath);
@@ -2041,6 +2070,11 @@ function generate(rootDir) {
2041
2070
  const parsed = parsedByPath.get(absPath);
2042
2071
  const name = parsed.name || nameFromFilename(absPath);
2043
2072
  const layer = CLASSIFICATION_TO_LAYER[type] ?? "ui";
2073
+ const importedNames = [...new Set(
2074
+ parsed.imports.flatMap(
2075
+ (imp) => imp.isTypeOnly ? [] : imp.names.filter((n) => !imp.typeNames.has(n))
2076
+ )
2077
+ )];
2044
2078
  nodeIdSet.add(id);
2045
2079
  if (layer === "api") {
2046
2080
  const dbCalls = extractDbCallsTS(absPath);
@@ -2079,6 +2113,8 @@ function generate(rootDir) {
2079
2113
  responses: deep.responses,
2080
2114
  params: deep.params,
2081
2115
  ...deep.effects ? { effects: deep.effects } : {},
2116
+ ...parsed.defines.length > 0 ? { defines: parsed.defines } : {},
2117
+ ...importedNames.length > 0 ? { imported_names: importedNames } : {},
2082
2118
  ...deep.notes ? { notes: deep.notes } : {},
2083
2119
  _dbCalls: dbCalls
2084
2120
  // temp: used for cross-ref building below
@@ -2095,6 +2131,8 @@ function generate(rootDir) {
2095
2131
  layer: "ui",
2096
2132
  route,
2097
2133
  exports: parsed.exports,
2134
+ ...parsed.defines.length > 0 ? { defines: parsed.defines } : {},
2135
+ ...importedNames.length > 0 ? { imported_names: importedNames } : {},
2098
2136
  elements: deep.elements,
2099
2137
  stateVars: deep.stateVars,
2100
2138
  conditions: deep.conditions,
@@ -5048,6 +5086,132 @@ var middlewareGatesParser = {
5048
5086
  }
5049
5087
  };
5050
5088
 
5089
+ // src/server/graph/parsers/crosslayer/call-resolver.ts
5090
+ var BARE_IDENT = /^[A-Za-z_$][\w$]*$/;
5091
+ var callResolverParser = {
5092
+ id: "call-resolver",
5093
+ layer: "crosslayer",
5094
+ concern: "call-graph",
5095
+ detect(_rootDir) {
5096
+ return true;
5097
+ },
5098
+ generate(_rootDir, layerOutputs) {
5099
+ const definers = /* @__PURE__ */ new Map();
5100
+ const addDef = (sym, entry) => {
5101
+ if (!BARE_IDENT.test(sym)) return;
5102
+ const list = definers.get(sym);
5103
+ if (!list) {
5104
+ definers.set(sym, [entry]);
5105
+ } else if (!list.some((d) => d.nodeId === entry.nodeId)) {
5106
+ list.push(entry);
5107
+ }
5108
+ };
5109
+ const nodeLayer = /* @__PURE__ */ new Map();
5110
+ for (const [layer, output] of layerOutputs) {
5111
+ if (layer === "db" || layer === "static") continue;
5112
+ for (const node of output.nodes) {
5113
+ nodeLayer.set(node.id, layer);
5114
+ const entry = { nodeId: node.id, layer };
5115
+ for (const s of node.exports ?? []) addDef(s, entry);
5116
+ for (const s of node.defines ?? []) addDef(s, entry);
5117
+ }
5118
+ }
5119
+ const importTargets = /* @__PURE__ */ new Map();
5120
+ for (const [, output] of layerOutputs) {
5121
+ for (const e of output.edges) {
5122
+ if (e.type !== "imports" && e.type !== "imports_type" && e.type !== "renders") continue;
5123
+ let set = importTargets.get(e.source);
5124
+ if (!set) {
5125
+ set = /* @__PURE__ */ new Set();
5126
+ importTargets.set(e.source, set);
5127
+ }
5128
+ set.add(e.target);
5129
+ }
5130
+ }
5131
+ const crossRefs = [];
5132
+ const seen = /* @__PURE__ */ new Set();
5133
+ let resolvedSelf = 0;
5134
+ let resolvedImport = 0;
5135
+ let ambiguous = 0;
5136
+ let dropped = 0;
5137
+ for (const [, output] of layerOutputs) {
5138
+ for (const node of output.nodes) {
5139
+ const calls = node.effects?.calls;
5140
+ if (!calls || calls.length === 0) continue;
5141
+ const selfSyms = /* @__PURE__ */ new Set([
5142
+ ...node.exports ?? [],
5143
+ ...node.defines ?? []
5144
+ ]);
5145
+ const importedSyms = new Set(node.imported_names ?? []);
5146
+ const myImports = importTargets.get(node.id);
5147
+ const localSeen = /* @__PURE__ */ new Set();
5148
+ for (const callee of calls) {
5149
+ if (!BARE_IDENT.test(callee)) continue;
5150
+ if (localSeen.has(callee)) continue;
5151
+ localSeen.add(callee);
5152
+ const key = `${node.id}\u2192${callee}`;
5153
+ if (selfSyms.has(callee)) {
5154
+ if (seen.has(key)) continue;
5155
+ seen.add(key);
5156
+ crossRefs.push({
5157
+ source: node.id,
5158
+ target: callee,
5159
+ type: "calls",
5160
+ layer: nodeLayer.get(node.id) ?? "ui",
5161
+ defined_in: node.id
5162
+ });
5163
+ resolvedSelf++;
5164
+ continue;
5165
+ }
5166
+ if (!importedSyms.has(callee)) {
5167
+ dropped++;
5168
+ continue;
5169
+ }
5170
+ const defs = (definers.get(callee) ?? []).filter((d) => d.nodeId !== node.id);
5171
+ if (defs.length === 0) {
5172
+ dropped++;
5173
+ continue;
5174
+ }
5175
+ const fromImported = myImports ? defs.filter((d) => myImports.has(d.nodeId)) : [];
5176
+ const chosen = fromImported.length > 0 ? fromImported : defs;
5177
+ const owner = chosen[0];
5178
+ const isAmbiguous = chosen.length > 1;
5179
+ if (isAmbiguous) ambiguous++;
5180
+ if (seen.has(key)) continue;
5181
+ seen.add(key);
5182
+ const ref = {
5183
+ source: node.id,
5184
+ target: callee,
5185
+ type: "calls",
5186
+ layer: owner.layer,
5187
+ defined_in: owner.nodeId
5188
+ };
5189
+ if (isAmbiguous) ref.ambiguous = true;
5190
+ crossRefs.push(ref);
5191
+ resolvedImport++;
5192
+ }
5193
+ }
5194
+ }
5195
+ crossRefs.sort(
5196
+ (a, b) => a.source.localeCompare(b.source) || a.target.localeCompare(b.target)
5197
+ );
5198
+ return {
5199
+ cross_refs: crossRefs,
5200
+ flagged_edges: [],
5201
+ warnings: [],
5202
+ patterns: {
5203
+ call_resolution: {
5204
+ resolved_self: resolvedSelf,
5205
+ resolved_import: resolvedImport,
5206
+ ambiguous,
5207
+ dropped,
5208
+ symbols_defined: definers.size
5209
+ }
5210
+ }
5211
+ };
5212
+ }
5213
+ };
5214
+
5051
5215
  // src/server/graph/core/parser-registry.ts
5052
5216
  function isMultiLayerParser(p) {
5053
5217
  return "layers" in p && Array.isArray(p.layers);
@@ -5114,7 +5278,8 @@ function registerBuiltins(registry, disabled) {
5114
5278
  apiAnnotationsParser,
5115
5279
  urlLiteralScannerParser,
5116
5280
  staticRefScannerParser,
5117
- middlewareGatesParser
5281
+ middlewareGatesParser,
5282
+ callResolverParser
5118
5283
  ];
5119
5284
  for (const parser of builtins) {
5120
5285
  if (disabled.has(parser.id)) continue;