code-kg 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Local code knowledge graph CLI for TypeScript/JavaScript projects.
4
4
 
5
5
  - Builds a local graph in SQLite
6
- - Serves an interactive 3D graph UI
6
+ - Serves an interactive full 3D graph UI with Rust+WASM layout acceleration
7
7
  - Exposes deterministic JSON APIs for graph exploration and insights
8
8
 
9
9
  ## Privacy
@@ -95,6 +95,7 @@ npx code-kg path \
95
95
 
96
96
  ```bash
97
97
  npm install
98
+ npm run wasm:build
98
99
  npm run build
99
100
  npm test
100
101
  npm run test:perf
@@ -46,6 +46,17 @@ function mountLocalVendorAssets(app) {
46
46
  }
47
47
  return res.sendFile(node_path_1.default.resolve(resolved));
48
48
  });
49
+ app.get("/assets/vendor/graph-layout.wasm", (_req, res) => {
50
+ const bundled = node_path_1.default.resolve(__dirname, "assets", "graph-layout.wasm");
51
+ if ((0, node_fs_1.existsSync)(bundled)) {
52
+ return res.sendFile(bundled);
53
+ }
54
+ const sourceFallback = node_path_1.default.resolve(process.cwd(), "src", "server", "assets", "graph-layout.wasm");
55
+ if ((0, node_fs_1.existsSync)(sourceFallback)) {
56
+ return res.sendFile(sourceFallback);
57
+ }
58
+ return (0, api_1.sendError)(res, "ASSET_NOT_FOUND", "Local Rust WASM graph layout asset is unavailable.", 404);
59
+ });
49
60
  }
50
61
  function createDefaultGraphQueryEngine() {
51
62
  const nodes = [
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
package/dist/server/ui.js CHANGED
@@ -492,6 +492,7 @@ function renderUiHtml() {
492
492
  <div class="legend">
493
493
  <span class="legend-pill cyan">Overview</span>
494
494
  <span class="legend-pill cyan">File Dependency Graph</span>
495
+ <span class="legend-pill cyan">Semantic Module Graph</span>
495
496
  <span class="legend-pill pink">Symbol Graph</span>
496
497
  <span class="legend-pill lime">API Route Map</span>
497
498
  <span class="legend-pill pink">Circular Dependency View</span>
@@ -573,12 +574,8 @@ function renderUiHtml() {
573
574
  extremeEdges: ${graph_performance_1.GRAPH_PERFORMANCE_THRESHOLDS.extremeEdges}
574
575
  };
575
576
  const SEARCH_DEBOUNCE_MS = 150;
576
- const RENDER_BUDGETS = {
577
- normal: { nodes: Number.POSITIVE_INFINITY, edges: Number.POSITIVE_INFINITY },
578
- degraded: { nodes: 18000, edges: 40000 },
579
- extreme: { nodes: 9000, edges: 16000 }
580
- };
581
- const STATIC_LAYOUT_SPACING = 8.4;
577
+ const WASM_LAYOUT_ASSET = '/assets/vendor/graph-layout.wasm';
578
+ const WASM_LAYOUT_ITERATIONS = 56;
582
579
 
583
580
  const state = {
584
581
  view: 'fileDeps',
@@ -588,7 +585,11 @@ function renderUiHtml() {
588
585
  perfMode: 'normal',
589
586
  lastAppliedPerfMode: '',
590
587
  defaultChargeForce: null,
591
- staticLayoutApplied: false,
588
+ defaultLinkForce: null,
589
+ wasmLayout: null,
590
+ wasmReady: false,
591
+ wasmFailed: false,
592
+ layoutEngine: 'js',
592
593
  selectedNodeId: '',
593
594
  searchTerm: '',
594
595
  searchTimer: null,
@@ -702,6 +703,48 @@ function renderUiHtml() {
702
703
  return 1;
703
704
  }
704
705
 
706
+ async function ensureWasmLayout() {
707
+ if (state.wasmReady && state.wasmLayout) {
708
+ return true;
709
+ }
710
+ if (state.wasmFailed || typeof WebAssembly !== 'object') {
711
+ return false;
712
+ }
713
+
714
+ try {
715
+ const response = await fetch(WASM_LAYOUT_ASSET);
716
+ if (!response.ok) {
717
+ throw new Error('WASM asset fetch failed with status ' + response.status);
718
+ }
719
+ const fallbackResponse = response.clone();
720
+
721
+ let instanceResult;
722
+ if (typeof WebAssembly.instantiateStreaming === 'function') {
723
+ try {
724
+ instanceResult = await WebAssembly.instantiateStreaming(response, {});
725
+ } catch {
726
+ const bytes = await fallbackResponse.arrayBuffer();
727
+ instanceResult = await WebAssembly.instantiate(bytes, {});
728
+ }
729
+ } else {
730
+ const bytes = await response.arrayBuffer();
731
+ instanceResult = await WebAssembly.instantiate(bytes, {});
732
+ }
733
+
734
+ const exportsObject = instanceResult && instanceResult.instance ? instanceResult.instance.exports : null;
735
+ if (!exportsObject || typeof exportsObject.layout_graph !== 'function' || typeof exportsObject.alloc !== 'function' || typeof exportsObject.dealloc !== 'function') {
736
+ throw new Error('WASM module exports are incomplete.');
737
+ }
738
+
739
+ state.wasmLayout = exportsObject;
740
+ state.wasmReady = true;
741
+ return true;
742
+ } catch (_error) {
743
+ state.wasmFailed = true;
744
+ return false;
745
+ }
746
+ }
747
+
705
748
  function stableHash(value) {
706
749
  const text = String(value || '');
707
750
  let hash = 2166136261;
@@ -712,135 +755,112 @@ function renderUiHtml() {
712
755
  return hash >>> 0;
713
756
  }
714
757
 
715
- function shouldRenderByBudget(id, limit, total) {
716
- if (!Number.isFinite(limit) || limit >= total) {
717
- return true;
718
- }
719
- if (limit <= 0 || total <= 0) {
758
+ async function applyWasmLayout(seedText) {
759
+ if (!state.graphData || !Array.isArray(state.graphData.nodes) || !Array.isArray(state.graphData.links)) {
720
760
  return false;
721
761
  }
722
- const sampleRatio = limit / total;
723
- const threshold = Math.max(1, Math.floor(sampleRatio * 1000000));
724
- return (stableHash(id) % 1000000) < threshold;
725
- }
726
-
727
- function applyStaticLayout() {
728
- if (state.staticLayoutApplied || !state.graphData || !Array.isArray(state.graphData.nodes)) {
729
- return;
730
- }
731
- const nodes = state.graphData.nodes;
732
- for (let index = 0; index < nodes.length; index += 1) {
733
- const node = nodes[index];
734
- const radius = Math.sqrt(index + 1) * STATIC_LAYOUT_SPACING;
735
- const angle = index * 2.399963229728653;
736
- const x = Math.cos(angle) * radius;
737
- const y = Math.sin(angle) * radius;
738
- const z = ((index % 27) - 13) * (STATIC_LAYOUT_SPACING * 0.28);
739
- node.x = x;
740
- node.y = y;
741
- node.z = z;
742
- node.fx = x;
743
- node.fy = y;
744
- node.fz = z;
745
- }
746
- state.staticLayoutApplied = true;
747
- }
748
-
749
- function clearStaticLayout() {
750
- if (!state.staticLayoutApplied || !state.graphData || !Array.isArray(state.graphData.nodes)) {
751
- return;
752
- }
753
- for (const node of state.graphData.nodes) {
754
- delete node.fx;
755
- delete node.fy;
756
- delete node.fz;
762
+ if (state.graphData.nodes.length === 0) {
763
+ return false;
757
764
  }
758
- state.staticLayoutApplied = false;
759
- }
760
-
761
- function applyRenderBudget() {
762
- if (!state.graphData || !Array.isArray(state.graphData.nodes) || !Array.isArray(state.graphData.links)) {
763
- return;
765
+ if (!(await ensureWasmLayout())) {
766
+ return false;
764
767
  }
765
768
 
766
- const mode = state.perfMode;
767
- const budget = RENDER_BUDGETS[mode] || RENDER_BUDGETS.normal;
768
- const totalNodes = state.graphData.nodes.length;
769
- const totalEdges = state.graphData.links.length;
769
+ const wasm = state.wasmLayout;
770
770
  const nodeById = state.graphData.nodeById instanceof Map ? state.graphData.nodeById : new Map();
771
- let visibleEdges = 0;
772
-
773
- for (const node of state.graphData.nodes) {
774
- const pinned = Boolean(node.__selected || node.__matched);
775
- const sampled = shouldRenderByBudget(node.id, budget.nodes, totalNodes);
776
- node.__renderVisible = pinned || sampled;
771
+ const nodeIndexById = new Map();
772
+ for (let index = 0; index < state.graphData.nodes.length; index += 1) {
773
+ nodeIndexById.set(state.graphData.nodes[index].id, index);
777
774
  }
778
775
 
776
+ const edgeIndices = [];
779
777
  for (const link of state.graphData.links) {
780
778
  const sourceId = String(link.__sourceId || '');
781
779
  const targetId = String(link.__targetId || '');
782
- const sourceNode = nodeById.get(sourceId);
783
- const targetNode = nodeById.get(targetId);
784
- const forceVisible = Boolean(
785
- link.__highlight ||
786
- sourceId === state.selectedNodeId ||
787
- targetId === state.selectedNodeId
788
- );
789
-
790
- if (forceVisible) {
791
- if (sourceNode) {
792
- sourceNode.__renderVisible = true;
793
- }
794
- if (targetNode) {
795
- targetNode.__renderVisible = true;
796
- }
780
+ const from = nodeIndexById.get(sourceId);
781
+ const to = nodeIndexById.get(targetId);
782
+ if (typeof from !== 'number' || typeof to !== 'number') {
783
+ continue;
797
784
  }
785
+ edgeIndices.push(from, to);
798
786
  }
799
787
 
800
- for (const link of state.graphData.links) {
801
- const sourceId = String(link.__sourceId || '');
802
- const targetId = String(link.__targetId || '');
803
- const sourceNode = nodeById.get(sourceId);
804
- const targetNode = nodeById.get(targetId);
805
- const forceVisible = Boolean(
806
- link.__highlight ||
807
- sourceId === state.selectedNodeId ||
808
- targetId === state.selectedNodeId
809
- );
810
- const endpointsVisible = Boolean(sourceNode && targetNode && sourceNode.__renderVisible && targetNode.__renderVisible);
811
- let sampled = true;
812
- if (mode === 'extreme') {
813
- sampled = shouldRenderByBudget(link.id || (sourceId + ':' + targetId), budget.edges, totalEdges);
788
+ const edgeArray = new Uint32Array(edgeIndices);
789
+ const outCount = state.graphData.nodes.length * 3;
790
+ const outByteLength = outCount * 4;
791
+ const edgeByteLength = edgeArray.length * 4;
792
+ let edgePtr = 0;
793
+ let outPtr = 0;
794
+
795
+ try {
796
+ edgePtr = wasm.alloc(edgeByteLength);
797
+ outPtr = wasm.alloc(outByteLength);
798
+ if (!edgePtr || !outPtr) {
799
+ return false;
814
800
  }
815
- link.__renderVisible = forceVisible || (sampled && endpointsVisible);
816
- if (link.__renderVisible) {
817
- visibleEdges += 1;
801
+
802
+ const memoryBuffer = wasm.memory && wasm.memory.buffer ? wasm.memory.buffer : null;
803
+ if (!memoryBuffer) {
804
+ return false;
818
805
  }
819
- }
820
806
 
821
- const minimumVisibleEdges = mode === 'extreme' ? 450 : mode === 'degraded' ? 1200 : 0;
822
- if (minimumVisibleEdges > 0 && visibleEdges < minimumVisibleEdges) {
823
- for (const link of state.graphData.links) {
824
- if (visibleEdges >= minimumVisibleEdges) {
825
- break;
826
- }
827
- if (link.__renderVisible) {
828
- continue;
829
- }
807
+ new Uint32Array(memoryBuffer, edgePtr, edgeArray.length).set(edgeArray);
808
+ const seed = stableHash(seedText || state.view || 'codekg');
809
+ const status = wasm.layout_graph(
810
+ state.graphData.nodes.length,
811
+ edgePtr,
812
+ edgeArray.length,
813
+ outPtr,
814
+ outCount,
815
+ WASM_LAYOUT_ITERATIONS,
816
+ seed
817
+ );
818
+ if (status !== 0) {
819
+ return false;
820
+ }
830
821
 
831
- const sourceId = String(link.__sourceId || '');
832
- const targetId = String(link.__targetId || '');
833
- const sourceNode = nodeById.get(sourceId);
834
- const targetNode = nodeById.get(targetId);
835
- if (!sourceNode || !targetNode) {
836
- continue;
837
- }
822
+ const positions = new Float32Array(memoryBuffer, outPtr, outCount);
823
+ for (let index = 0; index < state.graphData.nodes.length; index += 1) {
824
+ const node = state.graphData.nodes[index];
825
+ const base = index * 3;
826
+ const x = positions[base];
827
+ const y = positions[base + 1];
828
+ const z = positions[base + 2];
829
+ node.x = x;
830
+ node.y = y;
831
+ node.z = z;
832
+ node.fx = x;
833
+ node.fy = y;
834
+ node.fz = z;
835
+ node.__renderVisible = true;
836
+ nodeById.set(node.id, node);
837
+ }
838
838
 
839
- sourceNode.__renderVisible = true;
840
- targetNode.__renderVisible = true;
839
+ for (const link of state.graphData.links) {
841
840
  link.__renderVisible = true;
842
- visibleEdges += 1;
843
841
  }
842
+ return true;
843
+ } catch (_error) {
844
+ return false;
845
+ } finally {
846
+ if (outPtr) {
847
+ wasm.dealloc(outPtr, outByteLength);
848
+ }
849
+ if (edgePtr) {
850
+ wasm.dealloc(edgePtr, edgeByteLength);
851
+ }
852
+ }
853
+ }
854
+
855
+ function applyRenderBudget() {
856
+ if (!state.graphData || !Array.isArray(state.graphData.nodes) || !Array.isArray(state.graphData.links)) {
857
+ return;
858
+ }
859
+ for (const node of state.graphData.nodes) {
860
+ node.__renderVisible = true;
861
+ }
862
+ for (const link of state.graphData.links) {
863
+ link.__renderVisible = true;
844
864
  }
845
865
  }
846
866
 
@@ -888,45 +908,50 @@ function renderUiHtml() {
888
908
 
889
909
  const mode = state.perfMode;
890
910
  const graph = state.graph;
891
- if (mode === 'extreme') {
892
- applyStaticLayout();
893
- } else {
894
- clearStaticLayout();
895
- }
896
-
897
911
  if (typeof graph.numDimensions === 'function') {
898
- graph.numDimensions(mode === 'normal' ? 3 : 2);
912
+ graph.numDimensions(3);
899
913
  }
914
+
915
+ const usingWasmLayout = state.layoutEngine === 'wasm';
900
916
  if (typeof graph.cooldownTicks === 'function') {
901
- graph.cooldownTicks(mode === 'normal' ? 240 : mode === 'degraded' ? 40 : 2);
917
+ graph.cooldownTicks(usingWasmLayout ? 0 : mode === 'normal' ? 220 : mode === 'degraded' ? 72 : 28);
902
918
  }
903
919
  if (typeof graph.cooldownTime === 'function') {
904
- graph.cooldownTime(mode === 'normal' ? 15000 : mode === 'degraded' ? 1800 : 100);
920
+ graph.cooldownTime(usingWasmLayout ? 0 : mode === 'normal' ? 9000 : mode === 'degraded' ? 2200 : 900);
905
921
  }
906
922
  if (typeof graph.warmupTicks === 'function') {
907
- graph.warmupTicks(mode === 'normal' ? 90 : mode === 'degraded' ? 20 : 0);
923
+ graph.warmupTicks(usingWasmLayout ? 0 : mode === 'normal' ? 60 : mode === 'degraded' ? 12 : 4);
908
924
  }
909
925
  if (typeof graph.d3VelocityDecay === 'function') {
910
- graph.d3VelocityDecay(mode === 'normal' ? 0.25 : mode === 'degraded' ? 0.52 : 0.9);
926
+ graph.d3VelocityDecay(usingWasmLayout ? 0.9 : mode === 'normal' ? 0.28 : mode === 'degraded' ? 0.4 : 0.58);
911
927
  }
912
928
  if (typeof graph.nodeResolution === 'function') {
913
- graph.nodeResolution(mode === 'normal' ? 8 : mode === 'degraded' ? 5 : 3);
929
+ graph.nodeResolution(mode === 'normal' ? 8 : mode === 'degraded' ? 6 : 4);
914
930
  }
915
931
  if (typeof graph.linkResolution === 'function') {
916
- graph.linkResolution(mode === 'normal' ? 6 : mode === 'degraded' ? 2 : 1);
932
+ graph.linkResolution(mode === 'normal' ? 6 : mode === 'degraded' ? 4 : 3);
917
933
  }
918
934
 
919
- graph.linkOpacity(mode === 'normal' ? 0.66 : mode === 'degraded' ? 0.38 : 0.26);
920
- graph.nodeRelSize(mode === 'normal' ? 3.2 : mode === 'degraded' ? 2.45 : 2.1);
935
+ graph.linkOpacity(mode === 'normal' ? 0.66 : mode === 'degraded' ? 0.56 : 0.48);
936
+ graph.nodeRelSize(mode === 'normal' ? 3.2 : mode === 'degraded' ? 2.8 : 2.55);
921
937
 
922
938
  if (typeof graph.d3Force === 'function') {
923
939
  const currentCharge = graph.d3Force('charge');
924
- if (mode === 'normal') {
940
+ const currentLink = graph.d3Force('link');
941
+ if (!usingWasmLayout && mode === 'normal') {
925
942
  if (state.defaultChargeForce && currentCharge == null) {
926
943
  graph.d3Force('charge', state.defaultChargeForce);
927
944
  }
928
- } else if (currentCharge != null) {
929
- graph.d3Force('charge', null);
945
+ if (state.defaultLinkForce && currentLink == null) {
946
+ graph.d3Force('link', state.defaultLinkForce);
947
+ }
948
+ } else {
949
+ if (currentCharge != null) {
950
+ graph.d3Force('charge', null);
951
+ }
952
+ if (currentLink != null) {
953
+ graph.d3Force('link', null);
954
+ }
930
955
  }
931
956
  }
932
957
 
@@ -1047,12 +1072,6 @@ function renderUiHtml() {
1047
1072
  .nodeOpacity(0.95)
1048
1073
  .nodeVisibility((node) => node.__renderVisible !== false)
1049
1074
  .nodeLabel((node) => {
1050
- if (state.perfMode === 'extreme' && !node.__selected) {
1051
- return '';
1052
- }
1053
- if (state.perfMode === 'degraded' && !node.__selected && !node.__matched) {
1054
- return '';
1055
- }
1056
1075
  const name = String(node.name || node.id || 'node');
1057
1076
  const type = String(node.type || 'unknown');
1058
1077
  const path = node.path ? ' | ' + String(node.path) : '';
@@ -1084,16 +1103,10 @@ function renderUiHtml() {
1084
1103
  })
1085
1104
  .linkVisibility((link) => link.__renderVisible !== false)
1086
1105
  .linkDirectionalParticles((link) => {
1087
- if (state.perfMode !== 'normal') {
1088
- return 0;
1089
- }
1090
- return link.__highlight ? 3 : 0;
1106
+ return link.__highlight ? (state.perfMode === 'normal' ? 3 : 1) : 0;
1091
1107
  })
1092
1108
  .linkDirectionalParticleWidth((link) => {
1093
- if (state.perfMode !== 'normal') {
1094
- return 0;
1095
- }
1096
- return link.__highlight ? 2.2 : 0;
1109
+ return link.__highlight ? (state.perfMode === 'normal' ? 2.2 : 1.25) : 0;
1097
1110
  })
1098
1111
  .linkDirectionalParticleColor(() => '#f6ff4d')
1099
1112
  .onNodeClick((node) => {
@@ -1107,6 +1120,7 @@ function renderUiHtml() {
1107
1120
  state.graph = graph;
1108
1121
  if (typeof graph.d3Force === 'function') {
1109
1122
  state.defaultChargeForce = graph.d3Force('charge');
1123
+ state.defaultLinkForce = graph.d3Force('link');
1110
1124
  }
1111
1125
  applyGraphQualitySettings();
1112
1126
  state.lastAppliedPerfMode = state.perfMode;
@@ -1162,22 +1176,11 @@ function renderUiHtml() {
1162
1176
  }
1163
1177
  applyRenderBudget();
1164
1178
 
1165
- let visibleNodes = 0;
1166
- for (const node of state.graphData.nodes) {
1167
- if (node.__renderVisible !== false) {
1168
- visibleNodes += 1;
1169
- }
1170
- }
1171
- let visibleEdges = 0;
1172
- for (const link of state.graphData.links) {
1173
- if (link.__renderVisible !== false) {
1174
- visibleEdges += 1;
1175
- }
1176
- }
1177
1179
  els.graphCounts.textContent =
1178
- 'nodes: ' + visibleNodes + '/' + nodeCount +
1179
- ' | edges: ' + visibleEdges + '/' + edgeCount +
1180
- ' | mode: ' + String(state.perfMode).toUpperCase();
1180
+ 'nodes: ' + nodeCount +
1181
+ ' | edges: ' + edgeCount +
1182
+ ' | mode: ' + String(state.perfMode).toUpperCase() +
1183
+ ' | layout: ' + String(state.layoutEngine).toUpperCase();
1181
1184
 
1182
1185
  if (nodeCount === 0) {
1183
1186
  els.graphEmpty.style.display = 'grid';
@@ -1224,10 +1227,6 @@ function renderUiHtml() {
1224
1227
 
1225
1228
  function queueSearchHighlight() {
1226
1229
  clearSearchTimer();
1227
- if (state.perfMode === 'extreme') {
1228
- return;
1229
- }
1230
-
1231
1230
  state.searchTimer = window.setTimeout(() => {
1232
1231
  state.searchTimer = null;
1233
1232
  applySearchHighlights({ refresh: true, rebindData: false });
@@ -1247,12 +1246,15 @@ function renderUiHtml() {
1247
1246
  const view = state.view === 'all' ? 'all' : state.view;
1248
1247
  const data = await readEnvelope('/api/graph?view=' + encodeURIComponent(view));
1249
1248
  state.graphData = toGraphData(data);
1250
- state.staticLayoutApplied = false;
1251
1249
  state.graphMeta = normalizeGraphMeta(
1252
1250
  data && data.meta ? data.meta : null,
1253
1251
  state.graphData.nodes.length,
1254
1252
  state.graphData.links.length
1255
1253
  );
1254
+ const usedWasm = await applyWasmLayout(
1255
+ view + ':' + state.graphData.nodes.length + ':' + state.graphData.links.length
1256
+ );
1257
+ state.layoutEngine = usedWasm ? 'wasm' : 'js';
1256
1258
  state.perfMode = state.graphMeta.recommendedQualityMode;
1257
1259
  applySearchHighlights({ refresh: false });
1258
1260
  renderGraph(true);
@@ -1447,12 +1449,15 @@ function renderUiHtml() {
1447
1449
  '&direction=both'
1448
1450
  );
1449
1451
  state.graphData = toGraphData(data);
1450
- state.staticLayoutApplied = false;
1451
1452
  state.graphMeta = normalizeGraphMeta(
1452
1453
  data && data.meta ? data.meta : null,
1453
1454
  state.graphData.nodes.length,
1454
1455
  state.graphData.links.length
1455
1456
  );
1457
+ const usedWasm = await applyWasmLayout(
1458
+ seed + ':' + boundedDepth + ':' + state.graphData.nodes.length + ':' + state.graphData.links.length
1459
+ );
1460
+ state.layoutEngine = usedWasm ? 'wasm' : 'js';
1456
1461
  state.searchTerm = '';
1457
1462
  if (els.search) {
1458
1463
  els.search.value = '';
@@ -1546,7 +1551,12 @@ function renderUiHtml() {
1546
1551
  const graphMeta = state.graphMeta || {};
1547
1552
  const queryMs = typeof graphMeta.queryMs === 'number' ? graphMeta.queryMs.toFixed(1) + 'ms' : 'n/a';
1548
1553
  setStatus(
1549
- 'Cyber deck online | mode ' + String(state.perfMode).toUpperCase() + ' | /api/graph ' + queryMs,
1554
+ 'Cyber deck online | mode ' +
1555
+ String(state.perfMode).toUpperCase() +
1556
+ ' | layout ' +
1557
+ String(state.layoutEngine).toUpperCase() +
1558
+ ' | /api/graph ' +
1559
+ queryMs,
1550
1560
  'ok'
1551
1561
  );
1552
1562
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/server/ui.ts"],"names":[],"mappings":";;AAEA,oCAkjDC;AApjDD,2DAAmE;AAEnE,SAAgB,YAAY;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAojBkB,gDAA4B,CAAC,aAAa;2BAC1C,gDAA4B,CAAC,aAAa;0BAC3C,gDAA4B,CAAC,YAAY;0BACzC,gDAA4B,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAy/B3D,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/server/ui.ts"],"names":[],"mappings":";;AAEA,oCA4jDC;AA9jDD,2DAAmE;AAEnE,SAAgB,YAAY;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAqjBkB,gDAA4B,CAAC,aAAa;2BAC1C,gDAA4B,CAAC,aAAa;0BAC3C,gDAA4B,CAAC,YAAY;0BACzC,gDAA4B,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkgC3D,CAAC;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-kg",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Local code knowledge graph CLI with interactive visualization and deterministic analysis APIs",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -26,11 +26,12 @@
26
26
  "codekg": "dist/index.js"
27
27
  },
28
28
  "scripts": {
29
- "build": "tsc -p tsconfig.json",
29
+ "build": "tsc -p tsconfig.json && node config/copy-wasm.mjs",
30
30
  "dev": "tsx watch src/index.ts",
31
31
  "test": "vitest run",
32
32
  "test:perf": "tsx tests/perf/run-perf.ts",
33
33
  "test:perf:gate": "tsx tests/perf/run-perf.ts --gate",
34
+ "wasm:build": "node config/build-wasm.mjs",
34
35
  "start": "node dist/index.js",
35
36
  "prepack": "npm run build && npm test",
36
37
  "release:check": "npm run build && npm test && npm pack --dry-run",