react-state-basis 0.5.0 โ 0.5.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/README.md +14 -2
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -2
- package/dist/index.mjs.map +1 -1
- package/dist/production.d.mts +1 -0
- package/dist/production.d.ts +1 -0
- package/dist/production.js.map +1 -1
- package/dist/production.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,7 +45,10 @@ export default defineConfig({
|
|
|
45
45
|
import { BasisProvider } from 'react-state-basis';
|
|
46
46
|
|
|
47
47
|
root.render(
|
|
48
|
-
<BasisProvider
|
|
48
|
+
<BasisProvider
|
|
49
|
+
debug={true}
|
|
50
|
+
showHUD={true} // Set to false for console-only forensics
|
|
51
|
+
>
|
|
49
52
|
<App />
|
|
50
53
|
</BasisProvider>
|
|
51
54
|
);
|
|
@@ -75,6 +78,15 @@ Fix: Derive b during the first render.
|
|
|
75
78
|
|
|
76
79
|
---
|
|
77
80
|
|
|
81
|
+
### 5. Control & Scope
|
|
82
|
+
* **Ghost Mode:** Disable the Matrix UI while keeping console-based forensics active by setting `showHUD={false}` on the provider.
|
|
83
|
+
* **Selective Auditing:** Add `// @basis-ignore` at the top of any file to disable instrumentation. Recommended for:
|
|
84
|
+
* High-frequency animation logic (>60fps)
|
|
85
|
+
* Third-party library wrappers
|
|
86
|
+
* Intentional synchronization (e.g., local mirrors of external caches)
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
78
90
|
## Visual Proof
|
|
79
91
|
|
|
80
92
|
The optional HUD shows your **State Basis Matrix** in real-time. Purple pulses ($\Omega$) are Context anchors; Red pulses (!) are redundant shadows.
|
|
@@ -94,7 +106,7 @@ Basis treats every hook as a signal to catch these architectural violations:
|
|
|
94
106
|
- **โก Sync Leaks** - 1-frame delays forcing double renders
|
|
95
107
|
- **๐ Recursive Oscillation** - Infinite loops (with circuit breaker)
|
|
96
108
|
|
|
97
|
-
[**See examples & fixes โ**](https://github.com/liovic/react-state-basis/wiki/
|
|
109
|
+
[**See examples & fixes โ**](https://github.com/liovic/react-state-basis/wiki/The-Forensic-Catalog)
|
|
98
110
|
|
|
99
111
|
---
|
|
100
112
|
|
package/dist/index.d.mts
CHANGED
|
@@ -38,6 +38,7 @@ declare const use: <T>(usable: React.Usable<T>) => T;
|
|
|
38
38
|
interface BasisProviderProps {
|
|
39
39
|
children: ReactNode;
|
|
40
40
|
debug?: boolean;
|
|
41
|
+
showHUD?: boolean;
|
|
41
42
|
}
|
|
42
43
|
declare const BasisProvider: React__default.FC<BasisProviderProps>;
|
|
43
44
|
declare const useBasisConfig: () => {
|
package/dist/index.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ declare const use: <T>(usable: React.Usable<T>) => T;
|
|
|
38
38
|
interface BasisProviderProps {
|
|
39
39
|
children: ReactNode;
|
|
40
40
|
debug?: boolean;
|
|
41
|
+
showHUD?: boolean;
|
|
41
42
|
}
|
|
42
43
|
declare const BasisProvider: React__default.FC<BasisProviderProps>;
|
|
43
44
|
declare const useBasisConfig: () => {
|
package/dist/index.js
CHANGED
|
@@ -834,7 +834,11 @@ var HUDHeader = ({ isExpanded }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)
|
|
|
834
834
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
835
835
|
var BasisContext = (0, import_react3.createContext)({ debug: false });
|
|
836
836
|
var isWeb2 = typeof window !== "undefined" && typeof window.document !== "undefined";
|
|
837
|
-
var BasisProvider = ({
|
|
837
|
+
var BasisProvider = ({
|
|
838
|
+
children,
|
|
839
|
+
debug = true,
|
|
840
|
+
showHUD = true
|
|
841
|
+
}) => {
|
|
838
842
|
(0, import_react3.useLayoutEffect)(() => {
|
|
839
843
|
configureBasis({ debug });
|
|
840
844
|
if (isWeb2) {
|
|
@@ -843,7 +847,7 @@ var BasisProvider = ({ children, debug = true }) => {
|
|
|
843
847
|
}, [debug]);
|
|
844
848
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(BasisContext.Provider, { value: { debug }, children: [
|
|
845
849
|
children,
|
|
846
|
-
debug && isWeb2 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BasisHUD, {})
|
|
850
|
+
debug && showHUD && isWeb2 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BasisHUD, {})
|
|
847
851
|
] });
|
|
848
852
|
};
|
|
849
853
|
var useBasisConfig = () => (0, import_react3.useContext)(BasisContext);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hooks.ts","../src/core/math.ts","../src/core/logger.ts","../src/core/constants.ts","../src/core/analysis.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts","../src/vite-plugin.ts"],"sourcesContent":["// src/index.ts\n\nexport {\n useState,\n useReducer,\n useMemo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useId,\n useDebugValue,\n useImperativeHandle,\n useInsertionEffect,\n useSyncExternalStore,\n useTransition,\n useDeferredValue,\n use,\n useOptimistic,\n useActionState,\n createContext,\n useContext\n} from './hooks';\n\nexport { BasisProvider, useBasisConfig } from './context';\nexport { configureBasis, printBasisHealthReport, getBasisMetrics } from './engine';\nexport { basis } from './vite-plugin';","// src/hooks.ts\n\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore,\n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n} from 'react';\n\nimport {\n registerVariable,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking,\n history as engineHistory\n} from './engine';\nimport { SignalRole } from './core/types';\n\n// --- Internal Type Helpers ---\n\nlet anonCount = 0;\nconst getFallbackLabel = (type: string) => `anon_${type}_${anonCount++}`;\n\n/**\n * Standard React Reducer type inference helpers.\n */\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\ninterface BasisContext<T> extends React.Context<T> {\n _basis_label?: string;\n}\n\n/**\n * React 19 Type Definitions for strictness.\n */\ninterface React19Extended {\n useOptimistic<S, P>(passthrough: S, reducer?: (state: S, payload: P) => S): [S, (payload: P) => void];\n useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string\n ): [state: State, dispatch: (payload: Payload) => void, isPending: boolean];\n use<T>(usable: React.Usable<T>): T;\n}\n\nconst React19 = React as unknown as React19Extended;\n\n// --- useState ---\n\nexport function useState<S>(\n initialState: S | (() => S),\n label?: string\n): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = reactUseRef(label || getFallbackLabel('state')).current;\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const setter = reactUseCallback((value: React.SetStateAction<S>) => {\n if (recordUpdate(effectiveLabel)) {\n setVal(value);\n }\n }, [effectiveLabel]);\n\n return [val, setter];\n}\n\n// --- useReducer ---\n\n/**\n * PUBLIC OVERLOAD: Lazy initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initializerArg: I,\n initializer: (arg: I) => GetReducerState<R>,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * PUBLIC OVERLOAD: Direct initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>>(\n reducer: R,\n initialState: GetReducerState<R>,\n initializer?: undefined,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * FINAL IMPLEMENTATION\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initialArg: I | GetReducerState<R>,\n init?: ((arg: I) => GetReducerState<R>) | string,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const isLazy = typeof init === 'function';\n\n // v0.5.x Label Extraction: prioritize 4th arg, fallback to 3rd if string (Babel behavior)\n const providedLabel = label || (typeof init === 'string' ? init : undefined);\n const effectiveLabel = reactUseRef(providedLabel || getFallbackLabel('reducer')).current;\n\n const [state, dispatch] = isLazy\n ? reactUseReducer(reducer, initialArg as I, init as (arg: I) => GetReducerState<R>)\n : reactUseReducer(reducer, initialArg as GetReducerState<R>);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((action: GetReducerAction<R>) => {\n if (recordUpdate(effectiveLabel)) {\n dispatch(action);\n }\n }, [effectiveLabel, dispatch]);\n\n return [state, basisDispatch];\n}\n\n// --- Context ---\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue) as BasisContext<T>;\n const effectiveLabel = label || getFallbackLabel('context');\n\n // Use non-enumerable property to store the Basis label\n Object.defineProperty(context, '_basis_label', {\n value: effectiveLabel,\n writable: false,\n enumerable: false\n });\n\n return context;\n}\n\nexport function useContext<T>(context: React.Context<T>): T {\n const val = reactUseContext(context);\n const label = (context as BasisContext<T>)._basis_label;\n\n reactUseLayoutEffect(() => {\n if (label) {\n registerVariable(label, { role: SignalRole.CONTEXT });\n recordUpdate(label);\n }\n }, [val, label]);\n\n return val;\n}\n\n// --- Projections ---\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('proj')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: unknown[]) => unknown>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('cb')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\n// --- Effects ---\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\n// --- React 19 ---\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('optimistic')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = React19.useOptimistic(passthrough, reducer);\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n\n const isLabelArg = typeof permalink === 'string' && label === undefined;\n const effectiveLabel = reactUseRef(isLabelArg ? (permalink as string) : (label || getFallbackLabel('action_state'))).current;\n const actualPermalink = isLabelArg ? undefined : permalink;\n\n const [state, reactDispatch, isPending] = React19.useActionState(action, initialState, actualPermalink);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\n// --- Direct Exports ---\nexport const useRef = reactUseRef;\nexport const useId = React.useId;\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = reactUseSyncExternalStore;\nexport const useTransition = reactUseTransition;\nexport const useDeferredValue = reactUseDeferredValue;\nexport const use = React19.use;\n\nexport const __test__ = {\n registerVariable,\n history: engineHistory,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/core/math.ts\n\n/**\n * CIRCULAR SIMILARITY (v0.5.x)\n * Calculates Cosine Similarity across circular buffers.\n * \n * Optimization: Pre-normalizes the circular offset using a single modulo operation \n * outside the hot loop. This ensures the inner loop stays linearized (no division) \n * while remaining robust against extreme lead/lag values.\n */\nexport const calculateSimilarityCircular = (\n bufferA: Uint8Array,\n headA: number,\n bufferB: Uint8Array,\n headB: number,\n offset: number\n): number => {\n const L = bufferA.length;\n let dot = 0, magA = 0, magB = 0;\n\n const baseOffset = ((headB - headA + offset) % L + L) % L;\n\n for (let i = 0; i < L; i++) {\n const valA = bufferA[i];\n\n let iB = i + baseOffset;\n if (iB >= L) {\n iB -= L;\n }\n\n const valB = bufferB[iB];\n\n dot += valA * valB;\n magA += valA * valA;\n magB += valB * valB;\n }\n\n // Prevent Divide-by-Zero (Orthogonal/Idle result)\n if (magA === 0 || magB === 0) return 0;\n\n // Cosine Similarity Formula: (A ยท B) / (||A|| * ||B||)\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n\nexport const calculateCosineSimilarity = (A: Uint8Array, B: Uint8Array): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return (magA === 0 || magB === 0) ? 0 : dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n","// src/core/logger.ts\n\nimport { calculateCosineSimilarity } from \"./math\";\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface RingBufferMetadata {\n buffer: Uint8Array;\n head: number;\n options: any;\n role: 'local' | 'context' | 'proj';\n}\n\nconst LAST_LOG_TIMES = new Map<string, number>();\nconst LOG_COOLDOWN = 3000; // 3 second suppression for identical alerts\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n subText: \"color: #636e72; font-size: 11px;\",\n bold: \"font-weight: bold;\",\n action: \"color: #00b894; font-weight: bold; border: 1px solid #00b894; padding: 0 4px; border-radius: 3px;\",\n warning: \"color: #d63031; font-weight: bold; border: 1px solid #d63031; padding: 0 4px; border-radius: 3px;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return { file: parts[0] || \"Unknown\", name: parts[1] || label };\n};\n\nconst shouldLog = (key: string) => {\n const now = Date.now();\n const last = LAST_LOG_TIMES.get(key) || 0;\n if (now - last > LOG_COOLDOWN) {\n LAST_LOG_TIMES.set(key, now);\n return true;\n }\n return false;\n};\n\nexport const displayRedundancyAlert = (labelA: string, metaA: RingBufferMetadata, labelB: string, metaB: RingBufferMetadata, sim: number) => {\n if (!isWeb || !shouldLog(`redundant-${labelA}-${labelB}`)) return;\n\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n\n const isContextMirror = (metaA.role === 'local' && metaB.role === 'context') || (metaB.role === 'local' && metaA.role === 'context');\n const local = metaA.role === 'local' ? infoA : infoB;\n const context = metaA.role === 'context' ? infoA : infoB;\n\n console.group(`%c โ BASIS | ${isContextMirror ? 'CONTEXT MIRRORING' : 'DUPLICATE STATE'} `, STYLES.headerRed);\n console.log(`%c๐ Location: %c${infoA.file}`, STYLES.bold, STYLES.location);\n\n if (isContextMirror) {\n console.log(\n `%cIssue:%c Local variable %c${local.name}%c is just a copy of Global Context %c${context.name}%c.\\n` +\n `%cConfidence: ${(sim * 100).toFixed(0)}%`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.subText\n );\n console.log(`%cFix:%c Use the context value directly to avoid state drift.`, STYLES.bold, STYLES.warning);\n } else {\n console.log(\n `%cIssue:%c %c${infoA.name}%c and %c${infoB.name}%c are synchronized (${(sim * 100).toFixed(0)}% correlation).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cFix:%c Merge states or calculate %c${infoB.name}%c from %c${infoA.name}%c via %cuseMemo%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.action, \"\"\n );\n }\n console.groupEnd();\n};\n\nexport const displayHealthReport = (history: Map<string, RingBufferMetadata>, threshold: number) => {\n if (!isWeb) return;\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, metaA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n\n entries.forEach(([labelB, metaB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = calculateCosineSimilarity(metaA.buffer, metaB.buffer);\n if (sim > threshold) {\n if (metaA.role === 'context' && metaB.role === 'context') return;\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) clusters.push(currentCluster); else independentCount++;\n });\n\n const systemRank = independentCount + clusters.length;\n const healthScore = (systemRank / totalVars) * 100;\n\n console.group(`%c ๐ BASIS | ARCHITECTURAL HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cEfficiency: %c${healthScore.toFixed(1)}% %c(${systemRank}/${totalVars} Sources of Truth)`,\n STYLES.bold, `color: ${healthScore > 85 ? '#00b894' : '#d63031'}; font-weight: bold;`, STYLES.subText\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Sync Issues:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n\n clusters.forEach((cluster, idx) => {\n const clusterMetas = cluster.map(l => ({ label: l, meta: history.get(l)!, info: parseLabel(l) }));\n const contexts = clusterMetas.filter(c => c.meta.role === 'context');\n const locals = clusterMetas.filter(c => c.meta.role === 'local');\n const names = clusterMetas.map(c => `${c.meta.role === 'context' ? 'ฮฉ ' : ''}${c.info.name}`).join(' โท ');\n\n console.group(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace; font-weight: bold;\");\n\n if (contexts.length > 0) {\n const ctxNames = contexts.map(c => c.info.name).join(', ');\n console.log(`%cDiagnosis:%c Context Mirroring. Variables are copying from %c${ctxNames}%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n console.log(`%cSolution:%c Use the context directly to avoid state drift.`, STYLES.bold, STYLES.action);\n } else {\n const isExplosion = locals.length > 2;\n if (isExplosion) {\n console.log(`%cDiagnosis:%c Boolean Explosion. Multiple states updating in sync.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Combine into a single %cstatus%c string or a %creducer%c.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n } else {\n console.log(`%cDiagnosis:%c Redundant State. Variables always change together.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Derive one from the other via %cuseMemo%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n }\n }\n console.groupEnd();\n });\n } else {\n console.log(\"%cโจ Your architecture is clean. No redundant state detected.\", \"color: #00b894; font-weight: bold;\");\n }\n console.groupEnd();\n};\n\nexport const displayCausalHint = (targetLabel: string, targetMeta: RingBufferMetadata, sourceLabel: string, sourceMeta: RingBufferMetadata) => {\n if (!isWeb || !shouldLog(`causal-${sourceLabel}-${targetLabel}`)) return;\n\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n const isContextTrigger = sourceMeta.role === 'context';\n\n console.groupCollapsed(`%c โก BASIS | ${isContextTrigger ? 'CONTEXT SYNC LEAK' : 'DOUBLE RENDER'} `, STYLES.headerBlue);\n console.log(`%c๐ Location: %c${target.file}`, STYLES.bold, STYLES.location);\n\n if (isContextTrigger) {\n console.log(`%cIssue:%c Context %c${source.name}%c updated, then local %c${target.name}%c followed 1 frame later.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n console.log(`%cImpact: This forces React to render the component twice for every change.`, STYLES.subText);\n } else {\n console.log(`%cIssue:%c %c${source.name}%c triggers %c${target.name}%c in a separate frame.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n }\n\n console.log(`%cFix:%c Derive %c${target.name}%c during the first render.`, STYLES.bold, STYLES.action, STYLES.label, \"\");\n console.groupEnd();\n};\n\nexport const displayViolentBreaker = (label: string, count: number, threshold: number) => {\n if (!isWeb) return;\n const parts = label.split(' -> ');\n console.group(`%c ๐ BASIS CRITICAL | CIRCUIT BREAKER `, 'background: #dc2626; color: white; font-weight: bold; padding: 8px 16px;');\n console.error(`INFINITE LOOP DETECTED\\nVariable: ${parts[1] || label}\\nFrequency: ${count} updates/sec`);\n console.log(`%cACTION: Update BLOCKED to prevent browser freeze.`, 'color: #dc2626; font-weight: bold;');\n console.groupEnd();\n};\n\nexport const displayBootLog = (windowSize: number) => {\n if (!isWeb) return;\n console.log(`%cBasis%cAuditor%c | v0.5.x Architectural Forensics Active (Window: ${windowSize})`, STYLES.basis, STYLES.version, \"color: #636e72; font-style: italic; margin-left: 8px;\");\n};\n","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 150;\nexport const LOOP_WINDOW_MS = 1000;\nexport const ANALYSIS_INTERVAL = 5;\n\nexport const VOLATILITY_THRESHOLD = 25;","// src/core/analysis.ts\n\nimport * as UI from './logger';\nimport { calculateSimilarityCircular } from './math';\nimport { SIMILARITY_THRESHOLD } from './constants';\nimport { SignalRole, Entry } from './types';\n\ninterface Similarities {\n sync: number;\n bA: number;\n aB: number;\n max: number;\n}\n\nconst calculateAllSimilarities = (entryA: Entry, entryB: Entry): Similarities => {\n const sync = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 0);\n const bA = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 1);\n const aB = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, -1);\n return { sync, bA, aB, max: Math.max(sync, bA, aB) };\n};\n\nconst shouldSkipComparison = (entryA: Entry, entryB: Entry, dirtyLabels: Set<string>): boolean => {\n if (entryA.label === entryB.label) return true;\n\n if (dirtyLabels.has(entryB.label) && entryA.label > entryB.label) return true;\n\n return false;\n};\n\nconst detectRedundancy = (entryA: Entry, entryB: Entry, similarities: Similarities, redundantSet: Set<string>): void => {\n const roleA = entryA.meta.role;\n const roleB = entryB.meta.role;\n\n // Context-to-Context correlation is architecturally valid\n if (roleA === SignalRole.CONTEXT && roleB === SignalRole.CONTEXT) return;\n\n // Require 2+ updates for statistical confidence (avoid false positives)\n if (entryA.meta.density < 2 || entryB.meta.density < 2) return;\n\n // Case 1: Local state mirroring Context (U โฉ W โ {0})\n if (roleA === SignalRole.LOCAL && roleB === SignalRole.CONTEXT) {\n redundantSet.add(entryA.label); // Mark LOCAL as redundant (context is source of truth)\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n // Case 2: Context mirroring Local (reverse of Case 1)\n else if (roleA === SignalRole.CONTEXT && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryB.label); // Mark LOCAL as redundant\n UI.displayRedundancyAlert(entryB.label, entryB.meta, entryA.label, entryA.meta, similarities.max);\n }\n // Case 3: Duplicate Local State (both in U subspace, but correlated)\n else if (roleA === SignalRole.LOCAL && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryA.label);\n redundantSet.add(entryB.label);\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n};\n\nconst detectCausalLeak = (entryA: Entry, entryB: Entry, similarities: Similarities): void => {\n // Skip warnings for high-frequency updates (animations, >VOLATILITY_THRESHOLD updates in buffer)\n // These are intentional and expected to update rapidly\n if (entryA.isVolatile || entryB.isVolatile) return;\n\n // B leads A: B updated, then A updated next frame (B causes A)\n if (similarities.bA === similarities.max) {\n UI.displayCausalHint(entryB.label, entryB.meta, entryA.label, entryA.meta);\n }\n // A leads B: A updated, then B updated next frame (A causes B)\n else if (similarities.aB === similarities.max) {\n UI.displayCausalHint(entryA.label, entryA.meta, entryB.label, entryB.meta);\n }\n};\n\nexport const detectSubspaceOverlap = (\n dirtyEntries: Entry[],\n allEntries: Entry[],\n redundantSet: Set<string>,\n dirtyLabels: Set<string>\n): number => {\n let compCount = 0;\n\n for (const entryA of dirtyEntries) {\n for (const entryB of allEntries) {\n if (shouldSkipComparison(entryA, entryB, dirtyLabels)) continue;\n\n compCount++;\n const similarities = calculateAllSimilarities(entryA, entryB);\n\n if (similarities.max > SIMILARITY_THRESHOLD) {\n detectRedundancy(entryA, entryB, similarities, redundantSet);\n detectCausalLeak(entryA, entryB, similarities);\n }\n }\n }\n\n return compCount;\n};\n","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { detectSubspaceOverlap } from './core/analysis';\nimport {\n SignalRole,\n StateOptions,\n RingBufferMetadata,\n BasisEngineState,\n Entry\n} from './core/types';\nimport {\n WINDOW_SIZE,\n LOOP_THRESHOLD,\n VOLATILITY_THRESHOLD\n} from './core/constants';\n\n// --- Static Internal State ---\n\nconst BASIS_INSTANCE_KEY = Symbol.for('__basis_engine_instance__');\n\n// Pre-allocated static signal to prevent GC churn in high-frequency causal tracking\nconst NULL_SIGNAL: RingBufferMetadata = {\n role: SignalRole.PROJECTION,\n buffer: new Uint8Array(0),\n head: 0,\n density: 0,\n options: {}\n};\n\n/**\n * GLOBAL SINGLETON HMR BRIDGE\n * Ensures the state history survives Hot Module Replacement cycles.\n */\nconst getGlobalInstance = (): BasisEngineState => {\n const root = globalThis as any;\n if (!root[BASIS_INSTANCE_KEY]) {\n root[BASIS_INSTANCE_KEY] = {\n config: { debug: false },\n history: new Map<string, RingBufferMetadata>(),\n currentTickBatch: new Set<string>(),\n redundantLabels: new Set<string>(),\n booted: false,\n tick: 0,\n isBatching: false,\n currentEffectSource: null,\n pausedVariables: new Set<string>(),\n metrics: {\n lastAnalysisTimeMs: 0,\n comparisonCount: 0,\n lastAnalysisTimestamp: 0,\n systemEntropy: 0\n },\n alertCount: 0,\n loopCounters: new Map<string, number>(),\n lastCleanup: Date.now()\n };\n }\n return root[BASIS_INSTANCE_KEY];\n};\n\nconst instance = getGlobalInstance();\n\nexport const config = instance.config;\nexport const history = instance.history;\nexport const redundantLabels = instance.redundantLabels;\nexport const currentTickBatch = instance.currentTickBatch;\n\nlet currentTickRegistry: Record<string, boolean> = {};\nconst dirtyLabels = new Set<string>();\n\n/**\n * TEMPORAL ENTROPY\n * Quantifies the information density of a specific tick.\n */\nconst calculateTickEntropy = (tickIdx: number) => {\n let activeCount = 0;\n const total = instance.history.size;\n if (total === 0) return 1;\n\n instance.history.forEach((meta: RingBufferMetadata) => {\n if (meta.buffer[tickIdx] === 1) activeCount++;\n });\n return 1 - (activeCount / total);\n};\n\nexport const analyzeBasis = () => {\n if (!instance.config.debug || dirtyLabels.size === 0) {\n return;\n }\n\n const scheduler = (globalThis as any).requestIdleCallback || ((cb: any) => setTimeout(cb, 1));\n\n // 1. ATOMIC SWAP: Capture current dirty state and clear immediately.\n // This ensures updates happening DURING analysis are captured for the next frame.\n const snapshot = new Set(dirtyLabels);\n dirtyLabels.clear();\n\n scheduler(() => {\n const analysisStart = performance.now();\n const allEntries: Entry[] = [];\n const dirtyEntries: Entry[] = [];\n\n // 2. Collect entries based on the snapshot\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n if (meta.options.suppressAll || meta.density === 0) return;\n\n const entry: Entry = {\n label, meta,\n isVolatile: meta.density > VOLATILITY_THRESHOLD\n };\n\n allEntries.push(entry);\n if (snapshot.has(label)) {\n dirtyEntries.push(entry);\n }\n });\n\n if (dirtyEntries.length === 0 || allEntries.length < 2) return;\n\n // 3. PERSISTENCE: Maintain debt markers for signals that weren't in the snapshot\n const nextRedundant = new Set<string>();\n instance.redundantLabels.forEach((l: string) => {\n if (!snapshot.has(l)) {\n nextRedundant.add(l);\n }\n });\n\n // 4. LOGIC PASS: Direct Sum Decomposition\n const compCount = detectSubspaceOverlap(\n dirtyEntries,\n allEntries,\n nextRedundant,\n snapshot\n );\n\n // 5. COMMIT: Update the global engine state\n instance.redundantLabels.clear();\n nextRedundant.forEach((l: string) => {\n instance.redundantLabels.add(l);\n });\n\n instance.metrics.lastAnalysisTimeMs = performance.now() - analysisStart;\n instance.metrics.comparisonCount = compCount;\n instance.metrics.lastAnalysisTimestamp = Date.now();\n });\n};\n\nconst processHeartbeat = () => {\n instance.tick++;\n\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n const oldValue = meta.buffer[meta.head];\n const newValue = instance.currentTickBatch.has(label) ? 1 : 0;\n\n // Density Update with drift prevention\n meta.buffer[meta.head] = newValue;\n if (oldValue !== newValue) {\n meta.density += (newValue - oldValue);\n }\n\n meta.head = (meta.head + 1) % WINDOW_SIZE;\n });\n\n const lastHead = (instance.history.size > 0) ? (instance.tick % WINDOW_SIZE) : 0;\n instance.metrics.systemEntropy = calculateTickEntropy(lastHead);\n\n instance.currentTickBatch.clear();\n currentTickRegistry = {};\n instance.isBatching = false;\n\n // Reactive trigger: Audit if signals are dirty\n if (dirtyLabels.size > 0) {\n analyzeBasis();\n }\n};\n\n/**\n * INTERCEPTION LAYER\n * Called by hook proxies to record state pulses.\n */\nexport const recordUpdate = (label: string): boolean => {\n if (!instance.config.debug) return true;\n if (instance.pausedVariables.has(label)) return false;\n\n const now = Date.now();\n if (now - instance.lastCleanup > 1000) {\n instance.loopCounters.clear();\n instance.lastCleanup = now;\n }\n\n const count = (instance.loopCounters.get(label) || 0) + 1;\n instance.loopCounters.set(label, count);\n\n // SECURITY: Hard Circuit Breaker\n if (count > LOOP_THRESHOLD) {\n UI.displayViolentBreaker(label, count, LOOP_THRESHOLD);\n instance.pausedVariables.add(label);\n return false;\n }\n\n if (instance.currentEffectSource && instance.currentEffectSource !== label) {\n const targetMeta = instance.history.get(label);\n const sourceMeta = instance.history.get(instance.currentEffectSource);\n\n if (targetMeta) {\n const sourceDensity = sourceMeta?.density || 0;\n const isVolatile = targetMeta.density > VOLATILITY_THRESHOLD || sourceDensity > VOLATILITY_THRESHOLD;\n\n if (!isVolatile) {\n UI.displayCausalHint(label, targetMeta, instance.currentEffectSource, sourceMeta || NULL_SIGNAL);\n }\n }\n }\n\n // BATCHING: Align updates into a single temporal tick\n if (currentTickRegistry[label]) return true;\n\n currentTickRegistry[label] = true;\n instance.currentTickBatch.add(label);\n dirtyLabels.add(label);\n\n if (!instance.isBatching) {\n instance.isBatching = true;\n requestAnimationFrame(processHeartbeat);\n }\n\n return true;\n};\n\n// --- LIFECYCLE API ---\n\nexport const configureBasis = (c: any) => {\n Object.assign(instance.config, c);\n if (instance.config.debug && !instance.booted) {\n UI.displayBootLog(WINDOW_SIZE);\n instance.booted = true;\n }\n};\n\nexport const registerVariable = (l: string, o: StateOptions = {}) => {\n if (!instance.config.debug || o.suppressAll) return;\n if (!instance.history.has(l)) {\n instance.history.set(l, {\n buffer: new Uint8Array(WINDOW_SIZE),\n head: 0,\n density: 0,\n options: o,\n role: o.role || SignalRole.LOCAL\n });\n }\n};\n\nexport const unregisterVariable = (l: string) => {\n instance.history.delete(l);\n instance.loopCounters.delete(l);\n instance.pausedVariables.delete(l);\n instance.redundantLabels.delete(l);\n};\n\nexport const beginEffectTracking = (l: string) => {\n if (instance.config.debug) instance.currentEffectSource = l;\n};\n\nexport const endEffectTracking = () => {\n instance.currentEffectSource = null;\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!instance.config.debug) return;\n UI.displayHealthReport(instance.history, threshold);\n};\n\nexport const getBasisMetrics = () => ({\n engine: 'v0.5.x',\n hooks: instance.history.size,\n analysis_ms: instance.metrics.lastAnalysisTimeMs.toFixed(3),\n entropy: instance.metrics.systemEntropy.toFixed(3)\n});\n\n// Global Attachments\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n (window as any).getBasisMetrics = getBasisMetrics;\n}\n\nexport const __testEngine__ = {\n instance,\n history,\n configureBasis,\n registerVariable,\n unregisterVariable,\n recordUpdate,\n printBasisHealthReport,\n analyzeBasis,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\nimport { BasisHUD } from './ui/BasisHUD';\n\nconst BasisContext = createContext({ debug: false });\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({ children, debug = true }) => {\n useLayoutEffect(() => {\n configureBasis({ debug });\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n {(debug && isWeb) && <BasisHUD />}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/ui/BasisHUD.tsx\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { history, redundantLabels } from '../engine';\nimport { HUD_DIMENSIONS as DIM, getHUDContainerStyle, HUD_THEME as THEME } from './config';\n\nexport const BasisHUD: React.FC = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!isExpanded) return;\n\n let isMounted = true;\n let animationFrame: number | null = null;\n\n const draw = () => {\n if (!isMounted) {\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n return;\n }\n\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const entries = Array.from(history.entries());\n const dpr = window.devicePixelRatio || 1;\n const rawWidth = DIM.WINDOW_SIZE * DIM.COL_WIDTH + DIM.LABEL_WIDTH + DIM.PADDING * 2;\n const rawHeight = Math.max(entries.length * DIM.ROW_HEIGHT + DIM.PADDING * 2, 80);\n\n updateCanvasSize(canvas, rawWidth, rawHeight, dpr);\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, rawWidth, rawHeight);\n\n if (entries.length === 0) renderEmptyState(ctx);\n else renderMatrix(ctx, entries);\n\n ctx.restore();\n animationFrame = requestAnimationFrame(draw);\n };\n\n // Kick off the animation loop\n animationFrame = requestAnimationFrame(draw);\n\n return () => {\n isMounted = false;\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n };\n }, [isExpanded]);\n\n return (\n <div style={getHUDContainerStyle(isExpanded)} onClick={() => setIsExpanded(!isExpanded)}>\n <HUDHeader isExpanded={isExpanded} />\n {isExpanded && (\n <div style={{ padding: '10px 14px 15px 14px' }}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n </div>\n )}\n </div>\n );\n};\n\nfunction updateCanvasSize(canvas: HTMLCanvasElement, w: number, h: number, dpr: number) {\n const targetW = Math.floor(w * dpr);\n const targetH = Math.floor(h * dpr);\n if (canvas.width !== targetW || canvas.height !== targetH) {\n canvas.width = targetW;\n canvas.height = targetH;\n canvas.style.width = `${w}px`;\n canvas.style.height = `${h}px`;\n }\n}\n\nfunction renderEmptyState(ctx: CanvasRenderingContext2D) {\n ctx.fillStyle = THEME.textDim;\n ctx.font = '11px Inter, sans-serif';\n ctx.fillText('Waiting for state transitions...', DIM.PADDING, 30);\n}\n\nfunction renderMatrix(ctx: CanvasRenderingContext2D, entries: [string, any][]) {\n const L = DIM.WINDOW_SIZE;\n const colW = DIM.COL_WIDTH;\n const rowH = DIM.ROW_HEIGHT;\n const pad = DIM.PADDING;\n const cellW = colW - 1.5;\n const cellH = rowH - 4;\n\n const gridPath = new Path2D();\n const successPath = new Path2D();\n const contextPath = new Path2D();\n const errorPath = new Path2D();\n\n ctx.font = \"11px Inter, Menlo, monospace\";\n\n let rowIndex = 0;\n for (const [label, meta] of entries) {\n const y = rowIndex * rowH + pad;\n const isContext = meta.role === 'context';\n const isRedundant = !isContext && redundantLabels.has(label);\n\n const { buffer, head } = meta;\n let uiPos = 0;\n\n const addToPath = (val: number, xIdx: number) => {\n const x = xIdx * colW + pad;\n if (val === 1) {\n if (isContext) contextPath.rect(x, y, cellW, cellH);\n else if (isRedundant) errorPath.rect(x, y, cellW, cellH);\n else successPath.rect(x, y, cellW, cellH);\n } else {\n gridPath.rect(x, y, cellW, cellH);\n }\n };\n\n for (let i = head; i < L; i++) addToPath(buffer[i], uiPos++);\n for (let i = 0; i < head; i++) addToPath(buffer[i], uiPos++);\n\n const stateName = label.split(' -> ')[1] || label;\n const textX = (L * colW) + pad + 10;\n\n ctx.fillStyle = isContext ? THEME.header : (isRedundant ? THEME.error : THEME.text);\n ctx.fillText((isContext ? \"ฮฉ \" : isRedundant ? \"! \" : \"\") + stateName, textX, y + 9);\n\n rowIndex++;\n }\n\n ctx.fillStyle = THEME.grid; ctx.fill(gridPath);\n ctx.fillStyle = THEME.success; ctx.fill(successPath);\n ctx.fillStyle = THEME.header; ctx.fill(contextPath);\n ctx.fillStyle = THEME.error; ctx.fill(errorPath);\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div\n style={{\n padding: '10px 14px',\n backgroundColor: isExpanded ? THEME.header : 'transparent',\n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600,\n fontSize: '11px',\n letterSpacing: '0.05em',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'background 0.3s',\n }}\n >\n <span>{isExpanded ? 'STATE BASIS MATRIX' : '๐ BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>v0.5.x</span>}\n </div>\n);","// src/ui/config.ts\n\nimport { WINDOW_SIZE } from '../core/constants';\n\nexport const HUD_DIMENSIONS = {\n WINDOW_SIZE,\n ROW_HEIGHT: 16,\n COL_WIDTH: 5,\n LABEL_WIDTH: 100,\n PADDING: 10,\n RADIUS: 1.5,\n};\n\nexport const HUD_THEME = {\n bg: 'rgba(15, 23, 42, 0.95)',\n border: '#334155',\n header: '#8b5cf6',\n text: '#f1f5f9',\n textDim: '#94a3b8',\n success: '#10b981',\n error: '#ef4444',\n grid: '#1e293b',\n};\n\nexport const getHUDContainerStyle = (isExpanded: boolean): React.CSSProperties => ({\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n backgroundColor: HUD_THEME.bg,\n border: `1px solid ${HUD_THEME.border}`,\n borderRadius: '12px',\n backdropFilter: 'blur(8px)',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n zIndex: 999999,\n overflow: 'hidden',\n width: isExpanded ? '380px' : '130px',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n cursor: 'pointer',\n userSelect: 'none',\n WebkitUserSelect: 'none'\n});","import type { Plugin } from 'vite';\nexport function basis(): Plugin {\n return {\n name: 'vite-plugin-react-state-basis',\n config() {\n return {\n optimizeDeps: {\n exclude: ['react-state-basis']\n }\n };\n }\n };\n}"],"mappings":"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","names":["useDebugValue","useId","useImperativeHandle","useInsertionEffect","history","dirtyLabels","reactUseState","reactUseRef","reactUseEffect","reactUseCallback","reactUseReducer","reactCreateContext","reactUseContext","reactUseLayoutEffect","reactUseMemo","useId","useDebugValue","useImperativeHandle","useInsertionEffect","reactUseSyncExternalStore","reactUseTransition","reactUseDeferredValue","import_react","import_react","import_jsx_runtime","isWeb"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks.ts","../src/core/math.ts","../src/core/logger.ts","../src/core/constants.ts","../src/core/analysis.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts","../src/vite-plugin.ts"],"sourcesContent":["// src/index.ts\n\nexport {\n useState,\n useReducer,\n useMemo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useId,\n useDebugValue,\n useImperativeHandle,\n useInsertionEffect,\n useSyncExternalStore,\n useTransition,\n useDeferredValue,\n use,\n useOptimistic,\n useActionState,\n createContext,\n useContext\n} from './hooks';\n\nexport { BasisProvider, useBasisConfig } from './context';\nexport { configureBasis, printBasisHealthReport, getBasisMetrics } from './engine';\nexport { basis } from './vite-plugin';","// src/hooks.ts\n\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore,\n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n} from 'react';\n\nimport {\n registerVariable,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking,\n history as engineHistory\n} from './engine';\nimport { SignalRole } from './core/types';\n\n// --- Internal Type Helpers ---\n\nlet anonCount = 0;\nconst getFallbackLabel = (type: string) => `anon_${type}_${anonCount++}`;\n\n/**\n * Standard React Reducer type inference helpers.\n */\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\ninterface BasisContext<T> extends React.Context<T> {\n _basis_label?: string;\n}\n\n/**\n * React 19 Type Definitions for strictness.\n */\ninterface React19Extended {\n useOptimistic<S, P>(passthrough: S, reducer?: (state: S, payload: P) => S): [S, (payload: P) => void];\n useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string\n ): [state: State, dispatch: (payload: Payload) => void, isPending: boolean];\n use<T>(usable: React.Usable<T>): T;\n}\n\nconst React19 = React as unknown as React19Extended;\n\n// --- useState ---\n\nexport function useState<S>(\n initialState: S | (() => S),\n label?: string\n): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = reactUseRef(label || getFallbackLabel('state')).current;\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const setter = reactUseCallback((value: React.SetStateAction<S>) => {\n if (recordUpdate(effectiveLabel)) {\n setVal(value);\n }\n }, [effectiveLabel]);\n\n return [val, setter];\n}\n\n// --- useReducer ---\n\n/**\n * PUBLIC OVERLOAD: Lazy initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initializerArg: I,\n initializer: (arg: I) => GetReducerState<R>,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * PUBLIC OVERLOAD: Direct initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>>(\n reducer: R,\n initialState: GetReducerState<R>,\n initializer?: undefined,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * FINAL IMPLEMENTATION\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initialArg: I | GetReducerState<R>,\n init?: ((arg: I) => GetReducerState<R>) | string,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const isLazy = typeof init === 'function';\n\n // v0.5.x Label Extraction: prioritize 4th arg, fallback to 3rd if string (Babel behavior)\n const providedLabel = label || (typeof init === 'string' ? init : undefined);\n const effectiveLabel = reactUseRef(providedLabel || getFallbackLabel('reducer')).current;\n\n const [state, dispatch] = isLazy\n ? reactUseReducer(reducer, initialArg as I, init as (arg: I) => GetReducerState<R>)\n : reactUseReducer(reducer, initialArg as GetReducerState<R>);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((action: GetReducerAction<R>) => {\n if (recordUpdate(effectiveLabel)) {\n dispatch(action);\n }\n }, [effectiveLabel, dispatch]);\n\n return [state, basisDispatch];\n}\n\n// --- Context ---\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue) as BasisContext<T>;\n const effectiveLabel = label || getFallbackLabel('context');\n\n // Use non-enumerable property to store the Basis label\n Object.defineProperty(context, '_basis_label', {\n value: effectiveLabel,\n writable: false,\n enumerable: false\n });\n\n return context;\n}\n\nexport function useContext<T>(context: React.Context<T>): T {\n const val = reactUseContext(context);\n const label = (context as BasisContext<T>)._basis_label;\n\n reactUseLayoutEffect(() => {\n if (label) {\n registerVariable(label, { role: SignalRole.CONTEXT });\n recordUpdate(label);\n }\n }, [val, label]);\n\n return val;\n}\n\n// --- Projections ---\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('proj')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: unknown[]) => unknown>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('cb')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\n// --- Effects ---\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\n// --- React 19 ---\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('optimistic')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = React19.useOptimistic(passthrough, reducer);\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n\n const isLabelArg = typeof permalink === 'string' && label === undefined;\n const effectiveLabel = reactUseRef(isLabelArg ? (permalink as string) : (label || getFallbackLabel('action_state'))).current;\n const actualPermalink = isLabelArg ? undefined : permalink;\n\n const [state, reactDispatch, isPending] = React19.useActionState(action, initialState, actualPermalink);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\n// --- Direct Exports ---\nexport const useRef = reactUseRef;\nexport const useId = React.useId;\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = reactUseSyncExternalStore;\nexport const useTransition = reactUseTransition;\nexport const useDeferredValue = reactUseDeferredValue;\nexport const use = React19.use;\n\nexport const __test__ = {\n registerVariable,\n history: engineHistory,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/core/math.ts\n\n/**\n * CIRCULAR SIMILARITY (v0.5.x)\n * Calculates Cosine Similarity across circular buffers.\n * \n * Optimization: Pre-normalizes the circular offset using a single modulo operation \n * outside the hot loop. This ensures the inner loop stays linearized (no division) \n * while remaining robust against extreme lead/lag values.\n */\nexport const calculateSimilarityCircular = (\n bufferA: Uint8Array,\n headA: number,\n bufferB: Uint8Array,\n headB: number,\n offset: number\n): number => {\n const L = bufferA.length;\n let dot = 0, magA = 0, magB = 0;\n\n const baseOffset = ((headB - headA + offset) % L + L) % L;\n\n for (let i = 0; i < L; i++) {\n const valA = bufferA[i];\n\n let iB = i + baseOffset;\n if (iB >= L) {\n iB -= L;\n }\n\n const valB = bufferB[iB];\n\n dot += valA * valB;\n magA += valA * valA;\n magB += valB * valB;\n }\n\n // Prevent Divide-by-Zero (Orthogonal/Idle result)\n if (magA === 0 || magB === 0) return 0;\n\n // Cosine Similarity Formula: (A ยท B) / (||A|| * ||B||)\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n\nexport const calculateCosineSimilarity = (A: Uint8Array, B: Uint8Array): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return (magA === 0 || magB === 0) ? 0 : dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n","// src/core/logger.ts\n\nimport { calculateCosineSimilarity } from \"./math\";\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface RingBufferMetadata {\n buffer: Uint8Array;\n head: number;\n options: any;\n role: 'local' | 'context' | 'proj';\n}\n\nconst LAST_LOG_TIMES = new Map<string, number>();\nconst LOG_COOLDOWN = 3000; // 3 second suppression for identical alerts\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n subText: \"color: #636e72; font-size: 11px;\",\n bold: \"font-weight: bold;\",\n action: \"color: #00b894; font-weight: bold; border: 1px solid #00b894; padding: 0 4px; border-radius: 3px;\",\n warning: \"color: #d63031; font-weight: bold; border: 1px solid #d63031; padding: 0 4px; border-radius: 3px;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return { file: parts[0] || \"Unknown\", name: parts[1] || label };\n};\n\nconst shouldLog = (key: string) => {\n const now = Date.now();\n const last = LAST_LOG_TIMES.get(key) || 0;\n if (now - last > LOG_COOLDOWN) {\n LAST_LOG_TIMES.set(key, now);\n return true;\n }\n return false;\n};\n\nexport const displayRedundancyAlert = (labelA: string, metaA: RingBufferMetadata, labelB: string, metaB: RingBufferMetadata, sim: number) => {\n if (!isWeb || !shouldLog(`redundant-${labelA}-${labelB}`)) return;\n\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n\n const isContextMirror = (metaA.role === 'local' && metaB.role === 'context') || (metaB.role === 'local' && metaA.role === 'context');\n const local = metaA.role === 'local' ? infoA : infoB;\n const context = metaA.role === 'context' ? infoA : infoB;\n\n console.group(`%c โ BASIS | ${isContextMirror ? 'CONTEXT MIRRORING' : 'DUPLICATE STATE'} `, STYLES.headerRed);\n console.log(`%c๐ Location: %c${infoA.file}`, STYLES.bold, STYLES.location);\n\n if (isContextMirror) {\n console.log(\n `%cIssue:%c Local variable %c${local.name}%c is just a copy of Global Context %c${context.name}%c.\\n` +\n `%cConfidence: ${(sim * 100).toFixed(0)}%`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.subText\n );\n console.log(`%cFix:%c Use the context value directly to avoid state drift.`, STYLES.bold, STYLES.warning);\n } else {\n console.log(\n `%cIssue:%c %c${infoA.name}%c and %c${infoB.name}%c are synchronized (${(sim * 100).toFixed(0)}% correlation).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cFix:%c Merge states or calculate %c${infoB.name}%c from %c${infoA.name}%c via %cuseMemo%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.action, \"\"\n );\n }\n console.groupEnd();\n};\n\nexport const displayHealthReport = (history: Map<string, RingBufferMetadata>, threshold: number) => {\n if (!isWeb) return;\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, metaA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n\n entries.forEach(([labelB, metaB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = calculateCosineSimilarity(metaA.buffer, metaB.buffer);\n if (sim > threshold) {\n if (metaA.role === 'context' && metaB.role === 'context') return;\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) clusters.push(currentCluster); else independentCount++;\n });\n\n const systemRank = independentCount + clusters.length;\n const healthScore = (systemRank / totalVars) * 100;\n\n console.group(`%c ๐ BASIS | ARCHITECTURAL HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cEfficiency: %c${healthScore.toFixed(1)}% %c(${systemRank}/${totalVars} Sources of Truth)`,\n STYLES.bold, `color: ${healthScore > 85 ? '#00b894' : '#d63031'}; font-weight: bold;`, STYLES.subText\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Sync Issues:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n\n clusters.forEach((cluster, idx) => {\n const clusterMetas = cluster.map(l => ({ label: l, meta: history.get(l)!, info: parseLabel(l) }));\n const contexts = clusterMetas.filter(c => c.meta.role === 'context');\n const locals = clusterMetas.filter(c => c.meta.role === 'local');\n const names = clusterMetas.map(c => `${c.meta.role === 'context' ? 'ฮฉ ' : ''}${c.info.name}`).join(' โท ');\n\n console.group(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace; font-weight: bold;\");\n\n if (contexts.length > 0) {\n const ctxNames = contexts.map(c => c.info.name).join(', ');\n console.log(`%cDiagnosis:%c Context Mirroring. Variables are copying from %c${ctxNames}%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n console.log(`%cSolution:%c Use the context directly to avoid state drift.`, STYLES.bold, STYLES.action);\n } else {\n const isExplosion = locals.length > 2;\n if (isExplosion) {\n console.log(`%cDiagnosis:%c Boolean Explosion. Multiple states updating in sync.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Combine into a single %cstatus%c string or a %creducer%c.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n } else {\n console.log(`%cDiagnosis:%c Redundant State. Variables always change together.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Derive one from the other via %cuseMemo%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n }\n }\n console.groupEnd();\n });\n } else {\n console.log(\"%cโจ Your architecture is clean. No redundant state detected.\", \"color: #00b894; font-weight: bold;\");\n }\n console.groupEnd();\n};\n\nexport const displayCausalHint = (targetLabel: string, targetMeta: RingBufferMetadata, sourceLabel: string, sourceMeta: RingBufferMetadata) => {\n if (!isWeb || !shouldLog(`causal-${sourceLabel}-${targetLabel}`)) return;\n\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n const isContextTrigger = sourceMeta.role === 'context';\n\n console.groupCollapsed(`%c โก BASIS | ${isContextTrigger ? 'CONTEXT SYNC LEAK' : 'DOUBLE RENDER'} `, STYLES.headerBlue);\n console.log(`%c๐ Location: %c${target.file}`, STYLES.bold, STYLES.location);\n\n if (isContextTrigger) {\n console.log(`%cIssue:%c Context %c${source.name}%c updated, then local %c${target.name}%c followed 1 frame later.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n console.log(`%cImpact: This forces React to render the component twice for every change.`, STYLES.subText);\n } else {\n console.log(`%cIssue:%c %c${source.name}%c triggers %c${target.name}%c in a separate frame.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n }\n\n console.log(`%cFix:%c Derive %c${target.name}%c during the first render.`, STYLES.bold, STYLES.action, STYLES.label, \"\");\n console.groupEnd();\n};\n\nexport const displayViolentBreaker = (label: string, count: number, threshold: number) => {\n if (!isWeb) return;\n const parts = label.split(' -> ');\n console.group(`%c ๐ BASIS CRITICAL | CIRCUIT BREAKER `, 'background: #dc2626; color: white; font-weight: bold; padding: 8px 16px;');\n console.error(`INFINITE LOOP DETECTED\\nVariable: ${parts[1] || label}\\nFrequency: ${count} updates/sec`);\n console.log(`%cACTION: Update BLOCKED to prevent browser freeze.`, 'color: #dc2626; font-weight: bold;');\n console.groupEnd();\n};\n\nexport const displayBootLog = (windowSize: number) => {\n if (!isWeb) return;\n console.log(`%cBasis%cAuditor%c | v0.5.x Architectural Forensics Active (Window: ${windowSize})`, STYLES.basis, STYLES.version, \"color: #636e72; font-style: italic; margin-left: 8px;\");\n};\n","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 150;\nexport const LOOP_WINDOW_MS = 1000;\nexport const ANALYSIS_INTERVAL = 5;\n\nexport const VOLATILITY_THRESHOLD = 25;","// src/core/analysis.ts\n\nimport * as UI from './logger';\nimport { calculateSimilarityCircular } from './math';\nimport { SIMILARITY_THRESHOLD } from './constants';\nimport { SignalRole, Entry } from './types';\n\ninterface Similarities {\n sync: number;\n bA: number;\n aB: number;\n max: number;\n}\n\nconst calculateAllSimilarities = (entryA: Entry, entryB: Entry): Similarities => {\n const sync = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 0);\n const bA = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 1);\n const aB = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, -1);\n return { sync, bA, aB, max: Math.max(sync, bA, aB) };\n};\n\nconst shouldSkipComparison = (entryA: Entry, entryB: Entry, dirtyLabels: Set<string>): boolean => {\n if (entryA.label === entryB.label) return true;\n\n if (dirtyLabels.has(entryB.label) && entryA.label > entryB.label) return true;\n\n return false;\n};\n\nconst detectRedundancy = (entryA: Entry, entryB: Entry, similarities: Similarities, redundantSet: Set<string>): void => {\n const roleA = entryA.meta.role;\n const roleB = entryB.meta.role;\n\n // Context-to-Context correlation is architecturally valid\n if (roleA === SignalRole.CONTEXT && roleB === SignalRole.CONTEXT) return;\n\n // Require 2+ updates for statistical confidence (avoid false positives)\n if (entryA.meta.density < 2 || entryB.meta.density < 2) return;\n\n // Case 1: Local state mirroring Context (U โฉ W โ {0})\n if (roleA === SignalRole.LOCAL && roleB === SignalRole.CONTEXT) {\n redundantSet.add(entryA.label); // Mark LOCAL as redundant (context is source of truth)\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n // Case 2: Context mirroring Local (reverse of Case 1)\n else if (roleA === SignalRole.CONTEXT && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryB.label); // Mark LOCAL as redundant\n UI.displayRedundancyAlert(entryB.label, entryB.meta, entryA.label, entryA.meta, similarities.max);\n }\n // Case 3: Duplicate Local State (both in U subspace, but correlated)\n else if (roleA === SignalRole.LOCAL && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryA.label);\n redundantSet.add(entryB.label);\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n};\n\nconst detectCausalLeak = (entryA: Entry, entryB: Entry, similarities: Similarities): void => {\n // Skip warnings for high-frequency updates (animations, >VOLATILITY_THRESHOLD updates in buffer)\n // These are intentional and expected to update rapidly\n if (entryA.isVolatile || entryB.isVolatile) return;\n\n // B leads A: B updated, then A updated next frame (B causes A)\n if (similarities.bA === similarities.max) {\n UI.displayCausalHint(entryB.label, entryB.meta, entryA.label, entryA.meta);\n }\n // A leads B: A updated, then B updated next frame (A causes B)\n else if (similarities.aB === similarities.max) {\n UI.displayCausalHint(entryA.label, entryA.meta, entryB.label, entryB.meta);\n }\n};\n\nexport const detectSubspaceOverlap = (\n dirtyEntries: Entry[],\n allEntries: Entry[],\n redundantSet: Set<string>,\n dirtyLabels: Set<string>\n): number => {\n let compCount = 0;\n\n for (const entryA of dirtyEntries) {\n for (const entryB of allEntries) {\n if (shouldSkipComparison(entryA, entryB, dirtyLabels)) continue;\n\n compCount++;\n const similarities = calculateAllSimilarities(entryA, entryB);\n\n if (similarities.max > SIMILARITY_THRESHOLD) {\n detectRedundancy(entryA, entryB, similarities, redundantSet);\n detectCausalLeak(entryA, entryB, similarities);\n }\n }\n }\n\n return compCount;\n};\n","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { detectSubspaceOverlap } from './core/analysis';\nimport {\n SignalRole,\n StateOptions,\n RingBufferMetadata,\n BasisEngineState,\n Entry\n} from './core/types';\nimport {\n WINDOW_SIZE,\n LOOP_THRESHOLD,\n VOLATILITY_THRESHOLD\n} from './core/constants';\n\n// --- Static Internal State ---\n\nconst BASIS_INSTANCE_KEY = Symbol.for('__basis_engine_instance__');\n\n// Pre-allocated static signal to prevent GC churn in high-frequency causal tracking\nconst NULL_SIGNAL: RingBufferMetadata = {\n role: SignalRole.PROJECTION,\n buffer: new Uint8Array(0),\n head: 0,\n density: 0,\n options: {}\n};\n\n/**\n * GLOBAL SINGLETON HMR BRIDGE\n * Ensures the state history survives Hot Module Replacement cycles.\n */\nconst getGlobalInstance = (): BasisEngineState => {\n const root = globalThis as any;\n if (!root[BASIS_INSTANCE_KEY]) {\n root[BASIS_INSTANCE_KEY] = {\n config: { debug: false },\n history: new Map<string, RingBufferMetadata>(),\n currentTickBatch: new Set<string>(),\n redundantLabels: new Set<string>(),\n booted: false,\n tick: 0,\n isBatching: false,\n currentEffectSource: null,\n pausedVariables: new Set<string>(),\n metrics: {\n lastAnalysisTimeMs: 0,\n comparisonCount: 0,\n lastAnalysisTimestamp: 0,\n systemEntropy: 0\n },\n alertCount: 0,\n loopCounters: new Map<string, number>(),\n lastCleanup: Date.now()\n };\n }\n return root[BASIS_INSTANCE_KEY];\n};\n\nconst instance = getGlobalInstance();\n\nexport const config = instance.config;\nexport const history = instance.history;\nexport const redundantLabels = instance.redundantLabels;\nexport const currentTickBatch = instance.currentTickBatch;\n\nlet currentTickRegistry: Record<string, boolean> = {};\nconst dirtyLabels = new Set<string>();\n\n/**\n * TEMPORAL ENTROPY\n * Quantifies the information density of a specific tick.\n */\nconst calculateTickEntropy = (tickIdx: number) => {\n let activeCount = 0;\n const total = instance.history.size;\n if (total === 0) return 1;\n\n instance.history.forEach((meta: RingBufferMetadata) => {\n if (meta.buffer[tickIdx] === 1) activeCount++;\n });\n return 1 - (activeCount / total);\n};\n\nexport const analyzeBasis = () => {\n if (!instance.config.debug || dirtyLabels.size === 0) {\n return;\n }\n\n const scheduler = (globalThis as any).requestIdleCallback || ((cb: any) => setTimeout(cb, 1));\n\n // 1. ATOMIC SWAP: Capture current dirty state and clear immediately.\n // This ensures updates happening DURING analysis are captured for the next frame.\n const snapshot = new Set(dirtyLabels);\n dirtyLabels.clear();\n\n scheduler(() => {\n const analysisStart = performance.now();\n const allEntries: Entry[] = [];\n const dirtyEntries: Entry[] = [];\n\n // 2. Collect entries based on the snapshot\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n if (meta.options.suppressAll || meta.density === 0) return;\n\n const entry: Entry = {\n label, meta,\n isVolatile: meta.density > VOLATILITY_THRESHOLD\n };\n\n allEntries.push(entry);\n if (snapshot.has(label)) {\n dirtyEntries.push(entry);\n }\n });\n\n if (dirtyEntries.length === 0 || allEntries.length < 2) return;\n\n // 3. PERSISTENCE: Maintain debt markers for signals that weren't in the snapshot\n const nextRedundant = new Set<string>();\n instance.redundantLabels.forEach((l: string) => {\n if (!snapshot.has(l)) {\n nextRedundant.add(l);\n }\n });\n\n // 4. LOGIC PASS: Direct Sum Decomposition\n const compCount = detectSubspaceOverlap(\n dirtyEntries,\n allEntries,\n nextRedundant,\n snapshot\n );\n\n // 5. COMMIT: Update the global engine state\n instance.redundantLabels.clear();\n nextRedundant.forEach((l: string) => {\n instance.redundantLabels.add(l);\n });\n\n instance.metrics.lastAnalysisTimeMs = performance.now() - analysisStart;\n instance.metrics.comparisonCount = compCount;\n instance.metrics.lastAnalysisTimestamp = Date.now();\n });\n};\n\nconst processHeartbeat = () => {\n instance.tick++;\n\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n const oldValue = meta.buffer[meta.head];\n const newValue = instance.currentTickBatch.has(label) ? 1 : 0;\n\n // Density Update with drift prevention\n meta.buffer[meta.head] = newValue;\n if (oldValue !== newValue) {\n meta.density += (newValue - oldValue);\n }\n\n meta.head = (meta.head + 1) % WINDOW_SIZE;\n });\n\n const lastHead = (instance.history.size > 0) ? (instance.tick % WINDOW_SIZE) : 0;\n instance.metrics.systemEntropy = calculateTickEntropy(lastHead);\n\n instance.currentTickBatch.clear();\n currentTickRegistry = {};\n instance.isBatching = false;\n\n // Reactive trigger: Audit if signals are dirty\n if (dirtyLabels.size > 0) {\n analyzeBasis();\n }\n};\n\n/**\n * INTERCEPTION LAYER\n * Called by hook proxies to record state pulses.\n */\nexport const recordUpdate = (label: string): boolean => {\n if (!instance.config.debug) return true;\n if (instance.pausedVariables.has(label)) return false;\n\n const now = Date.now();\n if (now - instance.lastCleanup > 1000) {\n instance.loopCounters.clear();\n instance.lastCleanup = now;\n }\n\n const count = (instance.loopCounters.get(label) || 0) + 1;\n instance.loopCounters.set(label, count);\n\n // SECURITY: Hard Circuit Breaker\n if (count > LOOP_THRESHOLD) {\n UI.displayViolentBreaker(label, count, LOOP_THRESHOLD);\n instance.pausedVariables.add(label);\n return false;\n }\n\n if (instance.currentEffectSource && instance.currentEffectSource !== label) {\n const targetMeta = instance.history.get(label);\n const sourceMeta = instance.history.get(instance.currentEffectSource);\n\n if (targetMeta) {\n const sourceDensity = sourceMeta?.density || 0;\n const isVolatile = targetMeta.density > VOLATILITY_THRESHOLD || sourceDensity > VOLATILITY_THRESHOLD;\n\n if (!isVolatile) {\n UI.displayCausalHint(label, targetMeta, instance.currentEffectSource, sourceMeta || NULL_SIGNAL);\n }\n }\n }\n\n // BATCHING: Align updates into a single temporal tick\n if (currentTickRegistry[label]) return true;\n\n currentTickRegistry[label] = true;\n instance.currentTickBatch.add(label);\n dirtyLabels.add(label);\n\n if (!instance.isBatching) {\n instance.isBatching = true;\n requestAnimationFrame(processHeartbeat);\n }\n\n return true;\n};\n\n// --- LIFECYCLE API ---\n\nexport const configureBasis = (c: any) => {\n Object.assign(instance.config, c);\n if (instance.config.debug && !instance.booted) {\n UI.displayBootLog(WINDOW_SIZE);\n instance.booted = true;\n }\n};\n\nexport const registerVariable = (l: string, o: StateOptions = {}) => {\n if (!instance.config.debug || o.suppressAll) return;\n if (!instance.history.has(l)) {\n instance.history.set(l, {\n buffer: new Uint8Array(WINDOW_SIZE),\n head: 0,\n density: 0,\n options: o,\n role: o.role || SignalRole.LOCAL\n });\n }\n};\n\nexport const unregisterVariable = (l: string) => {\n instance.history.delete(l);\n instance.loopCounters.delete(l);\n instance.pausedVariables.delete(l);\n instance.redundantLabels.delete(l);\n};\n\nexport const beginEffectTracking = (l: string) => {\n if (instance.config.debug) instance.currentEffectSource = l;\n};\n\nexport const endEffectTracking = () => {\n instance.currentEffectSource = null;\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!instance.config.debug) return;\n UI.displayHealthReport(instance.history, threshold);\n};\n\nexport const getBasisMetrics = () => ({\n engine: 'v0.5.x',\n hooks: instance.history.size,\n analysis_ms: instance.metrics.lastAnalysisTimeMs.toFixed(3),\n entropy: instance.metrics.systemEntropy.toFixed(3)\n});\n\n// Global Attachments\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n (window as any).getBasisMetrics = getBasisMetrics;\n}\n\nexport const __testEngine__ = {\n instance,\n history,\n configureBasis,\n registerVariable,\n unregisterVariable,\n recordUpdate,\n printBasisHealthReport,\n analyzeBasis,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\nimport { BasisHUD } from './ui/BasisHUD';\n\nconst BasisContext = createContext({ debug: false });\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n showHUD?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({\n children,\n debug = true,\n showHUD = true\n}) => {\n useLayoutEffect(() => {\n configureBasis({ debug });\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n\n {(debug && showHUD && isWeb) && <BasisHUD />}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/ui/BasisHUD.tsx\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { history, redundantLabels } from '../engine';\nimport { HUD_DIMENSIONS as DIM, getHUDContainerStyle, HUD_THEME as THEME } from './config';\n\nexport const BasisHUD: React.FC = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!isExpanded) return;\n\n let isMounted = true;\n let animationFrame: number | null = null;\n\n const draw = () => {\n if (!isMounted) {\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n return;\n }\n\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const entries = Array.from(history.entries());\n const dpr = window.devicePixelRatio || 1;\n const rawWidth = DIM.WINDOW_SIZE * DIM.COL_WIDTH + DIM.LABEL_WIDTH + DIM.PADDING * 2;\n const rawHeight = Math.max(entries.length * DIM.ROW_HEIGHT + DIM.PADDING * 2, 80);\n\n updateCanvasSize(canvas, rawWidth, rawHeight, dpr);\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, rawWidth, rawHeight);\n\n if (entries.length === 0) renderEmptyState(ctx);\n else renderMatrix(ctx, entries);\n\n ctx.restore();\n animationFrame = requestAnimationFrame(draw);\n };\n\n // Kick off the animation loop\n animationFrame = requestAnimationFrame(draw);\n\n return () => {\n isMounted = false;\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n };\n }, [isExpanded]);\n\n return (\n <div style={getHUDContainerStyle(isExpanded)} onClick={() => setIsExpanded(!isExpanded)}>\n <HUDHeader isExpanded={isExpanded} />\n {isExpanded && (\n <div style={{ padding: '10px 14px 15px 14px' }}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n </div>\n )}\n </div>\n );\n};\n\nfunction updateCanvasSize(canvas: HTMLCanvasElement, w: number, h: number, dpr: number) {\n const targetW = Math.floor(w * dpr);\n const targetH = Math.floor(h * dpr);\n if (canvas.width !== targetW || canvas.height !== targetH) {\n canvas.width = targetW;\n canvas.height = targetH;\n canvas.style.width = `${w}px`;\n canvas.style.height = `${h}px`;\n }\n}\n\nfunction renderEmptyState(ctx: CanvasRenderingContext2D) {\n ctx.fillStyle = THEME.textDim;\n ctx.font = '11px Inter, sans-serif';\n ctx.fillText('Waiting for state transitions...', DIM.PADDING, 30);\n}\n\nfunction renderMatrix(ctx: CanvasRenderingContext2D, entries: [string, any][]) {\n const L = DIM.WINDOW_SIZE;\n const colW = DIM.COL_WIDTH;\n const rowH = DIM.ROW_HEIGHT;\n const pad = DIM.PADDING;\n const cellW = colW - 1.5;\n const cellH = rowH - 4;\n\n const gridPath = new Path2D();\n const successPath = new Path2D();\n const contextPath = new Path2D();\n const errorPath = new Path2D();\n\n ctx.font = \"11px Inter, Menlo, monospace\";\n\n let rowIndex = 0;\n for (const [label, meta] of entries) {\n const y = rowIndex * rowH + pad;\n const isContext = meta.role === 'context';\n const isRedundant = !isContext && redundantLabels.has(label);\n\n const { buffer, head } = meta;\n let uiPos = 0;\n\n const addToPath = (val: number, xIdx: number) => {\n const x = xIdx * colW + pad;\n if (val === 1) {\n if (isContext) contextPath.rect(x, y, cellW, cellH);\n else if (isRedundant) errorPath.rect(x, y, cellW, cellH);\n else successPath.rect(x, y, cellW, cellH);\n } else {\n gridPath.rect(x, y, cellW, cellH);\n }\n };\n\n for (let i = head; i < L; i++) addToPath(buffer[i], uiPos++);\n for (let i = 0; i < head; i++) addToPath(buffer[i], uiPos++);\n\n const stateName = label.split(' -> ')[1] || label;\n const textX = (L * colW) + pad + 10;\n\n ctx.fillStyle = isContext ? THEME.header : (isRedundant ? THEME.error : THEME.text);\n ctx.fillText((isContext ? \"ฮฉ \" : isRedundant ? \"! \" : \"\") + stateName, textX, y + 9);\n\n rowIndex++;\n }\n\n ctx.fillStyle = THEME.grid; ctx.fill(gridPath);\n ctx.fillStyle = THEME.success; ctx.fill(successPath);\n ctx.fillStyle = THEME.header; ctx.fill(contextPath);\n ctx.fillStyle = THEME.error; ctx.fill(errorPath);\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div\n style={{\n padding: '10px 14px',\n backgroundColor: isExpanded ? THEME.header : 'transparent',\n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600,\n fontSize: '11px',\n letterSpacing: '0.05em',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'background 0.3s',\n }}\n >\n <span>{isExpanded ? 'STATE BASIS MATRIX' : '๐ BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>v0.5.x</span>}\n </div>\n);","// src/ui/config.ts\n\nimport { WINDOW_SIZE } from '../core/constants';\n\nexport const HUD_DIMENSIONS = {\n WINDOW_SIZE,\n ROW_HEIGHT: 16,\n COL_WIDTH: 5,\n LABEL_WIDTH: 100,\n PADDING: 10,\n RADIUS: 1.5,\n};\n\nexport const HUD_THEME = {\n bg: 'rgba(15, 23, 42, 0.95)',\n border: '#334155',\n header: '#8b5cf6',\n text: '#f1f5f9',\n textDim: '#94a3b8',\n success: '#10b981',\n error: '#ef4444',\n grid: '#1e293b',\n};\n\nexport const getHUDContainerStyle = (isExpanded: boolean): React.CSSProperties => ({\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n backgroundColor: HUD_THEME.bg,\n border: `1px solid ${HUD_THEME.border}`,\n borderRadius: '12px',\n backdropFilter: 'blur(8px)',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n zIndex: 999999,\n overflow: 'hidden',\n width: isExpanded ? '380px' : '130px',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n cursor: 'pointer',\n userSelect: 'none',\n WebkitUserSelect: 'none'\n});","import type { Plugin } from 'vite';\nexport function basis(): Plugin {\n return {\n name: 'vite-plugin-react-state-basis',\n config() {\n return {\n optimizeDeps: {\n exclude: ['react-state-basis']\n }\n };\n }\n };\n}"],"mappings":"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","names":["useDebugValue","useId","useImperativeHandle","useInsertionEffect","history","dirtyLabels","reactUseState","reactUseRef","reactUseEffect","reactUseCallback","reactUseReducer","reactCreateContext","reactUseContext","reactUseLayoutEffect","reactUseMemo","useId","useDebugValue","useImperativeHandle","useInsertionEffect","reactUseSyncExternalStore","reactUseTransition","reactUseDeferredValue","import_react","import_react","import_jsx_runtime","isWeb"]}
|
package/dist/index.mjs
CHANGED
|
@@ -791,7 +791,11 @@ var HUDHeader = ({ isExpanded }) => /* @__PURE__ */ jsxs(
|
|
|
791
791
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
792
792
|
var BasisContext = createContext2({ debug: false });
|
|
793
793
|
var isWeb2 = typeof window !== "undefined" && typeof window.document !== "undefined";
|
|
794
|
-
var BasisProvider = ({
|
|
794
|
+
var BasisProvider = ({
|
|
795
|
+
children,
|
|
796
|
+
debug = true,
|
|
797
|
+
showHUD = true
|
|
798
|
+
}) => {
|
|
795
799
|
useLayoutEffect2(() => {
|
|
796
800
|
configureBasis({ debug });
|
|
797
801
|
if (isWeb2) {
|
|
@@ -800,7 +804,7 @@ var BasisProvider = ({ children, debug = true }) => {
|
|
|
800
804
|
}, [debug]);
|
|
801
805
|
return /* @__PURE__ */ jsxs2(BasisContext.Provider, { value: { debug }, children: [
|
|
802
806
|
children,
|
|
803
|
-
debug && isWeb2 && /* @__PURE__ */ jsx2(BasisHUD, {})
|
|
807
|
+
debug && showHUD && isWeb2 && /* @__PURE__ */ jsx2(BasisHUD, {})
|
|
804
808
|
] });
|
|
805
809
|
};
|
|
806
810
|
var useBasisConfig = () => useContext2(BasisContext);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks.ts","../src/core/math.ts","../src/core/logger.ts","../src/core/constants.ts","../src/core/analysis.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts"],"sourcesContent":["// src/hooks.ts\n\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore,\n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n} from 'react';\n\nimport {\n registerVariable,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking,\n history as engineHistory\n} from './engine';\nimport { SignalRole } from './core/types';\n\n// --- Internal Type Helpers ---\n\nlet anonCount = 0;\nconst getFallbackLabel = (type: string) => `anon_${type}_${anonCount++}`;\n\n/**\n * Standard React Reducer type inference helpers.\n */\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\ninterface BasisContext<T> extends React.Context<T> {\n _basis_label?: string;\n}\n\n/**\n * React 19 Type Definitions for strictness.\n */\ninterface React19Extended {\n useOptimistic<S, P>(passthrough: S, reducer?: (state: S, payload: P) => S): [S, (payload: P) => void];\n useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string\n ): [state: State, dispatch: (payload: Payload) => void, isPending: boolean];\n use<T>(usable: React.Usable<T>): T;\n}\n\nconst React19 = React as unknown as React19Extended;\n\n// --- useState ---\n\nexport function useState<S>(\n initialState: S | (() => S),\n label?: string\n): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = reactUseRef(label || getFallbackLabel('state')).current;\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const setter = reactUseCallback((value: React.SetStateAction<S>) => {\n if (recordUpdate(effectiveLabel)) {\n setVal(value);\n }\n }, [effectiveLabel]);\n\n return [val, setter];\n}\n\n// --- useReducer ---\n\n/**\n * PUBLIC OVERLOAD: Lazy initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initializerArg: I,\n initializer: (arg: I) => GetReducerState<R>,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * PUBLIC OVERLOAD: Direct initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>>(\n reducer: R,\n initialState: GetReducerState<R>,\n initializer?: undefined,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * FINAL IMPLEMENTATION\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initialArg: I | GetReducerState<R>,\n init?: ((arg: I) => GetReducerState<R>) | string,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const isLazy = typeof init === 'function';\n\n // v0.5.x Label Extraction: prioritize 4th arg, fallback to 3rd if string (Babel behavior)\n const providedLabel = label || (typeof init === 'string' ? init : undefined);\n const effectiveLabel = reactUseRef(providedLabel || getFallbackLabel('reducer')).current;\n\n const [state, dispatch] = isLazy\n ? reactUseReducer(reducer, initialArg as I, init as (arg: I) => GetReducerState<R>)\n : reactUseReducer(reducer, initialArg as GetReducerState<R>);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((action: GetReducerAction<R>) => {\n if (recordUpdate(effectiveLabel)) {\n dispatch(action);\n }\n }, [effectiveLabel, dispatch]);\n\n return [state, basisDispatch];\n}\n\n// --- Context ---\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue) as BasisContext<T>;\n const effectiveLabel = label || getFallbackLabel('context');\n\n // Use non-enumerable property to store the Basis label\n Object.defineProperty(context, '_basis_label', {\n value: effectiveLabel,\n writable: false,\n enumerable: false\n });\n\n return context;\n}\n\nexport function useContext<T>(context: React.Context<T>): T {\n const val = reactUseContext(context);\n const label = (context as BasisContext<T>)._basis_label;\n\n reactUseLayoutEffect(() => {\n if (label) {\n registerVariable(label, { role: SignalRole.CONTEXT });\n recordUpdate(label);\n }\n }, [val, label]);\n\n return val;\n}\n\n// --- Projections ---\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('proj')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: unknown[]) => unknown>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('cb')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\n// --- Effects ---\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\n// --- React 19 ---\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('optimistic')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = React19.useOptimistic(passthrough, reducer);\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n\n const isLabelArg = typeof permalink === 'string' && label === undefined;\n const effectiveLabel = reactUseRef(isLabelArg ? (permalink as string) : (label || getFallbackLabel('action_state'))).current;\n const actualPermalink = isLabelArg ? undefined : permalink;\n\n const [state, reactDispatch, isPending] = React19.useActionState(action, initialState, actualPermalink);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\n// --- Direct Exports ---\nexport const useRef = reactUseRef;\nexport const useId = React.useId;\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = reactUseSyncExternalStore;\nexport const useTransition = reactUseTransition;\nexport const useDeferredValue = reactUseDeferredValue;\nexport const use = React19.use;\n\nexport const __test__ = {\n registerVariable,\n history: engineHistory,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/core/math.ts\n\n/**\n * CIRCULAR SIMILARITY (v0.5.x)\n * Calculates Cosine Similarity across circular buffers.\n * \n * Optimization: Pre-normalizes the circular offset using a single modulo operation \n * outside the hot loop. This ensures the inner loop stays linearized (no division) \n * while remaining robust against extreme lead/lag values.\n */\nexport const calculateSimilarityCircular = (\n bufferA: Uint8Array,\n headA: number,\n bufferB: Uint8Array,\n headB: number,\n offset: number\n): number => {\n const L = bufferA.length;\n let dot = 0, magA = 0, magB = 0;\n\n const baseOffset = ((headB - headA + offset) % L + L) % L;\n\n for (let i = 0; i < L; i++) {\n const valA = bufferA[i];\n\n let iB = i + baseOffset;\n if (iB >= L) {\n iB -= L;\n }\n\n const valB = bufferB[iB];\n\n dot += valA * valB;\n magA += valA * valA;\n magB += valB * valB;\n }\n\n // Prevent Divide-by-Zero (Orthogonal/Idle result)\n if (magA === 0 || magB === 0) return 0;\n\n // Cosine Similarity Formula: (A ยท B) / (||A|| * ||B||)\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n\nexport const calculateCosineSimilarity = (A: Uint8Array, B: Uint8Array): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return (magA === 0 || magB === 0) ? 0 : dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n","// src/core/logger.ts\n\nimport { calculateCosineSimilarity } from \"./math\";\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface RingBufferMetadata {\n buffer: Uint8Array;\n head: number;\n options: any;\n role: 'local' | 'context' | 'proj';\n}\n\nconst LAST_LOG_TIMES = new Map<string, number>();\nconst LOG_COOLDOWN = 3000; // 3 second suppression for identical alerts\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n subText: \"color: #636e72; font-size: 11px;\",\n bold: \"font-weight: bold;\",\n action: \"color: #00b894; font-weight: bold; border: 1px solid #00b894; padding: 0 4px; border-radius: 3px;\",\n warning: \"color: #d63031; font-weight: bold; border: 1px solid #d63031; padding: 0 4px; border-radius: 3px;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return { file: parts[0] || \"Unknown\", name: parts[1] || label };\n};\n\nconst shouldLog = (key: string) => {\n const now = Date.now();\n const last = LAST_LOG_TIMES.get(key) || 0;\n if (now - last > LOG_COOLDOWN) {\n LAST_LOG_TIMES.set(key, now);\n return true;\n }\n return false;\n};\n\nexport const displayRedundancyAlert = (labelA: string, metaA: RingBufferMetadata, labelB: string, metaB: RingBufferMetadata, sim: number) => {\n if (!isWeb || !shouldLog(`redundant-${labelA}-${labelB}`)) return;\n\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n\n const isContextMirror = (metaA.role === 'local' && metaB.role === 'context') || (metaB.role === 'local' && metaA.role === 'context');\n const local = metaA.role === 'local' ? infoA : infoB;\n const context = metaA.role === 'context' ? infoA : infoB;\n\n console.group(`%c โ BASIS | ${isContextMirror ? 'CONTEXT MIRRORING' : 'DUPLICATE STATE'} `, STYLES.headerRed);\n console.log(`%c๐ Location: %c${infoA.file}`, STYLES.bold, STYLES.location);\n\n if (isContextMirror) {\n console.log(\n `%cIssue:%c Local variable %c${local.name}%c is just a copy of Global Context %c${context.name}%c.\\n` +\n `%cConfidence: ${(sim * 100).toFixed(0)}%`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.subText\n );\n console.log(`%cFix:%c Use the context value directly to avoid state drift.`, STYLES.bold, STYLES.warning);\n } else {\n console.log(\n `%cIssue:%c %c${infoA.name}%c and %c${infoB.name}%c are synchronized (${(sim * 100).toFixed(0)}% correlation).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cFix:%c Merge states or calculate %c${infoB.name}%c from %c${infoA.name}%c via %cuseMemo%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.action, \"\"\n );\n }\n console.groupEnd();\n};\n\nexport const displayHealthReport = (history: Map<string, RingBufferMetadata>, threshold: number) => {\n if (!isWeb) return;\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, metaA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n\n entries.forEach(([labelB, metaB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = calculateCosineSimilarity(metaA.buffer, metaB.buffer);\n if (sim > threshold) {\n if (metaA.role === 'context' && metaB.role === 'context') return;\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) clusters.push(currentCluster); else independentCount++;\n });\n\n const systemRank = independentCount + clusters.length;\n const healthScore = (systemRank / totalVars) * 100;\n\n console.group(`%c ๐ BASIS | ARCHITECTURAL HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cEfficiency: %c${healthScore.toFixed(1)}% %c(${systemRank}/${totalVars} Sources of Truth)`,\n STYLES.bold, `color: ${healthScore > 85 ? '#00b894' : '#d63031'}; font-weight: bold;`, STYLES.subText\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Sync Issues:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n\n clusters.forEach((cluster, idx) => {\n const clusterMetas = cluster.map(l => ({ label: l, meta: history.get(l)!, info: parseLabel(l) }));\n const contexts = clusterMetas.filter(c => c.meta.role === 'context');\n const locals = clusterMetas.filter(c => c.meta.role === 'local');\n const names = clusterMetas.map(c => `${c.meta.role === 'context' ? 'ฮฉ ' : ''}${c.info.name}`).join(' โท ');\n\n console.group(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace; font-weight: bold;\");\n\n if (contexts.length > 0) {\n const ctxNames = contexts.map(c => c.info.name).join(', ');\n console.log(`%cDiagnosis:%c Context Mirroring. Variables are copying from %c${ctxNames}%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n console.log(`%cSolution:%c Use the context directly to avoid state drift.`, STYLES.bold, STYLES.action);\n } else {\n const isExplosion = locals.length > 2;\n if (isExplosion) {\n console.log(`%cDiagnosis:%c Boolean Explosion. Multiple states updating in sync.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Combine into a single %cstatus%c string or a %creducer%c.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n } else {\n console.log(`%cDiagnosis:%c Redundant State. Variables always change together.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Derive one from the other via %cuseMemo%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n }\n }\n console.groupEnd();\n });\n } else {\n console.log(\"%cโจ Your architecture is clean. No redundant state detected.\", \"color: #00b894; font-weight: bold;\");\n }\n console.groupEnd();\n};\n\nexport const displayCausalHint = (targetLabel: string, targetMeta: RingBufferMetadata, sourceLabel: string, sourceMeta: RingBufferMetadata) => {\n if (!isWeb || !shouldLog(`causal-${sourceLabel}-${targetLabel}`)) return;\n\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n const isContextTrigger = sourceMeta.role === 'context';\n\n console.groupCollapsed(`%c โก BASIS | ${isContextTrigger ? 'CONTEXT SYNC LEAK' : 'DOUBLE RENDER'} `, STYLES.headerBlue);\n console.log(`%c๐ Location: %c${target.file}`, STYLES.bold, STYLES.location);\n\n if (isContextTrigger) {\n console.log(`%cIssue:%c Context %c${source.name}%c updated, then local %c${target.name}%c followed 1 frame later.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n console.log(`%cImpact: This forces React to render the component twice for every change.`, STYLES.subText);\n } else {\n console.log(`%cIssue:%c %c${source.name}%c triggers %c${target.name}%c in a separate frame.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n }\n\n console.log(`%cFix:%c Derive %c${target.name}%c during the first render.`, STYLES.bold, STYLES.action, STYLES.label, \"\");\n console.groupEnd();\n};\n\nexport const displayViolentBreaker = (label: string, count: number, threshold: number) => {\n if (!isWeb) return;\n const parts = label.split(' -> ');\n console.group(`%c ๐ BASIS CRITICAL | CIRCUIT BREAKER `, 'background: #dc2626; color: white; font-weight: bold; padding: 8px 16px;');\n console.error(`INFINITE LOOP DETECTED\\nVariable: ${parts[1] || label}\\nFrequency: ${count} updates/sec`);\n console.log(`%cACTION: Update BLOCKED to prevent browser freeze.`, 'color: #dc2626; font-weight: bold;');\n console.groupEnd();\n};\n\nexport const displayBootLog = (windowSize: number) => {\n if (!isWeb) return;\n console.log(`%cBasis%cAuditor%c | v0.5.x Architectural Forensics Active (Window: ${windowSize})`, STYLES.basis, STYLES.version, \"color: #636e72; font-style: italic; margin-left: 8px;\");\n};\n","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 150;\nexport const LOOP_WINDOW_MS = 1000;\nexport const ANALYSIS_INTERVAL = 5;\n\nexport const VOLATILITY_THRESHOLD = 25;","// src/core/analysis.ts\n\nimport * as UI from './logger';\nimport { calculateSimilarityCircular } from './math';\nimport { SIMILARITY_THRESHOLD } from './constants';\nimport { SignalRole, Entry } from './types';\n\ninterface Similarities {\n sync: number;\n bA: number;\n aB: number;\n max: number;\n}\n\nconst calculateAllSimilarities = (entryA: Entry, entryB: Entry): Similarities => {\n const sync = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 0);\n const bA = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 1);\n const aB = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, -1);\n return { sync, bA, aB, max: Math.max(sync, bA, aB) };\n};\n\nconst shouldSkipComparison = (entryA: Entry, entryB: Entry, dirtyLabels: Set<string>): boolean => {\n if (entryA.label === entryB.label) return true;\n\n if (dirtyLabels.has(entryB.label) && entryA.label > entryB.label) return true;\n\n return false;\n};\n\nconst detectRedundancy = (entryA: Entry, entryB: Entry, similarities: Similarities, redundantSet: Set<string>): void => {\n const roleA = entryA.meta.role;\n const roleB = entryB.meta.role;\n\n // Context-to-Context correlation is architecturally valid\n if (roleA === SignalRole.CONTEXT && roleB === SignalRole.CONTEXT) return;\n\n // Require 2+ updates for statistical confidence (avoid false positives)\n if (entryA.meta.density < 2 || entryB.meta.density < 2) return;\n\n // Case 1: Local state mirroring Context (U โฉ W โ {0})\n if (roleA === SignalRole.LOCAL && roleB === SignalRole.CONTEXT) {\n redundantSet.add(entryA.label); // Mark LOCAL as redundant (context is source of truth)\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n // Case 2: Context mirroring Local (reverse of Case 1)\n else if (roleA === SignalRole.CONTEXT && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryB.label); // Mark LOCAL as redundant\n UI.displayRedundancyAlert(entryB.label, entryB.meta, entryA.label, entryA.meta, similarities.max);\n }\n // Case 3: Duplicate Local State (both in U subspace, but correlated)\n else if (roleA === SignalRole.LOCAL && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryA.label);\n redundantSet.add(entryB.label);\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n};\n\nconst detectCausalLeak = (entryA: Entry, entryB: Entry, similarities: Similarities): void => {\n // Skip warnings for high-frequency updates (animations, >VOLATILITY_THRESHOLD updates in buffer)\n // These are intentional and expected to update rapidly\n if (entryA.isVolatile || entryB.isVolatile) return;\n\n // B leads A: B updated, then A updated next frame (B causes A)\n if (similarities.bA === similarities.max) {\n UI.displayCausalHint(entryB.label, entryB.meta, entryA.label, entryA.meta);\n }\n // A leads B: A updated, then B updated next frame (A causes B)\n else if (similarities.aB === similarities.max) {\n UI.displayCausalHint(entryA.label, entryA.meta, entryB.label, entryB.meta);\n }\n};\n\nexport const detectSubspaceOverlap = (\n dirtyEntries: Entry[],\n allEntries: Entry[],\n redundantSet: Set<string>,\n dirtyLabels: Set<string>\n): number => {\n let compCount = 0;\n\n for (const entryA of dirtyEntries) {\n for (const entryB of allEntries) {\n if (shouldSkipComparison(entryA, entryB, dirtyLabels)) continue;\n\n compCount++;\n const similarities = calculateAllSimilarities(entryA, entryB);\n\n if (similarities.max > SIMILARITY_THRESHOLD) {\n detectRedundancy(entryA, entryB, similarities, redundantSet);\n detectCausalLeak(entryA, entryB, similarities);\n }\n }\n }\n\n return compCount;\n};\n","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { detectSubspaceOverlap } from './core/analysis';\nimport {\n SignalRole,\n StateOptions,\n RingBufferMetadata,\n BasisEngineState,\n Entry\n} from './core/types';\nimport {\n WINDOW_SIZE,\n LOOP_THRESHOLD,\n VOLATILITY_THRESHOLD\n} from './core/constants';\n\n// --- Static Internal State ---\n\nconst BASIS_INSTANCE_KEY = Symbol.for('__basis_engine_instance__');\n\n// Pre-allocated static signal to prevent GC churn in high-frequency causal tracking\nconst NULL_SIGNAL: RingBufferMetadata = {\n role: SignalRole.PROJECTION,\n buffer: new Uint8Array(0),\n head: 0,\n density: 0,\n options: {}\n};\n\n/**\n * GLOBAL SINGLETON HMR BRIDGE\n * Ensures the state history survives Hot Module Replacement cycles.\n */\nconst getGlobalInstance = (): BasisEngineState => {\n const root = globalThis as any;\n if (!root[BASIS_INSTANCE_KEY]) {\n root[BASIS_INSTANCE_KEY] = {\n config: { debug: false },\n history: new Map<string, RingBufferMetadata>(),\n currentTickBatch: new Set<string>(),\n redundantLabels: new Set<string>(),\n booted: false,\n tick: 0,\n isBatching: false,\n currentEffectSource: null,\n pausedVariables: new Set<string>(),\n metrics: {\n lastAnalysisTimeMs: 0,\n comparisonCount: 0,\n lastAnalysisTimestamp: 0,\n systemEntropy: 0\n },\n alertCount: 0,\n loopCounters: new Map<string, number>(),\n lastCleanup: Date.now()\n };\n }\n return root[BASIS_INSTANCE_KEY];\n};\n\nconst instance = getGlobalInstance();\n\nexport const config = instance.config;\nexport const history = instance.history;\nexport const redundantLabels = instance.redundantLabels;\nexport const currentTickBatch = instance.currentTickBatch;\n\nlet currentTickRegistry: Record<string, boolean> = {};\nconst dirtyLabels = new Set<string>();\n\n/**\n * TEMPORAL ENTROPY\n * Quantifies the information density of a specific tick.\n */\nconst calculateTickEntropy = (tickIdx: number) => {\n let activeCount = 0;\n const total = instance.history.size;\n if (total === 0) return 1;\n\n instance.history.forEach((meta: RingBufferMetadata) => {\n if (meta.buffer[tickIdx] === 1) activeCount++;\n });\n return 1 - (activeCount / total);\n};\n\nexport const analyzeBasis = () => {\n if (!instance.config.debug || dirtyLabels.size === 0) {\n return;\n }\n\n const scheduler = (globalThis as any).requestIdleCallback || ((cb: any) => setTimeout(cb, 1));\n\n // 1. ATOMIC SWAP: Capture current dirty state and clear immediately.\n // This ensures updates happening DURING analysis are captured for the next frame.\n const snapshot = new Set(dirtyLabels);\n dirtyLabels.clear();\n\n scheduler(() => {\n const analysisStart = performance.now();\n const allEntries: Entry[] = [];\n const dirtyEntries: Entry[] = [];\n\n // 2. Collect entries based on the snapshot\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n if (meta.options.suppressAll || meta.density === 0) return;\n\n const entry: Entry = {\n label, meta,\n isVolatile: meta.density > VOLATILITY_THRESHOLD\n };\n\n allEntries.push(entry);\n if (snapshot.has(label)) {\n dirtyEntries.push(entry);\n }\n });\n\n if (dirtyEntries.length === 0 || allEntries.length < 2) return;\n\n // 3. PERSISTENCE: Maintain debt markers for signals that weren't in the snapshot\n const nextRedundant = new Set<string>();\n instance.redundantLabels.forEach((l: string) => {\n if (!snapshot.has(l)) {\n nextRedundant.add(l);\n }\n });\n\n // 4. LOGIC PASS: Direct Sum Decomposition\n const compCount = detectSubspaceOverlap(\n dirtyEntries,\n allEntries,\n nextRedundant,\n snapshot\n );\n\n // 5. COMMIT: Update the global engine state\n instance.redundantLabels.clear();\n nextRedundant.forEach((l: string) => {\n instance.redundantLabels.add(l);\n });\n\n instance.metrics.lastAnalysisTimeMs = performance.now() - analysisStart;\n instance.metrics.comparisonCount = compCount;\n instance.metrics.lastAnalysisTimestamp = Date.now();\n });\n};\n\nconst processHeartbeat = () => {\n instance.tick++;\n\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n const oldValue = meta.buffer[meta.head];\n const newValue = instance.currentTickBatch.has(label) ? 1 : 0;\n\n // Density Update with drift prevention\n meta.buffer[meta.head] = newValue;\n if (oldValue !== newValue) {\n meta.density += (newValue - oldValue);\n }\n\n meta.head = (meta.head + 1) % WINDOW_SIZE;\n });\n\n const lastHead = (instance.history.size > 0) ? (instance.tick % WINDOW_SIZE) : 0;\n instance.metrics.systemEntropy = calculateTickEntropy(lastHead);\n\n instance.currentTickBatch.clear();\n currentTickRegistry = {};\n instance.isBatching = false;\n\n // Reactive trigger: Audit if signals are dirty\n if (dirtyLabels.size > 0) {\n analyzeBasis();\n }\n};\n\n/**\n * INTERCEPTION LAYER\n * Called by hook proxies to record state pulses.\n */\nexport const recordUpdate = (label: string): boolean => {\n if (!instance.config.debug) return true;\n if (instance.pausedVariables.has(label)) return false;\n\n const now = Date.now();\n if (now - instance.lastCleanup > 1000) {\n instance.loopCounters.clear();\n instance.lastCleanup = now;\n }\n\n const count = (instance.loopCounters.get(label) || 0) + 1;\n instance.loopCounters.set(label, count);\n\n // SECURITY: Hard Circuit Breaker\n if (count > LOOP_THRESHOLD) {\n UI.displayViolentBreaker(label, count, LOOP_THRESHOLD);\n instance.pausedVariables.add(label);\n return false;\n }\n\n if (instance.currentEffectSource && instance.currentEffectSource !== label) {\n const targetMeta = instance.history.get(label);\n const sourceMeta = instance.history.get(instance.currentEffectSource);\n\n if (targetMeta) {\n const sourceDensity = sourceMeta?.density || 0;\n const isVolatile = targetMeta.density > VOLATILITY_THRESHOLD || sourceDensity > VOLATILITY_THRESHOLD;\n\n if (!isVolatile) {\n UI.displayCausalHint(label, targetMeta, instance.currentEffectSource, sourceMeta || NULL_SIGNAL);\n }\n }\n }\n\n // BATCHING: Align updates into a single temporal tick\n if (currentTickRegistry[label]) return true;\n\n currentTickRegistry[label] = true;\n instance.currentTickBatch.add(label);\n dirtyLabels.add(label);\n\n if (!instance.isBatching) {\n instance.isBatching = true;\n requestAnimationFrame(processHeartbeat);\n }\n\n return true;\n};\n\n// --- LIFECYCLE API ---\n\nexport const configureBasis = (c: any) => {\n Object.assign(instance.config, c);\n if (instance.config.debug && !instance.booted) {\n UI.displayBootLog(WINDOW_SIZE);\n instance.booted = true;\n }\n};\n\nexport const registerVariable = (l: string, o: StateOptions = {}) => {\n if (!instance.config.debug || o.suppressAll) return;\n if (!instance.history.has(l)) {\n instance.history.set(l, {\n buffer: new Uint8Array(WINDOW_SIZE),\n head: 0,\n density: 0,\n options: o,\n role: o.role || SignalRole.LOCAL\n });\n }\n};\n\nexport const unregisterVariable = (l: string) => {\n instance.history.delete(l);\n instance.loopCounters.delete(l);\n instance.pausedVariables.delete(l);\n instance.redundantLabels.delete(l);\n};\n\nexport const beginEffectTracking = (l: string) => {\n if (instance.config.debug) instance.currentEffectSource = l;\n};\n\nexport const endEffectTracking = () => {\n instance.currentEffectSource = null;\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!instance.config.debug) return;\n UI.displayHealthReport(instance.history, threshold);\n};\n\nexport const getBasisMetrics = () => ({\n engine: 'v0.5.x',\n hooks: instance.history.size,\n analysis_ms: instance.metrics.lastAnalysisTimeMs.toFixed(3),\n entropy: instance.metrics.systemEntropy.toFixed(3)\n});\n\n// Global Attachments\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n (window as any).getBasisMetrics = getBasisMetrics;\n}\n\nexport const __testEngine__ = {\n instance,\n history,\n configureBasis,\n registerVariable,\n unregisterVariable,\n recordUpdate,\n printBasisHealthReport,\n analyzeBasis,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\nimport { BasisHUD } from './ui/BasisHUD';\n\nconst BasisContext = createContext({ debug: false });\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({ children, debug = true }) => {\n useLayoutEffect(() => {\n configureBasis({ debug });\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n {(debug && isWeb) && <BasisHUD />}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/ui/BasisHUD.tsx\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { history, redundantLabels } from '../engine';\nimport { HUD_DIMENSIONS as DIM, getHUDContainerStyle, HUD_THEME as THEME } from './config';\n\nexport const BasisHUD: React.FC = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!isExpanded) return;\n\n let isMounted = true;\n let animationFrame: number | null = null;\n\n const draw = () => {\n if (!isMounted) {\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n return;\n }\n\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const entries = Array.from(history.entries());\n const dpr = window.devicePixelRatio || 1;\n const rawWidth = DIM.WINDOW_SIZE * DIM.COL_WIDTH + DIM.LABEL_WIDTH + DIM.PADDING * 2;\n const rawHeight = Math.max(entries.length * DIM.ROW_HEIGHT + DIM.PADDING * 2, 80);\n\n updateCanvasSize(canvas, rawWidth, rawHeight, dpr);\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, rawWidth, rawHeight);\n\n if (entries.length === 0) renderEmptyState(ctx);\n else renderMatrix(ctx, entries);\n\n ctx.restore();\n animationFrame = requestAnimationFrame(draw);\n };\n\n // Kick off the animation loop\n animationFrame = requestAnimationFrame(draw);\n\n return () => {\n isMounted = false;\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n };\n }, [isExpanded]);\n\n return (\n <div style={getHUDContainerStyle(isExpanded)} onClick={() => setIsExpanded(!isExpanded)}>\n <HUDHeader isExpanded={isExpanded} />\n {isExpanded && (\n <div style={{ padding: '10px 14px 15px 14px' }}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n </div>\n )}\n </div>\n );\n};\n\nfunction updateCanvasSize(canvas: HTMLCanvasElement, w: number, h: number, dpr: number) {\n const targetW = Math.floor(w * dpr);\n const targetH = Math.floor(h * dpr);\n if (canvas.width !== targetW || canvas.height !== targetH) {\n canvas.width = targetW;\n canvas.height = targetH;\n canvas.style.width = `${w}px`;\n canvas.style.height = `${h}px`;\n }\n}\n\nfunction renderEmptyState(ctx: CanvasRenderingContext2D) {\n ctx.fillStyle = THEME.textDim;\n ctx.font = '11px Inter, sans-serif';\n ctx.fillText('Waiting for state transitions...', DIM.PADDING, 30);\n}\n\nfunction renderMatrix(ctx: CanvasRenderingContext2D, entries: [string, any][]) {\n const L = DIM.WINDOW_SIZE;\n const colW = DIM.COL_WIDTH;\n const rowH = DIM.ROW_HEIGHT;\n const pad = DIM.PADDING;\n const cellW = colW - 1.5;\n const cellH = rowH - 4;\n\n const gridPath = new Path2D();\n const successPath = new Path2D();\n const contextPath = new Path2D();\n const errorPath = new Path2D();\n\n ctx.font = \"11px Inter, Menlo, monospace\";\n\n let rowIndex = 0;\n for (const [label, meta] of entries) {\n const y = rowIndex * rowH + pad;\n const isContext = meta.role === 'context';\n const isRedundant = !isContext && redundantLabels.has(label);\n\n const { buffer, head } = meta;\n let uiPos = 0;\n\n const addToPath = (val: number, xIdx: number) => {\n const x = xIdx * colW + pad;\n if (val === 1) {\n if (isContext) contextPath.rect(x, y, cellW, cellH);\n else if (isRedundant) errorPath.rect(x, y, cellW, cellH);\n else successPath.rect(x, y, cellW, cellH);\n } else {\n gridPath.rect(x, y, cellW, cellH);\n }\n };\n\n for (let i = head; i < L; i++) addToPath(buffer[i], uiPos++);\n for (let i = 0; i < head; i++) addToPath(buffer[i], uiPos++);\n\n const stateName = label.split(' -> ')[1] || label;\n const textX = (L * colW) + pad + 10;\n\n ctx.fillStyle = isContext ? THEME.header : (isRedundant ? THEME.error : THEME.text);\n ctx.fillText((isContext ? \"ฮฉ \" : isRedundant ? \"! \" : \"\") + stateName, textX, y + 9);\n\n rowIndex++;\n }\n\n ctx.fillStyle = THEME.grid; ctx.fill(gridPath);\n ctx.fillStyle = THEME.success; ctx.fill(successPath);\n ctx.fillStyle = THEME.header; ctx.fill(contextPath);\n ctx.fillStyle = THEME.error; ctx.fill(errorPath);\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div\n style={{\n padding: '10px 14px',\n backgroundColor: isExpanded ? THEME.header : 'transparent',\n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600,\n fontSize: '11px',\n letterSpacing: '0.05em',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'background 0.3s',\n }}\n >\n <span>{isExpanded ? 'STATE BASIS MATRIX' : '๐ BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>v0.5.x</span>}\n </div>\n);","// src/ui/config.ts\n\nimport { WINDOW_SIZE } from '../core/constants';\n\nexport const HUD_DIMENSIONS = {\n WINDOW_SIZE,\n ROW_HEIGHT: 16,\n COL_WIDTH: 5,\n LABEL_WIDTH: 100,\n PADDING: 10,\n RADIUS: 1.5,\n};\n\nexport const HUD_THEME = {\n bg: 'rgba(15, 23, 42, 0.95)',\n border: '#334155',\n header: '#8b5cf6',\n text: '#f1f5f9',\n textDim: '#94a3b8',\n success: '#10b981',\n error: '#ef4444',\n grid: '#1e293b',\n};\n\nexport const getHUDContainerStyle = (isExpanded: boolean): React.CSSProperties => ({\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n backgroundColor: HUD_THEME.bg,\n border: `1px solid ${HUD_THEME.border}`,\n borderRadius: '12px',\n backdropFilter: 'blur(8px)',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n zIndex: 999999,\n overflow: 'hidden',\n width: isExpanded ? '380px' : '130px',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n cursor: 'pointer',\n userSelect: 'none',\n WebkitUserSelect: 'none'\n});"],"mappings":"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","names":["history","dirtyLabels","useId","useDebugValue","useImperativeHandle","useInsertionEffect","createContext","useContext","useLayoutEffect","useEffect","useRef","useState","useState","useRef","useEffect","jsx","jsxs","createContext","isWeb","useLayoutEffect","useContext"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks.ts","../src/core/math.ts","../src/core/logger.ts","../src/core/constants.ts","../src/core/analysis.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts"],"sourcesContent":["// src/hooks.ts\n\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore,\n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n} from 'react';\n\nimport {\n registerVariable,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking,\n history as engineHistory\n} from './engine';\nimport { SignalRole } from './core/types';\n\n// --- Internal Type Helpers ---\n\nlet anonCount = 0;\nconst getFallbackLabel = (type: string) => `anon_${type}_${anonCount++}`;\n\n/**\n * Standard React Reducer type inference helpers.\n */\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\ninterface BasisContext<T> extends React.Context<T> {\n _basis_label?: string;\n}\n\n/**\n * React 19 Type Definitions for strictness.\n */\ninterface React19Extended {\n useOptimistic<S, P>(passthrough: S, reducer?: (state: S, payload: P) => S): [S, (payload: P) => void];\n useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string\n ): [state: State, dispatch: (payload: Payload) => void, isPending: boolean];\n use<T>(usable: React.Usable<T>): T;\n}\n\nconst React19 = React as unknown as React19Extended;\n\n// --- useState ---\n\nexport function useState<S>(\n initialState: S | (() => S),\n label?: string\n): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = reactUseRef(label || getFallbackLabel('state')).current;\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const setter = reactUseCallback((value: React.SetStateAction<S>) => {\n if (recordUpdate(effectiveLabel)) {\n setVal(value);\n }\n }, [effectiveLabel]);\n\n return [val, setter];\n}\n\n// --- useReducer ---\n\n/**\n * PUBLIC OVERLOAD: Lazy initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initializerArg: I,\n initializer: (arg: I) => GetReducerState<R>,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * PUBLIC OVERLOAD: Direct initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>>(\n reducer: R,\n initialState: GetReducerState<R>,\n initializer?: undefined,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * FINAL IMPLEMENTATION\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initialArg: I | GetReducerState<R>,\n init?: ((arg: I) => GetReducerState<R>) | string,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const isLazy = typeof init === 'function';\n\n // v0.5.x Label Extraction: prioritize 4th arg, fallback to 3rd if string (Babel behavior)\n const providedLabel = label || (typeof init === 'string' ? init : undefined);\n const effectiveLabel = reactUseRef(providedLabel || getFallbackLabel('reducer')).current;\n\n const [state, dispatch] = isLazy\n ? reactUseReducer(reducer, initialArg as I, init as (arg: I) => GetReducerState<R>)\n : reactUseReducer(reducer, initialArg as GetReducerState<R>);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((action: GetReducerAction<R>) => {\n if (recordUpdate(effectiveLabel)) {\n dispatch(action);\n }\n }, [effectiveLabel, dispatch]);\n\n return [state, basisDispatch];\n}\n\n// --- Context ---\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue) as BasisContext<T>;\n const effectiveLabel = label || getFallbackLabel('context');\n\n // Use non-enumerable property to store the Basis label\n Object.defineProperty(context, '_basis_label', {\n value: effectiveLabel,\n writable: false,\n enumerable: false\n });\n\n return context;\n}\n\nexport function useContext<T>(context: React.Context<T>): T {\n const val = reactUseContext(context);\n const label = (context as BasisContext<T>)._basis_label;\n\n reactUseLayoutEffect(() => {\n if (label) {\n registerVariable(label, { role: SignalRole.CONTEXT });\n recordUpdate(label);\n }\n }, [val, label]);\n\n return val;\n}\n\n// --- Projections ---\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('proj')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: unknown[]) => unknown>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('cb')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\n// --- Effects ---\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\n// --- React 19 ---\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('optimistic')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = React19.useOptimistic(passthrough, reducer);\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n\n const isLabelArg = typeof permalink === 'string' && label === undefined;\n const effectiveLabel = reactUseRef(isLabelArg ? (permalink as string) : (label || getFallbackLabel('action_state'))).current;\n const actualPermalink = isLabelArg ? undefined : permalink;\n\n const [state, reactDispatch, isPending] = React19.useActionState(action, initialState, actualPermalink);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\n// --- Direct Exports ---\nexport const useRef = reactUseRef;\nexport const useId = React.useId;\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = reactUseSyncExternalStore;\nexport const useTransition = reactUseTransition;\nexport const useDeferredValue = reactUseDeferredValue;\nexport const use = React19.use;\n\nexport const __test__ = {\n registerVariable,\n history: engineHistory,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/core/math.ts\n\n/**\n * CIRCULAR SIMILARITY (v0.5.x)\n * Calculates Cosine Similarity across circular buffers.\n * \n * Optimization: Pre-normalizes the circular offset using a single modulo operation \n * outside the hot loop. This ensures the inner loop stays linearized (no division) \n * while remaining robust against extreme lead/lag values.\n */\nexport const calculateSimilarityCircular = (\n bufferA: Uint8Array,\n headA: number,\n bufferB: Uint8Array,\n headB: number,\n offset: number\n): number => {\n const L = bufferA.length;\n let dot = 0, magA = 0, magB = 0;\n\n const baseOffset = ((headB - headA + offset) % L + L) % L;\n\n for (let i = 0; i < L; i++) {\n const valA = bufferA[i];\n\n let iB = i + baseOffset;\n if (iB >= L) {\n iB -= L;\n }\n\n const valB = bufferB[iB];\n\n dot += valA * valB;\n magA += valA * valA;\n magB += valB * valB;\n }\n\n // Prevent Divide-by-Zero (Orthogonal/Idle result)\n if (magA === 0 || magB === 0) return 0;\n\n // Cosine Similarity Formula: (A ยท B) / (||A|| * ||B||)\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n\nexport const calculateCosineSimilarity = (A: Uint8Array, B: Uint8Array): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return (magA === 0 || magB === 0) ? 0 : dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n","// src/core/logger.ts\n\nimport { calculateCosineSimilarity } from \"./math\";\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface RingBufferMetadata {\n buffer: Uint8Array;\n head: number;\n options: any;\n role: 'local' | 'context' | 'proj';\n}\n\nconst LAST_LOG_TIMES = new Map<string, number>();\nconst LOG_COOLDOWN = 3000; // 3 second suppression for identical alerts\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n subText: \"color: #636e72; font-size: 11px;\",\n bold: \"font-weight: bold;\",\n action: \"color: #00b894; font-weight: bold; border: 1px solid #00b894; padding: 0 4px; border-radius: 3px;\",\n warning: \"color: #d63031; font-weight: bold; border: 1px solid #d63031; padding: 0 4px; border-radius: 3px;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return { file: parts[0] || \"Unknown\", name: parts[1] || label };\n};\n\nconst shouldLog = (key: string) => {\n const now = Date.now();\n const last = LAST_LOG_TIMES.get(key) || 0;\n if (now - last > LOG_COOLDOWN) {\n LAST_LOG_TIMES.set(key, now);\n return true;\n }\n return false;\n};\n\nexport const displayRedundancyAlert = (labelA: string, metaA: RingBufferMetadata, labelB: string, metaB: RingBufferMetadata, sim: number) => {\n if (!isWeb || !shouldLog(`redundant-${labelA}-${labelB}`)) return;\n\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n\n const isContextMirror = (metaA.role === 'local' && metaB.role === 'context') || (metaB.role === 'local' && metaA.role === 'context');\n const local = metaA.role === 'local' ? infoA : infoB;\n const context = metaA.role === 'context' ? infoA : infoB;\n\n console.group(`%c โ BASIS | ${isContextMirror ? 'CONTEXT MIRRORING' : 'DUPLICATE STATE'} `, STYLES.headerRed);\n console.log(`%c๐ Location: %c${infoA.file}`, STYLES.bold, STYLES.location);\n\n if (isContextMirror) {\n console.log(\n `%cIssue:%c Local variable %c${local.name}%c is just a copy of Global Context %c${context.name}%c.\\n` +\n `%cConfidence: ${(sim * 100).toFixed(0)}%`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.subText\n );\n console.log(`%cFix:%c Use the context value directly to avoid state drift.`, STYLES.bold, STYLES.warning);\n } else {\n console.log(\n `%cIssue:%c %c${infoA.name}%c and %c${infoB.name}%c are synchronized (${(sim * 100).toFixed(0)}% correlation).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cFix:%c Merge states or calculate %c${infoB.name}%c from %c${infoA.name}%c via %cuseMemo%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.action, \"\"\n );\n }\n console.groupEnd();\n};\n\nexport const displayHealthReport = (history: Map<string, RingBufferMetadata>, threshold: number) => {\n if (!isWeb) return;\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, metaA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n\n entries.forEach(([labelB, metaB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = calculateCosineSimilarity(metaA.buffer, metaB.buffer);\n if (sim > threshold) {\n if (metaA.role === 'context' && metaB.role === 'context') return;\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) clusters.push(currentCluster); else independentCount++;\n });\n\n const systemRank = independentCount + clusters.length;\n const healthScore = (systemRank / totalVars) * 100;\n\n console.group(`%c ๐ BASIS | ARCHITECTURAL HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cEfficiency: %c${healthScore.toFixed(1)}% %c(${systemRank}/${totalVars} Sources of Truth)`,\n STYLES.bold, `color: ${healthScore > 85 ? '#00b894' : '#d63031'}; font-weight: bold;`, STYLES.subText\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Sync Issues:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n\n clusters.forEach((cluster, idx) => {\n const clusterMetas = cluster.map(l => ({ label: l, meta: history.get(l)!, info: parseLabel(l) }));\n const contexts = clusterMetas.filter(c => c.meta.role === 'context');\n const locals = clusterMetas.filter(c => c.meta.role === 'local');\n const names = clusterMetas.map(c => `${c.meta.role === 'context' ? 'ฮฉ ' : ''}${c.info.name}`).join(' โท ');\n\n console.group(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace; font-weight: bold;\");\n\n if (contexts.length > 0) {\n const ctxNames = contexts.map(c => c.info.name).join(', ');\n console.log(`%cDiagnosis:%c Context Mirroring. Variables are copying from %c${ctxNames}%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n console.log(`%cSolution:%c Use the context directly to avoid state drift.`, STYLES.bold, STYLES.action);\n } else {\n const isExplosion = locals.length > 2;\n if (isExplosion) {\n console.log(`%cDiagnosis:%c Boolean Explosion. Multiple states updating in sync.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Combine into a single %cstatus%c string or a %creducer%c.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n } else {\n console.log(`%cDiagnosis:%c Redundant State. Variables always change together.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Derive one from the other via %cuseMemo%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n }\n }\n console.groupEnd();\n });\n } else {\n console.log(\"%cโจ Your architecture is clean. No redundant state detected.\", \"color: #00b894; font-weight: bold;\");\n }\n console.groupEnd();\n};\n\nexport const displayCausalHint = (targetLabel: string, targetMeta: RingBufferMetadata, sourceLabel: string, sourceMeta: RingBufferMetadata) => {\n if (!isWeb || !shouldLog(`causal-${sourceLabel}-${targetLabel}`)) return;\n\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n const isContextTrigger = sourceMeta.role === 'context';\n\n console.groupCollapsed(`%c โก BASIS | ${isContextTrigger ? 'CONTEXT SYNC LEAK' : 'DOUBLE RENDER'} `, STYLES.headerBlue);\n console.log(`%c๐ Location: %c${target.file}`, STYLES.bold, STYLES.location);\n\n if (isContextTrigger) {\n console.log(`%cIssue:%c Context %c${source.name}%c updated, then local %c${target.name}%c followed 1 frame later.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n console.log(`%cImpact: This forces React to render the component twice for every change.`, STYLES.subText);\n } else {\n console.log(`%cIssue:%c %c${source.name}%c triggers %c${target.name}%c in a separate frame.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n }\n\n console.log(`%cFix:%c Derive %c${target.name}%c during the first render.`, STYLES.bold, STYLES.action, STYLES.label, \"\");\n console.groupEnd();\n};\n\nexport const displayViolentBreaker = (label: string, count: number, threshold: number) => {\n if (!isWeb) return;\n const parts = label.split(' -> ');\n console.group(`%c ๐ BASIS CRITICAL | CIRCUIT BREAKER `, 'background: #dc2626; color: white; font-weight: bold; padding: 8px 16px;');\n console.error(`INFINITE LOOP DETECTED\\nVariable: ${parts[1] || label}\\nFrequency: ${count} updates/sec`);\n console.log(`%cACTION: Update BLOCKED to prevent browser freeze.`, 'color: #dc2626; font-weight: bold;');\n console.groupEnd();\n};\n\nexport const displayBootLog = (windowSize: number) => {\n if (!isWeb) return;\n console.log(`%cBasis%cAuditor%c | v0.5.x Architectural Forensics Active (Window: ${windowSize})`, STYLES.basis, STYLES.version, \"color: #636e72; font-style: italic; margin-left: 8px;\");\n};\n","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 150;\nexport const LOOP_WINDOW_MS = 1000;\nexport const ANALYSIS_INTERVAL = 5;\n\nexport const VOLATILITY_THRESHOLD = 25;","// src/core/analysis.ts\n\nimport * as UI from './logger';\nimport { calculateSimilarityCircular } from './math';\nimport { SIMILARITY_THRESHOLD } from './constants';\nimport { SignalRole, Entry } from './types';\n\ninterface Similarities {\n sync: number;\n bA: number;\n aB: number;\n max: number;\n}\n\nconst calculateAllSimilarities = (entryA: Entry, entryB: Entry): Similarities => {\n const sync = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 0);\n const bA = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 1);\n const aB = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, -1);\n return { sync, bA, aB, max: Math.max(sync, bA, aB) };\n};\n\nconst shouldSkipComparison = (entryA: Entry, entryB: Entry, dirtyLabels: Set<string>): boolean => {\n if (entryA.label === entryB.label) return true;\n\n if (dirtyLabels.has(entryB.label) && entryA.label > entryB.label) return true;\n\n return false;\n};\n\nconst detectRedundancy = (entryA: Entry, entryB: Entry, similarities: Similarities, redundantSet: Set<string>): void => {\n const roleA = entryA.meta.role;\n const roleB = entryB.meta.role;\n\n // Context-to-Context correlation is architecturally valid\n if (roleA === SignalRole.CONTEXT && roleB === SignalRole.CONTEXT) return;\n\n // Require 2+ updates for statistical confidence (avoid false positives)\n if (entryA.meta.density < 2 || entryB.meta.density < 2) return;\n\n // Case 1: Local state mirroring Context (U โฉ W โ {0})\n if (roleA === SignalRole.LOCAL && roleB === SignalRole.CONTEXT) {\n redundantSet.add(entryA.label); // Mark LOCAL as redundant (context is source of truth)\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n // Case 2: Context mirroring Local (reverse of Case 1)\n else if (roleA === SignalRole.CONTEXT && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryB.label); // Mark LOCAL as redundant\n UI.displayRedundancyAlert(entryB.label, entryB.meta, entryA.label, entryA.meta, similarities.max);\n }\n // Case 3: Duplicate Local State (both in U subspace, but correlated)\n else if (roleA === SignalRole.LOCAL && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryA.label);\n redundantSet.add(entryB.label);\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n};\n\nconst detectCausalLeak = (entryA: Entry, entryB: Entry, similarities: Similarities): void => {\n // Skip warnings for high-frequency updates (animations, >VOLATILITY_THRESHOLD updates in buffer)\n // These are intentional and expected to update rapidly\n if (entryA.isVolatile || entryB.isVolatile) return;\n\n // B leads A: B updated, then A updated next frame (B causes A)\n if (similarities.bA === similarities.max) {\n UI.displayCausalHint(entryB.label, entryB.meta, entryA.label, entryA.meta);\n }\n // A leads B: A updated, then B updated next frame (A causes B)\n else if (similarities.aB === similarities.max) {\n UI.displayCausalHint(entryA.label, entryA.meta, entryB.label, entryB.meta);\n }\n};\n\nexport const detectSubspaceOverlap = (\n dirtyEntries: Entry[],\n allEntries: Entry[],\n redundantSet: Set<string>,\n dirtyLabels: Set<string>\n): number => {\n let compCount = 0;\n\n for (const entryA of dirtyEntries) {\n for (const entryB of allEntries) {\n if (shouldSkipComparison(entryA, entryB, dirtyLabels)) continue;\n\n compCount++;\n const similarities = calculateAllSimilarities(entryA, entryB);\n\n if (similarities.max > SIMILARITY_THRESHOLD) {\n detectRedundancy(entryA, entryB, similarities, redundantSet);\n detectCausalLeak(entryA, entryB, similarities);\n }\n }\n }\n\n return compCount;\n};\n","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { detectSubspaceOverlap } from './core/analysis';\nimport {\n SignalRole,\n StateOptions,\n RingBufferMetadata,\n BasisEngineState,\n Entry\n} from './core/types';\nimport {\n WINDOW_SIZE,\n LOOP_THRESHOLD,\n VOLATILITY_THRESHOLD\n} from './core/constants';\n\n// --- Static Internal State ---\n\nconst BASIS_INSTANCE_KEY = Symbol.for('__basis_engine_instance__');\n\n// Pre-allocated static signal to prevent GC churn in high-frequency causal tracking\nconst NULL_SIGNAL: RingBufferMetadata = {\n role: SignalRole.PROJECTION,\n buffer: new Uint8Array(0),\n head: 0,\n density: 0,\n options: {}\n};\n\n/**\n * GLOBAL SINGLETON HMR BRIDGE\n * Ensures the state history survives Hot Module Replacement cycles.\n */\nconst getGlobalInstance = (): BasisEngineState => {\n const root = globalThis as any;\n if (!root[BASIS_INSTANCE_KEY]) {\n root[BASIS_INSTANCE_KEY] = {\n config: { debug: false },\n history: new Map<string, RingBufferMetadata>(),\n currentTickBatch: new Set<string>(),\n redundantLabels: new Set<string>(),\n booted: false,\n tick: 0,\n isBatching: false,\n currentEffectSource: null,\n pausedVariables: new Set<string>(),\n metrics: {\n lastAnalysisTimeMs: 0,\n comparisonCount: 0,\n lastAnalysisTimestamp: 0,\n systemEntropy: 0\n },\n alertCount: 0,\n loopCounters: new Map<string, number>(),\n lastCleanup: Date.now()\n };\n }\n return root[BASIS_INSTANCE_KEY];\n};\n\nconst instance = getGlobalInstance();\n\nexport const config = instance.config;\nexport const history = instance.history;\nexport const redundantLabels = instance.redundantLabels;\nexport const currentTickBatch = instance.currentTickBatch;\n\nlet currentTickRegistry: Record<string, boolean> = {};\nconst dirtyLabels = new Set<string>();\n\n/**\n * TEMPORAL ENTROPY\n * Quantifies the information density of a specific tick.\n */\nconst calculateTickEntropy = (tickIdx: number) => {\n let activeCount = 0;\n const total = instance.history.size;\n if (total === 0) return 1;\n\n instance.history.forEach((meta: RingBufferMetadata) => {\n if (meta.buffer[tickIdx] === 1) activeCount++;\n });\n return 1 - (activeCount / total);\n};\n\nexport const analyzeBasis = () => {\n if (!instance.config.debug || dirtyLabels.size === 0) {\n return;\n }\n\n const scheduler = (globalThis as any).requestIdleCallback || ((cb: any) => setTimeout(cb, 1));\n\n // 1. ATOMIC SWAP: Capture current dirty state and clear immediately.\n // This ensures updates happening DURING analysis are captured for the next frame.\n const snapshot = new Set(dirtyLabels);\n dirtyLabels.clear();\n\n scheduler(() => {\n const analysisStart = performance.now();\n const allEntries: Entry[] = [];\n const dirtyEntries: Entry[] = [];\n\n // 2. Collect entries based on the snapshot\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n if (meta.options.suppressAll || meta.density === 0) return;\n\n const entry: Entry = {\n label, meta,\n isVolatile: meta.density > VOLATILITY_THRESHOLD\n };\n\n allEntries.push(entry);\n if (snapshot.has(label)) {\n dirtyEntries.push(entry);\n }\n });\n\n if (dirtyEntries.length === 0 || allEntries.length < 2) return;\n\n // 3. PERSISTENCE: Maintain debt markers for signals that weren't in the snapshot\n const nextRedundant = new Set<string>();\n instance.redundantLabels.forEach((l: string) => {\n if (!snapshot.has(l)) {\n nextRedundant.add(l);\n }\n });\n\n // 4. LOGIC PASS: Direct Sum Decomposition\n const compCount = detectSubspaceOverlap(\n dirtyEntries,\n allEntries,\n nextRedundant,\n snapshot\n );\n\n // 5. COMMIT: Update the global engine state\n instance.redundantLabels.clear();\n nextRedundant.forEach((l: string) => {\n instance.redundantLabels.add(l);\n });\n\n instance.metrics.lastAnalysisTimeMs = performance.now() - analysisStart;\n instance.metrics.comparisonCount = compCount;\n instance.metrics.lastAnalysisTimestamp = Date.now();\n });\n};\n\nconst processHeartbeat = () => {\n instance.tick++;\n\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n const oldValue = meta.buffer[meta.head];\n const newValue = instance.currentTickBatch.has(label) ? 1 : 0;\n\n // Density Update with drift prevention\n meta.buffer[meta.head] = newValue;\n if (oldValue !== newValue) {\n meta.density += (newValue - oldValue);\n }\n\n meta.head = (meta.head + 1) % WINDOW_SIZE;\n });\n\n const lastHead = (instance.history.size > 0) ? (instance.tick % WINDOW_SIZE) : 0;\n instance.metrics.systemEntropy = calculateTickEntropy(lastHead);\n\n instance.currentTickBatch.clear();\n currentTickRegistry = {};\n instance.isBatching = false;\n\n // Reactive trigger: Audit if signals are dirty\n if (dirtyLabels.size > 0) {\n analyzeBasis();\n }\n};\n\n/**\n * INTERCEPTION LAYER\n * Called by hook proxies to record state pulses.\n */\nexport const recordUpdate = (label: string): boolean => {\n if (!instance.config.debug) return true;\n if (instance.pausedVariables.has(label)) return false;\n\n const now = Date.now();\n if (now - instance.lastCleanup > 1000) {\n instance.loopCounters.clear();\n instance.lastCleanup = now;\n }\n\n const count = (instance.loopCounters.get(label) || 0) + 1;\n instance.loopCounters.set(label, count);\n\n // SECURITY: Hard Circuit Breaker\n if (count > LOOP_THRESHOLD) {\n UI.displayViolentBreaker(label, count, LOOP_THRESHOLD);\n instance.pausedVariables.add(label);\n return false;\n }\n\n if (instance.currentEffectSource && instance.currentEffectSource !== label) {\n const targetMeta = instance.history.get(label);\n const sourceMeta = instance.history.get(instance.currentEffectSource);\n\n if (targetMeta) {\n const sourceDensity = sourceMeta?.density || 0;\n const isVolatile = targetMeta.density > VOLATILITY_THRESHOLD || sourceDensity > VOLATILITY_THRESHOLD;\n\n if (!isVolatile) {\n UI.displayCausalHint(label, targetMeta, instance.currentEffectSource, sourceMeta || NULL_SIGNAL);\n }\n }\n }\n\n // BATCHING: Align updates into a single temporal tick\n if (currentTickRegistry[label]) return true;\n\n currentTickRegistry[label] = true;\n instance.currentTickBatch.add(label);\n dirtyLabels.add(label);\n\n if (!instance.isBatching) {\n instance.isBatching = true;\n requestAnimationFrame(processHeartbeat);\n }\n\n return true;\n};\n\n// --- LIFECYCLE API ---\n\nexport const configureBasis = (c: any) => {\n Object.assign(instance.config, c);\n if (instance.config.debug && !instance.booted) {\n UI.displayBootLog(WINDOW_SIZE);\n instance.booted = true;\n }\n};\n\nexport const registerVariable = (l: string, o: StateOptions = {}) => {\n if (!instance.config.debug || o.suppressAll) return;\n if (!instance.history.has(l)) {\n instance.history.set(l, {\n buffer: new Uint8Array(WINDOW_SIZE),\n head: 0,\n density: 0,\n options: o,\n role: o.role || SignalRole.LOCAL\n });\n }\n};\n\nexport const unregisterVariable = (l: string) => {\n instance.history.delete(l);\n instance.loopCounters.delete(l);\n instance.pausedVariables.delete(l);\n instance.redundantLabels.delete(l);\n};\n\nexport const beginEffectTracking = (l: string) => {\n if (instance.config.debug) instance.currentEffectSource = l;\n};\n\nexport const endEffectTracking = () => {\n instance.currentEffectSource = null;\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!instance.config.debug) return;\n UI.displayHealthReport(instance.history, threshold);\n};\n\nexport const getBasisMetrics = () => ({\n engine: 'v0.5.x',\n hooks: instance.history.size,\n analysis_ms: instance.metrics.lastAnalysisTimeMs.toFixed(3),\n entropy: instance.metrics.systemEntropy.toFixed(3)\n});\n\n// Global Attachments\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n (window as any).getBasisMetrics = getBasisMetrics;\n}\n\nexport const __testEngine__ = {\n instance,\n history,\n configureBasis,\n registerVariable,\n unregisterVariable,\n recordUpdate,\n printBasisHealthReport,\n analyzeBasis,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\nimport { BasisHUD } from './ui/BasisHUD';\n\nconst BasisContext = createContext({ debug: false });\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n showHUD?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({\n children,\n debug = true,\n showHUD = true\n}) => {\n useLayoutEffect(() => {\n configureBasis({ debug });\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n\n {(debug && showHUD && isWeb) && <BasisHUD />}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/ui/BasisHUD.tsx\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { history, redundantLabels } from '../engine';\nimport { HUD_DIMENSIONS as DIM, getHUDContainerStyle, HUD_THEME as THEME } from './config';\n\nexport const BasisHUD: React.FC = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!isExpanded) return;\n\n let isMounted = true;\n let animationFrame: number | null = null;\n\n const draw = () => {\n if (!isMounted) {\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n return;\n }\n\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const entries = Array.from(history.entries());\n const dpr = window.devicePixelRatio || 1;\n const rawWidth = DIM.WINDOW_SIZE * DIM.COL_WIDTH + DIM.LABEL_WIDTH + DIM.PADDING * 2;\n const rawHeight = Math.max(entries.length * DIM.ROW_HEIGHT + DIM.PADDING * 2, 80);\n\n updateCanvasSize(canvas, rawWidth, rawHeight, dpr);\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, rawWidth, rawHeight);\n\n if (entries.length === 0) renderEmptyState(ctx);\n else renderMatrix(ctx, entries);\n\n ctx.restore();\n animationFrame = requestAnimationFrame(draw);\n };\n\n // Kick off the animation loop\n animationFrame = requestAnimationFrame(draw);\n\n return () => {\n isMounted = false;\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n };\n }, [isExpanded]);\n\n return (\n <div style={getHUDContainerStyle(isExpanded)} onClick={() => setIsExpanded(!isExpanded)}>\n <HUDHeader isExpanded={isExpanded} />\n {isExpanded && (\n <div style={{ padding: '10px 14px 15px 14px' }}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n </div>\n )}\n </div>\n );\n};\n\nfunction updateCanvasSize(canvas: HTMLCanvasElement, w: number, h: number, dpr: number) {\n const targetW = Math.floor(w * dpr);\n const targetH = Math.floor(h * dpr);\n if (canvas.width !== targetW || canvas.height !== targetH) {\n canvas.width = targetW;\n canvas.height = targetH;\n canvas.style.width = `${w}px`;\n canvas.style.height = `${h}px`;\n }\n}\n\nfunction renderEmptyState(ctx: CanvasRenderingContext2D) {\n ctx.fillStyle = THEME.textDim;\n ctx.font = '11px Inter, sans-serif';\n ctx.fillText('Waiting for state transitions...', DIM.PADDING, 30);\n}\n\nfunction renderMatrix(ctx: CanvasRenderingContext2D, entries: [string, any][]) {\n const L = DIM.WINDOW_SIZE;\n const colW = DIM.COL_WIDTH;\n const rowH = DIM.ROW_HEIGHT;\n const pad = DIM.PADDING;\n const cellW = colW - 1.5;\n const cellH = rowH - 4;\n\n const gridPath = new Path2D();\n const successPath = new Path2D();\n const contextPath = new Path2D();\n const errorPath = new Path2D();\n\n ctx.font = \"11px Inter, Menlo, monospace\";\n\n let rowIndex = 0;\n for (const [label, meta] of entries) {\n const y = rowIndex * rowH + pad;\n const isContext = meta.role === 'context';\n const isRedundant = !isContext && redundantLabels.has(label);\n\n const { buffer, head } = meta;\n let uiPos = 0;\n\n const addToPath = (val: number, xIdx: number) => {\n const x = xIdx * colW + pad;\n if (val === 1) {\n if (isContext) contextPath.rect(x, y, cellW, cellH);\n else if (isRedundant) errorPath.rect(x, y, cellW, cellH);\n else successPath.rect(x, y, cellW, cellH);\n } else {\n gridPath.rect(x, y, cellW, cellH);\n }\n };\n\n for (let i = head; i < L; i++) addToPath(buffer[i], uiPos++);\n for (let i = 0; i < head; i++) addToPath(buffer[i], uiPos++);\n\n const stateName = label.split(' -> ')[1] || label;\n const textX = (L * colW) + pad + 10;\n\n ctx.fillStyle = isContext ? THEME.header : (isRedundant ? THEME.error : THEME.text);\n ctx.fillText((isContext ? \"ฮฉ \" : isRedundant ? \"! \" : \"\") + stateName, textX, y + 9);\n\n rowIndex++;\n }\n\n ctx.fillStyle = THEME.grid; ctx.fill(gridPath);\n ctx.fillStyle = THEME.success; ctx.fill(successPath);\n ctx.fillStyle = THEME.header; ctx.fill(contextPath);\n ctx.fillStyle = THEME.error; ctx.fill(errorPath);\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div\n style={{\n padding: '10px 14px',\n backgroundColor: isExpanded ? THEME.header : 'transparent',\n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600,\n fontSize: '11px',\n letterSpacing: '0.05em',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'background 0.3s',\n }}\n >\n <span>{isExpanded ? 'STATE BASIS MATRIX' : '๐ BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>v0.5.x</span>}\n </div>\n);","// src/ui/config.ts\n\nimport { WINDOW_SIZE } from '../core/constants';\n\nexport const HUD_DIMENSIONS = {\n WINDOW_SIZE,\n ROW_HEIGHT: 16,\n COL_WIDTH: 5,\n LABEL_WIDTH: 100,\n PADDING: 10,\n RADIUS: 1.5,\n};\n\nexport const HUD_THEME = {\n bg: 'rgba(15, 23, 42, 0.95)',\n border: '#334155',\n header: '#8b5cf6',\n text: '#f1f5f9',\n textDim: '#94a3b8',\n success: '#10b981',\n error: '#ef4444',\n grid: '#1e293b',\n};\n\nexport const getHUDContainerStyle = (isExpanded: boolean): React.CSSProperties => ({\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n backgroundColor: HUD_THEME.bg,\n border: `1px solid ${HUD_THEME.border}`,\n borderRadius: '12px',\n backdropFilter: 'blur(8px)',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n zIndex: 999999,\n overflow: 'hidden',\n width: isExpanded ? '380px' : '130px',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n cursor: 'pointer',\n userSelect: 'none',\n WebkitUserSelect: 'none'\n});"],"mappings":"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","names":["history","dirtyLabels","useId","useDebugValue","useImperativeHandle","useInsertionEffect","createContext","useContext","useLayoutEffect","useEffect","useRef","useState","useState","useRef","useEffect","jsx","jsxs","createContext","isWeb","useLayoutEffect","useContext"]}
|
package/dist/production.d.mts
CHANGED
|
@@ -5,6 +5,7 @@ export { FC, ReactNode } from 'react';
|
|
|
5
5
|
declare const BasisProvider: FC<{
|
|
6
6
|
children: ReactNode;
|
|
7
7
|
debug?: boolean;
|
|
8
|
+
showHUD?: boolean;
|
|
8
9
|
}>;
|
|
9
10
|
declare const useState: <T>(initialState: T | (() => T), _label?: string) => [T, React.Dispatch<React.SetStateAction<T>>];
|
|
10
11
|
declare function useReducer(reducer: any, initialArg: any, init?: any, _label?: string): [any, React.ActionDispatch<React.AnyActionArg>];
|
package/dist/production.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export { FC, ReactNode } from 'react';
|
|
|
5
5
|
declare const BasisProvider: FC<{
|
|
6
6
|
children: ReactNode;
|
|
7
7
|
debug?: boolean;
|
|
8
|
+
showHUD?: boolean;
|
|
8
9
|
}>;
|
|
9
10
|
declare const useState: <T>(initialState: T | (() => T), _label?: string) => [T, React.Dispatch<React.SetStateAction<T>>];
|
|
10
11
|
declare function useReducer(reducer: any, initialArg: any, init?: any, _label?: string): [any, React.ActionDispatch<React.AnyActionArg>];
|
package/dist/production.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/production.ts","../src/production-hooks.ts"],"sourcesContent":["// src/production.ts\n\nexport * from './production-hooks';\n\n// No-op Kernel exports\nexport const registerVariable = () => { };\nexport const unregisterVariable = () => { };\nexport const recordUpdate = () => true;\nexport const beginEffectTracking = () => { };\nexport const endEffectTracking = () => { };\nexport const printBasisHealthReport = () => { };\nexport const configureBasis = () => { };\n\n// Static Mock for Metrics\nexport const getBasisMetrics = () => ({\n engine: 'production',\n hooks: 0,\n analysis_ms: '0'\n});\n\nexport const config = { debug: false };\n\nexport type { ReactNode, FC } from 'react';","// src/production-hooks.ts\n\nimport * as React from 'react';\nimport type { FC, ReactNode, DependencyList, EffectCallback } from 'react';\n\nexport const BasisProvider: FC<{
|
|
1
|
+
{"version":3,"sources":["../src/production.ts","../src/production-hooks.ts"],"sourcesContent":["// src/production.ts\n\nexport * from './production-hooks';\n\n// No-op Kernel exports\nexport const registerVariable = () => { };\nexport const unregisterVariable = () => { };\nexport const recordUpdate = () => true;\nexport const beginEffectTracking = () => { };\nexport const endEffectTracking = () => { };\nexport const printBasisHealthReport = () => { };\nexport const configureBasis = () => { };\n\n// Static Mock for Metrics\nexport const getBasisMetrics = () => ({\n engine: 'production',\n hooks: 0,\n analysis_ms: '0'\n});\n\nexport const config = { debug: false };\n\nexport type { ReactNode, FC } from 'react';","// src/production-hooks.ts\n\nimport * as React from 'react';\nimport type { FC, ReactNode, DependencyList, EffectCallback } from 'react';\n\nexport const BasisProvider: FC<{\n children: ReactNode;\n debug?: boolean;\n showHUD?: boolean;\n}> = ({ children }) => {\n return React.createElement(React.Fragment, null, children);\n};\n\nexport const useState = <T>(initialState: T | (() => T), _label?: string) =>\n React.useState(initialState);\n\nexport function useReducer(reducer: any, initialArg: any, init?: any, _label?: string) {\n return typeof init === 'function'\n ? React.useReducer(reducer, initialArg, init)\n : React.useReducer(reducer, initialArg);\n}\n\nexport const createContext = <T>(defaultValue: T, _label?: string) =>\n React.createContext(defaultValue);\n\nexport const useContext = React.useContext;\n\nexport const useEffect = (effect: EffectCallback, deps?: DependencyList, _label?: string) =>\n React.useEffect(effect, deps as DependencyList);\n\nexport const useLayoutEffect = (effect: EffectCallback, deps?: DependencyList, _label?: string) =>\n React.useLayoutEffect(effect, deps as DependencyList);\n\nexport const useInsertionEffect = React.useInsertionEffect;\n\nexport const useMemo = <T>(factory: () => T, deps?: DependencyList, _label?: string) =>\n React.useMemo(factory, deps as DependencyList);\n\nexport const useCallback = <T extends (...args: any[]) => any>(callback: T, deps?: DependencyList, _label?: string) =>\n React.useCallback(callback, deps as DependencyList);\n\nexport const useRef = <T>(initialValue: T, _label?: string) =>\n React.useRef(initialValue);\n\nexport const useTransition = (_label?: string) => React.useTransition();\nexport const useDeferredValue = <T>(value: T, _label?: string) => React.useDeferredValue(value);\n\nexport const useOptimistic = <S, P>(passthrough: S, reducer?: (state: S, payload: P) => S, _label?: string) =>\n (React as any).useOptimistic(passthrough, reducer);\n\nexport const useActionState = <State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n _label?: string\n) => {\n const actualPermalink = typeof permalink === 'string' && _label === undefined ? undefined : permalink;\n return (React as any).useActionState(action, initialState, actualPermalink);\n};\n\nexport const useId = (_label?: string) => React.useId();\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useSyncExternalStore = React.useSyncExternalStore;\nexport const use = (React as any).use;"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,qBAAAC;AAAA;AAAA;;;ACEA,YAAuB;AAGhB,IAAM,gBAIR,CAAC,EAAE,SAAS,MAAM;AACnB,SAAa,oBAAoB,gBAAU,MAAM,QAAQ;AAC7D;AAEO,IAAMC,YAAW,CAAI,cAA6B,WAC/C,eAAS,YAAY;AAExB,SAASC,YAAW,SAAc,YAAiB,MAAY,QAAiB;AACnF,SAAO,OAAO,SAAS,aACX,iBAAW,SAAS,YAAY,IAAI,IACpC,iBAAW,SAAS,UAAU;AAC9C;AAEO,IAAMC,iBAAgB,CAAI,cAAiB,WACxC,oBAAc,YAAY;AAE7B,IAAMC,cAAmB;AAEzB,IAAMC,aAAY,CAAC,QAAwB,MAAuB,WAC/D,gBAAU,QAAQ,IAAsB;AAE3C,IAAMC,mBAAkB,CAAC,QAAwB,MAAuB,WACrE,sBAAgB,QAAQ,IAAsB;AAEjD,IAAMC,sBAA2B;AAEjC,IAAMC,WAAU,CAAI,SAAkB,MAAuB,WAC1D,cAAQ,SAAS,IAAsB;AAE1C,IAAMC,eAAc,CAAoC,UAAa,MAAuB,WACzF,kBAAY,UAAU,IAAsB;AAE/C,IAAMC,UAAS,CAAI,cAAiB,WACjC,aAAO,YAAY;AAEtB,IAAMC,iBAAgB,CAAC,WAA0B,oBAAc;AAC/D,IAAMC,oBAAmB,CAAI,OAAU,WAA0B,uBAAiB,KAAK;AAEvF,IAAMC,iBAAgB,CAAO,aAAgB,SAAuC,WACxE,oBAAc,aAAa,OAAO;AAE9C,IAAMC,kBAAiB,CAC1B,QACA,cACA,WACA,WACC;AACD,QAAM,kBAAkB,OAAO,cAAc,YAAY,WAAW,SAAY,SAAY;AAC5F,SAAsB,qBAAe,QAAQ,cAAc,eAAe;AAC9E;AAEO,IAAMC,SAAQ,CAAC,WAA0B,YAAM;AAC/C,IAAMC,iBAAsB;AAC5B,IAAMC,uBAA4B;AAClC,IAAMC,wBAA6B;AACnC,IAAMC,OAAqB;;;AD3D3B,IAAM,mBAAmB,MAAM;AAAE;AACjC,IAAM,qBAAqB,MAAM;AAAE;AACnC,IAAM,eAAe,MAAM;AAC3B,IAAM,sBAAsB,MAAM;AAAE;AACpC,IAAM,oBAAoB,MAAM;AAAE;AAClC,IAAM,yBAAyB,MAAM;AAAE;AACvC,IAAM,iBAAiB,MAAM;AAAE;AAG/B,IAAM,kBAAkB,OAAO;AAAA,EAClC,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AACjB;AAEO,IAAM,SAAS,EAAE,OAAO,MAAM;","names":["createContext","use","useActionState","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","useReducer","useRef","useState","useSyncExternalStore","useTransition","useState","useReducer","createContext","useContext","useEffect","useLayoutEffect","useInsertionEffect","useMemo","useCallback","useRef","useTransition","useDeferredValue","useOptimistic","useActionState","useId","useDebugValue","useImperativeHandle","useSyncExternalStore","use"]}
|
package/dist/production.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/production-hooks.ts","../src/production.ts"],"sourcesContent":["// src/production-hooks.ts\n\nimport * as React from 'react';\nimport type { FC, ReactNode, DependencyList, EffectCallback } from 'react';\n\nexport const BasisProvider: FC<{
|
|
1
|
+
{"version":3,"sources":["../src/production-hooks.ts","../src/production.ts"],"sourcesContent":["// src/production-hooks.ts\n\nimport * as React from 'react';\nimport type { FC, ReactNode, DependencyList, EffectCallback } from 'react';\n\nexport const BasisProvider: FC<{\n children: ReactNode;\n debug?: boolean;\n showHUD?: boolean;\n}> = ({ children }) => {\n return React.createElement(React.Fragment, null, children);\n};\n\nexport const useState = <T>(initialState: T | (() => T), _label?: string) =>\n React.useState(initialState);\n\nexport function useReducer(reducer: any, initialArg: any, init?: any, _label?: string) {\n return typeof init === 'function'\n ? React.useReducer(reducer, initialArg, init)\n : React.useReducer(reducer, initialArg);\n}\n\nexport const createContext = <T>(defaultValue: T, _label?: string) =>\n React.createContext(defaultValue);\n\nexport const useContext = React.useContext;\n\nexport const useEffect = (effect: EffectCallback, deps?: DependencyList, _label?: string) =>\n React.useEffect(effect, deps as DependencyList);\n\nexport const useLayoutEffect = (effect: EffectCallback, deps?: DependencyList, _label?: string) =>\n React.useLayoutEffect(effect, deps as DependencyList);\n\nexport const useInsertionEffect = React.useInsertionEffect;\n\nexport const useMemo = <T>(factory: () => T, deps?: DependencyList, _label?: string) =>\n React.useMemo(factory, deps as DependencyList);\n\nexport const useCallback = <T extends (...args: any[]) => any>(callback: T, deps?: DependencyList, _label?: string) =>\n React.useCallback(callback, deps as DependencyList);\n\nexport const useRef = <T>(initialValue: T, _label?: string) =>\n React.useRef(initialValue);\n\nexport const useTransition = (_label?: string) => React.useTransition();\nexport const useDeferredValue = <T>(value: T, _label?: string) => React.useDeferredValue(value);\n\nexport const useOptimistic = <S, P>(passthrough: S, reducer?: (state: S, payload: P) => S, _label?: string) =>\n (React as any).useOptimistic(passthrough, reducer);\n\nexport const useActionState = <State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n _label?: string\n) => {\n const actualPermalink = typeof permalink === 'string' && _label === undefined ? undefined : permalink;\n return (React as any).useActionState(action, initialState, actualPermalink);\n};\n\nexport const useId = (_label?: string) => React.useId();\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useSyncExternalStore = React.useSyncExternalStore;\nexport const use = (React as any).use;","// src/production.ts\n\nexport * from './production-hooks';\n\n// No-op Kernel exports\nexport const registerVariable = () => { };\nexport const unregisterVariable = () => { };\nexport const recordUpdate = () => true;\nexport const beginEffectTracking = () => { };\nexport const endEffectTracking = () => { };\nexport const printBasisHealthReport = () => { };\nexport const configureBasis = () => { };\n\n// Static Mock for Metrics\nexport const getBasisMetrics = () => ({\n engine: 'production',\n hooks: 0,\n analysis_ms: '0'\n});\n\nexport const config = { debug: false };\n\nexport type { ReactNode, FC } from 'react';"],"mappings":";AAEA,YAAY,WAAW;AAGhB,IAAM,gBAIR,CAAC,EAAE,SAAS,MAAM;AACnB,SAAa,oBAAoB,gBAAU,MAAM,QAAQ;AAC7D;AAEO,IAAMA,YAAW,CAAI,cAA6B,WAC/C,eAAS,YAAY;AAExB,SAASC,YAAW,SAAc,YAAiB,MAAY,QAAiB;AACnF,SAAO,OAAO,SAAS,aACX,iBAAW,SAAS,YAAY,IAAI,IACpC,iBAAW,SAAS,UAAU;AAC9C;AAEO,IAAMC,iBAAgB,CAAI,cAAiB,WACxC,oBAAc,YAAY;AAE7B,IAAMC,cAAmB;AAEzB,IAAMC,aAAY,CAAC,QAAwB,MAAuB,WAC/D,gBAAU,QAAQ,IAAsB;AAE3C,IAAMC,mBAAkB,CAAC,QAAwB,MAAuB,WACrE,sBAAgB,QAAQ,IAAsB;AAEjD,IAAMC,sBAA2B;AAEjC,IAAMC,WAAU,CAAI,SAAkB,MAAuB,WAC1D,cAAQ,SAAS,IAAsB;AAE1C,IAAMC,eAAc,CAAoC,UAAa,MAAuB,WACzF,kBAAY,UAAU,IAAsB;AAE/C,IAAMC,UAAS,CAAI,cAAiB,WACjC,aAAO,YAAY;AAEtB,IAAMC,iBAAgB,CAAC,WAA0B,oBAAc;AAC/D,IAAMC,oBAAmB,CAAI,OAAU,WAA0B,uBAAiB,KAAK;AAEvF,IAAMC,iBAAgB,CAAO,aAAgB,SAAuC,WACxE,oBAAc,aAAa,OAAO;AAE9C,IAAMC,kBAAiB,CAC1B,QACA,cACA,WACA,WACC;AACD,QAAM,kBAAkB,OAAO,cAAc,YAAY,WAAW,SAAY,SAAY;AAC5F,SAAsB,qBAAe,QAAQ,cAAc,eAAe;AAC9E;AAEO,IAAMC,SAAQ,CAAC,WAA0B,YAAM;AAC/C,IAAMC,iBAAsB;AAC5B,IAAMC,uBAA4B;AAClC,IAAMC,wBAA6B;AACnC,IAAMC,OAAqB;;;AC3D3B,IAAM,mBAAmB,MAAM;AAAE;AACjC,IAAM,qBAAqB,MAAM;AAAE;AACnC,IAAM,eAAe,MAAM;AAC3B,IAAM,sBAAsB,MAAM;AAAE;AACpC,IAAM,oBAAoB,MAAM;AAAE;AAClC,IAAM,yBAAyB,MAAM;AAAE;AACvC,IAAM,iBAAiB,MAAM;AAAE;AAG/B,IAAM,kBAAkB,OAAO;AAAA,EAClC,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AACjB;AAEO,IAAM,SAAS,EAAE,OAAO,MAAM;","names":["useState","useReducer","createContext","useContext","useEffect","useLayoutEffect","useInsertionEffect","useMemo","useCallback","useRef","useTransition","useDeferredValue","useOptimistic","useActionState","useId","useDebugValue","useImperativeHandle","useSyncExternalStore","use"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-state-basis",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Runtime state profiler for React that detects redundant state, update chains, and infinite loops by tracking when state updates happen.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|