@almadar/ui 2.46.1 → 2.47.1
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/dist/avl/index.cjs +101 -7
- package/dist/avl/index.js +100 -7
- package/dist/components/index.cjs +98 -66
- package/dist/components/index.js +97 -66
- package/dist/components/organisms/game/three/index.cjs +65 -0
- package/dist/components/organisms/game/three/index.js +64 -0
- package/dist/docs/index.cjs +65 -0
- package/dist/docs/index.js +64 -0
- package/dist/hooks/index.cjs +87 -62
- package/dist/hooks/index.js +86 -62
- package/dist/lib/index.cjs +68 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +66 -1
- package/dist/lib/logger.d.ts +16 -0
- package/dist/marketing/index.cjs +65 -0
- package/dist/marketing/index.js +64 -0
- package/dist/providers/index.cjs +84 -2
- package/dist/providers/index.js +83 -2
- package/dist/runtime/index.cjs +89 -5
- package/dist/runtime/index.js +88 -5
- package/package.json +1 -1
package/dist/runtime/index.cjs
CHANGED
|
@@ -41,6 +41,7 @@ var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml')
|
|
|
41
41
|
var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go');
|
|
42
42
|
var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql');
|
|
43
43
|
|
|
44
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
44
45
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
45
46
|
|
|
46
47
|
function _interopNamespace(e) {
|
|
@@ -90,6 +91,67 @@ var langGraphql__default = /*#__PURE__*/_interopDefault(langGraphql);
|
|
|
90
91
|
var __defProp = Object.defineProperty;
|
|
91
92
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
92
93
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
94
|
+
|
|
95
|
+
// lib/logger.ts
|
|
96
|
+
var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
|
|
97
|
+
var ENV = typeof process !== "undefined" && process.env ? process.env : {};
|
|
98
|
+
var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
|
|
99
|
+
function getViteEnv(key) {
|
|
100
|
+
try {
|
|
101
|
+
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)) });
|
|
102
|
+
return meta?.env?.[key];
|
|
103
|
+
} catch {
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function envGet(key, viteKey) {
|
|
108
|
+
return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
|
|
109
|
+
}
|
|
110
|
+
var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
|
|
111
|
+
var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
|
|
112
|
+
var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
|
|
113
|
+
var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
|
|
114
|
+
function matchesNamespace(namespace) {
|
|
115
|
+
if (DEBUG_FILTER.length === 0) return true;
|
|
116
|
+
return DEBUG_FILTER.some((pattern) => {
|
|
117
|
+
if (pattern === "*" || pattern === "almadar:*") return true;
|
|
118
|
+
if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
|
|
119
|
+
return namespace === pattern;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function createLogger(namespace) {
|
|
123
|
+
const nsAllowed = matchesNamespace(namespace);
|
|
124
|
+
const log4 = (level, message, data, correlationId) => {
|
|
125
|
+
if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
|
|
126
|
+
if (level === "DEBUG" && !nsAllowed) return;
|
|
127
|
+
const prefix = `[${namespace}]`;
|
|
128
|
+
const logData = correlationId ? { ...data, cid: correlationId } : data;
|
|
129
|
+
switch (level) {
|
|
130
|
+
case "DEBUG":
|
|
131
|
+
console.debug(prefix, message, logData ?? "");
|
|
132
|
+
break;
|
|
133
|
+
case "INFO":
|
|
134
|
+
console.info(prefix, message, logData ?? "");
|
|
135
|
+
break;
|
|
136
|
+
case "WARN":
|
|
137
|
+
console.warn(prefix, message, logData ?? "");
|
|
138
|
+
break;
|
|
139
|
+
case "ERROR":
|
|
140
|
+
console.error(prefix, message, logData ?? "");
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
return {
|
|
145
|
+
debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
|
|
146
|
+
info: (msg, data, cid) => log4("INFO", msg, data, cid),
|
|
147
|
+
warn: (msg, data, cid) => log4("WARN", msg, data, cid),
|
|
148
|
+
error: (msg, data, cid) => log4("ERROR", msg, data, cid)
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// hooks/useEventBus.ts
|
|
153
|
+
var log = createLogger("almadar:eventbus");
|
|
154
|
+
var subLog = createLogger("almadar:eventbus:subscribe");
|
|
93
155
|
function setGlobalEventBus(bus) {
|
|
94
156
|
if (typeof window !== "undefined") {
|
|
95
157
|
window.__kflowEventBus = bus;
|
|
@@ -111,6 +173,7 @@ var fallbackEventBus = {
|
|
|
111
173
|
timestamp: Date.now()
|
|
112
174
|
};
|
|
113
175
|
const handlers = fallbackListeners.get(type);
|
|
176
|
+
log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
|
|
114
177
|
if (handlers) {
|
|
115
178
|
handlers.forEach((handler) => {
|
|
116
179
|
try {
|
|
@@ -133,6 +196,7 @@ var fallbackEventBus = {
|
|
|
133
196
|
fallbackListeners.set(type, /* @__PURE__ */ new Set());
|
|
134
197
|
}
|
|
135
198
|
fallbackListeners.get(type).add(listener);
|
|
199
|
+
subLog.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
|
|
136
200
|
return () => {
|
|
137
201
|
const handlers = fallbackListeners.get(type);
|
|
138
202
|
if (handlers) {
|
|
@@ -156,6 +220,7 @@ var fallbackEventBus = {
|
|
|
156
220
|
},
|
|
157
221
|
onAny: (listener) => {
|
|
158
222
|
fallbackAnyListeners.add(listener);
|
|
223
|
+
subLog.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
|
|
159
224
|
return () => {
|
|
160
225
|
fallbackAnyListeners.delete(listener);
|
|
161
226
|
};
|
|
@@ -814,6 +879,7 @@ function subscribeToTraitChanges(listener) {
|
|
|
814
879
|
}
|
|
815
880
|
|
|
816
881
|
// lib/verificationRegistry.ts
|
|
882
|
+
var log2 = createLogger("almadar:bridge");
|
|
817
883
|
var MAX_TRANSITIONS = 500;
|
|
818
884
|
function getState() {
|
|
819
885
|
if (typeof window !== "undefined") {
|
|
@@ -846,6 +912,7 @@ function recordTransition(trace) {
|
|
|
846
912
|
...trace,
|
|
847
913
|
id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
|
|
848
914
|
};
|
|
915
|
+
log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
|
|
849
916
|
getState().transitions.push(entry);
|
|
850
917
|
if (getState().transitions.length > MAX_TRANSITIONS) {
|
|
851
918
|
getState().transitions.shift();
|
|
@@ -977,10 +1044,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
|
|
|
977
1044
|
}
|
|
978
1045
|
function bindEventBus(eventBus) {
|
|
979
1046
|
if (typeof window === "undefined") return;
|
|
1047
|
+
log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
|
|
980
1048
|
exposeOnWindow();
|
|
981
1049
|
if (window.__orbitalVerification) {
|
|
982
1050
|
window.__orbitalVerification.sendEvent = (event, payload) => {
|
|
983
1051
|
const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
|
|
1052
|
+
log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
|
|
984
1053
|
eventBus.emit(prefixed, payload);
|
|
985
1054
|
};
|
|
986
1055
|
const eventLog = [];
|
|
@@ -2132,6 +2201,7 @@ function useTheme() {
|
|
|
2132
2201
|
}
|
|
2133
2202
|
return context;
|
|
2134
2203
|
}
|
|
2204
|
+
var storeLog = createLogger("almadar:entity:store");
|
|
2135
2205
|
var store = /* @__PURE__ */ new Map();
|
|
2136
2206
|
var storeListeners = /* @__PURE__ */ new Set();
|
|
2137
2207
|
var watchCallbacks = /* @__PURE__ */ new Map();
|
|
@@ -2171,7 +2241,9 @@ function setAll(entityType, records) {
|
|
|
2171
2241
|
}
|
|
2172
2242
|
}
|
|
2173
2243
|
const prev = store.get(entityType);
|
|
2174
|
-
|
|
2244
|
+
const newVersion = (prev?.version ?? 0) + 1;
|
|
2245
|
+
store.set(entityType, { entities, ids, version: newVersion });
|
|
2246
|
+
storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
|
|
2175
2247
|
notifyListeners3(entityType, prev);
|
|
2176
2248
|
}
|
|
2177
2249
|
function upsertOne(entityType, record) {
|
|
@@ -2183,6 +2255,7 @@ function upsertOne(entityType, record) {
|
|
|
2183
2255
|
if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
|
|
2184
2256
|
snapshot.version++;
|
|
2185
2257
|
store.set(entityType, snapshot);
|
|
2258
|
+
storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
|
|
2186
2259
|
notifyListeners3(entityType, prev);
|
|
2187
2260
|
}
|
|
2188
2261
|
function addOne(entityType, record) {
|
|
@@ -2199,6 +2272,7 @@ function updateOne(entityType, id, changes) {
|
|
|
2199
2272
|
snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
|
|
2200
2273
|
snapshot.version++;
|
|
2201
2274
|
store.set(entityType, snapshot);
|
|
2275
|
+
storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
|
|
2202
2276
|
notifyListeners3(entityType, prev);
|
|
2203
2277
|
}
|
|
2204
2278
|
function removeOne(entityType, id) {
|
|
@@ -2212,6 +2286,7 @@ function removeOne(entityType, id) {
|
|
|
2212
2286
|
snapshot.entities.delete(id);
|
|
2213
2287
|
snapshot.version++;
|
|
2214
2288
|
store.set(entityType, snapshot);
|
|
2289
|
+
storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
|
|
2215
2290
|
notifyListeners3(entityType, prev);
|
|
2216
2291
|
}
|
|
2217
2292
|
function getSnapshot3(entityType) {
|
|
@@ -2260,6 +2335,8 @@ function useEntityStore() {
|
|
|
2260
2335
|
function EntityStoreProvider({ children }) {
|
|
2261
2336
|
return /* @__PURE__ */ jsxRuntime.jsx(EntityStoreContext.Provider, { value: contextValue, children });
|
|
2262
2337
|
}
|
|
2338
|
+
var busLog = createLogger("almadar:eventbus");
|
|
2339
|
+
var subLog2 = createLogger("almadar:eventbus:subscribe");
|
|
2263
2340
|
var EventBusContext2 = React117.createContext(null);
|
|
2264
2341
|
function EventBusProvider({ children, debug: debug2 = false }) {
|
|
2265
2342
|
const listenersRef = React117.useRef(/* @__PURE__ */ new Map());
|
|
@@ -2289,7 +2366,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2289
2366
|
timestamp: Date.now()
|
|
2290
2367
|
};
|
|
2291
2368
|
const listeners6 = listenersRef.current.get(type);
|
|
2292
|
-
const listenerCount = listeners6?.size ?? 0;
|
|
2369
|
+
const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
|
|
2370
|
+
busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
|
|
2293
2371
|
if (debug2) {
|
|
2294
2372
|
if (listenerCount > 0) {
|
|
2295
2373
|
console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
|
|
@@ -2322,6 +2400,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2322
2400
|
}
|
|
2323
2401
|
const listeners6 = listenersRef.current.get(type);
|
|
2324
2402
|
listeners6.add(listener);
|
|
2403
|
+
subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
|
|
2325
2404
|
if (debug2) {
|
|
2326
2405
|
console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
|
|
2327
2406
|
}
|
|
@@ -2348,6 +2427,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2348
2427
|
}, []);
|
|
2349
2428
|
const onAny = React117.useCallback((listener) => {
|
|
2350
2429
|
anyListenersRef.current.add(listener);
|
|
2430
|
+
subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
|
|
2351
2431
|
if (debug2) {
|
|
2352
2432
|
console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
|
|
2353
2433
|
}
|
|
@@ -28492,7 +28572,7 @@ function getAllEvents(traits2) {
|
|
|
28492
28572
|
}
|
|
28493
28573
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
28494
28574
|
const eventBus = useEventBus();
|
|
28495
|
-
const [
|
|
28575
|
+
const [log4, setLog] = React117__namespace.useState([]);
|
|
28496
28576
|
const prevStatesRef = React117__namespace.useRef(/* @__PURE__ */ new Map());
|
|
28497
28577
|
React117__namespace.useEffect(() => {
|
|
28498
28578
|
for (const trait of traits2) {
|
|
@@ -28556,9 +28636,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
28556
28636
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
|
|
28557
28637
|
/* @__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)) })
|
|
28558
28638
|
] }),
|
|
28559
|
-
|
|
28639
|
+
log4.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
28560
28640
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
|
|
28561
|
-
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children:
|
|
28641
|
+
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
28562
28642
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
28563
28643
|
" ",
|
|
28564
28644
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
|
|
@@ -33097,6 +33177,7 @@ function UISlotRenderer({
|
|
|
33097
33177
|
return wrapped;
|
|
33098
33178
|
}
|
|
33099
33179
|
UISlotRenderer.displayName = "UISlotRenderer";
|
|
33180
|
+
var log3 = createLogger("almadar:verify");
|
|
33100
33181
|
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
33101
33182
|
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
33102
33183
|
var ERROR_SUFFIX = ":ERROR";
|
|
@@ -33142,6 +33223,7 @@ function VerificationProvider({
|
|
|
33142
33223
|
const unsub = eventBus.onAny((evt) => {
|
|
33143
33224
|
const parsed = parseLifecycleEvent(evt.type);
|
|
33144
33225
|
if (!parsed) return;
|
|
33226
|
+
log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
|
|
33145
33227
|
const payload = evt.payload ?? {};
|
|
33146
33228
|
if (parsed.kind === "dispatch") {
|
|
33147
33229
|
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
@@ -33194,6 +33276,7 @@ function VerificationProvider({
|
|
|
33194
33276
|
},
|
|
33195
33277
|
timestamp: Date.now()
|
|
33196
33278
|
});
|
|
33279
|
+
log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
|
|
33197
33280
|
} else if (parsed.kind === "error" && parsed.event) {
|
|
33198
33281
|
const key = `${parsed.traitName}:${parsed.event}`;
|
|
33199
33282
|
const pending = pendingRef.current.get(key);
|
|
@@ -33223,6 +33306,7 @@ function VerificationProvider({
|
|
|
33223
33306
|
},
|
|
33224
33307
|
timestamp: Date.now()
|
|
33225
33308
|
});
|
|
33309
|
+
log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
|
|
33226
33310
|
}
|
|
33227
33311
|
});
|
|
33228
33312
|
registerCheck(
|
package/dist/runtime/index.js
CHANGED
|
@@ -44,6 +44,67 @@ import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graph
|
|
|
44
44
|
var __defProp = Object.defineProperty;
|
|
45
45
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
46
46
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
47
|
+
|
|
48
|
+
// lib/logger.ts
|
|
49
|
+
var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
|
|
50
|
+
var ENV = typeof process !== "undefined" && process.env ? process.env : {};
|
|
51
|
+
var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
|
|
52
|
+
function getViteEnv(key) {
|
|
53
|
+
try {
|
|
54
|
+
const meta = import.meta;
|
|
55
|
+
return meta?.env?.[key];
|
|
56
|
+
} catch {
|
|
57
|
+
return void 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function envGet(key, viteKey) {
|
|
61
|
+
return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
|
|
62
|
+
}
|
|
63
|
+
var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
|
|
64
|
+
var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
|
|
65
|
+
var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
|
|
66
|
+
var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
|
|
67
|
+
function matchesNamespace(namespace) {
|
|
68
|
+
if (DEBUG_FILTER.length === 0) return true;
|
|
69
|
+
return DEBUG_FILTER.some((pattern) => {
|
|
70
|
+
if (pattern === "*" || pattern === "almadar:*") return true;
|
|
71
|
+
if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
|
|
72
|
+
return namespace === pattern;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function createLogger(namespace) {
|
|
76
|
+
const nsAllowed = matchesNamespace(namespace);
|
|
77
|
+
const log4 = (level, message, data, correlationId) => {
|
|
78
|
+
if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
|
|
79
|
+
if (level === "DEBUG" && !nsAllowed) return;
|
|
80
|
+
const prefix = `[${namespace}]`;
|
|
81
|
+
const logData = correlationId ? { ...data, cid: correlationId } : data;
|
|
82
|
+
switch (level) {
|
|
83
|
+
case "DEBUG":
|
|
84
|
+
console.debug(prefix, message, logData ?? "");
|
|
85
|
+
break;
|
|
86
|
+
case "INFO":
|
|
87
|
+
console.info(prefix, message, logData ?? "");
|
|
88
|
+
break;
|
|
89
|
+
case "WARN":
|
|
90
|
+
console.warn(prefix, message, logData ?? "");
|
|
91
|
+
break;
|
|
92
|
+
case "ERROR":
|
|
93
|
+
console.error(prefix, message, logData ?? "");
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
|
|
99
|
+
info: (msg, data, cid) => log4("INFO", msg, data, cid),
|
|
100
|
+
warn: (msg, data, cid) => log4("WARN", msg, data, cid),
|
|
101
|
+
error: (msg, data, cid) => log4("ERROR", msg, data, cid)
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// hooks/useEventBus.ts
|
|
106
|
+
var log = createLogger("almadar:eventbus");
|
|
107
|
+
var subLog = createLogger("almadar:eventbus:subscribe");
|
|
47
108
|
function setGlobalEventBus(bus) {
|
|
48
109
|
if (typeof window !== "undefined") {
|
|
49
110
|
window.__kflowEventBus = bus;
|
|
@@ -65,6 +126,7 @@ var fallbackEventBus = {
|
|
|
65
126
|
timestamp: Date.now()
|
|
66
127
|
};
|
|
67
128
|
const handlers = fallbackListeners.get(type);
|
|
129
|
+
log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
|
|
68
130
|
if (handlers) {
|
|
69
131
|
handlers.forEach((handler) => {
|
|
70
132
|
try {
|
|
@@ -87,6 +149,7 @@ var fallbackEventBus = {
|
|
|
87
149
|
fallbackListeners.set(type, /* @__PURE__ */ new Set());
|
|
88
150
|
}
|
|
89
151
|
fallbackListeners.get(type).add(listener);
|
|
152
|
+
subLog.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
|
|
90
153
|
return () => {
|
|
91
154
|
const handlers = fallbackListeners.get(type);
|
|
92
155
|
if (handlers) {
|
|
@@ -110,6 +173,7 @@ var fallbackEventBus = {
|
|
|
110
173
|
},
|
|
111
174
|
onAny: (listener) => {
|
|
112
175
|
fallbackAnyListeners.add(listener);
|
|
176
|
+
subLog.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
|
|
113
177
|
return () => {
|
|
114
178
|
fallbackAnyListeners.delete(listener);
|
|
115
179
|
};
|
|
@@ -768,6 +832,7 @@ function subscribeToTraitChanges(listener) {
|
|
|
768
832
|
}
|
|
769
833
|
|
|
770
834
|
// lib/verificationRegistry.ts
|
|
835
|
+
var log2 = createLogger("almadar:bridge");
|
|
771
836
|
var MAX_TRANSITIONS = 500;
|
|
772
837
|
function getState() {
|
|
773
838
|
if (typeof window !== "undefined") {
|
|
@@ -800,6 +865,7 @@ function recordTransition(trace) {
|
|
|
800
865
|
...trace,
|
|
801
866
|
id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
|
|
802
867
|
};
|
|
868
|
+
log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
|
|
803
869
|
getState().transitions.push(entry);
|
|
804
870
|
if (getState().transitions.length > MAX_TRANSITIONS) {
|
|
805
871
|
getState().transitions.shift();
|
|
@@ -931,10 +997,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
|
|
|
931
997
|
}
|
|
932
998
|
function bindEventBus(eventBus) {
|
|
933
999
|
if (typeof window === "undefined") return;
|
|
1000
|
+
log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
|
|
934
1001
|
exposeOnWindow();
|
|
935
1002
|
if (window.__orbitalVerification) {
|
|
936
1003
|
window.__orbitalVerification.sendEvent = (event, payload) => {
|
|
937
1004
|
const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
|
|
1005
|
+
log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
|
|
938
1006
|
eventBus.emit(prefixed, payload);
|
|
939
1007
|
};
|
|
940
1008
|
const eventLog = [];
|
|
@@ -2086,6 +2154,7 @@ function useTheme() {
|
|
|
2086
2154
|
}
|
|
2087
2155
|
return context;
|
|
2088
2156
|
}
|
|
2157
|
+
var storeLog = createLogger("almadar:entity:store");
|
|
2089
2158
|
var store = /* @__PURE__ */ new Map();
|
|
2090
2159
|
var storeListeners = /* @__PURE__ */ new Set();
|
|
2091
2160
|
var watchCallbacks = /* @__PURE__ */ new Map();
|
|
@@ -2125,7 +2194,9 @@ function setAll(entityType, records) {
|
|
|
2125
2194
|
}
|
|
2126
2195
|
}
|
|
2127
2196
|
const prev = store.get(entityType);
|
|
2128
|
-
|
|
2197
|
+
const newVersion = (prev?.version ?? 0) + 1;
|
|
2198
|
+
store.set(entityType, { entities, ids, version: newVersion });
|
|
2199
|
+
storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
|
|
2129
2200
|
notifyListeners3(entityType, prev);
|
|
2130
2201
|
}
|
|
2131
2202
|
function upsertOne(entityType, record) {
|
|
@@ -2137,6 +2208,7 @@ function upsertOne(entityType, record) {
|
|
|
2137
2208
|
if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
|
|
2138
2209
|
snapshot.version++;
|
|
2139
2210
|
store.set(entityType, snapshot);
|
|
2211
|
+
storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
|
|
2140
2212
|
notifyListeners3(entityType, prev);
|
|
2141
2213
|
}
|
|
2142
2214
|
function addOne(entityType, record) {
|
|
@@ -2153,6 +2225,7 @@ function updateOne(entityType, id, changes) {
|
|
|
2153
2225
|
snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
|
|
2154
2226
|
snapshot.version++;
|
|
2155
2227
|
store.set(entityType, snapshot);
|
|
2228
|
+
storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
|
|
2156
2229
|
notifyListeners3(entityType, prev);
|
|
2157
2230
|
}
|
|
2158
2231
|
function removeOne(entityType, id) {
|
|
@@ -2166,6 +2239,7 @@ function removeOne(entityType, id) {
|
|
|
2166
2239
|
snapshot.entities.delete(id);
|
|
2167
2240
|
snapshot.version++;
|
|
2168
2241
|
store.set(entityType, snapshot);
|
|
2242
|
+
storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
|
|
2169
2243
|
notifyListeners3(entityType, prev);
|
|
2170
2244
|
}
|
|
2171
2245
|
function getSnapshot3(entityType) {
|
|
@@ -2214,6 +2288,8 @@ function useEntityStore() {
|
|
|
2214
2288
|
function EntityStoreProvider({ children }) {
|
|
2215
2289
|
return /* @__PURE__ */ jsx(EntityStoreContext.Provider, { value: contextValue, children });
|
|
2216
2290
|
}
|
|
2291
|
+
var busLog = createLogger("almadar:eventbus");
|
|
2292
|
+
var subLog2 = createLogger("almadar:eventbus:subscribe");
|
|
2217
2293
|
var EventBusContext2 = createContext(null);
|
|
2218
2294
|
function EventBusProvider({ children, debug: debug2 = false }) {
|
|
2219
2295
|
const listenersRef = useRef(/* @__PURE__ */ new Map());
|
|
@@ -2243,7 +2319,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2243
2319
|
timestamp: Date.now()
|
|
2244
2320
|
};
|
|
2245
2321
|
const listeners6 = listenersRef.current.get(type);
|
|
2246
|
-
const listenerCount = listeners6?.size ?? 0;
|
|
2322
|
+
const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
|
|
2323
|
+
busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
|
|
2247
2324
|
if (debug2) {
|
|
2248
2325
|
if (listenerCount > 0) {
|
|
2249
2326
|
console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
|
|
@@ -2276,6 +2353,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2276
2353
|
}
|
|
2277
2354
|
const listeners6 = listenersRef.current.get(type);
|
|
2278
2355
|
listeners6.add(listener);
|
|
2356
|
+
subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
|
|
2279
2357
|
if (debug2) {
|
|
2280
2358
|
console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
|
|
2281
2359
|
}
|
|
@@ -2302,6 +2380,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2302
2380
|
}, []);
|
|
2303
2381
|
const onAny = useCallback((listener) => {
|
|
2304
2382
|
anyListenersRef.current.add(listener);
|
|
2383
|
+
subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
|
|
2305
2384
|
if (debug2) {
|
|
2306
2385
|
console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
|
|
2307
2386
|
}
|
|
@@ -28446,7 +28525,7 @@ function getAllEvents(traits2) {
|
|
|
28446
28525
|
}
|
|
28447
28526
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
28448
28527
|
const eventBus = useEventBus();
|
|
28449
|
-
const [
|
|
28528
|
+
const [log4, setLog] = React117.useState([]);
|
|
28450
28529
|
const prevStatesRef = React117.useRef(/* @__PURE__ */ new Map());
|
|
28451
28530
|
React117.useEffect(() => {
|
|
28452
28531
|
for (const trait of traits2) {
|
|
@@ -28510,9 +28589,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
28510
28589
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
|
|
28511
28590
|
/* @__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)) })
|
|
28512
28591
|
] }),
|
|
28513
|
-
|
|
28592
|
+
log4.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
28514
28593
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
|
|
28515
|
-
/* @__PURE__ */ jsx(Stack, { gap: "xs", children:
|
|
28594
|
+
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
28516
28595
|
/* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
28517
28596
|
" ",
|
|
28518
28597
|
/* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
|
|
@@ -33051,6 +33130,7 @@ function UISlotRenderer({
|
|
|
33051
33130
|
return wrapped;
|
|
33052
33131
|
}
|
|
33053
33132
|
UISlotRenderer.displayName = "UISlotRenderer";
|
|
33133
|
+
var log3 = createLogger("almadar:verify");
|
|
33054
33134
|
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
33055
33135
|
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
33056
33136
|
var ERROR_SUFFIX = ":ERROR";
|
|
@@ -33096,6 +33176,7 @@ function VerificationProvider({
|
|
|
33096
33176
|
const unsub = eventBus.onAny((evt) => {
|
|
33097
33177
|
const parsed = parseLifecycleEvent(evt.type);
|
|
33098
33178
|
if (!parsed) return;
|
|
33179
|
+
log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
|
|
33099
33180
|
const payload = evt.payload ?? {};
|
|
33100
33181
|
if (parsed.kind === "dispatch") {
|
|
33101
33182
|
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
@@ -33148,6 +33229,7 @@ function VerificationProvider({
|
|
|
33148
33229
|
},
|
|
33149
33230
|
timestamp: Date.now()
|
|
33150
33231
|
});
|
|
33232
|
+
log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
|
|
33151
33233
|
} else if (parsed.kind === "error" && parsed.event) {
|
|
33152
33234
|
const key = `${parsed.traitName}:${parsed.event}`;
|
|
33153
33235
|
const pending = pendingRef.current.get(key);
|
|
@@ -33177,6 +33259,7 @@ function VerificationProvider({
|
|
|
33177
33259
|
},
|
|
33178
33260
|
timestamp: Date.now()
|
|
33179
33261
|
});
|
|
33262
|
+
log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
|
|
33180
33263
|
}
|
|
33181
33264
|
});
|
|
33182
33265
|
registerCheck(
|