@almadar/ui 2.46.1 → 2.47.0

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.
@@ -47,6 +47,7 @@ var core = require('@almadar/core');
47
47
  require('@tanstack/react-query');
48
48
  var runtime = require('@almadar/runtime');
49
49
 
50
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
50
51
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
51
52
 
52
53
  function _interopNamespace(e) {
@@ -2864,6 +2865,68 @@ var init_Avl3DLabel = __esm({
2864
2865
  Avl3DLabel.displayName = "Avl3DLabel";
2865
2866
  }
2866
2867
  });
2868
+
2869
+ // lib/logger.ts
2870
+ function getViteEnv(key) {
2871
+ try {
2872
+ const meta = ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)) });
2873
+ return meta?.env?.[key];
2874
+ } catch {
2875
+ return void 0;
2876
+ }
2877
+ }
2878
+ function envGet(key, viteKey) {
2879
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
2880
+ }
2881
+ function matchesNamespace(namespace) {
2882
+ if (DEBUG_FILTER.length === 0) return true;
2883
+ return DEBUG_FILTER.some((pattern) => {
2884
+ if (pattern === "*" || pattern === "almadar:*") return true;
2885
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
2886
+ return namespace === pattern;
2887
+ });
2888
+ }
2889
+ function createLogger(namespace) {
2890
+ const nsAllowed = matchesNamespace(namespace);
2891
+ const log4 = (level, message, data, correlationId) => {
2892
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
2893
+ if (level === "DEBUG" && !nsAllowed) return;
2894
+ const prefix = `[${namespace}]`;
2895
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
2896
+ switch (level) {
2897
+ case "DEBUG":
2898
+ console.debug(prefix, message, logData ?? "");
2899
+ break;
2900
+ case "INFO":
2901
+ console.info(prefix, message, logData ?? "");
2902
+ break;
2903
+ case "WARN":
2904
+ console.warn(prefix, message, logData ?? "");
2905
+ break;
2906
+ case "ERROR":
2907
+ console.error(prefix, message, logData ?? "");
2908
+ break;
2909
+ }
2910
+ };
2911
+ return {
2912
+ debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
2913
+ info: (msg, data, cid) => log4("INFO", msg, data, cid),
2914
+ warn: (msg, data, cid) => log4("WARN", msg, data, cid),
2915
+ error: (msg, data, cid) => log4("ERROR", msg, data, cid)
2916
+ };
2917
+ }
2918
+ var LEVEL_PRIORITY, ENV, VITE_ENV, NODE_ENV, CONFIGURED_LEVEL, MIN_PRIORITY, DEBUG_FILTER;
2919
+ var init_logger = __esm({
2920
+ "lib/logger.ts"() {
2921
+ LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
2922
+ ENV = typeof process !== "undefined" && process.env ? process.env : {};
2923
+ VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
2924
+ NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
2925
+ CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
2926
+ MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
2927
+ DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
2928
+ }
2929
+ });
2867
2930
  function EventBusProvider({ children, debug: debug2 = false }) {
2868
2931
  const listenersRef = React125.useRef(/* @__PURE__ */ new Map());
2869
2932
  const anyListenersRef = React125.useRef(/* @__PURE__ */ new Set());
@@ -2892,7 +2955,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2892
2955
  timestamp: Date.now()
2893
2956
  };
2894
2957
  const listeners6 = listenersRef.current.get(type);
2895
- const listenerCount = listeners6?.size ?? 0;
2958
+ const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
2959
+ busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
2896
2960
  if (debug2) {
2897
2961
  if (listenerCount > 0) {
2898
2962
  console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
@@ -2925,6 +2989,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2925
2989
  }
2926
2990
  const listeners6 = listenersRef.current.get(type);
2927
2991
  listeners6.add(listener);
2992
+ subLog.debug("subscribe", { type, totalListeners: listeners6.size });
2928
2993
  if (debug2) {
2929
2994
  console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
2930
2995
  }
@@ -2951,6 +3016,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2951
3016
  }, []);
2952
3017
  const onAny = React125.useCallback((listener) => {
2953
3018
  anyListenersRef.current.add(listener);
3019
+ subLog.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
2954
3020
  if (debug2) {
2955
3021
  console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
2956
3022
  }
@@ -2981,11 +3047,14 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2981
3047
  }, [contextValue2]);
2982
3048
  return /* @__PURE__ */ jsxRuntime.jsx(EventBusContext.Provider, { value: contextValue2, children });
2983
3049
  }
2984
- var EventBusContext;
3050
+ var busLog, subLog, EventBusContext;
2985
3051
  var init_EventBusProvider = __esm({
2986
3052
  "providers/EventBusProvider.tsx"() {
2987
3053
  "use client";
2988
3054
  init_useEventBus();
3055
+ init_logger();
3056
+ busLog = createLogger("almadar:eventbus");
3057
+ subLog = createLogger("almadar:eventbus:subscribe");
2989
3058
  EventBusContext = React125.createContext(null);
2990
3059
  }
2991
3060
  });
@@ -3027,11 +3096,14 @@ function useEmitEvent() {
3027
3096
  [eventBus]
3028
3097
  );
3029
3098
  }
3030
- var fallbackListeners, fallbackAnyListeners, fallbackEventBus;
3099
+ var log, subLog2, fallbackListeners, fallbackAnyListeners, fallbackEventBus;
3031
3100
  var init_useEventBus = __esm({
3032
3101
  "hooks/useEventBus.ts"() {
3033
3102
  "use client";
3034
3103
  init_EventBusProvider();
3104
+ init_logger();
3105
+ log = createLogger("almadar:eventbus");
3106
+ subLog2 = createLogger("almadar:eventbus:subscribe");
3035
3107
  fallbackListeners = /* @__PURE__ */ new Map();
3036
3108
  fallbackAnyListeners = /* @__PURE__ */ new Set();
3037
3109
  fallbackEventBus = {
@@ -3042,6 +3114,7 @@ var init_useEventBus = __esm({
3042
3114
  timestamp: Date.now()
3043
3115
  };
3044
3116
  const handlers = fallbackListeners.get(type);
3117
+ log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
3045
3118
  if (handlers) {
3046
3119
  handlers.forEach((handler) => {
3047
3120
  try {
@@ -3064,6 +3137,7 @@ var init_useEventBus = __esm({
3064
3137
  fallbackListeners.set(type, /* @__PURE__ */ new Set());
3065
3138
  }
3066
3139
  fallbackListeners.get(type).add(listener);
3140
+ subLog2.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
3067
3141
  return () => {
3068
3142
  const handlers = fallbackListeners.get(type);
3069
3143
  if (handlers) {
@@ -3087,6 +3161,7 @@ var init_useEventBus = __esm({
3087
3161
  },
3088
3162
  onAny: (listener) => {
3089
3163
  fallbackAnyListeners.add(listener);
3164
+ subLog2.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
3090
3165
  return () => {
3091
3166
  fallbackAnyListeners.delete(listener);
3092
3167
  };
@@ -13338,6 +13413,10 @@ function useTheme() {
13338
13413
  }
13339
13414
  return context;
13340
13415
  }
13416
+
13417
+ // providers/EntityStoreProvider.tsx
13418
+ init_logger();
13419
+ var storeLog = createLogger("almadar:entity:store");
13341
13420
  var store = /* @__PURE__ */ new Map();
13342
13421
  var storeListeners = /* @__PURE__ */ new Set();
13343
13422
  var watchCallbacks = /* @__PURE__ */ new Map();
@@ -13377,7 +13456,9 @@ function setAll(entityType, records) {
13377
13456
  }
13378
13457
  }
13379
13458
  const prev = store.get(entityType);
13380
- store.set(entityType, { entities, ids, version: (prev?.version ?? 0) + 1 });
13459
+ const newVersion = (prev?.version ?? 0) + 1;
13460
+ store.set(entityType, { entities, ids, version: newVersion });
13461
+ storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
13381
13462
  notifyListeners(entityType, prev);
13382
13463
  }
13383
13464
  function upsertOne(entityType, record) {
@@ -13389,6 +13470,7 @@ function upsertOne(entityType, record) {
13389
13470
  if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
13390
13471
  snapshot.version++;
13391
13472
  store.set(entityType, snapshot);
13473
+ storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
13392
13474
  notifyListeners(entityType, prev);
13393
13475
  }
13394
13476
  function addOne(entityType, record) {
@@ -13405,6 +13487,7 @@ function updateOne(entityType, id, changes) {
13405
13487
  snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
13406
13488
  snapshot.version++;
13407
13489
  store.set(entityType, snapshot);
13490
+ storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
13408
13491
  notifyListeners(entityType, prev);
13409
13492
  }
13410
13493
  function removeOne(entityType, id) {
@@ -13418,6 +13501,7 @@ function removeOne(entityType, id) {
13418
13501
  snapshot.entities.delete(id);
13419
13502
  snapshot.version++;
13420
13503
  store.set(entityType, snapshot);
13504
+ storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
13421
13505
  notifyListeners(entityType, prev);
13422
13506
  }
13423
13507
  function getSnapshot(entityType) {
@@ -20213,6 +20297,8 @@ var LoadingState = ({
20213
20297
  LoadingState.displayName = "LoadingState";
20214
20298
 
20215
20299
  // lib/verificationRegistry.ts
20300
+ init_logger();
20301
+ var log2 = createLogger("almadar:bridge");
20216
20302
  var MAX_TRANSITIONS = 500;
20217
20303
  function getState() {
20218
20304
  if (typeof window !== "undefined") {
@@ -20245,6 +20331,7 @@ function recordTransition(trace) {
20245
20331
  ...trace,
20246
20332
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
20247
20333
  };
20334
+ log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
20248
20335
  getState().transitions.push(entry);
20249
20336
  if (getState().transitions.length > MAX_TRANSITIONS) {
20250
20337
  getState().transitions.shift();
@@ -20376,10 +20463,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
20376
20463
  }
20377
20464
  function bindEventBus(eventBus) {
20378
20465
  if (typeof window === "undefined") return;
20466
+ log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
20379
20467
  exposeOnWindow();
20380
20468
  if (window.__orbitalVerification) {
20381
20469
  window.__orbitalVerification.sendEvent = (event, payload) => {
20382
20470
  const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
20471
+ log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
20383
20472
  eventBus.emit(prefixed, payload);
20384
20473
  };
20385
20474
  const eventLog = [];
@@ -41429,7 +41518,7 @@ function getAllEvents(traits2) {
41429
41518
  }
41430
41519
  function EventDispatcherTab({ traits: traits2, schema }) {
41431
41520
  const eventBus = useEventBus();
41432
- const [log, setLog] = React125__namespace.useState([]);
41521
+ const [log4, setLog] = React125__namespace.useState([]);
41433
41522
  const prevStatesRef = React125__namespace.useRef(/* @__PURE__ */ new Map());
41434
41523
  React125__namespace.useEffect(() => {
41435
41524
  for (const trait of traits2) {
@@ -41493,9 +41582,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
41493
41582
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
41494
41583
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
41495
41584
  ] }),
41496
- log.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41585
+ log4.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41497
41586
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
41498
- /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
41587
+ /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
41499
41588
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
41500
41589
  " ",
41501
41590
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -46121,6 +46210,8 @@ UISlotRenderer.displayName = "UISlotRenderer";
46121
46210
 
46122
46211
  // providers/VerificationProvider.tsx
46123
46212
  init_useEventBus();
46213
+ init_logger();
46214
+ var log3 = createLogger("almadar:verify");
46124
46215
  var DISPATCH_SUFFIX = ":DISPATCH";
46125
46216
  var SUCCESS_SUFFIX = ":SUCCESS";
46126
46217
  var ERROR_SUFFIX = ":ERROR";
@@ -46166,6 +46257,7 @@ function VerificationProvider({
46166
46257
  const unsub = eventBus.onAny((evt) => {
46167
46258
  const parsed = parseLifecycleEvent(evt.type);
46168
46259
  if (!parsed) return;
46260
+ log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
46169
46261
  const payload = evt.payload ?? {};
46170
46262
  if (parsed.kind === "dispatch") {
46171
46263
  const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
@@ -46218,6 +46310,7 @@ function VerificationProvider({
46218
46310
  },
46219
46311
  timestamp: Date.now()
46220
46312
  });
46313
+ log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
46221
46314
  } else if (parsed.kind === "error" && parsed.event) {
46222
46315
  const key = `${parsed.traitName}:${parsed.event}`;
46223
46316
  const pending = pendingRef.current.get(key);
@@ -46247,6 +46340,7 @@ function VerificationProvider({
46247
46340
  },
46248
46341
  timestamp: Date.now()
46249
46342
  });
46343
+ log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
46250
46344
  }
46251
46345
  });
46252
46346
  registerCheck(
package/dist/avl/index.js CHANGED
@@ -2817,6 +2817,68 @@ var init_Avl3DLabel = __esm({
2817
2817
  Avl3DLabel.displayName = "Avl3DLabel";
2818
2818
  }
2819
2819
  });
2820
+
2821
+ // lib/logger.ts
2822
+ function getViteEnv(key) {
2823
+ try {
2824
+ const meta = import.meta;
2825
+ return meta?.env?.[key];
2826
+ } catch {
2827
+ return void 0;
2828
+ }
2829
+ }
2830
+ function envGet(key, viteKey) {
2831
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
2832
+ }
2833
+ function matchesNamespace(namespace) {
2834
+ if (DEBUG_FILTER.length === 0) return true;
2835
+ return DEBUG_FILTER.some((pattern) => {
2836
+ if (pattern === "*" || pattern === "almadar:*") return true;
2837
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
2838
+ return namespace === pattern;
2839
+ });
2840
+ }
2841
+ function createLogger(namespace) {
2842
+ const nsAllowed = matchesNamespace(namespace);
2843
+ const log4 = (level, message, data, correlationId) => {
2844
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
2845
+ if (level === "DEBUG" && !nsAllowed) return;
2846
+ const prefix = `[${namespace}]`;
2847
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
2848
+ switch (level) {
2849
+ case "DEBUG":
2850
+ console.debug(prefix, message, logData ?? "");
2851
+ break;
2852
+ case "INFO":
2853
+ console.info(prefix, message, logData ?? "");
2854
+ break;
2855
+ case "WARN":
2856
+ console.warn(prefix, message, logData ?? "");
2857
+ break;
2858
+ case "ERROR":
2859
+ console.error(prefix, message, logData ?? "");
2860
+ break;
2861
+ }
2862
+ };
2863
+ return {
2864
+ debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
2865
+ info: (msg, data, cid) => log4("INFO", msg, data, cid),
2866
+ warn: (msg, data, cid) => log4("WARN", msg, data, cid),
2867
+ error: (msg, data, cid) => log4("ERROR", msg, data, cid)
2868
+ };
2869
+ }
2870
+ var LEVEL_PRIORITY, ENV, VITE_ENV, NODE_ENV, CONFIGURED_LEVEL, MIN_PRIORITY, DEBUG_FILTER;
2871
+ var init_logger = __esm({
2872
+ "lib/logger.ts"() {
2873
+ LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
2874
+ ENV = typeof process !== "undefined" && process.env ? process.env : {};
2875
+ VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
2876
+ NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
2877
+ CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
2878
+ MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
2879
+ DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
2880
+ }
2881
+ });
2820
2882
  function EventBusProvider({ children, debug: debug2 = false }) {
2821
2883
  const listenersRef = useRef(/* @__PURE__ */ new Map());
2822
2884
  const anyListenersRef = useRef(/* @__PURE__ */ new Set());
@@ -2845,7 +2907,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2845
2907
  timestamp: Date.now()
2846
2908
  };
2847
2909
  const listeners6 = listenersRef.current.get(type);
2848
- const listenerCount = listeners6?.size ?? 0;
2910
+ const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
2911
+ busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
2849
2912
  if (debug2) {
2850
2913
  if (listenerCount > 0) {
2851
2914
  console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
@@ -2878,6 +2941,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2878
2941
  }
2879
2942
  const listeners6 = listenersRef.current.get(type);
2880
2943
  listeners6.add(listener);
2944
+ subLog.debug("subscribe", { type, totalListeners: listeners6.size });
2881
2945
  if (debug2) {
2882
2946
  console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
2883
2947
  }
@@ -2904,6 +2968,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2904
2968
  }, []);
2905
2969
  const onAny = useCallback((listener) => {
2906
2970
  anyListenersRef.current.add(listener);
2971
+ subLog.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
2907
2972
  if (debug2) {
2908
2973
  console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
2909
2974
  }
@@ -2934,11 +2999,14 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2934
2999
  }, [contextValue2]);
2935
3000
  return /* @__PURE__ */ jsx(EventBusContext.Provider, { value: contextValue2, children });
2936
3001
  }
2937
- var EventBusContext;
3002
+ var busLog, subLog, EventBusContext;
2938
3003
  var init_EventBusProvider = __esm({
2939
3004
  "providers/EventBusProvider.tsx"() {
2940
3005
  "use client";
2941
3006
  init_useEventBus();
3007
+ init_logger();
3008
+ busLog = createLogger("almadar:eventbus");
3009
+ subLog = createLogger("almadar:eventbus:subscribe");
2942
3010
  EventBusContext = createContext(null);
2943
3011
  }
2944
3012
  });
@@ -2980,11 +3048,14 @@ function useEmitEvent() {
2980
3048
  [eventBus]
2981
3049
  );
2982
3050
  }
2983
- var fallbackListeners, fallbackAnyListeners, fallbackEventBus;
3051
+ var log, subLog2, fallbackListeners, fallbackAnyListeners, fallbackEventBus;
2984
3052
  var init_useEventBus = __esm({
2985
3053
  "hooks/useEventBus.ts"() {
2986
3054
  "use client";
2987
3055
  init_EventBusProvider();
3056
+ init_logger();
3057
+ log = createLogger("almadar:eventbus");
3058
+ subLog2 = createLogger("almadar:eventbus:subscribe");
2988
3059
  fallbackListeners = /* @__PURE__ */ new Map();
2989
3060
  fallbackAnyListeners = /* @__PURE__ */ new Set();
2990
3061
  fallbackEventBus = {
@@ -2995,6 +3066,7 @@ var init_useEventBus = __esm({
2995
3066
  timestamp: Date.now()
2996
3067
  };
2997
3068
  const handlers = fallbackListeners.get(type);
3069
+ log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
2998
3070
  if (handlers) {
2999
3071
  handlers.forEach((handler) => {
3000
3072
  try {
@@ -3017,6 +3089,7 @@ var init_useEventBus = __esm({
3017
3089
  fallbackListeners.set(type, /* @__PURE__ */ new Set());
3018
3090
  }
3019
3091
  fallbackListeners.get(type).add(listener);
3092
+ subLog2.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
3020
3093
  return () => {
3021
3094
  const handlers = fallbackListeners.get(type);
3022
3095
  if (handlers) {
@@ -3040,6 +3113,7 @@ var init_useEventBus = __esm({
3040
3113
  },
3041
3114
  onAny: (listener) => {
3042
3115
  fallbackAnyListeners.add(listener);
3116
+ subLog2.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
3043
3117
  return () => {
3044
3118
  fallbackAnyListeners.delete(listener);
3045
3119
  };
@@ -13291,6 +13365,10 @@ function useTheme() {
13291
13365
  }
13292
13366
  return context;
13293
13367
  }
13368
+
13369
+ // providers/EntityStoreProvider.tsx
13370
+ init_logger();
13371
+ var storeLog = createLogger("almadar:entity:store");
13294
13372
  var store = /* @__PURE__ */ new Map();
13295
13373
  var storeListeners = /* @__PURE__ */ new Set();
13296
13374
  var watchCallbacks = /* @__PURE__ */ new Map();
@@ -13330,7 +13408,9 @@ function setAll(entityType, records) {
13330
13408
  }
13331
13409
  }
13332
13410
  const prev = store.get(entityType);
13333
- store.set(entityType, { entities, ids, version: (prev?.version ?? 0) + 1 });
13411
+ const newVersion = (prev?.version ?? 0) + 1;
13412
+ store.set(entityType, { entities, ids, version: newVersion });
13413
+ storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
13334
13414
  notifyListeners(entityType, prev);
13335
13415
  }
13336
13416
  function upsertOne(entityType, record) {
@@ -13342,6 +13422,7 @@ function upsertOne(entityType, record) {
13342
13422
  if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
13343
13423
  snapshot.version++;
13344
13424
  store.set(entityType, snapshot);
13425
+ storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
13345
13426
  notifyListeners(entityType, prev);
13346
13427
  }
13347
13428
  function addOne(entityType, record) {
@@ -13358,6 +13439,7 @@ function updateOne(entityType, id, changes) {
13358
13439
  snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
13359
13440
  snapshot.version++;
13360
13441
  store.set(entityType, snapshot);
13442
+ storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
13361
13443
  notifyListeners(entityType, prev);
13362
13444
  }
13363
13445
  function removeOne(entityType, id) {
@@ -13371,6 +13453,7 @@ function removeOne(entityType, id) {
13371
13453
  snapshot.entities.delete(id);
13372
13454
  snapshot.version++;
13373
13455
  store.set(entityType, snapshot);
13456
+ storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
13374
13457
  notifyListeners(entityType, prev);
13375
13458
  }
13376
13459
  function getSnapshot(entityType) {
@@ -20166,6 +20249,8 @@ var LoadingState = ({
20166
20249
  LoadingState.displayName = "LoadingState";
20167
20250
 
20168
20251
  // lib/verificationRegistry.ts
20252
+ init_logger();
20253
+ var log2 = createLogger("almadar:bridge");
20169
20254
  var MAX_TRANSITIONS = 500;
20170
20255
  function getState() {
20171
20256
  if (typeof window !== "undefined") {
@@ -20198,6 +20283,7 @@ function recordTransition(trace) {
20198
20283
  ...trace,
20199
20284
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
20200
20285
  };
20286
+ log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
20201
20287
  getState().transitions.push(entry);
20202
20288
  if (getState().transitions.length > MAX_TRANSITIONS) {
20203
20289
  getState().transitions.shift();
@@ -20329,10 +20415,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
20329
20415
  }
20330
20416
  function bindEventBus(eventBus) {
20331
20417
  if (typeof window === "undefined") return;
20418
+ log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
20332
20419
  exposeOnWindow();
20333
20420
  if (window.__orbitalVerification) {
20334
20421
  window.__orbitalVerification.sendEvent = (event, payload) => {
20335
20422
  const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
20423
+ log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
20336
20424
  eventBus.emit(prefixed, payload);
20337
20425
  };
20338
20426
  const eventLog = [];
@@ -41382,7 +41470,7 @@ function getAllEvents(traits2) {
41382
41470
  }
41383
41471
  function EventDispatcherTab({ traits: traits2, schema }) {
41384
41472
  const eventBus = useEventBus();
41385
- const [log, setLog] = React125.useState([]);
41473
+ const [log4, setLog] = React125.useState([]);
41386
41474
  const prevStatesRef = React125.useRef(/* @__PURE__ */ new Map());
41387
41475
  React125.useEffect(() => {
41388
41476
  for (const trait of traits2) {
@@ -41446,9 +41534,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
41446
41534
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
41447
41535
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
41448
41536
  ] }),
41449
- log.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
41537
+ log4.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
41450
41538
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
41451
- /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
41539
+ /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
41452
41540
  /* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
41453
41541
  " ",
41454
41542
  /* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -46074,6 +46162,8 @@ UISlotRenderer.displayName = "UISlotRenderer";
46074
46162
 
46075
46163
  // providers/VerificationProvider.tsx
46076
46164
  init_useEventBus();
46165
+ init_logger();
46166
+ var log3 = createLogger("almadar:verify");
46077
46167
  var DISPATCH_SUFFIX = ":DISPATCH";
46078
46168
  var SUCCESS_SUFFIX = ":SUCCESS";
46079
46169
  var ERROR_SUFFIX = ":ERROR";
@@ -46119,6 +46209,7 @@ function VerificationProvider({
46119
46209
  const unsub = eventBus.onAny((evt) => {
46120
46210
  const parsed = parseLifecycleEvent(evt.type);
46121
46211
  if (!parsed) return;
46212
+ log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
46122
46213
  const payload = evt.payload ?? {};
46123
46214
  if (parsed.kind === "dispatch") {
46124
46215
  const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
@@ -46171,6 +46262,7 @@ function VerificationProvider({
46171
46262
  },
46172
46263
  timestamp: Date.now()
46173
46264
  });
46265
+ log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
46174
46266
  } else if (parsed.kind === "error" && parsed.event) {
46175
46267
  const key = `${parsed.traitName}:${parsed.event}`;
46176
46268
  const pending = pendingRef.current.get(key);
@@ -46200,6 +46292,7 @@ function VerificationProvider({
46200
46292
  },
46201
46293
  timestamp: Date.now()
46202
46294
  });
46295
+ log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
46203
46296
  }
46204
46297
  });
46205
46298
  registerCheck(