@omiron33/omi-neuron-web 0.2.13 → 0.2.14

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
@@ -734,6 +734,66 @@ When `isFullScreen` is true and `cameraFit.enabled` is not specified, auto-fit i
734
734
  />
735
735
  ```
736
736
 
737
+ ### Technochristian-style settings (agent example)
738
+
739
+ Use this preset to match the Technochristian look/behavior in a consuming app
740
+ without introducing any new props. This combines fullscreen, center-third framing,
741
+ stable atlas layout, click-to-zoom, and restrained visuals:
742
+
743
+ ```tsx
744
+ <NeuronWeb
745
+ graphData={graphData}
746
+ isFullScreen
747
+ cameraFit={{
748
+ enabled: true,
749
+ mode: 'once',
750
+ viewportFraction: 0.33,
751
+ padding: 0.15,
752
+ }}
753
+ layout={{
754
+ mode: 'atlas',
755
+ spread: 1.15,
756
+ jitter: 0.15,
757
+ zSpread: 1.1,
758
+ }}
759
+ clickZoom={{ enabled: true }}
760
+ clickCard={{ enabled: true, width: 320, offset: [24, 24] }}
761
+ hoverCard={{ enabled: false }}
762
+ cardsMode="click"
763
+ theme={{
764
+ colors: {
765
+ background: '#0b0f1f',
766
+ edgeDefault: 'rgba(130, 150, 190, 0.4)',
767
+ edgeActive: 'rgba(160, 190, 255, 0.7)',
768
+ labelText: 'rgba(230, 235, 245, 0.92)',
769
+ labelBackground: 'rgba(20, 24, 40, 0.8)',
770
+ },
771
+ effects: {
772
+ starfieldEnabled: true,
773
+ glowEnabled: true,
774
+ glowIntensity: 0.55,
775
+ ambientMotionEnabled: true,
776
+ ambientMotionSpeed: 0.25,
777
+ ambientMotionAmplitude: 0.3,
778
+ edgeFlowEnabled: true,
779
+ edgeFlowSpeed: 0.6,
780
+ fogEnabled: true,
781
+ fogColor: '#0b0f1f',
782
+ fogNear: 20,
783
+ fogFar: 80,
784
+ },
785
+ animation: {
786
+ focusDuration: 900,
787
+ transitionDuration: 600,
788
+ hoverScale: 1.05,
789
+ selectedScale: 1.08,
790
+ selectionPulseScale: 1.12,
791
+ selectionPulseDuration: 1200,
792
+ },
793
+ }}
794
+ />
795
+ ```
796
+
737
797
  ### Programmatic focus (focusNodeSlug)
738
798
 
739
799
  Use `focusNodeSlug` to drive selection + camera focus from outside the component
package/dist/index.cjs CHANGED
@@ -652,7 +652,7 @@ function NeuronWebProvider({ children, config }) {
652
652
  }
653
653
 
654
654
  // src/index.ts
655
- var VERSION = "0.2.13";
655
+ var VERSION = "0.2.14";
656
656
 
657
657
  Object.defineProperty(exports, "NeuronWeb", {
658
658
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/schemas/cluster.ts","../src/core/events/helpers.ts","../src/core/events/middleware/logging.ts","../src/core/events/middleware/validation.ts","../src/core/analysis/data-processor.ts","../src/config/index.ts","../src/react/context.ts","../src/react/hooks/useNeuronContext.ts","../src/react/hooks/useNeuronGraph.ts","../src/react/hooks/useNeuronNodes.ts","../src/react/hooks/useNeuronAnalysis.ts","../src/react/hooks/useNeuronSettings.ts","../src/react/hooks/useNeuronSearch.ts","../src/react/hooks/useNeuronEvents.ts","../src/react/api-client.ts","../src/react/NeuronWebProvider.tsx","../src/index.ts"],"names":["z","createEvent","nodeCreateSchema","slugify","createContext","useContext","useState","useCallback","useEffect","DEFAULT_VISUALIZATION_SETTINGS","DEFAULT_ANALYSIS_SETTINGS","useMemo","EventBus"],"mappings":";;;;;;;;;;;;;;;;AAEO,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,WAAWA,KAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,EACtD,YAAA,EAAcA,KAAA,CAAE,MAAA,CAAO,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACtD,cAAA,EAAgBA,KAAA,CAAE,MAAA,CAAO,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACxD,mBAAA,EAAqBA,KAAA,CAAE,MAAA,CAAO,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC9D,OAAA,EAASA,MAAE,MAAA,CAAO,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EAC3C,UAAA,EAAYA,KAAA,CAAE,MAAA,CAAO,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA;AAC7C,CAAC;AAEM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EAChC,aAAaA,KAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,EAC1C,UAAUA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACvC,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC9C,aAAA,EAAeA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACjD,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC5C,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,UAAUA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACvC,QAAA,EAAUA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAEM,IAAM,mBAAA,GAAsB,oBAAoB,OAAA;;;ACLhD,IAAM,eAAA,GAAkB,CAC7B,IAAA,EACA,OAAA,EAKA,SAAsB,QAAA,KACNC,6BAAA,CAAY,IAAA,EAAM,OAAA,EAAS,MAAM;AAE5C,IAAM,eAAA,GAAkB,CAC7B,IAAA,EACA,OAAA,EACA,SAAsB,QAAA,KACNA,6BAAA,CAAY,IAAA,EAAM,OAAA,EAAS,MAAM;AAE5C,IAAM,mBAAA,GAAsB,CACjC,IAAA,EACA,OAAA,EAKA,SAAsB,UAAA,KACNA,6BAAA,CAAY,IAAA,EAAM,OAAA,EAAS,MAAM;AAE5C,IAAM,kBAAA,GAAqB,CAChC,IAAA,EACA,OAAA,EACA,SAAsB,QAAA,KACHA,6BAAA,CAAY,IAAA,EAAM,OAAA,EAAS,MAAM;;;AC9C/C,IAAM,iBAAA,GAAqC,CAAC,KAAA,EAAO,IAAA,KAAS;AAEjE,EAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,mBAAA,EAAsB,KAAA,CAAM,IAAI,IAAI,KAAK,CAAA;AACvD,EAAA,KAAK,IAAA,EAAK;AACZ;;;ACJO,IAAM,oBAAA,GAAwC,CAAC,KAAA,EAAO,IAAA,KAAS;AACpE,EAAA,IAAI,CAAC,MAAM,IAAA,EAAM;AACf,IAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;AAAA,EACtC;AACA,EAAA,IAAI,CAAC,MAAM,SAAA,EAAW;AACpB,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,IAAA,EAAK;AACd;ACKA,IAAM,YAAY,CAAC,KAAA,KAAkB,KAAA,CAAM,OAAA,CAAQ,YAAY,GAAG,CAAA;AAElE,IAAM,cAAA,GAAiB,CAAC,KAAA,KAAuC;AAC7D,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,MAAA;AAClD,EAAA,IAAI,KAAA,YAAiB,IAAA,EAAM,OAAO,KAAA,CAAM,WAAA,EAAY;AACpD,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,MAAM,GAAA,CAAI,CAAC,IAAA,KAAS,cAAA,CAAe,IAAI,CAAC,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACnG,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAC1D,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,GAAA,EAA8B,MAAA,GAAS,EAAA,KAAgC;AAC5F,EAAA,MAAM,SAAkC,EAAC;AACzC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC9C,IAAA,MAAM,UAAU,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA;AAC9C,IAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,EAAE,KAAA,YAAiB,IAAA,CAAA,EAAO;AAC3F,MAAA,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,aAAA,CAAc,KAAA,EAAkC,OAAO,CAAC,CAAA;AAAA,IAChF,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,OAAO,CAAA,GAAI,KAAA;AAAA,IACpB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACzB,WAAA,CAAoB,OAAA,GAA6B,EAAC,EAAG;AAAjC,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,EAAkC;AAAA,EAEtD,YAAY,IAAA,EAAiD;AAC3D,IAAA,MAAM,SAAA,GAAY,cAAc,IAAI,CAAA;AACpC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,UAAA,IAAc,OAAA;AAC9C,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,SAAA,CAAU,UAAU,CAAC,CAAA,IAAK,UAAA;AAEvD,IAAA,MAAM,SAAA,GAAY,KAAK,OAAA,CAAQ,SAAA;AAC/B,IAAA,MAAM,OAAO,SAAA,GAAY,cAAA,CAAe,SAAA,CAAU,SAAS,CAAC,CAAA,GAAI,MAAA;AAEhE,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,cAAA,CAAe,SAAS,CAAA;AAC7C,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,eAAA,CAAgB,SAAS,CAAA;AAE/C,IAAA,MAAM,IAAA,GAAyB;AAAA,MAC7B,IAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA,EAAU,KAAK,OAAA,CAAQ,eAAA;AAAA,MACvB,MAAA,EAAQ,KAAK,OAAA,CAAQ,aAAA;AAAA,MACrB,OAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,OAAOC,kCAAA,CAAiB,MAAM,IAAI,CAAA;AAAA,EACpC;AAAA,EAEA,aAAa,KAAA,EAGX;AACA,IAAA,MAAM,QAA4B,EAAC;AACnC,IAAA,MAAM,SAAkD,EAAC;AAEzD,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,KAAU;AAC7B,MAAA,IAAI;AACF,QAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,IAAI,CAAC,CAAA;AAAA,MACnC,SAAS,KAAA,EAAO;AACd,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,KAAA;AAAA,UACA,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,SAC7D,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,EAAE,OAAO,MAAA,EAAO;AAAA,EACzB;AAAA,EAEA,YAAY,IAAA,EAAkC;AAC5C,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC9B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,MAAA,OAAO,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA,CAAE,KAAA;AAAA,IACnC;AACA,IAAA,OAAO,CAAC,IAAA,CAAK,WAAA,CAAY,MAAM,CAAC,CAAA;AAAA,EAClC;AAAA,EAEA,WAAW,GAAA,EAAiC;AAC1C,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,EAAK,CAAE,MAAM,OAAO,CAAA;AACtC,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AAChC,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA;AACvD,IAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AACzC,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,MAAA,MAAM,OAAgC,EAAC;AACvC,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,EAAQ,GAAA,KAAQ;AAC/B,QAAA,IAAA,CAAK,MAAM,CAAA,GAAI,MAAA,CAAO,GAAG,GAAG,IAAA,EAAK;AAAA,MACnC,CAAC,CAAA;AACD,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AACD,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,CAAE,KAAA;AAAA,EAClC;AAAA,EAEA,YAAA,CAAa,KAAA,EAAe,aAAA,mBAA6B,IAAI,KAAI,EAAW;AAC1E,IAAA,MAAM,IAAA,GAAOC,wBAAA,CAAQ,KAAA,EAAO,EAAE,OAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,GAAG,GAAG,CAAA;AACnF,IAAA,IAAI,CAAC,aAAA,CAAc,GAAA,CAAI,IAAI,GAAG,OAAO,IAAA;AACrC,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,IAAI,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAC5B,IAAA,OAAO,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA,EAAG;AAC9B,MAAA,MAAA,IAAU,CAAA;AACV,MAAA,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,IAC1B;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,eAAe,IAAA,EAAuC;AACpD,IAAA,MAAM,MAAA,GAAS,KAAK,OAAA,CAAQ,aAAA,IAAiB,CAAC,OAAA,EAAS,SAAA,EAAW,eAAe,SAAS,CAAA;AAC1F,IAAA,MAAM,QAAQ,MAAA,CACX,GAAA,CAAI,CAAC,KAAA,KAAU,eAAe,IAAA,CAAK,KAAK,CAAC,CAAC,EAC1C,MAAA,CAAO,CAAC,KAAA,KAA2B,OAAA,CAAQ,KAAK,CAAC,CAAA;AACpD,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AAC7B,IAAA,OAAO,UAAU,MAAM,CAAA,CAAE,QAAQ,MAAA,EAAQ,GAAG,EAAE,IAAA,EAAK;AAAA,EACrD;AAAA,EAEA,iBAAiB,KAAA,EAGf;AACA,IAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,IAAA,MAAM,SAA6B,EAAC;AACpC,IAAA,MAAM,aAAgE,EAAC;AAEvE,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,MAAA,MAAM,OAAO,IAAA,CAAK,IAAA,IAAQ,KAAK,YAAA,CAAa,IAAA,CAAK,OAAO,IAAI,CAAA;AAC5D,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AAClB,QAAA,UAAA,CAAW,KAAK,EAAE,IAAA,EAAM,QAAQ,CAAA,gBAAA,EAAmB,IAAI,IAAI,CAAA;AAC3D,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,IAAI,IAAI,CAAA;AACb,MAAA,MAAA,CAAO,IAAA,CAAK,EAAE,GAAG,IAAA,EAAM,MAAM,CAAA;AAAA,IAC/B,CAAC,CAAA;AAED,IAAA,OAAO,EAAE,QAAQ,UAAA,EAAW;AAAA,EAC9B;AAAA,EAEQ,gBAAgB,IAAA,EAAoE;AAC1F,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,cAAA,EAAgB,QAAQ,OAAO,MAAA;AACjD,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAA,CAAK,OAAA,CAAQ,cAAA,CAAe,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC7C,MAAA,IAAI,SAAS,IAAA,EAAM;AACjB,QAAA,QAAA,CAAS,KAAK,CAAA,GAAI,IAAA,CAAK,KAAK,CAAA;AAAA,MAC9B;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,OAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA,GAAS,IAAI,QAAA,GAAW,MAAA;AAAA,EACvD;AACF;;;AC9JO,IAAM,kBAAA,GAAqB,CAAC,MAAA,KAAuC;ACqBnE,IAAM,aAAA,GAAgBC,oBAAyC,IAAI,CAAA;;;ACpBnE,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,OAAA,GAAUC,iBAAW,aAAa,CAAA;AACxC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,OAAA;AACT;ACSO,SAAS,eAAe,OAAA,EAAiC;AAC9D,EAAA,MAAM,EAAE,GAAA,EAAI,GAAI,gBAAA,EAAiB;AACjC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,cAAA,CAA6B,EAAE,CAAA;AACzD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,cAAA,CAA6B,EAAE,CAAA;AACzD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAA,CAAgC,EAAE,CAAA;AAClE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,cAAA,CAAuB,EAAE,CAAA;AACvD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAEpE,EAAA,MAAM,UAAA,GAAaC,kBAAY,YAAY;AACzC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAyB;AAAA,QAC7B,SAAS,OAAA,EAAS,OAAA;AAAA,QAClB,WAAW,OAAA,EAAS,SAAA;AAAA,QACpB,iBAAiB,OAAA,EAAS;AAAA,OAC5B;AACA,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,CAAM,IAAI,MAAM,CAAA;AAC3C,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AACvB,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AACvB,MAAA,WAAA,CAAY,QAAA,CAAS,QAAA,IAAY,EAAE,CAAA;AACnC,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,GAAA,EAAK,OAAO,CAAC,CAAA;AAEjB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,KAAK,UAAA,EAAW;AAAA,EAClB,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,cAAA,GAAiB,OAAO,MAAA,EAAgB,KAAA,GAAQ,CAAA,KAAM;AAC1D,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,EAAE,WAAA,EAAa,CAAC,MAAM,CAAA,EAAG,KAAA,EAAO,SAAA,EAAW,QAAQ,CAAA;AAC3F,IAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AACvB,IAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,OAAO,MAAA,EAAgB,IAAA,KAA6D;AACnG,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,CAAM,QAAA,CAAS,EAAE,UAAA,EAAY,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,CAAA;AAChF,IAAA,OAAO,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA,EAAY,CAAC,IAAA,KAAgC,UAAA,CAAW,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,EAAM,GAAG,IAAA,EAAK,CAAE,CAAA;AAAA,IACxF,YAAA,EAAc,MAAM,UAAA,CAAW,EAAE,CAAA;AAAA,IACjC,YAAA,EAAc,YAAA,GAAe,KAAA,CAAM,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,EAAA,KAAO,YAAY,CAAA,IAAK,IAAA,GAAO,IAAA;AAAA,IACtF,UAAA,EAAY,CAAC,MAAA,KAA0B,eAAA,CAAgB,MAAM,CAAA;AAAA,IAC7D,cAAA,EAAgB,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,IAC1C,OAAA,EAAS,UAAA;AAAA,IACT,cAAA;AAAA,IACA;AAAA,GACF;AACF;ACtEO,SAAS,eAAe,OAAA,EAAiC;AAC9D,EAAA,MAAM,EAAE,GAAA,EAAI,GAAI,gBAAA,EAAiB;AACjC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIF,cAAAA,CAAuB,EAAE,CAAA;AACnD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,eAAS,CAAC,CAAA;AAClC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAS,CAAC,CAAA;AAE9C,EAAA,MAAM,UAAA,GAAaC,kBAAY,YAAY;AACzC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,CAAM,IAAA,CAAK;AAAA,QACpC,GAAG,OAAA,EAAS,cAAA;AAAA,QACZ,IAAA;AAAA,QACA,KAAA,EAAO,SAAS,QAAA,IAAY;AAAA,OAC7B,CAAA;AACD,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AACvB,MAAA,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,UAAA,IAAc,CAAC,CAAA;AACjD,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,GAAA,EAAK,OAAA,EAAS,IAAI,CAAC,CAAA;AAEvB,EAAAC,gBAAU,MAAM;AACd,IAAA,KAAK,UAAA,EAAW;AAAA,EAClB,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA,EAAY,OAAO,IAAA,KAA2B;AAC5C,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,EAAE,KAAA,EAAO,CAAC,IAAI,CAAA,EAAG,CAAA;AACzD,MAAA,MAAM,UAAA,EAAW;AACjB,MAAA,OAAO,QAAA,CAAS,QAAQ,CAAC,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,UAAA,EAAY,OAAO,EAAA,EAAY,IAAA,KAA2B;AACxD,MAAA,MAAM,UAAU,MAAM,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,IAAI,IAAI,CAAA;AAC/C,MAAA,MAAM,UAAA,EAAW;AACjB,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,IACA,UAAA,EAAY,OAAO,EAAA,KAAe;AAChC,MAAA,MAAM,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,EAAE,CAAA;AACzB,MAAA,MAAM,UAAA,EAAW;AAAA,IACnB,CAAA;AAAA,IACA,WAAA,EAAa,OAAO,UAAA,KAAmC;AACrD,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,CAAM,OAAO,EAAE,KAAA,EAAO,YAAY,CAAA;AAC7D,MAAA,MAAM,UAAA,EAAW;AACjB,MAAA,OAAO,QAAA,CAAS,OAAA;AAAA,IAClB,CAAA;AAAA,IACA,MAAA,EAAQ,OAAO,KAAA,KAAkB;AAC/B,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAO,CAAA;AACvD,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAS,IAAA,GAAO,UAAA;AAAA,MAChB,SAAS,IAAA,GAAO;AAAA,KAClB;AAAA,IACA,OAAA;AAAA,IACA,QAAA,EAAU,MAAM,OAAA,CAAQ,CAAC,IAAA,KAAS,KAAK,GAAA,CAAI,IAAA,GAAO,CAAA,EAAG,UAAU,CAAC,CAAA;AAAA,IAChE,QAAA,EAAU,MAAM,OAAA,CAAQ,CAAC,IAAA,KAAS,KAAK,GAAA,CAAI,IAAA,GAAO,CAAA,EAAG,CAAC,CAAC;AAAA,GACzD;AACF;ACxEO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,EAAE,GAAA,EAAI,GAAI,gBAAA,EAAiB;AACjC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIF,cAAAA,CAAwB,EAAE,CAAA;AAC9D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,cAAAA,CAAwB,EAAE,CAAA;AAC9D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAE1E,EAAA,MAAM,aAAA,GAAgB,OAAO,OAAA,KAAwD;AACnF,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,OAAA,CAAQ,MAAM,OAAO,CAAA;AAChD,IAAA,aAAA,CAAc,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,GAAI,QAAA,EAAqC,CAAC,CAAA;AAC9E,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,OAAO,KAAA,KAAkB;AACzC,IAAA,MAAM,GAAA,CAAI,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AAC9B,IAAA,aAAA,CAAc,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,CAAI,EAAA,KAAO,KAAK,CAAC,CAAA;AAAA,EAChE,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAkB;AAC5C,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,OAAA,CAAQ,UAAU,KAAK,CAAA;AAClD,IAAA,aAAA,CAAc,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,QAAA,CAAS,GAAG,CAAC,CAAA;AAC/C,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,kBAAA,CAAmB,QAAA,CAAS,GAAA,CAAI,QAAA,IAAY,IAAI,CAAA;AAChD,IAAA,OAAO,QAAA,CAAS,GAAA;AAAA,EAClB,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;ACpCO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,EAAE,QAAA,EAAU,GAAA,EAAK,cAAA,KAAmB,gBAAA,EAAiB;AAC3D,EAAA,MAAM,CAAC,SAAS,CAAA,GAAIA,cAAAA,CAAS,KAAK,CAAA;AAClC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,MAAA,GAAS,OAAO,OAAA,KAAkC;AACtD,IAAA,IAAI;AACF,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,MAAM,eAAe,OAAkC,CAAA;AAAA,IACzD,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,KAAwB;AAC3C,IAAA,MAAM,GAAA,CAAI,SAAS,KAAA,EAAM;AACzB,IAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,MAAA,MAAM,MAAA,CAAO,EAAE,CAAA;AAAA,IACjB;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAA,EAAgB,MAAA;AAAA,IAChB,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,OAAO,MAAA,EAAgB,KAAA,KAAkB;AACvD,MAAA,MAAM,MAAA,CAAO;AAAA,QACX,aAAA,EAAe;AAAA,UACb,GAAI,QAAA,CAAS,aAAA;AAAA,UACb,YAAA,EAAc,EAAE,GAAG,QAAA,CAAS,cAAc,YAAA,EAAc,CAAC,MAAM,GAAG,KAAA;AAAM;AAC1E,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,gBAAA,EAAkB,OAAO,OAAA,KAA4C;AACnE,MAAA,MAAM,MAAA,CAAO,EAAE,aAAA,EAAe,OAAA,EAAS,CAAA;AAAA,IACzC;AAAA,GACF;AACF;AC3CO,SAAS,eAAA,GAAkB;AAChC,EAAA,MAAM,EAAE,GAAA,EAAI,GAAI,gBAAA,EAAiB;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,cAAAA,CAAyB,EAAE,CAAA;AACzD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,MAAA,GAAS,OAAO,KAAA,EAAe,OAAA,KAAoC;AACvE,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,MAAA,CAAO,SAAS,EAAE,KAAA,EAAO,GAAG,OAAA,EAAS,CAAA;AAChE,MAAA,UAAA,CAAW,SAAS,OAAyB,CAAA;AAC7C,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,cAAA,CAAe,KAAK,CAAA;AAAA,IACtB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,MAAA,EAAgB,OAAA,KAAiC;AAC1E,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,MAAA,CAAO,QAAQ,EAAE,MAAA,EAAQ,GAAG,OAAA,EAAS,CAAA;AAChE,MAAA,UAAA,CAAW,SAAS,OAAyB,CAAA;AAC7C,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,cAAA,CAAe,KAAK,CAAA;AAAA,IACtB;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA,EAAc,MAAM,UAAA,CAAW,EAAE;AAAA,GACnC;AACF;AC5BO,SAAS,eAAA,GAAkB;AAChC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,gBAAA,EAAiB;AAEpC,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,CAAI,IAAA,EAAuB,OAAA,KAA6B;AACjE,MAAAE,gBAAU,MAAM;AACd,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,OAAO,CAAA;AAC1C,QAAA,OAAO,MAAM,IAAI,WAAA,EAAY;AAAA,MAC/B,CAAA,EAAG,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,IAAA,EAAM,CAAI,IAAA,EAAuB,OAAA,KAAe;AAC9C,MAAA,MAAA,CAAO,IAAA,CAAKP,6BAAA,CAAY,IAAA,EAAM,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,IAC9C;AAAA,GACF;AACF;AAEO,SAAS,cAAc,QAAA,EAIrB;AACP,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,gBAAA,EAAiB;AAEpC,EAAAO,gBAAU,MAAM;AACd,IAAA,MAAM,OAA4B,EAAC;AACnC,IAAA,IAAI,SAAS,SAAA,EAAW;AACtB,MAAA,IAAA,CAAK,IAAA;AAAA,QACH,MAAA,CAAO,SAAA;AAAA,UAAU,cAAA;AAAA,UAAgB,CAAC,KAAA,KAChC,QAAA,CAAS,SAAA,GAAa,KAAA,CAAM,QAAoC,IAAI;AAAA;AACtE,OACF;AAAA,IACF;AACA,IAAA,IAAI,SAAS,SAAA,EAAW;AACtB,MAAA,IAAA,CAAK,IAAA;AAAA,QACH,MAAA,CAAO,SAAA;AAAA,UAAU,cAAA;AAAA,UAAgB,CAAC,KAAA,KAChC,QAAA,CAAS,SAAA,GAAa,KAAA,CAAM,QAAoC,IAAI;AAAA;AACtE,OACF;AAAA,IACF;AACA,IAAA,IAAI,SAAS,SAAA,EAAW;AACtB,MAAA,IAAA,CAAK,IAAA;AAAA,QACH,MAAA,CAAO,SAAA;AAAA,UAAU,cAAA;AAAA,UAAgB,CAAC,KAAA,KAChC,QAAA,CAAS,SAAA,GAAa,KAAA,CAAM,QAAoC,MAAM;AAAA;AACxE,OACF;AAAA,IACF;AACA,IAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,KAAQ,GAAA,CAAI,aAAa,CAAA;AAAA,EACtD,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AACf;AAEO,SAAS,kBAAkB,QAAA,EAKzB;AACP,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,gBAAA,EAAiB;AAEpC,EAAAA,gBAAU,MAAM;AACd,IAAA,MAAM,OAA4B,EAAC;AACnC,IAAA,IAAI,SAAS,SAAA,EAAW;AACtB,MAAA,IAAA,CAAK,IAAA;AAAA,QACH,MAAA,CAAO,SAAA;AAAA,UAAU,kBAAA;AAAA,UAAoB,CAAC,KAAA,KACpC,QAAA,CAAS,SAAA,GAAa,KAAA,CAAM,QAAwC,KAAK;AAAA;AAC3E,OACF;AAAA,IACF;AACA,IAAA,IAAI,SAAS,UAAA,EAAY;AACvB,MAAA,IAAA,CAAK,IAAA;AAAA,QACH,MAAA,CAAO,SAAA,CAAU,mBAAA,EAAqB,CAAC,KAAA,KAAU;AAC/C,UAAA,MAAM,UAAU,KAAA,CAAM,OAAA;AACtB,UAAA,OAAO,QAAA,CAAS,UAAA,GAAa,OAAA,CAAQ,KAAA,EAAO,QAAQ,QAAQ,CAAA;AAAA,QAC9D,CAAC;AAAA,OACH;AAAA,IACF;AACA,IAAA,IAAI,SAAS,WAAA,EAAa;AACxB,MAAA,IAAA,CAAK,IAAA;AAAA,QACH,MAAA,CAAO,SAAA;AAAA,UAAU,oBAAA;AAAA,UAAsB,CAAC,KAAA,KACtC,QAAA,CAAS,WAAA,GAAe,KAAA,CAAM,QAA0C,GAAG;AAAA;AAC7E,OACF;AAAA,IACF;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,IAAA,CAAK,IAAA;AAAA,QACH,MAAA,CAAO,SAAA,CAAU,iBAAA,EAAmB,CAAC,KAAA,KAAU;AAC7C,UAAA,MAAM,UAAU,KAAA,CAAM,OAAA;AACtB,UAAA,OAAO,QAAA,CAAS,QAAA,GAAW,OAAA,CAAQ,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,QACzD,CAAC;AAAA,OACH;AAAA,IACF;AACA,IAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,KAAQ,GAAA,CAAI,aAAa,CAAA;AAAA,EACtD,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AACf;;;AC1EO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAA,EAAkB;AAAlB,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA,EAAmB;AAAA,EAEvC,MAAc,OAAA,CAAW,IAAA,EAAc,OAAA,EAAmC;AACxE,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,KAAK,QAAQ,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI;AAAA,MACtD,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,MAC9C,GAAG;AAAA,KACJ,CAAA;AACD,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,IACtD;AACA,IAAA,OAAO,SAAS,IAAA,EAAK;AAAA,EACvB;AAAA,EAEA,KAAA,GAAQ;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,KACL,IAAA,CAAK,OAAA,CAA2B,UAAU,IAAI,eAAA,CAAgB,MAAgC,CAAC,CAAA,CAAE,CAAA;AAAA,IACnG,KAAK,CAAC,EAAA,KAAe,KAAK,OAAA,CAAyB,CAAA,OAAA,EAAU,EAAE,CAAA,CAAE,CAAA;AAAA,IACjE,MAAA,EAAQ,CAAC,IAAA,KACP,IAAA,CAAK,QAA6B,QAAA,EAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IAC5F,QAAQ,CAAC,EAAA,EAAY,IAAA,KACnB,IAAA,CAAK,QAAQ,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,EAAE,QAAQ,OAAA,EAAS,IAAA,EAAM,KAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IAC9E,MAAA,EAAQ,CAAC,EAAA,KAAe,IAAA,CAAK,OAAA,CAA4B,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,QAAA,EAAU;AAAA,GAC/F;AAAA,EAEA,KAAA,GAAQ;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,KACL,IAAA,CAAK,OAAA,CAA2B,UAAU,IAAI,eAAA,CAAgB,MAAgC,CAAC,CAAA,CAAE,CAAA;AAAA,IACnG,MAAA,EAAQ,CAAC,IAAA,KACP,IAAA,CAAK,QAA6B,QAAA,EAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IAC5F,QAAQ,CAAC,EAAA,EAAY,IAAA,KACnB,IAAA,CAAK,QAAQ,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,EAAE,QAAQ,OAAA,EAAS,IAAA,EAAM,KAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IAC9E,MAAA,EAAQ,CAAC,EAAA,KAAe,IAAA,CAAK,OAAA,CAA4B,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,QAAA,EAAU;AAAA,GAC/F;AAAA,EAEA,KAAA,GAAQ;AAAA,IACN,GAAA,EAAK,CAAC,MAAA,KACJ,IAAA,CAAK,OAAA,CAA0B,UAAU,IAAI,eAAA,CAAgB,MAAgC,CAAC,CAAA,CAAE,CAAA;AAAA,IAClG,MAAA,EAAQ,CAAC,IAAA,KACP,IAAA,CAAK,QAA6B,eAAA,EAAiB,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IACnG,QAAA,EAAU,CAAC,IAAA,KACT,IAAA,CAAK,QAA0B,aAAA,EAAe,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG;AAAA,GAChG;AAAA,EAEA,OAAA,GAAU;AAAA,IACR,KAAA,EAAO,CAAC,IAAA,KACN,IAAA,CAAK,QAA0B,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IAC3F,WAAW,CAAC,KAAA,KAAkB,KAAK,OAAA,CAAgC,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE,CAAA;AAAA,IACtF,MAAA,EAAQ,CAAC,KAAA,KACP,IAAA,CAAK,OAAA,CAAgC,CAAA,SAAA,EAAY,KAAK,CAAA,OAAA,CAAA,EAAW,EAAE,MAAA,EAAQ,MAAA,EAAQ;AAAA,GACvF;AAAA,EAEA,QAAA,GAAW;AAAA,IACT,GAAA,EAAK,MAAM,IAAA,CAAK,OAAA,CAA6B,WAAW,CAAA;AAAA,IACxD,MAAA,EAAQ,CAAC,IAAA,KACP,IAAA,CAAK,QAAgC,WAAA,EAAa,EAAE,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IACnG,KAAA,EAAO,MAAM,IAAA,CAAK,OAAA,CAA+B,mBAAmB,EAAE,MAAA,EAAQ,QAAQ;AAAA,GACxF;AAAA,EAEA,MAAA,GAAS;AAAA,IACP,QAAA,EAAU,CAAC,IAAA,KACT,IAAA,CAAK,QAAgC,SAAA,EAAW,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG,CAAA;AAAA,IAChG,OAAA,EAAS,CAAC,IAAA,KACR,IAAA,CAAK,QAA6B,iBAAA,EAAmB,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,GAAG;AAAA,GACvG;AACF,CAAA;AC9EA,IAAM,kBAAA,GAAqB,CAAC,SAAA,MAAuD;AAAA,EACjF,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,aAAA,EAAe,EAAE,GAAGC,gDAAA,EAAgC,GAAI,SAAA,EAAW,aAAA,IAAiB,EAAC,EAAG;AAAA,EACxF,QAAA,EAAU,EAAE,GAAGC,2CAAA,EAA2B,GAAI,SAAA,EAAW,QAAA,IAAY,EAAC,EAAG;AAAA,EACzE,SAAA,EAAW,SAAA,EAAW,SAAA,IAAa,EAAC;AAAA,EACpC,OAAA,EAAS,SAAA,EAAW,OAAA,IAAW,EAAC;AAAA,EAChC,iBAAA,EAAmB,SAAA,EAAW,iBAAA,IAAqB,EAAC;AAAA,EACpD,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACP;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,aAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,WAAA,EAAa;AAAA;AAEjB,CAAA,CAAA;AAEO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,MAAA,EAAO,EAA+C;AAClG,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIJ,cAAAA;AAAA,IAAyB,MACvD,kBAAA,CAAmB,MAAA,CAAO,QAAQ;AAAA,GACpC;AACA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAExD,EAAA,MAAM,cAAA,GAAiBK,cAAQ,MAAM;AACnC,IAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,MAAA,CAAO,QAAQ,CAAA;AAC/C,IAAA,OAAO;AAAA,MACL,GAAG,IAAA;AAAA,MACH,MAAA,EAAQ;AAAA,QACN,MAAA,EAAQ,MAAA,CAAO,YAAA,IAAgB,IAAA,CAAK,MAAA,CAAO;AAAA,OAC7C;AAAA,MACA,QAAA,EAAU;AAAA,QACR,GAAG,IAAA,CAAK,QAAA;AAAA,QACR,GAAA,EAAK,MAAA,CAAO,WAAA,IAAe,IAAA,CAAK,QAAA,CAAS;AAAA;AAC3C,KACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,SAAA,GAAYA,aAAA,CAAQ,MAAM,IAAI,eAAA,CAAgB,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAClG,EAAA,MAAM,WAAWA,aAAA,CAAQ,MAAM,IAAIC,0BAAA,EAAS,EAAG,EAAE,CAAA;AAEjD,EAAAJ,gBAAU,MAAM;AACd,IAAA,QAAA,CAAS,aAAa,CAAC,KAAA,KAAU,MAAA,CAAO,OAAA,GAAU,KAAK,CAAC,CAAA;AAAA,EAC1D,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAErB,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,OAAA,GAAU,IAAA;AACd,IAAA,SAAA,CACG,QAAA,CAAS,GAAA,EAAI,CACb,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,WAAA,CAAY,SAAS,QAA0B,CAAA;AAC/C,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,MACvB;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,GAAA,KAAQ;AACd,MAAA,QAAA,CAAS,GAAY,CAAA;AACrB,MAAA,MAAA,CAAO,OAAA,GAAU,GAAA,EAAc,EAAE,OAAA,EAAS,2BAA2B,CAAA;AAAA,IACvE,CAAC,CAAA;AACH,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,cAAA,GAAiB,OAAO,OAAA,KAAqC;AACjE,IAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,QAAA,CAAS,OAAO,OAA+B,CAAA;AAChF,IAAA,WAAA,CAAY,SAAS,QAA0B,CAAA;AAAA,EACjD,CAAA;AAEA,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,QAAA,CAAS,KAAA,EAAM;AAChD,IAAA,WAAA,CAAY,SAAS,QAA0B,CAAA;AAAA,EACjD,CAAA;AAEA,EAAA,MAAM,YAAA,GAAeG,aAAA;AAAA,IACnB,OAAO;AAAA,MACL,MAAA,EAAQ,cAAA;AAAA,MACR,QAAA;AAAA,MACA,GAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAQ,QAAA;AAAA,MACR,aAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO;AAAA,KAClB,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,QAAA,EAAU,WAAW,QAAA,EAAU,aAAA,EAAe,OAAO,MAAM;AAAA,GAC9E;AAEA,EAAA,sCAAQ,aAAA,CAAc,QAAA,EAAd,EAAuB,KAAA,EAAO,cAAe,QAAA,EAAS,CAAA;AAChE;;;ACvFO,IAAM,OAAA,GAAU","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\nexport const clusteringConfigSchema = z.object({\n algorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n clusterCount: z.coerce.number().int().min(1).optional(),\n minClusterSize: z.coerce.number().int().min(1).optional(),\n similarityThreshold: z.coerce.number().min(0).max(1).optional(),\n epsilon: z.coerce.number().min(0).optional(),\n minSamples: z.coerce.number().int().min(1).optional(),\n});\n\nexport const clusterCreateSchema = z.object({\n label: z.string().min(1).max(255),\n clusterType: z.string().max(100).optional(),\n centroid: z.array(z.number()).optional(),\n memberCount: z.number().int().min(0).optional(),\n avgSimilarity: z.number().min(0).max(1).optional(),\n cohesion: z.number().min(0).max(1).optional(),\n description: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const clusterUpdateSchema = clusterCreateSchema.partial();\n\nexport type ClusteringConfigInput = z.infer<typeof clusteringConfigSchema>;\nexport type ClusterCreateInput = z.infer<typeof clusterCreateSchema>;\nexport type ClusterUpdateInput = z.infer<typeof clusterUpdateSchema>;\n","import type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EdgeCreatedEventPayload,\n EdgeDeletedEventPayload,\n EdgeUpdatedEventPayload,\n EventSource,\n NeuronEvent,\n NeuronEventType,\n NodeBatchCreatedEventPayload,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../types/events';\nimport { createEvent } from './event-bus';\n\nexport const createNodeEvent = (\n type: 'node:created' | 'node:updated' | 'node:deleted' | 'node:batch_created',\n payload:\n | NodeCreatedEventPayload\n | NodeUpdatedEventPayload\n | NodeDeletedEventPayload\n | NodeBatchCreatedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createEdgeEvent = (\n type: 'edge:created' | 'edge:updated' | 'edge:deleted',\n payload: EdgeCreatedEventPayload | EdgeUpdatedEventPayload | EdgeDeletedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createAnalysisEvent = (\n type: 'analysis:started' | 'analysis:progress' | 'analysis:completed' | 'analysis:failed',\n payload:\n | AnalysisStartedEventPayload\n | AnalysisProgressEventPayload\n | AnalysisCompletedEventPayload\n | AnalysisFailedEventPayload,\n source: EventSource = 'analysis'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createGenericEvent = <T>(\n type: NeuronEventType,\n payload: T,\n source: EventSource = 'system'\n): NeuronEvent<T> => createEvent(type, payload, source);\n","import type { EventMiddleware } from '../event-bus';\n\nexport const loggingMiddleware: EventMiddleware = (event, next) => {\n // eslint-disable-next-line no-console\n console.debug(`[omi-neuron:event] ${event.type}`, event);\n void next();\n};\n","import type { EventMiddleware } from '../event-bus';\n\nexport const validationMiddleware: EventMiddleware = (event, next) => {\n if (!event.type) {\n throw new Error('Event missing type');\n }\n if (!event.timestamp) {\n throw new Error('Event missing timestamp');\n }\n return next();\n};\n","import slugify from 'slugify';\nimport { nodeCreateSchema } from '../schemas/node';\nimport type { NeuronNodeCreate } from '../types/node';\n\nexport interface ProcessingOptions {\n skipDuplicates?: boolean;\n updateOnConflict?: boolean;\n defaultNodeType?: string;\n defaultDomain?: string;\n contentFields?: string[];\n labelField?: string;\n slugField?: string;\n metadataFields?: string[];\n}\n\nconst stripHtml = (value: string) => value.replace(/<[^>]+>/g, ' ');\n\nconst normalizeValue = (value: unknown): string | undefined => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map((item) => normalizeValue(item)).filter(Boolean).join(' ');\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n};\n\nconst flattenObject = (obj: Record<string, unknown>, prefix = ''): Record<string, unknown> => {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n Object.assign(result, flattenObject(value as Record<string, unknown>, nextKey));\n } else {\n result[nextKey] = value;\n }\n }\n return result;\n};\n\nexport class DataProcessor {\n constructor(private options: ProcessingOptions = {}) {}\n\n processItem(item: Record<string, unknown>): NeuronNodeCreate {\n const flattened = flattenObject(item);\n const labelField = this.options.labelField ?? 'label';\n const label = normalizeValue(flattened[labelField]) ?? 'Untitled';\n\n const slugField = this.options.slugField;\n const slug = slugField ? normalizeValue(flattened[slugField]) : undefined;\n\n const content = this.extractContent(flattened);\n const metadata = this.extractMetadata(flattened);\n\n const node: NeuronNodeCreate = {\n slug,\n label,\n nodeType: this.options.defaultNodeType,\n domain: this.options.defaultDomain,\n content,\n metadata,\n };\n\n return nodeCreateSchema.parse(node);\n }\n\n processBatch(items: Record<string, unknown>[]): {\n nodes: NeuronNodeCreate[];\n errors: Array<{ index: number; error: string }>;\n } {\n const nodes: NeuronNodeCreate[] = [];\n const errors: Array<{ index: number; error: string }> = [];\n\n items.forEach((item, index) => {\n try {\n nodes.push(this.processItem(item));\n } catch (error) {\n errors.push({\n index,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n\n return { nodes, errors };\n }\n\n processJSON(json: string): NeuronNodeCreate[] {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n return this.processBatch(parsed).nodes;\n }\n return [this.processItem(parsed)];\n }\n\n processCSV(csv: string): NeuronNodeCreate[] {\n const lines = csv.trim().split(/\\r?\\n/);\n if (lines.length === 0) return [];\n const headers = lines[0].split(',').map((h) => h.trim());\n const items = lines.slice(1).map((line) => {\n const values = line.split(',');\n const item: Record<string, unknown> = {};\n headers.forEach((header, idx) => {\n item[header] = values[idx]?.trim();\n });\n return item;\n });\n return this.processBatch(items).nodes;\n }\n\n generateSlug(label: string, existingSlugs: Set<string> = new Set()): string {\n const base = slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n if (!existingSlugs.has(base)) return base;\n let suffix = 1;\n let slug = `${base}-${suffix}`;\n while (existingSlugs.has(slug)) {\n suffix += 1;\n slug = `${base}-${suffix}`;\n }\n return slug;\n }\n\n extractContent(item: Record<string, unknown>): string {\n const fields = this.options.contentFields ?? ['label', 'summary', 'description', 'content'];\n const parts = fields\n .map((field) => normalizeValue(item[field]))\n .filter((value): value is string => Boolean(value));\n const joined = parts.join(' ');\n return stripHtml(joined).replace(/\\s+/g, ' ').trim();\n }\n\n detectDuplicates(nodes: NeuronNodeCreate[]): {\n unique: NeuronNodeCreate[];\n duplicates: Array<{ node: NeuronNodeCreate; reason: string }>;\n } {\n const seen = new Set<string>();\n const unique: NeuronNodeCreate[] = [];\n const duplicates: Array<{ node: NeuronNodeCreate; reason: string }> = [];\n\n nodes.forEach((node) => {\n const slug = node.slug ?? this.generateSlug(node.label, seen);\n if (seen.has(slug)) {\n duplicates.push({ node, reason: `Duplicate slug: ${slug}` });\n return;\n }\n seen.add(slug);\n unique.push({ ...node, slug });\n });\n\n return { unique, duplicates };\n }\n\n private extractMetadata(item: Record<string, unknown>): Record<string, unknown> | undefined {\n if (!this.options.metadataFields?.length) return undefined;\n const metadata: Record<string, unknown> = {};\n this.options.metadataFields.forEach((field) => {\n if (field in item) {\n metadata[field] = item[field];\n }\n });\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\n\nexport const defineNeuronConfig = (config: NeuronConfig): NeuronConfig => config;\n","import { createContext } from 'react';\nimport type { NeuronSettings, NeuronConfig } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport type { EventBus } from '../core/events/event-bus';\nimport type { NeuronApiClient } from './api-client';\n\nexport interface ErrorContext {\n message: string;\n}\n\nexport interface NeuronContextValue {\n config: NeuronConfig;\n settings: NeuronSettings;\n api: NeuronApiClient;\n events: EventBus;\n isInitialized: boolean;\n error: Error | null;\n updateSettings: (settings: Partial<NeuronSettings>) => Promise<void>;\n resetSettings: () => Promise<void>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n}\n\nexport const NeuronContext = createContext<NeuronContextValue | null>(null);\n","import { useContext } from 'react';\nimport { NeuronContext } from '../context';\n\nexport function useNeuronContext() {\n const context = useContext(NeuronContext);\n if (!context) {\n throw new Error('useNeuronContext must be used within NeuronWebProvider');\n }\n return context;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type {\n GraphFilters,\n NeuronVisualCluster,\n NeuronVisualEdge,\n NeuronVisualNode,\n} from '../../core/types';\nimport type { GetGraphParams, FindPathResponse } from '../../core/types/api';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronGraphOptions {\n domains?: string[];\n nodeTypes?: string[];\n minEdgeStrength?: number;\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nexport function useNeuronGraph(options?: UseNeuronGraphOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronVisualNode[]>([]);\n const [edges, setEdges] = useState<NeuronVisualEdge[]>([]);\n const [clusters, setClusters] = useState<NeuronVisualCluster[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [filters, setFilters] = useState<GraphFilters>({});\n const [selectedNode, setSelectedNode] = useState<string | null>(null);\n\n const fetchGraph = useCallback(async () => {\n setIsLoading(true);\n try {\n const params: GetGraphParams = {\n domains: options?.domains,\n nodeTypes: options?.nodeTypes,\n minEdgeStrength: options?.minEdgeStrength,\n };\n const response = await api.graph.get(params);\n setNodes(response.nodes);\n setEdges(response.edges);\n setClusters(response.clusters ?? []);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options]);\n\n useEffect(() => {\n void fetchGraph();\n }, [fetchGraph]);\n\n const expandFromNode = async (nodeId: string, depth = 1) => {\n const response = await api.graph.expand({ fromNodeIds: [nodeId], depth, direction: 'both' });\n setNodes(response.nodes);\n setEdges(response.edges);\n };\n\n const findPath = async (fromId: string, toId: string): Promise<FindPathResponse['paths'][number]> => {\n const response = await api.graph.findPath({ fromNodeId: fromId, toNodeId: toId });\n return response.paths[0];\n };\n\n return {\n nodes,\n edges,\n clusters,\n isLoading,\n error,\n filters,\n setFilters: (next: Partial<GraphFilters>) => setFilters((prev) => ({ ...prev, ...next })),\n clearFilters: () => setFilters({}),\n selectedNode: selectedNode ? nodes.find((node) => node.id === selectedNode) ?? null : null,\n selectNode: (nodeId: string | null) => setSelectedNode(nodeId),\n clearSelection: () => setSelectedNode(null),\n refetch: fetchGraph,\n expandFromNode,\n findPath,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { ListNodesParams, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronNodesOptions {\n initialFilters?: ListNodesParams;\n pageSize?: number;\n}\n\nexport function useNeuronNodes(options?: UseNeuronNodesOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronNode[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n const fetchNodes = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await api.nodes.list({\n ...options?.initialFilters,\n page,\n limit: options?.pageSize ?? 50,\n });\n setNodes(response.nodes);\n setTotalPages(response.pagination.totalPages ?? 1);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options, page]);\n\n useEffect(() => {\n void fetchNodes();\n }, [fetchNodes]);\n\n return {\n nodes,\n isLoading,\n error,\n createNode: async (data: NeuronNodeCreate) => {\n const response = await api.nodes.create({ nodes: [data] });\n await fetchNodes();\n return response.created[0];\n },\n updateNode: async (id: string, data: NeuronNodeUpdate) => {\n const updated = await api.nodes.update(id, data);\n await fetchNodes();\n return updated as NeuronNode;\n },\n deleteNode: async (id: string) => {\n await api.nodes.delete(id);\n await fetchNodes();\n },\n batchCreate: async (nodesInput: NeuronNodeCreate[]) => {\n const response = await api.nodes.create({ nodes: nodesInput });\n await fetchNodes();\n return response.created;\n },\n search: async (query: string) => {\n const response = await api.nodes.list({ search: query });\n setNodes(response.nodes);\n },\n pagination: {\n page,\n totalPages,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n },\n setPage,\n nextPage: () => setPage((prev) => Math.min(prev + 1, totalPages)),\n prevPage: () => setPage((prev) => Math.max(prev - 1, 1)),\n };\n}\n","import { useState } from 'react';\nimport type { AnalysisRequest, AnalysisResponse, AnalysisRun } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronAnalysis() {\n const { api } = useNeuronContext();\n const [activeJobs, setActiveJobs] = useState<AnalysisRun[]>([]);\n const [jobHistory, setJobHistory] = useState<AnalysisRun[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const [currentProgress, setCurrentProgress] = useState<number | null>(null);\n\n const startAnalysis = async (request: AnalysisRequest): Promise<AnalysisResponse> => {\n setIsRunning(true);\n const response = await api.analyze.start(request);\n setActiveJobs((prev) => [...prev, { ...(response as unknown as AnalysisRun) }]);\n return response;\n };\n\n const cancelJob = async (jobId: string) => {\n await api.analyze.cancel(jobId);\n setActiveJobs((prev) => prev.filter((job) => job.id !== jobId));\n };\n\n const getJobStatus = async (jobId: string) => {\n const response = await api.analyze.getStatus(jobId);\n setJobHistory((prev) => [...prev, response.job]);\n setIsRunning(false);\n setCurrentProgress(response.job.progress ?? null);\n return response.job;\n };\n\n return {\n activeJobs,\n jobHistory,\n startAnalysis,\n cancelJob,\n getJobStatus,\n isRunning,\n currentProgress,\n };\n}\n","import { useState } from 'react';\nimport type { NeuronSettings, NeuronSettingsUpdate, VisualizationSettings } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSettings() {\n const { settings, api, updateSettings } = useNeuronContext();\n const [isLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const update = async (updates: NeuronSettingsUpdate) => {\n try {\n setIsUpdating(true);\n await updateSettings(updates as Partial<NeuronSettings>);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const reset = async (sections?: string[]) => {\n await api.settings.reset();\n if (sections?.length) {\n await update({});\n }\n };\n\n return {\n settings,\n isLoading,\n isUpdating,\n error,\n updateSettings: update,\n resetSettings: reset,\n setDomainColor: async (domain: string, color: string) => {\n await update({\n visualization: {\n ...(settings.visualization as VisualizationSettings),\n domainColors: { ...settings.visualization.domainColors, [domain]: color },\n },\n });\n },\n setVisualization: async (updates: Partial<VisualizationSettings>) => {\n await update({ visualization: updates });\n },\n };\n}\n","import { useState } from 'react';\nimport type { FindSimilarOptions, SearchResult, SemanticSearchOptions } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSearch() {\n const { api } = useNeuronContext();\n const [results, setResults] = useState<SearchResult[]>([]);\n const [isSearching, setIsSearching] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const search = async (query: string, options?: SemanticSearchOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.semantic({ query, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n const findSimilar = async (nodeId: string, options?: FindSimilarOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.similar({ nodeId, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n return {\n results,\n isSearching,\n error,\n search,\n findSimilar,\n clearResults: () => setResults([]),\n };\n}\n","import { useEffect } from 'react';\nimport type { AnalysisRun, NeuronEventType, NeuronNode } from '../../core/types';\nimport type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EventHandler,\n EventSubscription,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../../core/types/events';\nimport { useNeuronContext } from './useNeuronContext';\nimport { createEvent } from '../../core/events/event-bus';\n\nexport function useNeuronEvents() {\n const { events } = useNeuronContext();\n\n return {\n subscribe: <T>(type: NeuronEventType, handler: EventHandler<T>) => {\n useEffect(() => {\n const sub = events.subscribe(type, handler);\n return () => sub.unsubscribe();\n }, [type, handler]);\n },\n emit: <T>(type: NeuronEventType, payload: T) => {\n events.emit(createEvent(type, payload, 'ui'));\n },\n };\n}\n\nexport function useNodeEvents(handlers: {\n onCreated?: (node: NeuronNode) => void;\n onUpdated?: (node: NeuronNode) => void;\n onDeleted?: (nodeId: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onCreated) {\n subs.push(\n events.subscribe('node:created', (event) =>\n handlers.onCreated?.((event.payload as NodeCreatedEventPayload).node)\n )\n );\n }\n if (handlers.onUpdated) {\n subs.push(\n events.subscribe('node:updated', (event) =>\n handlers.onUpdated?.((event.payload as NodeUpdatedEventPayload).node)\n )\n );\n }\n if (handlers.onDeleted) {\n subs.push(\n events.subscribe('node:deleted', (event) =>\n handlers.onDeleted?.((event.payload as NodeDeletedEventPayload).nodeId)\n )\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n\nexport function useAnalysisEvents(handlers: {\n onStarted?: (jobId: string) => void;\n onProgress?: (jobId: string, progress: number) => void;\n onCompleted?: (job: AnalysisRun) => void;\n onFailed?: (jobId: string, error: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onStarted) {\n subs.push(\n events.subscribe('analysis:started', (event) =>\n handlers.onStarted?.((event.payload as AnalysisStartedEventPayload).jobId)\n )\n );\n }\n if (handlers.onProgress) {\n subs.push(\n events.subscribe('analysis:progress', (event) => {\n const payload = event.payload as AnalysisProgressEventPayload;\n return handlers.onProgress?.(payload.jobId, payload.progress);\n })\n );\n }\n if (handlers.onCompleted) {\n subs.push(\n events.subscribe('analysis:completed', (event) =>\n handlers.onCompleted?.((event.payload as AnalysisCompletedEventPayload).job)\n )\n );\n }\n if (handlers.onFailed) {\n subs.push(\n events.subscribe('analysis:failed', (event) => {\n const payload = event.payload as AnalysisFailedEventPayload;\n return handlers.onFailed?.(payload.jobId, payload.error);\n })\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n","import type {\n AnalysisRequest,\n AnalysisResponse,\n CancelAnalysisResponse,\n CreateEdgesRequest,\n CreateEdgesResponse,\n CreateNodesRequest,\n CreateNodesResponse,\n DeleteEdgeResponse,\n DeleteNodeResponse,\n ExpandGraphRequest,\n ExpandGraphResponse,\n FindPathRequest,\n FindPathResponse,\n FindSimilarRequest,\n FindSimilarResponse,\n GetAnalysisJobResponse,\n GetGraphParams,\n GetGraphResponse,\n GetNodeResponse,\n GetSettingsResponse,\n ListEdgesParams,\n ListEdgesResponse,\n ListNodesParams,\n ListNodesResponse,\n SemanticSearchRequest,\n SemanticSearchResponse,\n UpdateEdgeRequest,\n UpdateNodeRequest,\n UpdateSettingsRequest,\n UpdateSettingsResponse,\n ResetSettingsResponse,\n} from '../core/types/api';\n\nexport class NeuronApiClient {\n constructor(private basePath: string) {}\n\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n const response = await fetch(`${this.basePath}${path}`, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n }\n return response.json() as Promise<T>;\n }\n\n nodes = {\n list: (params?: ListNodesParams) =>\n this.request<ListNodesResponse>(`/nodes?${new URLSearchParams(params as Record<string, string>)}`),\n get: (id: string) => this.request<GetNodeResponse>(`/nodes/${id}`),\n create: (data: CreateNodesRequest) =>\n this.request<CreateNodesResponse>('/nodes', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateNodeRequest) =>\n this.request(`/nodes/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteNodeResponse>(`/nodes/${id}`, { method: 'DELETE' }),\n };\n\n edges = {\n list: (params?: ListEdgesParams) =>\n this.request<ListEdgesResponse>(`/edges?${new URLSearchParams(params as Record<string, string>)}`),\n create: (data: CreateEdgesRequest) =>\n this.request<CreateEdgesResponse>('/edges', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateEdgeRequest) =>\n this.request(`/edges/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteEdgeResponse>(`/edges/${id}`, { method: 'DELETE' }),\n };\n\n graph = {\n get: (params?: GetGraphParams) =>\n this.request<GetGraphResponse>(`/graph?${new URLSearchParams(params as Record<string, string>)}`),\n expand: (data: ExpandGraphRequest) =>\n this.request<ExpandGraphResponse>('/graph/expand', { method: 'POST', body: JSON.stringify(data) }),\n findPath: (data: FindPathRequest) =>\n this.request<FindPathResponse>('/graph/path', { method: 'POST', body: JSON.stringify(data) }),\n };\n\n analyze = {\n start: (data: AnalysisRequest) =>\n this.request<AnalysisResponse>('/analyze', { method: 'POST', body: JSON.stringify(data) }),\n getStatus: (jobId: string) => this.request<GetAnalysisJobResponse>(`/analyze/${jobId}`),\n cancel: (jobId: string) =>\n this.request<CancelAnalysisResponse>(`/analyze/${jobId}/cancel`, { method: 'POST' }),\n };\n\n settings = {\n get: () => this.request<GetSettingsResponse>('/settings'),\n update: (data: UpdateSettingsRequest) =>\n this.request<UpdateSettingsResponse>('/settings', { method: 'PATCH', body: JSON.stringify(data) }),\n reset: () => this.request<ResetSettingsResponse>('/settings/reset', { method: 'POST' }),\n };\n\n search = {\n semantic: (data: SemanticSearchRequest) =>\n this.request<SemanticSearchResponse>('/search', { method: 'POST', body: JSON.stringify(data) }),\n similar: (data: FindSimilarRequest) =>\n this.request<FindSimilarResponse>('/search/similar', { method: 'POST', body: JSON.stringify(data) }),\n };\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { NeuronSettings, NeuronConfig, NeuronSettingsUpdate } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport { DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '../core/types/settings';\nimport { EventBus } from '../core/events/event-bus';\nimport { NeuronApiClient } from './api-client';\nimport { NeuronContext, type ErrorContext } from './context';\n\nexport interface NeuronWebProviderProps {\n children: React.ReactNode;\n config: {\n openaiApiKey?: string;\n databaseUrl?: string;\n settings?: Partial<NeuronSettings>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n };\n}\n\nconst buildDefaultConfig = (overrides?: Partial<NeuronSettings>): NeuronConfig => ({\n instance: {\n name: 'default',\n version: '0.1.1',\n repoName: 'omi-neuron-web',\n },\n visualization: { ...DEFAULT_VISUALIZATION_SETTINGS, ...(overrides?.visualization ?? {}) },\n analysis: { ...DEFAULT_ANALYSIS_SETTINGS, ...(overrides?.analysis ?? {}) },\n nodeTypes: overrides?.nodeTypes ?? [],\n domains: overrides?.domains ?? [],\n relationshipTypes: overrides?.relationshipTypes ?? [],\n openai: {\n apiKey: '',\n },\n database: {\n mode: 'external',\n port: 5433,\n url: undefined,\n },\n api: {\n basePath: '/api/neuron',\n enableCors: false,\n },\n logging: {\n level: 'info',\n prettyPrint: true,\n },\n});\n\nexport function NeuronWebProvider({ children, config }: NeuronWebProviderProps): React.ReactElement {\n const [settings, setSettings] = useState<NeuronSettings>(() =>\n buildDefaultConfig(config.settings) as NeuronSettings\n );\n const [error, setError] = useState<Error | null>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n\n const resolvedConfig = useMemo(() => {\n const base = buildDefaultConfig(config.settings);\n return {\n ...base,\n openai: {\n apiKey: config.openaiApiKey ?? base.openai.apiKey,\n },\n database: {\n ...base.database,\n url: config.databaseUrl ?? base.database.url,\n },\n } as NeuronConfig;\n }, [config]);\n\n const apiClient = useMemo(() => new NeuronApiClient(resolvedConfig.api.basePath), [resolvedConfig]);\n const eventBus = useMemo(() => new EventBus(), []);\n\n useEffect(() => {\n eventBus.subscribeAll((event) => config.onEvent?.(event));\n }, [eventBus, config]);\n\n useEffect(() => {\n let mounted = true;\n apiClient\n .settings.get()\n .then((response) => {\n if (mounted) {\n setSettings(response.settings as NeuronSettings);\n setIsInitialized(true);\n }\n })\n .catch((err) => {\n setError(err as Error);\n config.onError?.(err as Error, { message: 'Failed to load settings' });\n });\n return () => {\n mounted = false;\n };\n }, [apiClient]);\n\n const updateSettings = async (updates: Partial<NeuronSettings>) => {\n const response = await apiClient.settings.update(updates as NeuronSettingsUpdate);\n setSettings(response.settings as NeuronSettings);\n };\n\n const resetSettings = async () => {\n const response = await apiClient.settings.reset();\n setSettings(response.settings as NeuronSettings);\n };\n\n const contextValue = useMemo(\n () => ({\n config: resolvedConfig,\n settings,\n api: apiClient,\n events: eventBus,\n isInitialized,\n error,\n updateSettings,\n resetSettings,\n onEvent: config.onEvent,\n onError: config.onError,\n }),\n [resolvedConfig, settings, apiClient, eventBus, isInitialized, error, config]\n );\n\n return <NeuronContext.Provider value={contextValue}>{children}</NeuronContext.Provider>;\n}\n","/**\n * omi-neuron-web\n * A drop-in Next.js library for data analysis and 3D visualization\n */\n\n// Core types\nexport * from './core/types';\nexport * from './core/schemas';\nexport * from './core/events';\nexport { DataProcessor } from './core/analysis/data-processor';\nexport { EmbeddingsService } from './core/analysis/embeddings-service';\nexport { ClusteringEngine } from './core/analysis/clustering-engine';\nexport { RelationshipEngine } from './core/analysis/relationship-engine';\nexport { ScoringEngine } from './core/analysis/scoring-engine';\nexport { AnalysisPipeline } from './core/analysis/pipeline';\nexport * from './storage';\nexport * from './config';\n\n// Visualization\nexport { NeuronWeb } from './visualization';\nexport type {\n NeuronWebProps,\n NeuronWebTheme,\n NeuronLayoutOptions,\n NeuronLayoutMode,\n ClickCardOptions,\n ClickZoomOptions,\n CardsMode,\n} from './visualization';\n\n// Re-export hooks (when implemented)\nexport * from './react/hooks';\n\n// Re-export provider (when implemented)\nexport { NeuronWebProvider } from './react/NeuronWebProvider';\n\n// Version\nexport const VERSION = '0.2.13';\n"]}
1
+ {"version":3,"sources":["../src/core/schemas/cluster.ts","../src/core/events/helpers.ts","../src/core/events/middleware/logging.ts","../src/core/events/middleware/validation.ts","../src/core/analysis/data-processor.ts","../src/config/index.ts","../src/react/context.ts","../src/react/hooks/useNeuronContext.ts","../src/react/hooks/useNeuronGraph.ts","../src/react/hooks/useNeuronNodes.ts","../src/react/hooks/useNeuronAnalysis.ts","../src/react/hooks/useNeuronSettings.ts","../src/react/hooks/useNeuronSearch.ts","../src/react/hooks/useNeuronEvents.ts","../src/react/api-client.ts","../src/react/NeuronWebProvider.tsx","../src/index.ts"],"names":["z","createEvent","nodeCreateSchema","slugify","createContext","useContext","useState","useCallback","useEffect","DEFAULT_VISUALIZATION_SETTINGS","DEFAULT_ANALYSIS_SETTINGS","useMemo","EventBus"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\nexport const clusteringConfigSchema = z.object({\n algorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n clusterCount: z.coerce.number().int().min(1).optional(),\n minClusterSize: z.coerce.number().int().min(1).optional(),\n similarityThreshold: z.coerce.number().min(0).max(1).optional(),\n epsilon: z.coerce.number().min(0).optional(),\n minSamples: z.coerce.number().int().min(1).optional(),\n});\n\nexport const clusterCreateSchema = z.object({\n label: z.string().min(1).max(255),\n clusterType: z.string().max(100).optional(),\n centroid: z.array(z.number()).optional(),\n memberCount: z.number().int().min(0).optional(),\n avgSimilarity: z.number().min(0).max(1).optional(),\n cohesion: z.number().min(0).max(1).optional(),\n description: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const clusterUpdateSchema = clusterCreateSchema.partial();\n\nexport type ClusteringConfigInput = z.infer<typeof clusteringConfigSchema>;\nexport type ClusterCreateInput = z.infer<typeof clusterCreateSchema>;\nexport type ClusterUpdateInput = z.infer<typeof clusterUpdateSchema>;\n","import type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EdgeCreatedEventPayload,\n EdgeDeletedEventPayload,\n EdgeUpdatedEventPayload,\n EventSource,\n NeuronEvent,\n NeuronEventType,\n NodeBatchCreatedEventPayload,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../types/events';\nimport { createEvent } from './event-bus';\n\nexport const createNodeEvent = (\n type: 'node:created' | 'node:updated' | 'node:deleted' | 'node:batch_created',\n payload:\n | NodeCreatedEventPayload\n | NodeUpdatedEventPayload\n | NodeDeletedEventPayload\n | NodeBatchCreatedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createEdgeEvent = (\n type: 'edge:created' | 'edge:updated' | 'edge:deleted',\n payload: EdgeCreatedEventPayload | EdgeUpdatedEventPayload | EdgeDeletedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createAnalysisEvent = (\n type: 'analysis:started' | 'analysis:progress' | 'analysis:completed' | 'analysis:failed',\n payload:\n | AnalysisStartedEventPayload\n | AnalysisProgressEventPayload\n | AnalysisCompletedEventPayload\n | AnalysisFailedEventPayload,\n source: EventSource = 'analysis'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createGenericEvent = <T>(\n type: NeuronEventType,\n payload: T,\n source: EventSource = 'system'\n): NeuronEvent<T> => createEvent(type, payload, source);\n","import type { EventMiddleware } from '../event-bus';\n\nexport const loggingMiddleware: EventMiddleware = (event, next) => {\n // eslint-disable-next-line no-console\n console.debug(`[omi-neuron:event] ${event.type}`, event);\n void next();\n};\n","import type { EventMiddleware } from '../event-bus';\n\nexport const validationMiddleware: EventMiddleware = (event, next) => {\n if (!event.type) {\n throw new Error('Event missing type');\n }\n if (!event.timestamp) {\n throw new Error('Event missing timestamp');\n }\n return next();\n};\n","import slugify from 'slugify';\nimport { nodeCreateSchema } from '../schemas/node';\nimport type { NeuronNodeCreate } from '../types/node';\n\nexport interface ProcessingOptions {\n skipDuplicates?: boolean;\n updateOnConflict?: boolean;\n defaultNodeType?: string;\n defaultDomain?: string;\n contentFields?: string[];\n labelField?: string;\n slugField?: string;\n metadataFields?: string[];\n}\n\nconst stripHtml = (value: string) => value.replace(/<[^>]+>/g, ' ');\n\nconst normalizeValue = (value: unknown): string | undefined => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map((item) => normalizeValue(item)).filter(Boolean).join(' ');\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n};\n\nconst flattenObject = (obj: Record<string, unknown>, prefix = ''): Record<string, unknown> => {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n Object.assign(result, flattenObject(value as Record<string, unknown>, nextKey));\n } else {\n result[nextKey] = value;\n }\n }\n return result;\n};\n\nexport class DataProcessor {\n constructor(private options: ProcessingOptions = {}) {}\n\n processItem(item: Record<string, unknown>): NeuronNodeCreate {\n const flattened = flattenObject(item);\n const labelField = this.options.labelField ?? 'label';\n const label = normalizeValue(flattened[labelField]) ?? 'Untitled';\n\n const slugField = this.options.slugField;\n const slug = slugField ? normalizeValue(flattened[slugField]) : undefined;\n\n const content = this.extractContent(flattened);\n const metadata = this.extractMetadata(flattened);\n\n const node: NeuronNodeCreate = {\n slug,\n label,\n nodeType: this.options.defaultNodeType,\n domain: this.options.defaultDomain,\n content,\n metadata,\n };\n\n return nodeCreateSchema.parse(node);\n }\n\n processBatch(items: Record<string, unknown>[]): {\n nodes: NeuronNodeCreate[];\n errors: Array<{ index: number; error: string }>;\n } {\n const nodes: NeuronNodeCreate[] = [];\n const errors: Array<{ index: number; error: string }> = [];\n\n items.forEach((item, index) => {\n try {\n nodes.push(this.processItem(item));\n } catch (error) {\n errors.push({\n index,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n\n return { nodes, errors };\n }\n\n processJSON(json: string): NeuronNodeCreate[] {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n return this.processBatch(parsed).nodes;\n }\n return [this.processItem(parsed)];\n }\n\n processCSV(csv: string): NeuronNodeCreate[] {\n const lines = csv.trim().split(/\\r?\\n/);\n if (lines.length === 0) return [];\n const headers = lines[0].split(',').map((h) => h.trim());\n const items = lines.slice(1).map((line) => {\n const values = line.split(',');\n const item: Record<string, unknown> = {};\n headers.forEach((header, idx) => {\n item[header] = values[idx]?.trim();\n });\n return item;\n });\n return this.processBatch(items).nodes;\n }\n\n generateSlug(label: string, existingSlugs: Set<string> = new Set()): string {\n const base = slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n if (!existingSlugs.has(base)) return base;\n let suffix = 1;\n let slug = `${base}-${suffix}`;\n while (existingSlugs.has(slug)) {\n suffix += 1;\n slug = `${base}-${suffix}`;\n }\n return slug;\n }\n\n extractContent(item: Record<string, unknown>): string {\n const fields = this.options.contentFields ?? ['label', 'summary', 'description', 'content'];\n const parts = fields\n .map((field) => normalizeValue(item[field]))\n .filter((value): value is string => Boolean(value));\n const joined = parts.join(' ');\n return stripHtml(joined).replace(/\\s+/g, ' ').trim();\n }\n\n detectDuplicates(nodes: NeuronNodeCreate[]): {\n unique: NeuronNodeCreate[];\n duplicates: Array<{ node: NeuronNodeCreate; reason: string }>;\n } {\n const seen = new Set<string>();\n const unique: NeuronNodeCreate[] = [];\n const duplicates: Array<{ node: NeuronNodeCreate; reason: string }> = [];\n\n nodes.forEach((node) => {\n const slug = node.slug ?? this.generateSlug(node.label, seen);\n if (seen.has(slug)) {\n duplicates.push({ node, reason: `Duplicate slug: ${slug}` });\n return;\n }\n seen.add(slug);\n unique.push({ ...node, slug });\n });\n\n return { unique, duplicates };\n }\n\n private extractMetadata(item: Record<string, unknown>): Record<string, unknown> | undefined {\n if (!this.options.metadataFields?.length) return undefined;\n const metadata: Record<string, unknown> = {};\n this.options.metadataFields.forEach((field) => {\n if (field in item) {\n metadata[field] = item[field];\n }\n });\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\n\nexport const defineNeuronConfig = (config: NeuronConfig): NeuronConfig => config;\n","import { createContext } from 'react';\nimport type { NeuronSettings, NeuronConfig } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport type { EventBus } from '../core/events/event-bus';\nimport type { NeuronApiClient } from './api-client';\n\nexport interface ErrorContext {\n message: string;\n}\n\nexport interface NeuronContextValue {\n config: NeuronConfig;\n settings: NeuronSettings;\n api: NeuronApiClient;\n events: EventBus;\n isInitialized: boolean;\n error: Error | null;\n updateSettings: (settings: Partial<NeuronSettings>) => Promise<void>;\n resetSettings: () => Promise<void>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n}\n\nexport const NeuronContext = createContext<NeuronContextValue | null>(null);\n","import { useContext } from 'react';\nimport { NeuronContext } from '../context';\n\nexport function useNeuronContext() {\n const context = useContext(NeuronContext);\n if (!context) {\n throw new Error('useNeuronContext must be used within NeuronWebProvider');\n }\n return context;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type {\n GraphFilters,\n NeuronVisualCluster,\n NeuronVisualEdge,\n NeuronVisualNode,\n} from '../../core/types';\nimport type { GetGraphParams, FindPathResponse } from '../../core/types/api';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronGraphOptions {\n domains?: string[];\n nodeTypes?: string[];\n minEdgeStrength?: number;\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nexport function useNeuronGraph(options?: UseNeuronGraphOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronVisualNode[]>([]);\n const [edges, setEdges] = useState<NeuronVisualEdge[]>([]);\n const [clusters, setClusters] = useState<NeuronVisualCluster[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [filters, setFilters] = useState<GraphFilters>({});\n const [selectedNode, setSelectedNode] = useState<string | null>(null);\n\n const fetchGraph = useCallback(async () => {\n setIsLoading(true);\n try {\n const params: GetGraphParams = {\n domains: options?.domains,\n nodeTypes: options?.nodeTypes,\n minEdgeStrength: options?.minEdgeStrength,\n };\n const response = await api.graph.get(params);\n setNodes(response.nodes);\n setEdges(response.edges);\n setClusters(response.clusters ?? []);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options]);\n\n useEffect(() => {\n void fetchGraph();\n }, [fetchGraph]);\n\n const expandFromNode = async (nodeId: string, depth = 1) => {\n const response = await api.graph.expand({ fromNodeIds: [nodeId], depth, direction: 'both' });\n setNodes(response.nodes);\n setEdges(response.edges);\n };\n\n const findPath = async (fromId: string, toId: string): Promise<FindPathResponse['paths'][number]> => {\n const response = await api.graph.findPath({ fromNodeId: fromId, toNodeId: toId });\n return response.paths[0];\n };\n\n return {\n nodes,\n edges,\n clusters,\n isLoading,\n error,\n filters,\n setFilters: (next: Partial<GraphFilters>) => setFilters((prev) => ({ ...prev, ...next })),\n clearFilters: () => setFilters({}),\n selectedNode: selectedNode ? nodes.find((node) => node.id === selectedNode) ?? null : null,\n selectNode: (nodeId: string | null) => setSelectedNode(nodeId),\n clearSelection: () => setSelectedNode(null),\n refetch: fetchGraph,\n expandFromNode,\n findPath,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { ListNodesParams, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronNodesOptions {\n initialFilters?: ListNodesParams;\n pageSize?: number;\n}\n\nexport function useNeuronNodes(options?: UseNeuronNodesOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronNode[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n const fetchNodes = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await api.nodes.list({\n ...options?.initialFilters,\n page,\n limit: options?.pageSize ?? 50,\n });\n setNodes(response.nodes);\n setTotalPages(response.pagination.totalPages ?? 1);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options, page]);\n\n useEffect(() => {\n void fetchNodes();\n }, [fetchNodes]);\n\n return {\n nodes,\n isLoading,\n error,\n createNode: async (data: NeuronNodeCreate) => {\n const response = await api.nodes.create({ nodes: [data] });\n await fetchNodes();\n return response.created[0];\n },\n updateNode: async (id: string, data: NeuronNodeUpdate) => {\n const updated = await api.nodes.update(id, data);\n await fetchNodes();\n return updated as NeuronNode;\n },\n deleteNode: async (id: string) => {\n await api.nodes.delete(id);\n await fetchNodes();\n },\n batchCreate: async (nodesInput: NeuronNodeCreate[]) => {\n const response = await api.nodes.create({ nodes: nodesInput });\n await fetchNodes();\n return response.created;\n },\n search: async (query: string) => {\n const response = await api.nodes.list({ search: query });\n setNodes(response.nodes);\n },\n pagination: {\n page,\n totalPages,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n },\n setPage,\n nextPage: () => setPage((prev) => Math.min(prev + 1, totalPages)),\n prevPage: () => setPage((prev) => Math.max(prev - 1, 1)),\n };\n}\n","import { useState } from 'react';\nimport type { AnalysisRequest, AnalysisResponse, AnalysisRun } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronAnalysis() {\n const { api } = useNeuronContext();\n const [activeJobs, setActiveJobs] = useState<AnalysisRun[]>([]);\n const [jobHistory, setJobHistory] = useState<AnalysisRun[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const [currentProgress, setCurrentProgress] = useState<number | null>(null);\n\n const startAnalysis = async (request: AnalysisRequest): Promise<AnalysisResponse> => {\n setIsRunning(true);\n const response = await api.analyze.start(request);\n setActiveJobs((prev) => [...prev, { ...(response as unknown as AnalysisRun) }]);\n return response;\n };\n\n const cancelJob = async (jobId: string) => {\n await api.analyze.cancel(jobId);\n setActiveJobs((prev) => prev.filter((job) => job.id !== jobId));\n };\n\n const getJobStatus = async (jobId: string) => {\n const response = await api.analyze.getStatus(jobId);\n setJobHistory((prev) => [...prev, response.job]);\n setIsRunning(false);\n setCurrentProgress(response.job.progress ?? null);\n return response.job;\n };\n\n return {\n activeJobs,\n jobHistory,\n startAnalysis,\n cancelJob,\n getJobStatus,\n isRunning,\n currentProgress,\n };\n}\n","import { useState } from 'react';\nimport type { NeuronSettings, NeuronSettingsUpdate, VisualizationSettings } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSettings() {\n const { settings, api, updateSettings } = useNeuronContext();\n const [isLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const update = async (updates: NeuronSettingsUpdate) => {\n try {\n setIsUpdating(true);\n await updateSettings(updates as Partial<NeuronSettings>);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const reset = async (sections?: string[]) => {\n await api.settings.reset();\n if (sections?.length) {\n await update({});\n }\n };\n\n return {\n settings,\n isLoading,\n isUpdating,\n error,\n updateSettings: update,\n resetSettings: reset,\n setDomainColor: async (domain: string, color: string) => {\n await update({\n visualization: {\n ...(settings.visualization as VisualizationSettings),\n domainColors: { ...settings.visualization.domainColors, [domain]: color },\n },\n });\n },\n setVisualization: async (updates: Partial<VisualizationSettings>) => {\n await update({ visualization: updates });\n },\n };\n}\n","import { useState } from 'react';\nimport type { FindSimilarOptions, SearchResult, SemanticSearchOptions } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSearch() {\n const { api } = useNeuronContext();\n const [results, setResults] = useState<SearchResult[]>([]);\n const [isSearching, setIsSearching] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const search = async (query: string, options?: SemanticSearchOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.semantic({ query, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n const findSimilar = async (nodeId: string, options?: FindSimilarOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.similar({ nodeId, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n return {\n results,\n isSearching,\n error,\n search,\n findSimilar,\n clearResults: () => setResults([]),\n };\n}\n","import { useEffect } from 'react';\nimport type { AnalysisRun, NeuronEventType, NeuronNode } from '../../core/types';\nimport type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EventHandler,\n EventSubscription,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../../core/types/events';\nimport { useNeuronContext } from './useNeuronContext';\nimport { createEvent } from '../../core/events/event-bus';\n\nexport function useNeuronEvents() {\n const { events } = useNeuronContext();\n\n return {\n subscribe: <T>(type: NeuronEventType, handler: EventHandler<T>) => {\n useEffect(() => {\n const sub = events.subscribe(type, handler);\n return () => sub.unsubscribe();\n }, [type, handler]);\n },\n emit: <T>(type: NeuronEventType, payload: T) => {\n events.emit(createEvent(type, payload, 'ui'));\n },\n };\n}\n\nexport function useNodeEvents(handlers: {\n onCreated?: (node: NeuronNode) => void;\n onUpdated?: (node: NeuronNode) => void;\n onDeleted?: (nodeId: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onCreated) {\n subs.push(\n events.subscribe('node:created', (event) =>\n handlers.onCreated?.((event.payload as NodeCreatedEventPayload).node)\n )\n );\n }\n if (handlers.onUpdated) {\n subs.push(\n events.subscribe('node:updated', (event) =>\n handlers.onUpdated?.((event.payload as NodeUpdatedEventPayload).node)\n )\n );\n }\n if (handlers.onDeleted) {\n subs.push(\n events.subscribe('node:deleted', (event) =>\n handlers.onDeleted?.((event.payload as NodeDeletedEventPayload).nodeId)\n )\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n\nexport function useAnalysisEvents(handlers: {\n onStarted?: (jobId: string) => void;\n onProgress?: (jobId: string, progress: number) => void;\n onCompleted?: (job: AnalysisRun) => void;\n onFailed?: (jobId: string, error: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onStarted) {\n subs.push(\n events.subscribe('analysis:started', (event) =>\n handlers.onStarted?.((event.payload as AnalysisStartedEventPayload).jobId)\n )\n );\n }\n if (handlers.onProgress) {\n subs.push(\n events.subscribe('analysis:progress', (event) => {\n const payload = event.payload as AnalysisProgressEventPayload;\n return handlers.onProgress?.(payload.jobId, payload.progress);\n })\n );\n }\n if (handlers.onCompleted) {\n subs.push(\n events.subscribe('analysis:completed', (event) =>\n handlers.onCompleted?.((event.payload as AnalysisCompletedEventPayload).job)\n )\n );\n }\n if (handlers.onFailed) {\n subs.push(\n events.subscribe('analysis:failed', (event) => {\n const payload = event.payload as AnalysisFailedEventPayload;\n return handlers.onFailed?.(payload.jobId, payload.error);\n })\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n","import type {\n AnalysisRequest,\n AnalysisResponse,\n CancelAnalysisResponse,\n CreateEdgesRequest,\n CreateEdgesResponse,\n CreateNodesRequest,\n CreateNodesResponse,\n DeleteEdgeResponse,\n DeleteNodeResponse,\n ExpandGraphRequest,\n ExpandGraphResponse,\n FindPathRequest,\n FindPathResponse,\n FindSimilarRequest,\n FindSimilarResponse,\n GetAnalysisJobResponse,\n GetGraphParams,\n GetGraphResponse,\n GetNodeResponse,\n GetSettingsResponse,\n ListEdgesParams,\n ListEdgesResponse,\n ListNodesParams,\n ListNodesResponse,\n SemanticSearchRequest,\n SemanticSearchResponse,\n UpdateEdgeRequest,\n UpdateNodeRequest,\n UpdateSettingsRequest,\n UpdateSettingsResponse,\n ResetSettingsResponse,\n} from '../core/types/api';\n\nexport class NeuronApiClient {\n constructor(private basePath: string) {}\n\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n const response = await fetch(`${this.basePath}${path}`, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n }\n return response.json() as Promise<T>;\n }\n\n nodes = {\n list: (params?: ListNodesParams) =>\n this.request<ListNodesResponse>(`/nodes?${new URLSearchParams(params as Record<string, string>)}`),\n get: (id: string) => this.request<GetNodeResponse>(`/nodes/${id}`),\n create: (data: CreateNodesRequest) =>\n this.request<CreateNodesResponse>('/nodes', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateNodeRequest) =>\n this.request(`/nodes/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteNodeResponse>(`/nodes/${id}`, { method: 'DELETE' }),\n };\n\n edges = {\n list: (params?: ListEdgesParams) =>\n this.request<ListEdgesResponse>(`/edges?${new URLSearchParams(params as Record<string, string>)}`),\n create: (data: CreateEdgesRequest) =>\n this.request<CreateEdgesResponse>('/edges', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateEdgeRequest) =>\n this.request(`/edges/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteEdgeResponse>(`/edges/${id}`, { method: 'DELETE' }),\n };\n\n graph = {\n get: (params?: GetGraphParams) =>\n this.request<GetGraphResponse>(`/graph?${new URLSearchParams(params as Record<string, string>)}`),\n expand: (data: ExpandGraphRequest) =>\n this.request<ExpandGraphResponse>('/graph/expand', { method: 'POST', body: JSON.stringify(data) }),\n findPath: (data: FindPathRequest) =>\n this.request<FindPathResponse>('/graph/path', { method: 'POST', body: JSON.stringify(data) }),\n };\n\n analyze = {\n start: (data: AnalysisRequest) =>\n this.request<AnalysisResponse>('/analyze', { method: 'POST', body: JSON.stringify(data) }),\n getStatus: (jobId: string) => this.request<GetAnalysisJobResponse>(`/analyze/${jobId}`),\n cancel: (jobId: string) =>\n this.request<CancelAnalysisResponse>(`/analyze/${jobId}/cancel`, { method: 'POST' }),\n };\n\n settings = {\n get: () => this.request<GetSettingsResponse>('/settings'),\n update: (data: UpdateSettingsRequest) =>\n this.request<UpdateSettingsResponse>('/settings', { method: 'PATCH', body: JSON.stringify(data) }),\n reset: () => this.request<ResetSettingsResponse>('/settings/reset', { method: 'POST' }),\n };\n\n search = {\n semantic: (data: SemanticSearchRequest) =>\n this.request<SemanticSearchResponse>('/search', { method: 'POST', body: JSON.stringify(data) }),\n similar: (data: FindSimilarRequest) =>\n this.request<FindSimilarResponse>('/search/similar', { method: 'POST', body: JSON.stringify(data) }),\n };\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { NeuronSettings, NeuronConfig, NeuronSettingsUpdate } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport { DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '../core/types/settings';\nimport { EventBus } from '../core/events/event-bus';\nimport { NeuronApiClient } from './api-client';\nimport { NeuronContext, type ErrorContext } from './context';\n\nexport interface NeuronWebProviderProps {\n children: React.ReactNode;\n config: {\n openaiApiKey?: string;\n databaseUrl?: string;\n settings?: Partial<NeuronSettings>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n };\n}\n\nconst buildDefaultConfig = (overrides?: Partial<NeuronSettings>): NeuronConfig => ({\n instance: {\n name: 'default',\n version: '0.1.1',\n repoName: 'omi-neuron-web',\n },\n visualization: { ...DEFAULT_VISUALIZATION_SETTINGS, ...(overrides?.visualization ?? {}) },\n analysis: { ...DEFAULT_ANALYSIS_SETTINGS, ...(overrides?.analysis ?? {}) },\n nodeTypes: overrides?.nodeTypes ?? [],\n domains: overrides?.domains ?? [],\n relationshipTypes: overrides?.relationshipTypes ?? [],\n openai: {\n apiKey: '',\n },\n database: {\n mode: 'external',\n port: 5433,\n url: undefined,\n },\n api: {\n basePath: '/api/neuron',\n enableCors: false,\n },\n logging: {\n level: 'info',\n prettyPrint: true,\n },\n});\n\nexport function NeuronWebProvider({ children, config }: NeuronWebProviderProps): React.ReactElement {\n const [settings, setSettings] = useState<NeuronSettings>(() =>\n buildDefaultConfig(config.settings) as NeuronSettings\n );\n const [error, setError] = useState<Error | null>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n\n const resolvedConfig = useMemo(() => {\n const base = buildDefaultConfig(config.settings);\n return {\n ...base,\n openai: {\n apiKey: config.openaiApiKey ?? base.openai.apiKey,\n },\n database: {\n ...base.database,\n url: config.databaseUrl ?? base.database.url,\n },\n } as NeuronConfig;\n }, [config]);\n\n const apiClient = useMemo(() => new NeuronApiClient(resolvedConfig.api.basePath), [resolvedConfig]);\n const eventBus = useMemo(() => new EventBus(), []);\n\n useEffect(() => {\n eventBus.subscribeAll((event) => config.onEvent?.(event));\n }, [eventBus, config]);\n\n useEffect(() => {\n let mounted = true;\n apiClient\n .settings.get()\n .then((response) => {\n if (mounted) {\n setSettings(response.settings as NeuronSettings);\n setIsInitialized(true);\n }\n })\n .catch((err) => {\n setError(err as Error);\n config.onError?.(err as Error, { message: 'Failed to load settings' });\n });\n return () => {\n mounted = false;\n };\n }, [apiClient]);\n\n const updateSettings = async (updates: Partial<NeuronSettings>) => {\n const response = await apiClient.settings.update(updates as NeuronSettingsUpdate);\n setSettings(response.settings as NeuronSettings);\n };\n\n const resetSettings = async () => {\n const response = await apiClient.settings.reset();\n setSettings(response.settings as NeuronSettings);\n };\n\n const contextValue = useMemo(\n () => ({\n config: resolvedConfig,\n settings,\n api: apiClient,\n events: eventBus,\n isInitialized,\n error,\n updateSettings,\n resetSettings,\n onEvent: config.onEvent,\n onError: config.onError,\n }),\n [resolvedConfig, settings, apiClient, eventBus, isInitialized, error, config]\n );\n\n return <NeuronContext.Provider value={contextValue}>{children}</NeuronContext.Provider>;\n}\n","/**\n * omi-neuron-web\n * A drop-in Next.js library for data analysis and 3D visualization\n */\n\n// Core types\nexport * from './core/types';\nexport * from './core/schemas';\nexport * from './core/events';\nexport { DataProcessor } from './core/analysis/data-processor';\nexport { EmbeddingsService } from './core/analysis/embeddings-service';\nexport { ClusteringEngine } from './core/analysis/clustering-engine';\nexport { RelationshipEngine } from './core/analysis/relationship-engine';\nexport { ScoringEngine } from './core/analysis/scoring-engine';\nexport { AnalysisPipeline } from './core/analysis/pipeline';\nexport * from './storage';\nexport * from './config';\n\n// Visualization\nexport { NeuronWeb } from './visualization';\nexport type {\n NeuronWebProps,\n NeuronWebTheme,\n NeuronLayoutOptions,\n NeuronLayoutMode,\n ClickCardOptions,\n ClickZoomOptions,\n CardsMode,\n} from './visualization';\n\n// Re-export hooks (when implemented)\nexport * from './react/hooks';\n\n// Re-export provider (when implemented)\nexport { NeuronWebProvider } from './react/NeuronWebProvider';\n\n// Version\nexport const VERSION = '0.2.14';\n"]}
package/dist/index.d.cts CHANGED
@@ -1480,6 +1480,6 @@ declare function NeuronWebProvider({ children, config }: NeuronWebProviderProps)
1480
1480
  * A drop-in Next.js library for data analysis and 3D visualization
1481
1481
  */
1482
1482
 
1483
- declare const VERSION = "0.2.13";
1483
+ declare const VERSION = "0.2.14";
1484
1484
 
1485
1485
  export { type AnalysisCancelledEventPayload, type AnalysisCompletedEventPayload, type AnalysisFailedEventPayload, type AnalysisOptionsInput, AnalysisPipeline, type AnalysisProgressEventPayload, AnalysisRequest, type AnalysisRequestInput, AnalysisResponse, AnalysisRun, type AnalysisSettingsInput, type AnalysisStartedEventPayload, CancelAnalysisResponse, type ClusterCreateInput, type ClusterCreatedEventPayload, ClusterMembership, type ClusterMembershipChangedEventPayload, type ClusterUpdateInput, type ClusterUpdatedEventPayload, ClusteringAlgorithm, type ClusteringConfigInput, ClusteringEngine, type ContainerStats, CreateEdgesRequest, CreateEdgesResponse, CreateNodesRequest, CreateNodesResponse, DataProcessor, Database, DatabaseConfig, type DatabaseSettingsInput, DeleteEdgeResponse, DeleteNodeResponse, type DockerConfig, DockerManager, type DomainConfigInput, type EdgeCreateInput, type EdgeCreatedEventPayload, type EdgeDeletedEventPayload, EdgeEvidence, type EdgeEvidenceInput, type EdgeFilterInput, type EdgeUpdateInput, type EdgeUpdatedEventPayload, EmbeddingsService, type EnsureOptions, EventBus, type EventFilterOptions, type EventHandler, type EventMiddleware, type EventSource, type EventSubscription, ExpandGraphRequest, type ExpandGraphRequestInput, ExpandGraphResponse, FindPathRequest, type FindPathRequestInput, FindPathResponse, FindSimilarOptions, FindSimilarRequest, type FindSimilarRequestInput, FindSimilarResponse, GetAnalysisJobResponse, GetGraphParams, type GetGraphParamsInput, GetGraphResponse, GetNodeResponse, GetSettingsResponse, GraphFilters, type HealthCheckResult, ListEdgesParams, type ListEdgesParamsInput, ListEdgesResponse, ListNodesParams, type ListNodesParamsInput, ListNodesResponse, type LogOptions, NeuronCluster, NeuronConfig, type NeuronConfigInput, NeuronEdge, type NeuronEvent, type NeuronEventEmitter, type NeuronEventType, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate, NeuronSettings, type NeuronSettingsInput, NeuronSettingsUpdate, type NeuronSettingsUpdateInput, NeuronVisualCluster, NeuronVisualEdge, NeuronVisualNode, NeuronWebProvider, type NodeBatchCreateInput, type NodeBatchCreatedEventPayload, type NodeCreateInput, type NodeCreatedEventPayload, type NodeDeletedEventPayload, type NodeFilterInput, type NodeTypeConfigInput, type NodeUpdateInput, type NodeUpdatedEventPayload, type PaginationInput, RelationshipEngine, type RelationshipInferredEventPayload, type RelationshipRejectedEventPayload, RelationshipType, type RelationshipTypeConfigInput, ResetSettingsResponse, ScoringEngine, SearchResult, SemanticSearchOptions, SemanticSearchRequest, type SemanticSearchRequestInput, SemanticSearchResponse, type SettingsUpdatedEventPayload, type StartOptions, type StopOptions, UpdateEdgeRequest, UpdateNodeRequest, UpdateSettingsRequest, UpdateSettingsResponse, type UseNeuronGraphOptions, type UseNeuronNodesOptions, VERSION, VisualizationSettings, type VisualizationSettingsInput, type VizCameraChangedEventPayload, type VizFilterAppliedEventPayload, type VizNodeFocusedEventPayload, type VizNodeHoveredEventPayload, type VizNodeSelectedEventPayload, type VizPathCompletedEventPayload, type VizPathStartedEventPayload, analysisOptionsSchema, analysisRequestSchema, analysisSettingsSchema, clusterCreateSchema, clusterUpdateSchema, clusteringConfigSchema, createAnalysisEvent, createDatabase, createDatabaseFromEnv, createEdgeEvent, createEvent, createGenericEvent, createNodeEvent, databaseSettingsSchema, defineNeuronConfig, domainConfigSchema, edgeCreateSchema, edgeEvidenceSchema, edgeFilterSchema, edgeUpdateSchema, expandGraphRequestSchema, findPathRequestSchema, findSimilarRequestSchema, getDatabase, getGraphParamsSchema, listEdgesParamsSchema, listNodesParamsSchema, loggingMiddleware, neuronConfigSchema, neuronSettingsSchema, neuronSettingsUpdateSchema, nodeBatchCreateSchema, nodeCreateSchema, nodeFilterSchema, nodeTierSchema, nodeTypeConfigSchema, nodeUpdateSchema, paginationSchema, relationshipTypeConfigSchema, resetDatabaseSingleton, semanticSearchRequestSchema, useAnalysisEvents, useNeuronAnalysis, useNeuronContext, useNeuronEvents, useNeuronGraph, useNeuronNodes, useNeuronSearch, useNeuronSettings, useNodeEvents, validationMiddleware, visualizationSettingsSchema };
package/dist/index.d.ts CHANGED
@@ -1480,6 +1480,6 @@ declare function NeuronWebProvider({ children, config }: NeuronWebProviderProps)
1480
1480
  * A drop-in Next.js library for data analysis and 3D visualization
1481
1481
  */
1482
1482
 
1483
- declare const VERSION = "0.2.13";
1483
+ declare const VERSION = "0.2.14";
1484
1484
 
1485
1485
  export { type AnalysisCancelledEventPayload, type AnalysisCompletedEventPayload, type AnalysisFailedEventPayload, type AnalysisOptionsInput, AnalysisPipeline, type AnalysisProgressEventPayload, AnalysisRequest, type AnalysisRequestInput, AnalysisResponse, AnalysisRun, type AnalysisSettingsInput, type AnalysisStartedEventPayload, CancelAnalysisResponse, type ClusterCreateInput, type ClusterCreatedEventPayload, ClusterMembership, type ClusterMembershipChangedEventPayload, type ClusterUpdateInput, type ClusterUpdatedEventPayload, ClusteringAlgorithm, type ClusteringConfigInput, ClusteringEngine, type ContainerStats, CreateEdgesRequest, CreateEdgesResponse, CreateNodesRequest, CreateNodesResponse, DataProcessor, Database, DatabaseConfig, type DatabaseSettingsInput, DeleteEdgeResponse, DeleteNodeResponse, type DockerConfig, DockerManager, type DomainConfigInput, type EdgeCreateInput, type EdgeCreatedEventPayload, type EdgeDeletedEventPayload, EdgeEvidence, type EdgeEvidenceInput, type EdgeFilterInput, type EdgeUpdateInput, type EdgeUpdatedEventPayload, EmbeddingsService, type EnsureOptions, EventBus, type EventFilterOptions, type EventHandler, type EventMiddleware, type EventSource, type EventSubscription, ExpandGraphRequest, type ExpandGraphRequestInput, ExpandGraphResponse, FindPathRequest, type FindPathRequestInput, FindPathResponse, FindSimilarOptions, FindSimilarRequest, type FindSimilarRequestInput, FindSimilarResponse, GetAnalysisJobResponse, GetGraphParams, type GetGraphParamsInput, GetGraphResponse, GetNodeResponse, GetSettingsResponse, GraphFilters, type HealthCheckResult, ListEdgesParams, type ListEdgesParamsInput, ListEdgesResponse, ListNodesParams, type ListNodesParamsInput, ListNodesResponse, type LogOptions, NeuronCluster, NeuronConfig, type NeuronConfigInput, NeuronEdge, type NeuronEvent, type NeuronEventEmitter, type NeuronEventType, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate, NeuronSettings, type NeuronSettingsInput, NeuronSettingsUpdate, type NeuronSettingsUpdateInput, NeuronVisualCluster, NeuronVisualEdge, NeuronVisualNode, NeuronWebProvider, type NodeBatchCreateInput, type NodeBatchCreatedEventPayload, type NodeCreateInput, type NodeCreatedEventPayload, type NodeDeletedEventPayload, type NodeFilterInput, type NodeTypeConfigInput, type NodeUpdateInput, type NodeUpdatedEventPayload, type PaginationInput, RelationshipEngine, type RelationshipInferredEventPayload, type RelationshipRejectedEventPayload, RelationshipType, type RelationshipTypeConfigInput, ResetSettingsResponse, ScoringEngine, SearchResult, SemanticSearchOptions, SemanticSearchRequest, type SemanticSearchRequestInput, SemanticSearchResponse, type SettingsUpdatedEventPayload, type StartOptions, type StopOptions, UpdateEdgeRequest, UpdateNodeRequest, UpdateSettingsRequest, UpdateSettingsResponse, type UseNeuronGraphOptions, type UseNeuronNodesOptions, VERSION, VisualizationSettings, type VisualizationSettingsInput, type VizCameraChangedEventPayload, type VizFilterAppliedEventPayload, type VizNodeFocusedEventPayload, type VizNodeHoveredEventPayload, type VizNodeSelectedEventPayload, type VizPathCompletedEventPayload, type VizPathStartedEventPayload, analysisOptionsSchema, analysisRequestSchema, analysisSettingsSchema, clusterCreateSchema, clusterUpdateSchema, clusteringConfigSchema, createAnalysisEvent, createDatabase, createDatabaseFromEnv, createEdgeEvent, createEvent, createGenericEvent, createNodeEvent, databaseSettingsSchema, defineNeuronConfig, domainConfigSchema, edgeCreateSchema, edgeEvidenceSchema, edgeFilterSchema, edgeUpdateSchema, expandGraphRequestSchema, findPathRequestSchema, findSimilarRequestSchema, getDatabase, getGraphParamsSchema, listEdgesParamsSchema, listNodesParamsSchema, loggingMiddleware, neuronConfigSchema, neuronSettingsSchema, neuronSettingsUpdateSchema, nodeBatchCreateSchema, nodeCreateSchema, nodeFilterSchema, nodeTierSchema, nodeTypeConfigSchema, nodeUpdateSchema, paginationSchema, relationshipTypeConfigSchema, resetDatabaseSingleton, semanticSearchRequestSchema, useAnalysisEvents, useNeuronAnalysis, useNeuronContext, useNeuronEvents, useNeuronGraph, useNeuronNodes, useNeuronSearch, useNeuronSettings, useNodeEvents, validationMiddleware, visualizationSettingsSchema };
package/dist/index.js CHANGED
@@ -648,7 +648,7 @@ function NeuronWebProvider({ children, config }) {
648
648
  }
649
649
 
650
650
  // src/index.ts
651
- var VERSION = "0.2.13";
651
+ var VERSION = "0.2.14";
652
652
 
653
653
  export { DataProcessor, NeuronWebProvider, VERSION, clusterCreateSchema, clusterUpdateSchema, clusteringConfigSchema, createAnalysisEvent, createEdgeEvent, createGenericEvent, createNodeEvent, defineNeuronConfig, loggingMiddleware, useAnalysisEvents, useNeuronAnalysis, useNeuronContext, useNeuronEvents, useNeuronGraph, useNeuronNodes, useNeuronSearch, useNeuronSettings, useNodeEvents, validationMiddleware };
654
654
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/schemas/cluster.ts","../src/core/events/helpers.ts","../src/core/events/middleware/logging.ts","../src/core/events/middleware/validation.ts","../src/core/analysis/data-processor.ts","../src/config/index.ts","../src/react/context.ts","../src/react/hooks/useNeuronContext.ts","../src/react/hooks/useNeuronGraph.ts","../src/react/hooks/useNeuronNodes.ts","../src/react/hooks/useNeuronAnalysis.ts","../src/react/hooks/useNeuronSettings.ts","../src/react/hooks/useNeuronSearch.ts","../src/react/hooks/useNeuronEvents.ts","../src/react/api-client.ts","../src/react/NeuronWebProvider.tsx","../src/index.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\nexport const clusteringConfigSchema = z.object({\n algorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n clusterCount: z.coerce.number().int().min(1).optional(),\n minClusterSize: z.coerce.number().int().min(1).optional(),\n similarityThreshold: z.coerce.number().min(0).max(1).optional(),\n epsilon: z.coerce.number().min(0).optional(),\n minSamples: z.coerce.number().int().min(1).optional(),\n});\n\nexport const clusterCreateSchema = z.object({\n label: z.string().min(1).max(255),\n clusterType: z.string().max(100).optional(),\n centroid: z.array(z.number()).optional(),\n memberCount: z.number().int().min(0).optional(),\n avgSimilarity: z.number().min(0).max(1).optional(),\n cohesion: z.number().min(0).max(1).optional(),\n description: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const clusterUpdateSchema = clusterCreateSchema.partial();\n\nexport type ClusteringConfigInput = z.infer<typeof clusteringConfigSchema>;\nexport type ClusterCreateInput = z.infer<typeof clusterCreateSchema>;\nexport type ClusterUpdateInput = z.infer<typeof clusterUpdateSchema>;\n","import type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EdgeCreatedEventPayload,\n EdgeDeletedEventPayload,\n EdgeUpdatedEventPayload,\n EventSource,\n NeuronEvent,\n NeuronEventType,\n NodeBatchCreatedEventPayload,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../types/events';\nimport { createEvent } from './event-bus';\n\nexport const createNodeEvent = (\n type: 'node:created' | 'node:updated' | 'node:deleted' | 'node:batch_created',\n payload:\n | NodeCreatedEventPayload\n | NodeUpdatedEventPayload\n | NodeDeletedEventPayload\n | NodeBatchCreatedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createEdgeEvent = (\n type: 'edge:created' | 'edge:updated' | 'edge:deleted',\n payload: EdgeCreatedEventPayload | EdgeUpdatedEventPayload | EdgeDeletedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createAnalysisEvent = (\n type: 'analysis:started' | 'analysis:progress' | 'analysis:completed' | 'analysis:failed',\n payload:\n | AnalysisStartedEventPayload\n | AnalysisProgressEventPayload\n | AnalysisCompletedEventPayload\n | AnalysisFailedEventPayload,\n source: EventSource = 'analysis'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createGenericEvent = <T>(\n type: NeuronEventType,\n payload: T,\n source: EventSource = 'system'\n): NeuronEvent<T> => createEvent(type, payload, source);\n","import type { EventMiddleware } from '../event-bus';\n\nexport const loggingMiddleware: EventMiddleware = (event, next) => {\n // eslint-disable-next-line no-console\n console.debug(`[omi-neuron:event] ${event.type}`, event);\n void next();\n};\n","import type { EventMiddleware } from '../event-bus';\n\nexport const validationMiddleware: EventMiddleware = (event, next) => {\n if (!event.type) {\n throw new Error('Event missing type');\n }\n if (!event.timestamp) {\n throw new Error('Event missing timestamp');\n }\n return next();\n};\n","import slugify from 'slugify';\nimport { nodeCreateSchema } from '../schemas/node';\nimport type { NeuronNodeCreate } from '../types/node';\n\nexport interface ProcessingOptions {\n skipDuplicates?: boolean;\n updateOnConflict?: boolean;\n defaultNodeType?: string;\n defaultDomain?: string;\n contentFields?: string[];\n labelField?: string;\n slugField?: string;\n metadataFields?: string[];\n}\n\nconst stripHtml = (value: string) => value.replace(/<[^>]+>/g, ' ');\n\nconst normalizeValue = (value: unknown): string | undefined => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map((item) => normalizeValue(item)).filter(Boolean).join(' ');\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n};\n\nconst flattenObject = (obj: Record<string, unknown>, prefix = ''): Record<string, unknown> => {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n Object.assign(result, flattenObject(value as Record<string, unknown>, nextKey));\n } else {\n result[nextKey] = value;\n }\n }\n return result;\n};\n\nexport class DataProcessor {\n constructor(private options: ProcessingOptions = {}) {}\n\n processItem(item: Record<string, unknown>): NeuronNodeCreate {\n const flattened = flattenObject(item);\n const labelField = this.options.labelField ?? 'label';\n const label = normalizeValue(flattened[labelField]) ?? 'Untitled';\n\n const slugField = this.options.slugField;\n const slug = slugField ? normalizeValue(flattened[slugField]) : undefined;\n\n const content = this.extractContent(flattened);\n const metadata = this.extractMetadata(flattened);\n\n const node: NeuronNodeCreate = {\n slug,\n label,\n nodeType: this.options.defaultNodeType,\n domain: this.options.defaultDomain,\n content,\n metadata,\n };\n\n return nodeCreateSchema.parse(node);\n }\n\n processBatch(items: Record<string, unknown>[]): {\n nodes: NeuronNodeCreate[];\n errors: Array<{ index: number; error: string }>;\n } {\n const nodes: NeuronNodeCreate[] = [];\n const errors: Array<{ index: number; error: string }> = [];\n\n items.forEach((item, index) => {\n try {\n nodes.push(this.processItem(item));\n } catch (error) {\n errors.push({\n index,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n\n return { nodes, errors };\n }\n\n processJSON(json: string): NeuronNodeCreate[] {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n return this.processBatch(parsed).nodes;\n }\n return [this.processItem(parsed)];\n }\n\n processCSV(csv: string): NeuronNodeCreate[] {\n const lines = csv.trim().split(/\\r?\\n/);\n if (lines.length === 0) return [];\n const headers = lines[0].split(',').map((h) => h.trim());\n const items = lines.slice(1).map((line) => {\n const values = line.split(',');\n const item: Record<string, unknown> = {};\n headers.forEach((header, idx) => {\n item[header] = values[idx]?.trim();\n });\n return item;\n });\n return this.processBatch(items).nodes;\n }\n\n generateSlug(label: string, existingSlugs: Set<string> = new Set()): string {\n const base = slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n if (!existingSlugs.has(base)) return base;\n let suffix = 1;\n let slug = `${base}-${suffix}`;\n while (existingSlugs.has(slug)) {\n suffix += 1;\n slug = `${base}-${suffix}`;\n }\n return slug;\n }\n\n extractContent(item: Record<string, unknown>): string {\n const fields = this.options.contentFields ?? ['label', 'summary', 'description', 'content'];\n const parts = fields\n .map((field) => normalizeValue(item[field]))\n .filter((value): value is string => Boolean(value));\n const joined = parts.join(' ');\n return stripHtml(joined).replace(/\\s+/g, ' ').trim();\n }\n\n detectDuplicates(nodes: NeuronNodeCreate[]): {\n unique: NeuronNodeCreate[];\n duplicates: Array<{ node: NeuronNodeCreate; reason: string }>;\n } {\n const seen = new Set<string>();\n const unique: NeuronNodeCreate[] = [];\n const duplicates: Array<{ node: NeuronNodeCreate; reason: string }> = [];\n\n nodes.forEach((node) => {\n const slug = node.slug ?? this.generateSlug(node.label, seen);\n if (seen.has(slug)) {\n duplicates.push({ node, reason: `Duplicate slug: ${slug}` });\n return;\n }\n seen.add(slug);\n unique.push({ ...node, slug });\n });\n\n return { unique, duplicates };\n }\n\n private extractMetadata(item: Record<string, unknown>): Record<string, unknown> | undefined {\n if (!this.options.metadataFields?.length) return undefined;\n const metadata: Record<string, unknown> = {};\n this.options.metadataFields.forEach((field) => {\n if (field in item) {\n metadata[field] = item[field];\n }\n });\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\n\nexport const defineNeuronConfig = (config: NeuronConfig): NeuronConfig => config;\n","import { createContext } from 'react';\nimport type { NeuronSettings, NeuronConfig } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport type { EventBus } from '../core/events/event-bus';\nimport type { NeuronApiClient } from './api-client';\n\nexport interface ErrorContext {\n message: string;\n}\n\nexport interface NeuronContextValue {\n config: NeuronConfig;\n settings: NeuronSettings;\n api: NeuronApiClient;\n events: EventBus;\n isInitialized: boolean;\n error: Error | null;\n updateSettings: (settings: Partial<NeuronSettings>) => Promise<void>;\n resetSettings: () => Promise<void>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n}\n\nexport const NeuronContext = createContext<NeuronContextValue | null>(null);\n","import { useContext } from 'react';\nimport { NeuronContext } from '../context';\n\nexport function useNeuronContext() {\n const context = useContext(NeuronContext);\n if (!context) {\n throw new Error('useNeuronContext must be used within NeuronWebProvider');\n }\n return context;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type {\n GraphFilters,\n NeuronVisualCluster,\n NeuronVisualEdge,\n NeuronVisualNode,\n} from '../../core/types';\nimport type { GetGraphParams, FindPathResponse } from '../../core/types/api';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronGraphOptions {\n domains?: string[];\n nodeTypes?: string[];\n minEdgeStrength?: number;\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nexport function useNeuronGraph(options?: UseNeuronGraphOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronVisualNode[]>([]);\n const [edges, setEdges] = useState<NeuronVisualEdge[]>([]);\n const [clusters, setClusters] = useState<NeuronVisualCluster[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [filters, setFilters] = useState<GraphFilters>({});\n const [selectedNode, setSelectedNode] = useState<string | null>(null);\n\n const fetchGraph = useCallback(async () => {\n setIsLoading(true);\n try {\n const params: GetGraphParams = {\n domains: options?.domains,\n nodeTypes: options?.nodeTypes,\n minEdgeStrength: options?.minEdgeStrength,\n };\n const response = await api.graph.get(params);\n setNodes(response.nodes);\n setEdges(response.edges);\n setClusters(response.clusters ?? []);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options]);\n\n useEffect(() => {\n void fetchGraph();\n }, [fetchGraph]);\n\n const expandFromNode = async (nodeId: string, depth = 1) => {\n const response = await api.graph.expand({ fromNodeIds: [nodeId], depth, direction: 'both' });\n setNodes(response.nodes);\n setEdges(response.edges);\n };\n\n const findPath = async (fromId: string, toId: string): Promise<FindPathResponse['paths'][number]> => {\n const response = await api.graph.findPath({ fromNodeId: fromId, toNodeId: toId });\n return response.paths[0];\n };\n\n return {\n nodes,\n edges,\n clusters,\n isLoading,\n error,\n filters,\n setFilters: (next: Partial<GraphFilters>) => setFilters((prev) => ({ ...prev, ...next })),\n clearFilters: () => setFilters({}),\n selectedNode: selectedNode ? nodes.find((node) => node.id === selectedNode) ?? null : null,\n selectNode: (nodeId: string | null) => setSelectedNode(nodeId),\n clearSelection: () => setSelectedNode(null),\n refetch: fetchGraph,\n expandFromNode,\n findPath,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { ListNodesParams, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronNodesOptions {\n initialFilters?: ListNodesParams;\n pageSize?: number;\n}\n\nexport function useNeuronNodes(options?: UseNeuronNodesOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronNode[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n const fetchNodes = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await api.nodes.list({\n ...options?.initialFilters,\n page,\n limit: options?.pageSize ?? 50,\n });\n setNodes(response.nodes);\n setTotalPages(response.pagination.totalPages ?? 1);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options, page]);\n\n useEffect(() => {\n void fetchNodes();\n }, [fetchNodes]);\n\n return {\n nodes,\n isLoading,\n error,\n createNode: async (data: NeuronNodeCreate) => {\n const response = await api.nodes.create({ nodes: [data] });\n await fetchNodes();\n return response.created[0];\n },\n updateNode: async (id: string, data: NeuronNodeUpdate) => {\n const updated = await api.nodes.update(id, data);\n await fetchNodes();\n return updated as NeuronNode;\n },\n deleteNode: async (id: string) => {\n await api.nodes.delete(id);\n await fetchNodes();\n },\n batchCreate: async (nodesInput: NeuronNodeCreate[]) => {\n const response = await api.nodes.create({ nodes: nodesInput });\n await fetchNodes();\n return response.created;\n },\n search: async (query: string) => {\n const response = await api.nodes.list({ search: query });\n setNodes(response.nodes);\n },\n pagination: {\n page,\n totalPages,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n },\n setPage,\n nextPage: () => setPage((prev) => Math.min(prev + 1, totalPages)),\n prevPage: () => setPage((prev) => Math.max(prev - 1, 1)),\n };\n}\n","import { useState } from 'react';\nimport type { AnalysisRequest, AnalysisResponse, AnalysisRun } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronAnalysis() {\n const { api } = useNeuronContext();\n const [activeJobs, setActiveJobs] = useState<AnalysisRun[]>([]);\n const [jobHistory, setJobHistory] = useState<AnalysisRun[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const [currentProgress, setCurrentProgress] = useState<number | null>(null);\n\n const startAnalysis = async (request: AnalysisRequest): Promise<AnalysisResponse> => {\n setIsRunning(true);\n const response = await api.analyze.start(request);\n setActiveJobs((prev) => [...prev, { ...(response as unknown as AnalysisRun) }]);\n return response;\n };\n\n const cancelJob = async (jobId: string) => {\n await api.analyze.cancel(jobId);\n setActiveJobs((prev) => prev.filter((job) => job.id !== jobId));\n };\n\n const getJobStatus = async (jobId: string) => {\n const response = await api.analyze.getStatus(jobId);\n setJobHistory((prev) => [...prev, response.job]);\n setIsRunning(false);\n setCurrentProgress(response.job.progress ?? null);\n return response.job;\n };\n\n return {\n activeJobs,\n jobHistory,\n startAnalysis,\n cancelJob,\n getJobStatus,\n isRunning,\n currentProgress,\n };\n}\n","import { useState } from 'react';\nimport type { NeuronSettings, NeuronSettingsUpdate, VisualizationSettings } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSettings() {\n const { settings, api, updateSettings } = useNeuronContext();\n const [isLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const update = async (updates: NeuronSettingsUpdate) => {\n try {\n setIsUpdating(true);\n await updateSettings(updates as Partial<NeuronSettings>);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const reset = async (sections?: string[]) => {\n await api.settings.reset();\n if (sections?.length) {\n await update({});\n }\n };\n\n return {\n settings,\n isLoading,\n isUpdating,\n error,\n updateSettings: update,\n resetSettings: reset,\n setDomainColor: async (domain: string, color: string) => {\n await update({\n visualization: {\n ...(settings.visualization as VisualizationSettings),\n domainColors: { ...settings.visualization.domainColors, [domain]: color },\n },\n });\n },\n setVisualization: async (updates: Partial<VisualizationSettings>) => {\n await update({ visualization: updates });\n },\n };\n}\n","import { useState } from 'react';\nimport type { FindSimilarOptions, SearchResult, SemanticSearchOptions } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSearch() {\n const { api } = useNeuronContext();\n const [results, setResults] = useState<SearchResult[]>([]);\n const [isSearching, setIsSearching] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const search = async (query: string, options?: SemanticSearchOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.semantic({ query, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n const findSimilar = async (nodeId: string, options?: FindSimilarOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.similar({ nodeId, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n return {\n results,\n isSearching,\n error,\n search,\n findSimilar,\n clearResults: () => setResults([]),\n };\n}\n","import { useEffect } from 'react';\nimport type { AnalysisRun, NeuronEventType, NeuronNode } from '../../core/types';\nimport type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EventHandler,\n EventSubscription,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../../core/types/events';\nimport { useNeuronContext } from './useNeuronContext';\nimport { createEvent } from '../../core/events/event-bus';\n\nexport function useNeuronEvents() {\n const { events } = useNeuronContext();\n\n return {\n subscribe: <T>(type: NeuronEventType, handler: EventHandler<T>) => {\n useEffect(() => {\n const sub = events.subscribe(type, handler);\n return () => sub.unsubscribe();\n }, [type, handler]);\n },\n emit: <T>(type: NeuronEventType, payload: T) => {\n events.emit(createEvent(type, payload, 'ui'));\n },\n };\n}\n\nexport function useNodeEvents(handlers: {\n onCreated?: (node: NeuronNode) => void;\n onUpdated?: (node: NeuronNode) => void;\n onDeleted?: (nodeId: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onCreated) {\n subs.push(\n events.subscribe('node:created', (event) =>\n handlers.onCreated?.((event.payload as NodeCreatedEventPayload).node)\n )\n );\n }\n if (handlers.onUpdated) {\n subs.push(\n events.subscribe('node:updated', (event) =>\n handlers.onUpdated?.((event.payload as NodeUpdatedEventPayload).node)\n )\n );\n }\n if (handlers.onDeleted) {\n subs.push(\n events.subscribe('node:deleted', (event) =>\n handlers.onDeleted?.((event.payload as NodeDeletedEventPayload).nodeId)\n )\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n\nexport function useAnalysisEvents(handlers: {\n onStarted?: (jobId: string) => void;\n onProgress?: (jobId: string, progress: number) => void;\n onCompleted?: (job: AnalysisRun) => void;\n onFailed?: (jobId: string, error: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onStarted) {\n subs.push(\n events.subscribe('analysis:started', (event) =>\n handlers.onStarted?.((event.payload as AnalysisStartedEventPayload).jobId)\n )\n );\n }\n if (handlers.onProgress) {\n subs.push(\n events.subscribe('analysis:progress', (event) => {\n const payload = event.payload as AnalysisProgressEventPayload;\n return handlers.onProgress?.(payload.jobId, payload.progress);\n })\n );\n }\n if (handlers.onCompleted) {\n subs.push(\n events.subscribe('analysis:completed', (event) =>\n handlers.onCompleted?.((event.payload as AnalysisCompletedEventPayload).job)\n )\n );\n }\n if (handlers.onFailed) {\n subs.push(\n events.subscribe('analysis:failed', (event) => {\n const payload = event.payload as AnalysisFailedEventPayload;\n return handlers.onFailed?.(payload.jobId, payload.error);\n })\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n","import type {\n AnalysisRequest,\n AnalysisResponse,\n CancelAnalysisResponse,\n CreateEdgesRequest,\n CreateEdgesResponse,\n CreateNodesRequest,\n CreateNodesResponse,\n DeleteEdgeResponse,\n DeleteNodeResponse,\n ExpandGraphRequest,\n ExpandGraphResponse,\n FindPathRequest,\n FindPathResponse,\n FindSimilarRequest,\n FindSimilarResponse,\n GetAnalysisJobResponse,\n GetGraphParams,\n GetGraphResponse,\n GetNodeResponse,\n GetSettingsResponse,\n ListEdgesParams,\n ListEdgesResponse,\n ListNodesParams,\n ListNodesResponse,\n SemanticSearchRequest,\n SemanticSearchResponse,\n UpdateEdgeRequest,\n UpdateNodeRequest,\n UpdateSettingsRequest,\n UpdateSettingsResponse,\n ResetSettingsResponse,\n} from '../core/types/api';\n\nexport class NeuronApiClient {\n constructor(private basePath: string) {}\n\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n const response = await fetch(`${this.basePath}${path}`, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n }\n return response.json() as Promise<T>;\n }\n\n nodes = {\n list: (params?: ListNodesParams) =>\n this.request<ListNodesResponse>(`/nodes?${new URLSearchParams(params as Record<string, string>)}`),\n get: (id: string) => this.request<GetNodeResponse>(`/nodes/${id}`),\n create: (data: CreateNodesRequest) =>\n this.request<CreateNodesResponse>('/nodes', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateNodeRequest) =>\n this.request(`/nodes/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteNodeResponse>(`/nodes/${id}`, { method: 'DELETE' }),\n };\n\n edges = {\n list: (params?: ListEdgesParams) =>\n this.request<ListEdgesResponse>(`/edges?${new URLSearchParams(params as Record<string, string>)}`),\n create: (data: CreateEdgesRequest) =>\n this.request<CreateEdgesResponse>('/edges', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateEdgeRequest) =>\n this.request(`/edges/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteEdgeResponse>(`/edges/${id}`, { method: 'DELETE' }),\n };\n\n graph = {\n get: (params?: GetGraphParams) =>\n this.request<GetGraphResponse>(`/graph?${new URLSearchParams(params as Record<string, string>)}`),\n expand: (data: ExpandGraphRequest) =>\n this.request<ExpandGraphResponse>('/graph/expand', { method: 'POST', body: JSON.stringify(data) }),\n findPath: (data: FindPathRequest) =>\n this.request<FindPathResponse>('/graph/path', { method: 'POST', body: JSON.stringify(data) }),\n };\n\n analyze = {\n start: (data: AnalysisRequest) =>\n this.request<AnalysisResponse>('/analyze', { method: 'POST', body: JSON.stringify(data) }),\n getStatus: (jobId: string) => this.request<GetAnalysisJobResponse>(`/analyze/${jobId}`),\n cancel: (jobId: string) =>\n this.request<CancelAnalysisResponse>(`/analyze/${jobId}/cancel`, { method: 'POST' }),\n };\n\n settings = {\n get: () => this.request<GetSettingsResponse>('/settings'),\n update: (data: UpdateSettingsRequest) =>\n this.request<UpdateSettingsResponse>('/settings', { method: 'PATCH', body: JSON.stringify(data) }),\n reset: () => this.request<ResetSettingsResponse>('/settings/reset', { method: 'POST' }),\n };\n\n search = {\n semantic: (data: SemanticSearchRequest) =>\n this.request<SemanticSearchResponse>('/search', { method: 'POST', body: JSON.stringify(data) }),\n similar: (data: FindSimilarRequest) =>\n this.request<FindSimilarResponse>('/search/similar', { method: 'POST', body: JSON.stringify(data) }),\n };\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { NeuronSettings, NeuronConfig, NeuronSettingsUpdate } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport { DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '../core/types/settings';\nimport { EventBus } from '../core/events/event-bus';\nimport { NeuronApiClient } from './api-client';\nimport { NeuronContext, type ErrorContext } from './context';\n\nexport interface NeuronWebProviderProps {\n children: React.ReactNode;\n config: {\n openaiApiKey?: string;\n databaseUrl?: string;\n settings?: Partial<NeuronSettings>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n };\n}\n\nconst buildDefaultConfig = (overrides?: Partial<NeuronSettings>): NeuronConfig => ({\n instance: {\n name: 'default',\n version: '0.1.1',\n repoName: 'omi-neuron-web',\n },\n visualization: { ...DEFAULT_VISUALIZATION_SETTINGS, ...(overrides?.visualization ?? {}) },\n analysis: { ...DEFAULT_ANALYSIS_SETTINGS, ...(overrides?.analysis ?? {}) },\n nodeTypes: overrides?.nodeTypes ?? [],\n domains: overrides?.domains ?? [],\n relationshipTypes: overrides?.relationshipTypes ?? [],\n openai: {\n apiKey: '',\n },\n database: {\n mode: 'external',\n port: 5433,\n url: undefined,\n },\n api: {\n basePath: '/api/neuron',\n enableCors: false,\n },\n logging: {\n level: 'info',\n prettyPrint: true,\n },\n});\n\nexport function NeuronWebProvider({ children, config }: NeuronWebProviderProps): React.ReactElement {\n const [settings, setSettings] = useState<NeuronSettings>(() =>\n buildDefaultConfig(config.settings) as NeuronSettings\n );\n const [error, setError] = useState<Error | null>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n\n const resolvedConfig = useMemo(() => {\n const base = buildDefaultConfig(config.settings);\n return {\n ...base,\n openai: {\n apiKey: config.openaiApiKey ?? base.openai.apiKey,\n },\n database: {\n ...base.database,\n url: config.databaseUrl ?? base.database.url,\n },\n } as NeuronConfig;\n }, [config]);\n\n const apiClient = useMemo(() => new NeuronApiClient(resolvedConfig.api.basePath), [resolvedConfig]);\n const eventBus = useMemo(() => new EventBus(), []);\n\n useEffect(() => {\n eventBus.subscribeAll((event) => config.onEvent?.(event));\n }, [eventBus, config]);\n\n useEffect(() => {\n let mounted = true;\n apiClient\n .settings.get()\n .then((response) => {\n if (mounted) {\n setSettings(response.settings as NeuronSettings);\n setIsInitialized(true);\n }\n })\n .catch((err) => {\n setError(err as Error);\n config.onError?.(err as Error, { message: 'Failed to load settings' });\n });\n return () => {\n mounted = false;\n };\n }, [apiClient]);\n\n const updateSettings = async (updates: Partial<NeuronSettings>) => {\n const response = await apiClient.settings.update(updates as NeuronSettingsUpdate);\n setSettings(response.settings as NeuronSettings);\n };\n\n const resetSettings = async () => {\n const response = await apiClient.settings.reset();\n setSettings(response.settings as NeuronSettings);\n };\n\n const contextValue = useMemo(\n () => ({\n config: resolvedConfig,\n settings,\n api: apiClient,\n events: eventBus,\n isInitialized,\n error,\n updateSettings,\n resetSettings,\n onEvent: config.onEvent,\n onError: config.onError,\n }),\n [resolvedConfig, settings, apiClient, eventBus, isInitialized, error, config]\n );\n\n return <NeuronContext.Provider value={contextValue}>{children}</NeuronContext.Provider>;\n}\n","/**\n * omi-neuron-web\n * A drop-in Next.js library for data analysis and 3D visualization\n */\n\n// Core types\nexport * from './core/types';\nexport * from './core/schemas';\nexport * from './core/events';\nexport { DataProcessor } from './core/analysis/data-processor';\nexport { EmbeddingsService } from './core/analysis/embeddings-service';\nexport { ClusteringEngine } from './core/analysis/clustering-engine';\nexport { RelationshipEngine } from './core/analysis/relationship-engine';\nexport { ScoringEngine } from './core/analysis/scoring-engine';\nexport { AnalysisPipeline } from './core/analysis/pipeline';\nexport * from './storage';\nexport * from './config';\n\n// Visualization\nexport { NeuronWeb } from './visualization';\nexport type {\n NeuronWebProps,\n NeuronWebTheme,\n NeuronLayoutOptions,\n NeuronLayoutMode,\n ClickCardOptions,\n ClickZoomOptions,\n CardsMode,\n} from './visualization';\n\n// Re-export hooks (when implemented)\nexport * from './react/hooks';\n\n// Re-export provider (when implemented)\nexport { NeuronWebProvider } from './react/NeuronWebProvider';\n\n// Version\nexport const VERSION = '0.2.13';\n"]}
1
+ {"version":3,"sources":["../src/core/schemas/cluster.ts","../src/core/events/helpers.ts","../src/core/events/middleware/logging.ts","../src/core/events/middleware/validation.ts","../src/core/analysis/data-processor.ts","../src/config/index.ts","../src/react/context.ts","../src/react/hooks/useNeuronContext.ts","../src/react/hooks/useNeuronGraph.ts","../src/react/hooks/useNeuronNodes.ts","../src/react/hooks/useNeuronAnalysis.ts","../src/react/hooks/useNeuronSettings.ts","../src/react/hooks/useNeuronSearch.ts","../src/react/hooks/useNeuronEvents.ts","../src/react/api-client.ts","../src/react/NeuronWebProvider.tsx","../src/index.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\nexport const clusteringConfigSchema = z.object({\n algorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n clusterCount: z.coerce.number().int().min(1).optional(),\n minClusterSize: z.coerce.number().int().min(1).optional(),\n similarityThreshold: z.coerce.number().min(0).max(1).optional(),\n epsilon: z.coerce.number().min(0).optional(),\n minSamples: z.coerce.number().int().min(1).optional(),\n});\n\nexport const clusterCreateSchema = z.object({\n label: z.string().min(1).max(255),\n clusterType: z.string().max(100).optional(),\n centroid: z.array(z.number()).optional(),\n memberCount: z.number().int().min(0).optional(),\n avgSimilarity: z.number().min(0).max(1).optional(),\n cohesion: z.number().min(0).max(1).optional(),\n description: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const clusterUpdateSchema = clusterCreateSchema.partial();\n\nexport type ClusteringConfigInput = z.infer<typeof clusteringConfigSchema>;\nexport type ClusterCreateInput = z.infer<typeof clusterCreateSchema>;\nexport type ClusterUpdateInput = z.infer<typeof clusterUpdateSchema>;\n","import type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EdgeCreatedEventPayload,\n EdgeDeletedEventPayload,\n EdgeUpdatedEventPayload,\n EventSource,\n NeuronEvent,\n NeuronEventType,\n NodeBatchCreatedEventPayload,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../types/events';\nimport { createEvent } from './event-bus';\n\nexport const createNodeEvent = (\n type: 'node:created' | 'node:updated' | 'node:deleted' | 'node:batch_created',\n payload:\n | NodeCreatedEventPayload\n | NodeUpdatedEventPayload\n | NodeDeletedEventPayload\n | NodeBatchCreatedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createEdgeEvent = (\n type: 'edge:created' | 'edge:updated' | 'edge:deleted',\n payload: EdgeCreatedEventPayload | EdgeUpdatedEventPayload | EdgeDeletedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createAnalysisEvent = (\n type: 'analysis:started' | 'analysis:progress' | 'analysis:completed' | 'analysis:failed',\n payload:\n | AnalysisStartedEventPayload\n | AnalysisProgressEventPayload\n | AnalysisCompletedEventPayload\n | AnalysisFailedEventPayload,\n source: EventSource = 'analysis'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createGenericEvent = <T>(\n type: NeuronEventType,\n payload: T,\n source: EventSource = 'system'\n): NeuronEvent<T> => createEvent(type, payload, source);\n","import type { EventMiddleware } from '../event-bus';\n\nexport const loggingMiddleware: EventMiddleware = (event, next) => {\n // eslint-disable-next-line no-console\n console.debug(`[omi-neuron:event] ${event.type}`, event);\n void next();\n};\n","import type { EventMiddleware } from '../event-bus';\n\nexport const validationMiddleware: EventMiddleware = (event, next) => {\n if (!event.type) {\n throw new Error('Event missing type');\n }\n if (!event.timestamp) {\n throw new Error('Event missing timestamp');\n }\n return next();\n};\n","import slugify from 'slugify';\nimport { nodeCreateSchema } from '../schemas/node';\nimport type { NeuronNodeCreate } from '../types/node';\n\nexport interface ProcessingOptions {\n skipDuplicates?: boolean;\n updateOnConflict?: boolean;\n defaultNodeType?: string;\n defaultDomain?: string;\n contentFields?: string[];\n labelField?: string;\n slugField?: string;\n metadataFields?: string[];\n}\n\nconst stripHtml = (value: string) => value.replace(/<[^>]+>/g, ' ');\n\nconst normalizeValue = (value: unknown): string | undefined => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map((item) => normalizeValue(item)).filter(Boolean).join(' ');\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n};\n\nconst flattenObject = (obj: Record<string, unknown>, prefix = ''): Record<string, unknown> => {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n Object.assign(result, flattenObject(value as Record<string, unknown>, nextKey));\n } else {\n result[nextKey] = value;\n }\n }\n return result;\n};\n\nexport class DataProcessor {\n constructor(private options: ProcessingOptions = {}) {}\n\n processItem(item: Record<string, unknown>): NeuronNodeCreate {\n const flattened = flattenObject(item);\n const labelField = this.options.labelField ?? 'label';\n const label = normalizeValue(flattened[labelField]) ?? 'Untitled';\n\n const slugField = this.options.slugField;\n const slug = slugField ? normalizeValue(flattened[slugField]) : undefined;\n\n const content = this.extractContent(flattened);\n const metadata = this.extractMetadata(flattened);\n\n const node: NeuronNodeCreate = {\n slug,\n label,\n nodeType: this.options.defaultNodeType,\n domain: this.options.defaultDomain,\n content,\n metadata,\n };\n\n return nodeCreateSchema.parse(node);\n }\n\n processBatch(items: Record<string, unknown>[]): {\n nodes: NeuronNodeCreate[];\n errors: Array<{ index: number; error: string }>;\n } {\n const nodes: NeuronNodeCreate[] = [];\n const errors: Array<{ index: number; error: string }> = [];\n\n items.forEach((item, index) => {\n try {\n nodes.push(this.processItem(item));\n } catch (error) {\n errors.push({\n index,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n\n return { nodes, errors };\n }\n\n processJSON(json: string): NeuronNodeCreate[] {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n return this.processBatch(parsed).nodes;\n }\n return [this.processItem(parsed)];\n }\n\n processCSV(csv: string): NeuronNodeCreate[] {\n const lines = csv.trim().split(/\\r?\\n/);\n if (lines.length === 0) return [];\n const headers = lines[0].split(',').map((h) => h.trim());\n const items = lines.slice(1).map((line) => {\n const values = line.split(',');\n const item: Record<string, unknown> = {};\n headers.forEach((header, idx) => {\n item[header] = values[idx]?.trim();\n });\n return item;\n });\n return this.processBatch(items).nodes;\n }\n\n generateSlug(label: string, existingSlugs: Set<string> = new Set()): string {\n const base = slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n if (!existingSlugs.has(base)) return base;\n let suffix = 1;\n let slug = `${base}-${suffix}`;\n while (existingSlugs.has(slug)) {\n suffix += 1;\n slug = `${base}-${suffix}`;\n }\n return slug;\n }\n\n extractContent(item: Record<string, unknown>): string {\n const fields = this.options.contentFields ?? ['label', 'summary', 'description', 'content'];\n const parts = fields\n .map((field) => normalizeValue(item[field]))\n .filter((value): value is string => Boolean(value));\n const joined = parts.join(' ');\n return stripHtml(joined).replace(/\\s+/g, ' ').trim();\n }\n\n detectDuplicates(nodes: NeuronNodeCreate[]): {\n unique: NeuronNodeCreate[];\n duplicates: Array<{ node: NeuronNodeCreate; reason: string }>;\n } {\n const seen = new Set<string>();\n const unique: NeuronNodeCreate[] = [];\n const duplicates: Array<{ node: NeuronNodeCreate; reason: string }> = [];\n\n nodes.forEach((node) => {\n const slug = node.slug ?? this.generateSlug(node.label, seen);\n if (seen.has(slug)) {\n duplicates.push({ node, reason: `Duplicate slug: ${slug}` });\n return;\n }\n seen.add(slug);\n unique.push({ ...node, slug });\n });\n\n return { unique, duplicates };\n }\n\n private extractMetadata(item: Record<string, unknown>): Record<string, unknown> | undefined {\n if (!this.options.metadataFields?.length) return undefined;\n const metadata: Record<string, unknown> = {};\n this.options.metadataFields.forEach((field) => {\n if (field in item) {\n metadata[field] = item[field];\n }\n });\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\n\nexport const defineNeuronConfig = (config: NeuronConfig): NeuronConfig => config;\n","import { createContext } from 'react';\nimport type { NeuronSettings, NeuronConfig } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport type { EventBus } from '../core/events/event-bus';\nimport type { NeuronApiClient } from './api-client';\n\nexport interface ErrorContext {\n message: string;\n}\n\nexport interface NeuronContextValue {\n config: NeuronConfig;\n settings: NeuronSettings;\n api: NeuronApiClient;\n events: EventBus;\n isInitialized: boolean;\n error: Error | null;\n updateSettings: (settings: Partial<NeuronSettings>) => Promise<void>;\n resetSettings: () => Promise<void>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n}\n\nexport const NeuronContext = createContext<NeuronContextValue | null>(null);\n","import { useContext } from 'react';\nimport { NeuronContext } from '../context';\n\nexport function useNeuronContext() {\n const context = useContext(NeuronContext);\n if (!context) {\n throw new Error('useNeuronContext must be used within NeuronWebProvider');\n }\n return context;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type {\n GraphFilters,\n NeuronVisualCluster,\n NeuronVisualEdge,\n NeuronVisualNode,\n} from '../../core/types';\nimport type { GetGraphParams, FindPathResponse } from '../../core/types/api';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronGraphOptions {\n domains?: string[];\n nodeTypes?: string[];\n minEdgeStrength?: number;\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nexport function useNeuronGraph(options?: UseNeuronGraphOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronVisualNode[]>([]);\n const [edges, setEdges] = useState<NeuronVisualEdge[]>([]);\n const [clusters, setClusters] = useState<NeuronVisualCluster[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [filters, setFilters] = useState<GraphFilters>({});\n const [selectedNode, setSelectedNode] = useState<string | null>(null);\n\n const fetchGraph = useCallback(async () => {\n setIsLoading(true);\n try {\n const params: GetGraphParams = {\n domains: options?.domains,\n nodeTypes: options?.nodeTypes,\n minEdgeStrength: options?.minEdgeStrength,\n };\n const response = await api.graph.get(params);\n setNodes(response.nodes);\n setEdges(response.edges);\n setClusters(response.clusters ?? []);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options]);\n\n useEffect(() => {\n void fetchGraph();\n }, [fetchGraph]);\n\n const expandFromNode = async (nodeId: string, depth = 1) => {\n const response = await api.graph.expand({ fromNodeIds: [nodeId], depth, direction: 'both' });\n setNodes(response.nodes);\n setEdges(response.edges);\n };\n\n const findPath = async (fromId: string, toId: string): Promise<FindPathResponse['paths'][number]> => {\n const response = await api.graph.findPath({ fromNodeId: fromId, toNodeId: toId });\n return response.paths[0];\n };\n\n return {\n nodes,\n edges,\n clusters,\n isLoading,\n error,\n filters,\n setFilters: (next: Partial<GraphFilters>) => setFilters((prev) => ({ ...prev, ...next })),\n clearFilters: () => setFilters({}),\n selectedNode: selectedNode ? nodes.find((node) => node.id === selectedNode) ?? null : null,\n selectNode: (nodeId: string | null) => setSelectedNode(nodeId),\n clearSelection: () => setSelectedNode(null),\n refetch: fetchGraph,\n expandFromNode,\n findPath,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { ListNodesParams, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronNodesOptions {\n initialFilters?: ListNodesParams;\n pageSize?: number;\n}\n\nexport function useNeuronNodes(options?: UseNeuronNodesOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronNode[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n const fetchNodes = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await api.nodes.list({\n ...options?.initialFilters,\n page,\n limit: options?.pageSize ?? 50,\n });\n setNodes(response.nodes);\n setTotalPages(response.pagination.totalPages ?? 1);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options, page]);\n\n useEffect(() => {\n void fetchNodes();\n }, [fetchNodes]);\n\n return {\n nodes,\n isLoading,\n error,\n createNode: async (data: NeuronNodeCreate) => {\n const response = await api.nodes.create({ nodes: [data] });\n await fetchNodes();\n return response.created[0];\n },\n updateNode: async (id: string, data: NeuronNodeUpdate) => {\n const updated = await api.nodes.update(id, data);\n await fetchNodes();\n return updated as NeuronNode;\n },\n deleteNode: async (id: string) => {\n await api.nodes.delete(id);\n await fetchNodes();\n },\n batchCreate: async (nodesInput: NeuronNodeCreate[]) => {\n const response = await api.nodes.create({ nodes: nodesInput });\n await fetchNodes();\n return response.created;\n },\n search: async (query: string) => {\n const response = await api.nodes.list({ search: query });\n setNodes(response.nodes);\n },\n pagination: {\n page,\n totalPages,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n },\n setPage,\n nextPage: () => setPage((prev) => Math.min(prev + 1, totalPages)),\n prevPage: () => setPage((prev) => Math.max(prev - 1, 1)),\n };\n}\n","import { useState } from 'react';\nimport type { AnalysisRequest, AnalysisResponse, AnalysisRun } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronAnalysis() {\n const { api } = useNeuronContext();\n const [activeJobs, setActiveJobs] = useState<AnalysisRun[]>([]);\n const [jobHistory, setJobHistory] = useState<AnalysisRun[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const [currentProgress, setCurrentProgress] = useState<number | null>(null);\n\n const startAnalysis = async (request: AnalysisRequest): Promise<AnalysisResponse> => {\n setIsRunning(true);\n const response = await api.analyze.start(request);\n setActiveJobs((prev) => [...prev, { ...(response as unknown as AnalysisRun) }]);\n return response;\n };\n\n const cancelJob = async (jobId: string) => {\n await api.analyze.cancel(jobId);\n setActiveJobs((prev) => prev.filter((job) => job.id !== jobId));\n };\n\n const getJobStatus = async (jobId: string) => {\n const response = await api.analyze.getStatus(jobId);\n setJobHistory((prev) => [...prev, response.job]);\n setIsRunning(false);\n setCurrentProgress(response.job.progress ?? null);\n return response.job;\n };\n\n return {\n activeJobs,\n jobHistory,\n startAnalysis,\n cancelJob,\n getJobStatus,\n isRunning,\n currentProgress,\n };\n}\n","import { useState } from 'react';\nimport type { NeuronSettings, NeuronSettingsUpdate, VisualizationSettings } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSettings() {\n const { settings, api, updateSettings } = useNeuronContext();\n const [isLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const update = async (updates: NeuronSettingsUpdate) => {\n try {\n setIsUpdating(true);\n await updateSettings(updates as Partial<NeuronSettings>);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const reset = async (sections?: string[]) => {\n await api.settings.reset();\n if (sections?.length) {\n await update({});\n }\n };\n\n return {\n settings,\n isLoading,\n isUpdating,\n error,\n updateSettings: update,\n resetSettings: reset,\n setDomainColor: async (domain: string, color: string) => {\n await update({\n visualization: {\n ...(settings.visualization as VisualizationSettings),\n domainColors: { ...settings.visualization.domainColors, [domain]: color },\n },\n });\n },\n setVisualization: async (updates: Partial<VisualizationSettings>) => {\n await update({ visualization: updates });\n },\n };\n}\n","import { useState } from 'react';\nimport type { FindSimilarOptions, SearchResult, SemanticSearchOptions } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSearch() {\n const { api } = useNeuronContext();\n const [results, setResults] = useState<SearchResult[]>([]);\n const [isSearching, setIsSearching] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const search = async (query: string, options?: SemanticSearchOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.semantic({ query, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n const findSimilar = async (nodeId: string, options?: FindSimilarOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.similar({ nodeId, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n return {\n results,\n isSearching,\n error,\n search,\n findSimilar,\n clearResults: () => setResults([]),\n };\n}\n","import { useEffect } from 'react';\nimport type { AnalysisRun, NeuronEventType, NeuronNode } from '../../core/types';\nimport type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EventHandler,\n EventSubscription,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../../core/types/events';\nimport { useNeuronContext } from './useNeuronContext';\nimport { createEvent } from '../../core/events/event-bus';\n\nexport function useNeuronEvents() {\n const { events } = useNeuronContext();\n\n return {\n subscribe: <T>(type: NeuronEventType, handler: EventHandler<T>) => {\n useEffect(() => {\n const sub = events.subscribe(type, handler);\n return () => sub.unsubscribe();\n }, [type, handler]);\n },\n emit: <T>(type: NeuronEventType, payload: T) => {\n events.emit(createEvent(type, payload, 'ui'));\n },\n };\n}\n\nexport function useNodeEvents(handlers: {\n onCreated?: (node: NeuronNode) => void;\n onUpdated?: (node: NeuronNode) => void;\n onDeleted?: (nodeId: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onCreated) {\n subs.push(\n events.subscribe('node:created', (event) =>\n handlers.onCreated?.((event.payload as NodeCreatedEventPayload).node)\n )\n );\n }\n if (handlers.onUpdated) {\n subs.push(\n events.subscribe('node:updated', (event) =>\n handlers.onUpdated?.((event.payload as NodeUpdatedEventPayload).node)\n )\n );\n }\n if (handlers.onDeleted) {\n subs.push(\n events.subscribe('node:deleted', (event) =>\n handlers.onDeleted?.((event.payload as NodeDeletedEventPayload).nodeId)\n )\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n\nexport function useAnalysisEvents(handlers: {\n onStarted?: (jobId: string) => void;\n onProgress?: (jobId: string, progress: number) => void;\n onCompleted?: (job: AnalysisRun) => void;\n onFailed?: (jobId: string, error: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onStarted) {\n subs.push(\n events.subscribe('analysis:started', (event) =>\n handlers.onStarted?.((event.payload as AnalysisStartedEventPayload).jobId)\n )\n );\n }\n if (handlers.onProgress) {\n subs.push(\n events.subscribe('analysis:progress', (event) => {\n const payload = event.payload as AnalysisProgressEventPayload;\n return handlers.onProgress?.(payload.jobId, payload.progress);\n })\n );\n }\n if (handlers.onCompleted) {\n subs.push(\n events.subscribe('analysis:completed', (event) =>\n handlers.onCompleted?.((event.payload as AnalysisCompletedEventPayload).job)\n )\n );\n }\n if (handlers.onFailed) {\n subs.push(\n events.subscribe('analysis:failed', (event) => {\n const payload = event.payload as AnalysisFailedEventPayload;\n return handlers.onFailed?.(payload.jobId, payload.error);\n })\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n","import type {\n AnalysisRequest,\n AnalysisResponse,\n CancelAnalysisResponse,\n CreateEdgesRequest,\n CreateEdgesResponse,\n CreateNodesRequest,\n CreateNodesResponse,\n DeleteEdgeResponse,\n DeleteNodeResponse,\n ExpandGraphRequest,\n ExpandGraphResponse,\n FindPathRequest,\n FindPathResponse,\n FindSimilarRequest,\n FindSimilarResponse,\n GetAnalysisJobResponse,\n GetGraphParams,\n GetGraphResponse,\n GetNodeResponse,\n GetSettingsResponse,\n ListEdgesParams,\n ListEdgesResponse,\n ListNodesParams,\n ListNodesResponse,\n SemanticSearchRequest,\n SemanticSearchResponse,\n UpdateEdgeRequest,\n UpdateNodeRequest,\n UpdateSettingsRequest,\n UpdateSettingsResponse,\n ResetSettingsResponse,\n} from '../core/types/api';\n\nexport class NeuronApiClient {\n constructor(private basePath: string) {}\n\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n const response = await fetch(`${this.basePath}${path}`, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n }\n return response.json() as Promise<T>;\n }\n\n nodes = {\n list: (params?: ListNodesParams) =>\n this.request<ListNodesResponse>(`/nodes?${new URLSearchParams(params as Record<string, string>)}`),\n get: (id: string) => this.request<GetNodeResponse>(`/nodes/${id}`),\n create: (data: CreateNodesRequest) =>\n this.request<CreateNodesResponse>('/nodes', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateNodeRequest) =>\n this.request(`/nodes/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteNodeResponse>(`/nodes/${id}`, { method: 'DELETE' }),\n };\n\n edges = {\n list: (params?: ListEdgesParams) =>\n this.request<ListEdgesResponse>(`/edges?${new URLSearchParams(params as Record<string, string>)}`),\n create: (data: CreateEdgesRequest) =>\n this.request<CreateEdgesResponse>('/edges', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateEdgeRequest) =>\n this.request(`/edges/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteEdgeResponse>(`/edges/${id}`, { method: 'DELETE' }),\n };\n\n graph = {\n get: (params?: GetGraphParams) =>\n this.request<GetGraphResponse>(`/graph?${new URLSearchParams(params as Record<string, string>)}`),\n expand: (data: ExpandGraphRequest) =>\n this.request<ExpandGraphResponse>('/graph/expand', { method: 'POST', body: JSON.stringify(data) }),\n findPath: (data: FindPathRequest) =>\n this.request<FindPathResponse>('/graph/path', { method: 'POST', body: JSON.stringify(data) }),\n };\n\n analyze = {\n start: (data: AnalysisRequest) =>\n this.request<AnalysisResponse>('/analyze', { method: 'POST', body: JSON.stringify(data) }),\n getStatus: (jobId: string) => this.request<GetAnalysisJobResponse>(`/analyze/${jobId}`),\n cancel: (jobId: string) =>\n this.request<CancelAnalysisResponse>(`/analyze/${jobId}/cancel`, { method: 'POST' }),\n };\n\n settings = {\n get: () => this.request<GetSettingsResponse>('/settings'),\n update: (data: UpdateSettingsRequest) =>\n this.request<UpdateSettingsResponse>('/settings', { method: 'PATCH', body: JSON.stringify(data) }),\n reset: () => this.request<ResetSettingsResponse>('/settings/reset', { method: 'POST' }),\n };\n\n search = {\n semantic: (data: SemanticSearchRequest) =>\n this.request<SemanticSearchResponse>('/search', { method: 'POST', body: JSON.stringify(data) }),\n similar: (data: FindSimilarRequest) =>\n this.request<FindSimilarResponse>('/search/similar', { method: 'POST', body: JSON.stringify(data) }),\n };\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { NeuronSettings, NeuronConfig, NeuronSettingsUpdate } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport { DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '../core/types/settings';\nimport { EventBus } from '../core/events/event-bus';\nimport { NeuronApiClient } from './api-client';\nimport { NeuronContext, type ErrorContext } from './context';\n\nexport interface NeuronWebProviderProps {\n children: React.ReactNode;\n config: {\n openaiApiKey?: string;\n databaseUrl?: string;\n settings?: Partial<NeuronSettings>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n };\n}\n\nconst buildDefaultConfig = (overrides?: Partial<NeuronSettings>): NeuronConfig => ({\n instance: {\n name: 'default',\n version: '0.1.1',\n repoName: 'omi-neuron-web',\n },\n visualization: { ...DEFAULT_VISUALIZATION_SETTINGS, ...(overrides?.visualization ?? {}) },\n analysis: { ...DEFAULT_ANALYSIS_SETTINGS, ...(overrides?.analysis ?? {}) },\n nodeTypes: overrides?.nodeTypes ?? [],\n domains: overrides?.domains ?? [],\n relationshipTypes: overrides?.relationshipTypes ?? [],\n openai: {\n apiKey: '',\n },\n database: {\n mode: 'external',\n port: 5433,\n url: undefined,\n },\n api: {\n basePath: '/api/neuron',\n enableCors: false,\n },\n logging: {\n level: 'info',\n prettyPrint: true,\n },\n});\n\nexport function NeuronWebProvider({ children, config }: NeuronWebProviderProps): React.ReactElement {\n const [settings, setSettings] = useState<NeuronSettings>(() =>\n buildDefaultConfig(config.settings) as NeuronSettings\n );\n const [error, setError] = useState<Error | null>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n\n const resolvedConfig = useMemo(() => {\n const base = buildDefaultConfig(config.settings);\n return {\n ...base,\n openai: {\n apiKey: config.openaiApiKey ?? base.openai.apiKey,\n },\n database: {\n ...base.database,\n url: config.databaseUrl ?? base.database.url,\n },\n } as NeuronConfig;\n }, [config]);\n\n const apiClient = useMemo(() => new NeuronApiClient(resolvedConfig.api.basePath), [resolvedConfig]);\n const eventBus = useMemo(() => new EventBus(), []);\n\n useEffect(() => {\n eventBus.subscribeAll((event) => config.onEvent?.(event));\n }, [eventBus, config]);\n\n useEffect(() => {\n let mounted = true;\n apiClient\n .settings.get()\n .then((response) => {\n if (mounted) {\n setSettings(response.settings as NeuronSettings);\n setIsInitialized(true);\n }\n })\n .catch((err) => {\n setError(err as Error);\n config.onError?.(err as Error, { message: 'Failed to load settings' });\n });\n return () => {\n mounted = false;\n };\n }, [apiClient]);\n\n const updateSettings = async (updates: Partial<NeuronSettings>) => {\n const response = await apiClient.settings.update(updates as NeuronSettingsUpdate);\n setSettings(response.settings as NeuronSettings);\n };\n\n const resetSettings = async () => {\n const response = await apiClient.settings.reset();\n setSettings(response.settings as NeuronSettings);\n };\n\n const contextValue = useMemo(\n () => ({\n config: resolvedConfig,\n settings,\n api: apiClient,\n events: eventBus,\n isInitialized,\n error,\n updateSettings,\n resetSettings,\n onEvent: config.onEvent,\n onError: config.onError,\n }),\n [resolvedConfig, settings, apiClient, eventBus, isInitialized, error, config]\n );\n\n return <NeuronContext.Provider value={contextValue}>{children}</NeuronContext.Provider>;\n}\n","/**\n * omi-neuron-web\n * A drop-in Next.js library for data analysis and 3D visualization\n */\n\n// Core types\nexport * from './core/types';\nexport * from './core/schemas';\nexport * from './core/events';\nexport { DataProcessor } from './core/analysis/data-processor';\nexport { EmbeddingsService } from './core/analysis/embeddings-service';\nexport { ClusteringEngine } from './core/analysis/clustering-engine';\nexport { RelationshipEngine } from './core/analysis/relationship-engine';\nexport { ScoringEngine } from './core/analysis/scoring-engine';\nexport { AnalysisPipeline } from './core/analysis/pipeline';\nexport * from './storage';\nexport * from './config';\n\n// Visualization\nexport { NeuronWeb } from './visualization';\nexport type {\n NeuronWebProps,\n NeuronWebTheme,\n NeuronLayoutOptions,\n NeuronLayoutMode,\n ClickCardOptions,\n ClickZoomOptions,\n CardsMode,\n} from './visualization';\n\n// Re-export hooks (when implemented)\nexport * from './react/hooks';\n\n// Re-export provider (when implemented)\nexport { NeuronWebProvider } from './react/NeuronWebProvider';\n\n// Version\nexport const VERSION = '0.2.14';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omiron33/omi-neuron-web",
3
- "version": "0.2.13",
3
+ "version": "0.2.14",
4
4
  "description": "A drop-in Next.js library for data analysis and 3D visualization with OpenAI-powered insights",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",