helixmind 0.2.26 → 0.2.27

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.
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA6gE3D"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAimE3D"}
@@ -593,19 +593,144 @@ const EDGE_COLORS = {
593
593
  belongs_to: '#ff6600', part_of: '#ff6600', supersedes: '#ff4444',
594
594
  default: '#334466',
595
595
  };
596
- // V5: OG Chandelier Brain — iconic shape + modern rendering + 3D spiral spread
597
- // Shape: small/dim at top (deep archive) large/bright at bottom (focus)
598
- // Activity BOOSTS brightness (active = brighter, not dimmer)
599
- // cx/cz: spiral center offsets for 3D depth
600
- const SPATIAL = {
601
- 5: { iR: 8, oR: 110, yBase: 420, yS: 70, size: 18, pulse: 0.3, activity: 0.3, cx: 0, cz: 0 },
602
- 4: { iR: 12, oR: 180, yBase: 250, yS: 80, size: 24, pulse: 0.6, activity: 0.5, cx: 30, cz: 20 },
603
- 3: { iR: 18, oR: 260, yBase: 60, yS: 90, size: 30, pulse: 1.0, activity: 0.7, cx: -25, cz: 40 },
604
- 2: { iR: 25, oR: 340, yBase: -140, yS: 100, size: 34, pulse: 1.5, activity: 0.85, cx: -45, cz: -15 },
605
- 1: { iR: 35, oR: 430, yBase: -360, yS: 110, size: 40, pulse: 2.2, activity: 1.0, cx: -15, cz: -40 },
606
- 6: { iR: 40, oR: 470, yBase: -560, yS: 110, size: 34, pulse: 0.8, activity: 0.75, cx: 40, cz: -30 },
596
+ // V6: Galaxy Brain — Force-directed 3D graph like a neural galaxy
597
+ // Nodes positioned by connections (force layout), not by layer planes
598
+ // Render style per level (size, pulse, activity) but NO spatial separation
599
+ const LEVEL_STYLE = {
600
+ 1: { size: 14, pulse: 2.0, activity: 1.0 },
601
+ 2: { size: 13, pulse: 1.5, activity: 0.85 },
602
+ 3: { size: 11, pulse: 1.0, activity: 0.7 },
603
+ 4: { size: 10, pulse: 0.6, activity: 0.5 },
604
+ 5: { size: 9, pulse: 0.3, activity: 0.3 },
605
+ 6: { size: 12, pulse: 0.8, activity: 0.7 },
607
606
  };
608
- const MAX_RENDERED_EDGES = 8000; // cap for performance + clarity
607
+ const MAX_RENDERED_EDGES = 12000; // more edges visible in galaxy layout
608
+
609
+ // Force-directed layout: positions nodes based on their connections
610
+ function computeForceLayout(nodeList, edgeList, nodeIdxMapLocal) {
611
+ const N = nodeList.length;
612
+ if (N === 0) return [];
613
+
614
+ const pos = new Array(N);
615
+ // Initialize positions in a sphere with level-based shells
616
+ for (let i = 0; i < N; i++) {
617
+ const lv = nodeList[i].level || 3;
618
+ // L1-L5: inner to outer, L6: outer orbit
619
+ const shell = lv === 6 ? 1.1 : (lv * 0.18 + 0.1);
620
+ const R = 200 * shell;
621
+ // Golden angle spiral for even distribution
622
+ const golden = 2.399963; // Math.PI * (3 - Math.sqrt(5))
623
+ const theta = golden * i;
624
+ const phi = Math.acos(1 - 2 * (i + 0.5) / N);
625
+ pos[i] = {
626
+ x: R * Math.sin(phi) * Math.cos(theta) + (srand(i * 7) - 0.5) * 30,
627
+ y: R * Math.cos(phi) + (srand(i * 13) - 0.5) * 30,
628
+ z: R * Math.sin(phi) * Math.sin(theta) + (srand(i * 19) - 0.5) * 30
629
+ };
630
+ }
631
+
632
+ // Build adjacency for force computation
633
+ const adjList = new Array(N);
634
+ for (let i = 0; i < N; i++) adjList[i] = [];
635
+ for (const e of edgeList) {
636
+ const si = nodeIdxMapLocal[e.source];
637
+ const ti = nodeIdxMapLocal[e.target];
638
+ if (si !== undefined && ti !== undefined) {
639
+ adjList[si].push(ti);
640
+ adjList[ti].push(si);
641
+ }
642
+ }
643
+
644
+ // Force simulation: 50 iterations
645
+ const ITERATIONS = 50;
646
+ const REPULSION = 8000;
647
+ const ATTRACTION = 0.008;
648
+ const CENTERING = 0.002;
649
+ const DAMPING = 0.85;
650
+ const K_SAMPLES = Math.min(N, 25); // random sample for repulsion
651
+
652
+ const vel = new Array(N);
653
+ for (let i = 0; i < N; i++) vel[i] = { x: 0, y: 0, z: 0 };
654
+
655
+ for (let iter = 0; iter < ITERATIONS; iter++) {
656
+ const temp = 1.0 - iter / ITERATIONS; // cooling
657
+ const repScale = REPULSION * temp;
658
+
659
+ for (let i = 0; i < N; i++) {
660
+ let fx = 0, fy = 0, fz = 0;
661
+
662
+ // Repulsion: random sample K nodes
663
+ for (let k = 0; k < K_SAMPLES; k++) {
664
+ const j = Math.floor(srand(iter * 10007 + i * 997 + k * 31) * N);
665
+ if (j === i) continue;
666
+ const dx = pos[i].x - pos[j].x;
667
+ const dy = pos[i].y - pos[j].y;
668
+ const dz = pos[i].z - pos[j].z;
669
+ const distSq = dx * dx + dy * dy + dz * dz + 1;
670
+ const f = repScale / distSq;
671
+ const dist = Math.sqrt(distSq);
672
+ fx += (dx / dist) * f;
673
+ fy += (dy / dist) * f;
674
+ fz += (dz / dist) * f;
675
+ }
676
+ // Scale repulsion by N/K_SAMPLES for unbiased estimate
677
+ const repBias = N / K_SAMPLES;
678
+ fx *= repBias; fy *= repBias; fz *= repBias;
679
+
680
+ // Attraction: pull toward connected nodes
681
+ for (const j of adjList[i]) {
682
+ const dx = pos[j].x - pos[i].x;
683
+ const dy = pos[j].y - pos[i].y;
684
+ const dz = pos[j].z - pos[i].z;
685
+ const dist = Math.sqrt(dx * dx + dy * dy + dz * dz + 1);
686
+ const f = ATTRACTION * dist;
687
+ fx += (dx / dist) * f;
688
+ fy += (dy / dist) * f;
689
+ fz += (dz / dist) * f;
690
+ }
691
+
692
+ // Centering force
693
+ fx -= pos[i].x * CENTERING;
694
+ fy -= pos[i].y * CENTERING;
695
+ fz -= pos[i].z * CENTERING;
696
+
697
+ vel[i].x = (vel[i].x + fx) * DAMPING;
698
+ vel[i].y = (vel[i].y + fy) * DAMPING;
699
+ vel[i].z = (vel[i].z + fz) * DAMPING;
700
+
701
+ // Cap velocity
702
+ const maxV = 30 * temp + 2;
703
+ const vLen = Math.sqrt(vel[i].x * vel[i].x + vel[i].y * vel[i].y + vel[i].z * vel[i].z);
704
+ if (vLen > maxV) {
705
+ vel[i].x = vel[i].x / vLen * maxV;
706
+ vel[i].y = vel[i].y / vLen * maxV;
707
+ vel[i].z = vel[i].z / vLen * maxV;
708
+ }
709
+ }
710
+
711
+ // Apply velocities
712
+ for (let i = 0; i < N; i++) {
713
+ pos[i].x += vel[i].x;
714
+ pos[i].y += vel[i].y;
715
+ pos[i].z += vel[i].z;
716
+ }
717
+ }
718
+
719
+ // Scale to fit nicely (target radius ~400)
720
+ let maxDist = 0;
721
+ for (let i = 0; i < N; i++) {
722
+ const d = Math.sqrt(pos[i].x * pos[i].x + pos[i].y * pos[i].y + pos[i].z * pos[i].z);
723
+ if (d > maxDist) maxDist = d;
724
+ }
725
+ const scale = maxDist > 0 ? 400 / maxDist : 1;
726
+ for (let i = 0; i < N; i++) {
727
+ pos[i].x *= scale;
728
+ pos[i].y *= scale;
729
+ pos[i].z *= scale;
730
+ }
731
+
732
+ return pos;
733
+ }
609
734
 
610
735
  function srand(s) { const x = Math.sin(s * 9301 + 49297) * 49297; return x - Math.floor(x); }
611
736
  function escapeHtml(s) { return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); }
@@ -618,21 +743,19 @@ document.body.prepend(renderer.domElement);
618
743
 
619
744
  const scene = new THREE.Scene();
620
745
  scene.background = new THREE.Color('#030308');
621
- scene.fog = new THREE.FogExp2('#030308', 0.00015);
746
+ scene.fog = new THREE.FogExp2('#030308', 0.0003);
622
747
 
623
748
  const camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 12000);
624
- camera.position.set(500, 300, 750);
749
+ camera.position.set(600, 350, 600);
625
750
 
626
751
  const controls = new OrbitControls(camera, renderer.domElement);
627
752
  controls.target.set(0, 0, 0);
628
753
  controls.enableDamping = true;
629
754
  controls.dampingFactor = 0.06;
630
755
  controls.autoRotate = true;
631
- controls.autoRotateSpeed = 0.08;
756
+ controls.autoRotateSpeed = 0.12;
632
757
  controls.minDistance = 80;
633
758
  controls.maxDistance = 4000;
634
- controls.maxPolarAngle = Math.PI * 0.85;
635
- controls.minPolarAngle = Math.PI * 0.15;
636
759
  controls.update();
637
760
 
638
761
  // =========== BACKGROUND STARS ===========
@@ -753,7 +876,6 @@ let pData = [];
753
876
  let nCount = 0;
754
877
  let eCount = 0;
755
878
  let pCount = 0;
756
- let orbitRings = [];
757
879
 
758
880
  const PARTICLES_PER_EDGE = 3;
759
881
  const tc = new THREE.Color();
@@ -764,8 +886,6 @@ function rebuildScene() {
764
886
  if (nodeGeo) { nodeGeo.dispose(); scene.remove(nodePoints); }
765
887
  if (edgeGeo) { edgeGeo.dispose(); scene.remove(edgeLines); }
766
888
  if (particleGeo) { particleGeo.dispose(); scene.remove(particlePoints); }
767
- orbitRings.forEach(r => { r.geometry.dispose(); r.material.dispose(); scene.remove(r); });
768
- orbitRings = [];
769
889
 
770
890
  nodes = BRAIN_DATA.nodes;
771
891
  nCount = nodes.length;
@@ -778,30 +898,17 @@ function rebuildScene() {
778
898
  byLevel[lv].push(i);
779
899
  });
780
900
 
781
- // Compute radial spiral positions
782
- positions = new Array(nCount);
783
- for (const [lv, indices] of Object.entries(byLevel)) {
784
- const s = SPATIAL[lv] || SPATIAL[3];
785
- const c = indices.length;
786
- indices.forEach((ni, j) => {
787
- const angle = (j / Math.max(c, 1)) * Math.PI * 2 + (srand(ni * 19) - 0.5) * 1.2;
788
- const r = s.iR + srand(ni * 7) * (s.oR - s.iR);
789
- const spiral = angle + r * 0.005 + srand(ni * 23) * 0.8;
790
- const y = (s.yBase || 0) + (srand(ni * 11) - 0.5) * s.yS;
791
- // Organic jitter for 3D spread
792
- const jitterX = (srand(ni * 29) - 0.5) * r * 0.2;
793
- const jitterZ = (srand(ni * 37) - 0.5) * r * 0.2;
794
- positions[ni] = new THREE.Vector3(
795
- Math.cos(spiral) * r + jitterX + (s.cx || 0),
796
- y,
797
- Math.sin(spiral) * r + jitterZ + (s.cz || 0)
798
- );
799
- });
800
- }
801
-
802
- // Build adjacency + nodeIdxMap
901
+ // Build nodeIdxMap first (needed for force layout)
803
902
  nodeIdxMap = {};
804
903
  nodes.forEach((n, i) => { nodeIdxMap[n.id] = i; });
904
+
905
+ // Force-directed 3D layout
906
+ const forcePos = computeForceLayout(nodes, BRAIN_DATA.edges, nodeIdxMap);
907
+ positions = new Array(nCount);
908
+ for (let i = 0; i < nCount; i++) {
909
+ const fp = forcePos[i] || { x: 0, y: 0, z: 0 };
910
+ positions[i] = new THREE.Vector3(fp.x, fp.y, fp.z);
911
+ }
805
912
  adj = {};
806
913
  nodeEdgeMap = {};
807
914
  BRAIN_DATA.edges.forEach((e, ei) => {
@@ -829,7 +936,7 @@ function rebuildScene() {
829
936
  for (let i = 0; i < nCount; i++) {
830
937
  const p = positions[i];
831
938
  const n = nodes[i];
832
- const s = SPATIAL[n.level] || SPATIAL[3];
939
+ const s = LEVEL_STYLE[n.level] || LEVEL_STYLE[3];
833
940
  nPos[i * 3] = p.x; nPos[i * 3 + 1] = p.y; nPos[i * 3 + 2] = p.z;
834
941
  tc.set(LEVEL_COLORS_HEX[n.level] || 0x00FFFF);
835
942
  nCol[i * 3] = tc.r; nCol[i * 3 + 1] = tc.g; nCol[i * 3 + 2] = tc.b;
@@ -847,25 +954,6 @@ function rebuildScene() {
847
954
  nodePoints = new THREE.Points(nodeGeo, nodeMat);
848
955
  scene.add(nodePoints);
849
956
 
850
- // ---- ORBIT RINGS (one per layer, centered at layer's spiral offset) ----
851
- for (let lv = 1; lv <= 6; lv++) {
852
- const s = SPATIAL[lv];
853
- if (!s || !(byLevel[lv] || []).length) continue;
854
- const ringRadius = s.oR * 0.85;
855
- const ringGeo = new THREE.RingGeometry(ringRadius - 0.3, ringRadius + 0.3, 96);
856
- const ringColor = new THREE.Color(LEVEL_COLORS_HEX[lv] || 0x00FFFF);
857
- const ringMat = new THREE.MeshBasicMaterial({
858
- color: ringColor, transparent: true, opacity: 0.06 + (s.activity || 0.5) * 0.06, side: THREE.DoubleSide,
859
- blending: THREE.AdditiveBlending, depthWrite: false,
860
- });
861
- const ring = new THREE.Mesh(ringGeo, ringMat);
862
- ring.rotation.x = -Math.PI / 2;
863
- ring.position.set(s.cx || 0, s.yBase, s.cz || 0);
864
- ring.userData.level = lv;
865
- scene.add(ring);
866
- orbitRings.push(ring);
867
- }
868
-
869
957
  // ---- EDGES (LineSegments) ----
870
958
  // Prioritize cross-level edges (vertical) over intra-level (horizontal)
871
959
  const allEdges = [];
@@ -893,17 +981,18 @@ function rebuildScene() {
893
981
  const alphaScale = Math.min(1.0, 3000 / eCount);
894
982
 
895
983
  for (let i = 0; i < eCount; i++) {
896
- const { si, ti, weight, crossLevel } = validEdges[i];
984
+ const { si, ti, weight, type, crossLevel } = validEdges[i];
897
985
  const s = positions[si], t = positions[ti];
898
986
  const o = i * 6;
899
987
  ePos[o] = s.x; ePos[o + 1] = s.y; ePos[o + 2] = s.z;
900
988
  ePos[o + 3] = t.x; ePos[o + 4] = t.y; ePos[o + 5] = t.z;
901
- sc.set(LEVEL_COLORS_HEX[nodes[si].level] || 0x00FFFF);
902
- dc.set(LEVEL_COLORS_HEX[nodes[ti].level] || 0x00FFFF);
989
+ // Color by edge type for galaxy look
990
+ const edgeColor = EDGE_COLORS[type] || EDGE_COLORS.default;
991
+ sc.set(edgeColor); dc.set(edgeColor);
903
992
  eCol[o] = sc.r; eCol[o + 1] = sc.g; eCol[o + 2] = sc.b;
904
993
  eCol[o + 3] = dc.r; eCol[o + 4] = dc.g; eCol[o + 5] = dc.b;
905
- // Cross-level edges brighter, intra-level edges dimmer
906
- const baseAlpha = crossLevel ? (0.08 + weight * 0.12) : (0.03 + weight * 0.04);
994
+ // Galaxy: all edges visible, weighted by importance
995
+ const baseAlpha = 0.06 + weight * 0.14;
907
996
  eAlpha[i * 2] = baseAlpha * alphaScale;
908
997
  eAlpha[i * 2 + 1] = baseAlpha * alphaScale;
909
998
  }
@@ -915,13 +1004,13 @@ function rebuildScene() {
915
1004
  edgeLines = new THREE.LineSegments(edgeGeo, edgeMat);
916
1005
  scene.add(edgeLines);
917
1006
 
918
- // ---- FLOWING PARTICLES (only on cross-level edges for clarity) ----
1007
+ // ---- FLOWING PARTICLES (on stronger connections) ----
919
1008
  pData = [];
920
1009
  const maxParticleEdges = Math.min(eCount, 2000);
921
1010
  for (let i = 0; i < maxParticleEdges; i++) {
922
- const { si, ti, weight, crossLevel } = validEdges[i];
923
- if (!crossLevel) continue; // only particles on vertical connections
924
- const particleCount = weight > 0.6 ? 2 : 1;
1011
+ const { si, ti, weight } = validEdges[i];
1012
+ if (weight < 0.4) continue; // only on stronger connections
1013
+ const particleCount = weight > 0.7 ? 2 : 1;
925
1014
  for (let j = 0; j < particleCount; j++) {
926
1015
  pData.push({
927
1016
  edgeIdx: i, progress: srand(i * 100 + j * 31),
@@ -1071,8 +1160,8 @@ function updateHighlights() {
1071
1160
  const activeEdgeTypes = getActiveEdgeTypes();
1072
1161
  const alphaS = Math.min(1.0, 3000 / eCount);
1073
1162
  for (let i = 0; i < eCount; i++) {
1074
- const { si, ti, weight, type, crossLevel } = validEdges[i];
1075
- const baseA = crossLevel ? (0.08 + weight * 0.12) : (0.03 + weight * 0.04);
1163
+ const { si, ti, weight, type } = validEdges[i];
1164
+ const baseA = 0.06 + weight * 0.14;
1076
1165
  let a = baseA * alphaS;
1077
1166
 
1078
1167
  // Level toggle: hide edges connected to hidden levels
@@ -1100,11 +1189,6 @@ function updateHighlights() {
1100
1189
  }
1101
1190
  ea.needsUpdate = true;
1102
1191
 
1103
- // Update orbit ring visibility
1104
- orbitRings.forEach(ring => {
1105
- const lv = ring.userData.level;
1106
- ring.material.opacity = levelToggles[lv] === false ? 0 : 0.08;
1107
- });
1108
1192
  }
1109
1193
 
1110
1194
  function getActiveEdgeTypes() {
@@ -1167,7 +1251,7 @@ function closeSidebar(evt) {
1167
1251
  controls.autoRotate = true;
1168
1252
  camTween = {
1169
1253
  startPos: camera.position.clone(), startLookAt: controls.target.clone(),
1170
- targetPos: new THREE.Vector3(500, 300, 750), targetLookAt: new THREE.Vector3(0, -50, 0),
1254
+ targetPos: new THREE.Vector3(600, 350, 600), targetLookAt: new THREE.Vector3(0, 0, 0),
1171
1255
  progress: 0
1172
1256
  };
1173
1257
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;;;;;;0CAMiC,IAAI,CAAC,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2ZxB,IAAI,CAAC,IAAI,CAAC,UAAU,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW;;wCAE3L,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;uCACpD,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkKvE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA43BL,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAukBvE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;;;;;;0CAMiC,IAAI,CAAC,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2ZxB,IAAI,CAAC,IAAI,CAAC,UAAU,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW;;wCAE3L,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;uCACpD,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkKvE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAg9BL,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAukBvE,CAAC;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helixmind",
3
- "version": "0.2.26",
3
+ "version": "0.2.27",
4
4
  "description": "HelixMind – AI Coding CLI with Persistent Spiral Memory",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",