From a78393a08cf14d6ee34935f9eeeaae08345e2c3e Mon Sep 17 00:00:00 2001 From: becktothefuture <45033529+becktothefuture@users.noreply.github.com> Date: Sun, 31 Aug 2025 22:08:08 +0100 Subject: [PATCH 01/32] release: bump version to 0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1bf1f09..40bf9c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mindtyper", - "version": "0.2.0-alpha", + "version": "0.4.0", "type": "module", "scripts": { "build": "tsc -p tsconfig.json", From 7af66601ad1b2ec7ec8a220056f8f9885bb645ce Mon Sep 17 00:00:00 2001 From: becktothefuture <45033529+becktothefuture@users.noreply.github.com> Date: Tue, 2 Sep 2025 22:57:55 +0100 Subject: [PATCH 02/32] =?UTF-8?q?feat(v0.4):=20add=20confidenceGate,=20sta?= =?UTF-8?q?gingBuffer,=20context/tone=20transformers,=20language=20gating;?= =?UTF-8?q?=20integrate=20three-stage=20pipeline=20(gated);=20rename=20tid?= =?UTF-8?q?ySweep=E2=86=92noiseTransformer=20across=20code/tests/docs;=20a?= =?UTF-8?q?dd=20pipeline=20tests=20and=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 10244 bytes CHANGELOG.md | 4 +- README.md | 8 +- config/defaultThresholds.ts | 12 + core/confidenceGate.ts | 101 + core/diffusionController.ts | 31 +- core/languageDetection.ts | 45 + core/lm/types.generated.ts | 18 +- core/stagingBuffer.ts | 111 + core/sweepScheduler.ts | 125 +- demo/band-swap/main.js | 24 +- demo/band-swap/styles.css | 8 +- docs/ADHD-docs.md | 8 +- docs/adr/0002-caret-safe-diff.md | 4 +- docs/analysis/v0.3_gap_report.md | 2 +- docs/architecture/C2-containers.md | 2 +- docs/architecture/C3-components.md | 2 +- docs/guide/how-to/add-a-grammar-rule.md | 4 +- docs/guide/reference/confidence-system.md | 36 + docs/guide/reference/three-stage-pipeline.md | 27 + docs/implementation.md | 244 +- docs/qa/acceptance/confidence_gate.feature | 8 + .../qa/acceptance/context_transformer.feature | 8 + docs/qa/acceptance/language_gating.feature | 8 + .../acceptance/three_stage_pipeline.feature | 8 + docs/qa/acceptance/tone_controls_ui.feature | 8 + docs/qa/acceptance/tone_transformer.feature | 8 + docs/traceability.json | 179 +- docs/v0.4/MindType v0.4-master guide.md | 1211 ++++++++ docs/v0.4/MindType-v0.4-Architecture.mmd | 282 ++ .../_archive/MindType-v0.4-Architecture.pdf | Bin 0 -> 611988 bytes .../_archive/MindType-v0.4-Architecture.png | Bin 0 -> 147818 bytes docs/v0.4/v0.4-enhancement-summary.md | 155 + e2e/tests/web-demo-tone-controls.spec.ts | 8 + engines/contextTransformer.ts | 137 + engines/{tidySweep.ts => noiseTransformer.ts} | 34 +- engines/toneTransformer.ts | 90 + node_modules/.bin/eslint | 8 +- node_modules/.bin/eslint-config-prettier | 8 +- node_modules/.modules.yaml | 585 +++- node_modules/.pnpm-workspace-state-v1.json | 2 +- node_modules/.pnpm/lock.yaml | 2634 ++++++++++++++++- .../@eslint-community/eslint-utils | 2 +- .../@typescript-eslint/type-utils | 2 +- .../node_modules/@typescript-eslint/utils | 2 +- node_modules/.pnpm/node_modules/chalk | 2 +- node_modules/.vite/vitest/results.json | 2 +- node_modules/@typescript-eslint/eslint-plugin | 2 +- node_modules/@typescript-eslint/parser | 2 +- node_modules/eslint | 2 +- node_modules/eslint-config-prettier | 2 +- node_modules/eslint-plugin-prettier | 2 +- package.json | 1 + pnpm-lock.yaml | 2634 ++++++++++++++++- tests/confidenceGate.spec.ts | 93 + tests/contextTransformer.spec.ts | 39 + tests/diffusionController_branches.spec.ts | 6 +- tests/ft202_integration.spec.ts | 10 +- tests/integration.spec.ts | 8 +- tests/languageDetection.spec.ts | 12 + ...Sweep.spec.ts => noiseTransformer.spec.ts} | 98 +- ...c.ts => noiseTransformer_branches.spec.ts} | 22 +- ...=> noiseTransformer_more_branches.spec.ts} | 8 +- ...ts => noiseTransformer_whitespace.spec.ts} | 14 +- tests/secureFields.spec.ts | 4 +- tests/stagingBuffer.spec.ts | 66 + tests/sweepScheduler.spec.ts | 12 +- tests/sweepScheduler_branches.spec.ts | 11 + tests/sweepScheduler_catchup_error.spec.ts | 10 +- tests/sweepScheduler_pipeline.spec.ts | 164 + tests/toneTransformer.spec.ts | 39 + web-demo/src/App.css | 16 + web-demo/src/App.tsx | 16 + 73 files changed, 9203 insertions(+), 297 deletions(-) create mode 100644 core/confidenceGate.ts create mode 100644 core/languageDetection.ts create mode 100644 core/stagingBuffer.ts create mode 100644 docs/guide/reference/confidence-system.md create mode 100644 docs/guide/reference/three-stage-pipeline.md create mode 100644 docs/qa/acceptance/confidence_gate.feature create mode 100644 docs/qa/acceptance/context_transformer.feature create mode 100644 docs/qa/acceptance/language_gating.feature create mode 100644 docs/qa/acceptance/three_stage_pipeline.feature create mode 100644 docs/qa/acceptance/tone_controls_ui.feature create mode 100644 docs/qa/acceptance/tone_transformer.feature create mode 100644 docs/v0.4/MindType v0.4-master guide.md create mode 100644 docs/v0.4/MindType-v0.4-Architecture.mmd create mode 100644 docs/v0.4/_archive/MindType-v0.4-Architecture.pdf create mode 100644 docs/v0.4/_archive/MindType-v0.4-Architecture.png create mode 100644 docs/v0.4/v0.4-enhancement-summary.md create mode 100644 e2e/tests/web-demo-tone-controls.spec.ts create mode 100644 engines/contextTransformer.ts rename engines/{tidySweep.ts => noiseTransformer.ts} (94%) create mode 100644 engines/toneTransformer.ts create mode 100644 tests/confidenceGate.spec.ts create mode 100644 tests/contextTransformer.spec.ts create mode 100644 tests/languageDetection.spec.ts rename tests/{tidySweep.spec.ts => noiseTransformer.spec.ts} (78%) rename tests/{tidySweep_branches.spec.ts => noiseTransformer_branches.spec.ts} (58%) rename tests/{tidySweep_more_branches.spec.ts => noiseTransformer_more_branches.spec.ts} (87%) rename tests/{tidySweep_whitespace.spec.ts => noiseTransformer_whitespace.spec.ts} (58%) create mode 100644 tests/stagingBuffer.spec.ts create mode 100644 tests/sweepScheduler_branches.spec.ts create mode 100644 tests/sweepScheduler_pipeline.spec.ts create mode 100644 tests/toneTransformer.spec.ts diff --git a/.DS_Store b/.DS_Store index 817981dc4c7e500576df06cf9cce65f592aa550e..b4f1fe08b694e4df847c9a6ac0da8eb645d25ad8 100644 GIT binary patch delta 535 zcmZn(XbG6$aFU^hRb>Si8+=}h&R$z=seIr&Kp42*x13UV@wOAHL|3kWhYF|)9; zv2$>8ar5x<@e2qF35$q|iAzXGibzSz$jZqn#0v-~B_?O57v-1cr8wv3z0Dp0EQGQNN zKz?y1NFpLKv8X69FFn<%GBzhMDK*DG&nds8BtI9V5@Z_C@c~7tAd|q>1s5bHXXd3V z+i!~xQD9(TP<99cl3<2LJ(OktGUc%YkS)NVZ2ti&2BARe^A3R793n6wD9xyRApHTD z9Rl(rC#SN5Zv&Xmz`>x);LPB|5Xz9nP{}ZXVGhFzhFuIt87?tAXZXp;%qYmH%&5<3 zVa4dk=*1Y!7|IyOn9f+hSjgDK*v&YBaU$a+h&fD*5Sl>|N<%5e*_)>eMRRXvSNO%U J`Hc`WGXNc7j*S2S delta 38 ucmZn(XbG6$C7U^hRb%4Qyc=}en4FY!GGI%&zc@WwV$#Gcy4DhYREY diff --git a/CHANGELOG.md b/CHANGELOG.md index 2536c58..4cdaa56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,14 +51,14 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver ### Added -- FT-212: Punctuation normalization in `engines/tidySweep.ts` (spaces around commas/periods, em dash spacing). +- FT-212: Punctuation normalization in `engines/noiseTransformer.ts` (spaces around commas/periods, em dash spacing). - FT-214: Whitespace normalization (collapse multi-spaces/tabs; trim trailing whitespace before newline). - FT-216: Capitalization rules (sentence-start capitalization; standalone 'i' → 'I'). - Web demo: active region alignment and newline safety improvements; `SecurityContext` gating hooks. ### Tests -- Expanded unit tests across tidySweep rules, diffusion controller, and sweep scheduler; integration harness proves end-to-end flow. +- Expanded unit tests across noise transformer rules, diffusion controller, and sweep scheduler; integration harness proves end-to-end flow. - Added branch-edge tests to lift global branch coverage ≥90%; utils guard at 100% branches. ### CI / Quality Gates diff --git a/README.md b/README.md index c8cb03c..fb58054 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ MindType/ ### engines/ -- `engines/tidySweep.ts`: Forward pass that proposes minimal diffs behind the CARET within a `MAX_SWEEP_WINDOW` window (stub returns no diff until rules land). +- `engines/noiseTransformer.ts`: Forward pass that proposes minimal diffs behind the CARET within a `MAX_SWEEP_WINDOW` window. - `engines/backfillConsistency.ts`: Reverse pass that proposes consistency diffs in the stable zone behind the caret (stub returns empty array). ### ui/ @@ -147,7 +147,7 @@ MindType/ ### tests/ -- `tests/tidySweep.spec.ts`: Verifies tidy sweep returns no crossing-caret edits (stubbed now). +- `tests/noiseTransformer.spec.ts`: Verifies noise transformer returns no crossing-caret edits. - `tests/backfill.spec.ts`: Ensures reverse pass outputs array of diffs (shape guard for stable zone logic). - `tests/diff.spec.ts`: Validates `replaceRange` correctness and caret guardrails. @@ -222,7 +222,7 @@ MindType/ ### core/ - **purpose**: Orchestration glue: subscribe to typing, debounce, trigger sweeps. -- **responsibilities**: Emit `TypingEvent` snapshots, schedule `tidySweep` and `backfillConsistency` after pauses. +- **responsibilities**: Emit `TypingEvent` snapshots, schedule `noiseTransform` and `backfillConsistency` after pauses. - **when to change**: Adjust debounce rules, add/remove sweep phases, connect monitors in hosts. - **contracts**: - `TypingEvent` shape is `{ text, caret, atMs }`. @@ -324,7 +324,7 @@ Keep these contracts visible in code (types, tests) and docs; if you change one, ## Cross-Module Data Flow (high level) - Host editor → `core/typingMonitor` (keystrokes, caret, timestamps) -- `core/sweepScheduler` → triggers `engines/tidySweep` (short pause) and `engines/backfillConsistency` (idle) +- `core/sweepScheduler` → triggers `engines/noiseTransformer` (short pause) and `engines/backfillConsistency` (idle) - Engines propose diffs → host applies (grouping optional; tapestry/LM evolutions are exempt) → `ui/highlighter` shows feedback - Rust crate primitives (WASM) may augment extraction/merging/logging when integrated into the demo or apps diff --git a/config/defaultThresholds.ts b/config/defaultThresholds.ts index 62a5182..ad3627b 100644 --- a/config/defaultThresholds.ts +++ b/config/defaultThresholds.ts @@ -23,6 +23,18 @@ let typingTickMs = 75; let minValidationWords = 5; let maxValidationWords = 5; +// Confidence thresholds for v0.4 pipeline +export const CONFIDENCE_THRESHOLDS = { + // τ_input: minimum input fidelity to attempt Context stage + τ_input: 0.65, + // τ_commit: minimum combined score to apply any proposal + τ_commit: 0.9, + // τ_tone: tone proposals must also meet this + τ_tone: 0.85, + // τ_discard: below this, proposals are dropped + τ_discard: 0.3, +} as const; + export function getTypingTickMs(): number { return typingTickMs; } diff --git a/core/confidenceGate.ts b/core/confidenceGate.ts new file mode 100644 index 0000000..6a39a22 --- /dev/null +++ b/core/confidenceGate.ts @@ -0,0 +1,101 @@ +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ CONFIDENCEGATE ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ Confidence gating across pipeline stages + • WHY ▸ REQ-CONFIDENCE-GATE + • HOW ▸ See linked contracts and guides in docs +*/ + +import { CONFIDENCE_THRESHOLDS } from '../config/defaultThresholds'; + +export interface ConfidenceInputs { + inputFidelity: number; // [0,1] + transformationQuality: number; // [0,1] + contextCoherence: number; // [0,1] + temporalDecay: number; // [0,1] +} + +export interface ConfidenceScore extends ConfidenceInputs { + combined: number; // weighted sum +} + +export type GateDecision = 'hold' | 'commit' | 'discard'; + +const WEIGHTS = { + inputFidelity: 0.3, + transformationQuality: 0.4, + contextCoherence: 0.2, + temporalDecay: 0.1, +} as const; + +export function clamp01(x: number): number { + if (Number.isNaN(x) || !Number.isFinite(x)) return 0; + return Math.max(0, Math.min(1, x)); +} + +export function computeInputFidelity(sample: string): number { + // Heuristic: ratio of letters/digits to total non-space chars, capped [0,1] + const cleaned = sample.replace(/\s+/g, ''); + if (cleaned.length === 0) return 0; + const good = (cleaned.match(/[\p{L}\p{N}]/gu) || []).length; + return clamp01(good / cleaned.length); +} + +export function computeConfidence(inputs: ConfidenceInputs): ConfidenceScore { + const a = clamp01(inputs.inputFidelity); + const b = clamp01(inputs.transformationQuality); + const c = clamp01(inputs.contextCoherence); + const d = clamp01(inputs.temporalDecay); + const combined = + a * WEIGHTS.inputFidelity + + b * WEIGHTS.transformationQuality + + c * WEIGHTS.contextCoherence + + d * WEIGHTS.temporalDecay; + return { + inputFidelity: a, + transformationQuality: b, + contextCoherence: c, + temporalDecay: d, + combined, + }; +} + +export interface Thresholds { + τ_input: number; + τ_commit: number; + τ_tone: number; + τ_discard: number; +} + +export function applyThresholds( + score: ConfidenceScore, + thresholds: Thresholds = CONFIDENCE_THRESHOLDS, + opts?: { requireTone?: boolean }, +): GateDecision { + // If the raw input isn't good enough, hold (don’t proceed to deeper stages) + if (score.inputFidelity < thresholds.τ_input) return 'hold'; + // If very low combined, discard + if (score.combined < thresholds.τ_discard) return 'discard'; + // If tone is required for this decision, enforce both tone and commit bars + if (opts?.requireTone) { + if ( + score.combined >= thresholds.τ_commit && + score.transformationQuality >= thresholds.τ_tone + ) { + return 'commit'; + } + return 'hold'; + } + // Otherwise, commit only on combined meeting commit threshold + if (score.combined >= thresholds.τ_commit) return 'commit'; + return 'hold'; +} diff --git a/core/diffusionController.ts b/core/diffusionController.ts index 9ec2bce..27999f3 100644 --- a/core/diffusionController.ts +++ b/core/diffusionController.ts @@ -10,8 +10,8 @@ ║ ║ ║ ║ ╚══════════════════════════════════════════════════════════╝ - • WHAT ▸ Streamed diffusion of LM corrections - • WHY ▸ REQ-STREAMED-DIFFUSION + • WHAT ▸ Streamed diffusion of LM corrections; Context transformer with ±2 sentence look-around; Tone transformer with baseline detection and selectable tone; Confidence gating across pipeline stages; Integrate Noise → Context → Tone pipeline with staging buffer; English-only gating for full pipeline (Noise for others) + • WHY ▸ REQ-STREAMED-DIFFUSION, REQ-CONTEXT-TRANSFORMER, REQ-TONE-TRANSFORMER, REQ-CONFIDENCE-GATE, REQ-THREE-STAGE-PIPELINE, REQ-LANGUAGE-GATING • HOW ▸ See linked contracts and guides in docs */ @@ -20,7 +20,7 @@ import { getMinValidationWords, getMaxValidationWords, } from '../config/defaultThresholds'; -import { tidySweep } from '../engines/tidySweep'; +import { noiseTransform } from '../engines/noiseTransformer'; import { replaceRange } from '../utils/diff'; import type { LMAdapter } from './lm/types'; import type { ActiveRegionPolicy } from './activeRegionPolicy'; @@ -147,7 +147,7 @@ export function createDiffusionController( function tickOnce() { const r = nextWordRange(); if (!r) return; - const res = tidySweep({ text: state.text, caret: state.caret, hint: r }); + const res = noiseTransform({ text: state.text, caret: state.caret, hint: r }); if (res.diff) { // Do not log user text per privacy policy log.debug('diff', { @@ -254,5 +254,26 @@ export function createDiffusionController( } catch {} } - return { update, tickOnce, catchUp, getState: () => state }; + function applyExternal(diff: { start: number; end: number; text: string }): boolean { + try { + const updated = replaceRange( + state.text, + diff.start, + diff.end, + diff.text, + state.caret, + ); + state.text = updated; + const newEnd = diff.start + diff.text.length; + state.frontier = Math.max(state.frontier, newEnd); + clampFrontier(); + maybeRender(); + return true; + } catch { + // Safety guards failed; ignore external diff + return false; + } + } + + return { update, tickOnce, catchUp, getState: () => state, applyExternal }; } diff --git a/core/languageDetection.ts b/core/languageDetection.ts new file mode 100644 index 0000000..2c89e34 --- /dev/null +++ b/core/languageDetection.ts @@ -0,0 +1,45 @@ +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ LANGUAGEDETECTION ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ English-only gating for full pipeline (Noise for others) + • WHY ▸ REQ-LANGUAGE-GATING + • HOW ▸ See linked contracts and guides in docs +*/ + +export type LanguageCode = 'en' | 'other'; + +const EN_STOPWORDS = new Set([ + 'the', + 'and', + 'to', + 'of', + 'in', + 'is', + 'you', + 'that', + 'it', + 'for', + 'on', + 'with', +]); + +export function detectLanguage(text: string): LanguageCode { + const sample = text.slice(0, 500).toLowerCase(); + const alpha = (sample.match(/[a-z]/g) || []).length; + const nonLatin = (sample.match(/[^\x00-\x7f]/g) || []).length; + const words = sample.match(/[a-z']+/g) || []; + let enHits = 0; + for (const w of words) if (EN_STOPWORDS.has(w)) enHits++; + // Basic rules: mostly ASCII letters and some English stopwords → en + if (alpha > 0 && nonLatin / (alpha + 1) < 0.05 && enHits >= 1) return 'en'; + return 'other'; +} diff --git a/core/lm/types.generated.ts b/core/lm/types.generated.ts index 87742d2..ce06b01 100644 --- a/core/lm/types.generated.ts +++ b/core/lm/types.generated.ts @@ -10,22 +10,8 @@ export interface AnimTokens { } export const DEFAULT_SYMBOLS = [ - '\u2800', - '\u2802', - '\u2804', - '\u2806', - '\u2810', - '\u2812', - '\u2814', - '\u2816', - '\u2820', - '\u2822', - '\u2824', - '\u2826', - '\u2830', - '\u2832', - '\u2834', - '\u2836', + '\u2800','\u2802','\u2804','\u2806','\u2810','\u2812','\u2814','\u2816', + '\u2820','\u2822','\u2824','\u2826','\u2830','\u2832','\u2834','\u2836', ] as const; export interface LMStreamParams { diff --git a/core/stagingBuffer.ts b/core/stagingBuffer.ts new file mode 100644 index 0000000..eeee024 --- /dev/null +++ b/core/stagingBuffer.ts @@ -0,0 +1,111 @@ +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ STAGINGBUFFER ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ Confidence gating across pipeline stages + • WHY ▸ REQ-CONFIDENCE-GATE + • HOW ▸ See linked contracts and guides in docs +*/ + +import type { ConfidenceScore } from './confidenceGate'; + +export type ProposalState = 'hold' | 'commit' | 'discard' | 'rollback'; + +export interface Proposal { + id: string; + start: number; + end: number; + text: string; + createdAt: number; + state: ProposalState; + score?: ConfidenceScore; +} + +export interface StagingBufferOptions { + maxProposals?: number; + ttlMs?: number; // time-to-live for stale proposals +} + +export class StagingBuffer { + private items: Proposal[] = []; + private opts: Required; + constructor(opts?: StagingBufferOptions) { + this.opts = { + maxProposals: Math.max(1, Math.min(256, opts?.maxProposals ?? 64)), + ttlMs: Math.max(1, Math.min(600000, opts?.ttlMs ?? 3000)), + }; + } + + list(): readonly Proposal[] { + return this.items; + } + + add( + p: Omit & Partial>, + ): Proposal { + const now = Date.now(); + // Evict if too many + if (this.items.length >= this.opts.maxProposals) this.items.shift(); + const next: Proposal = { + id: p.id, + start: p.start, + end: p.end, + text: p.text, + createdAt: now, + state: p.state ?? 'hold', + score: undefined, + }; + this.items.push(next); + return next; + } + + updateScore( + id: string, + score: ConfidenceScore, + decision: ProposalState, + ): Proposal | null { + const item = this.items.find((x) => x.id === id) || null; + if (!item) return null; + item.score = score; + item.state = decision; + return item; + } + + // Caret moved into active region → rollback any active proposals overlapping caret + onCaretMove(caret: number): number { + let rolled = 0; + for (const p of this.items) { + if (p.state === 'commit' || p.state === 'hold') { + if (p.start <= caret && caret <= p.end) { + p.state = 'rollback'; + rolled += 1; + } + } + } + return rolled; + } + + // Cleanup old/discarded proposals + cleanup(now = Date.now()): void { + this.items = this.items.filter((p) => { + if (p.state === 'discard') return false; + if (now - p.createdAt > this.opts.ttlMs) return false; + return true; + }); + } + + // Pop next item ready to commit + nextCommit(): Proposal | null { + const i = this.items.findIndex((p) => p.state === 'commit'); + if (i === -1) return null; + return this.items.splice(i, 1)[0]; + } +} diff --git a/core/sweepScheduler.ts b/core/sweepScheduler.ts index 047b65e..47109be 100644 --- a/core/sweepScheduler.ts +++ b/core/sweepScheduler.ts @@ -1,43 +1,69 @@ -/*╔══════════════════════════════════════════════════════════════╗ - ║ ░ S W E E P S C H E D U L E R ░░░░░░░░░░░░░░░░░░░░░░░ ║ - ║ ║ - ║ Schedules forward (tidy) and reverse (backfill) passes ║ - ║ based on TYPING MONITOR signals and pause thresholds. ║ - ║ ║ - ║ ║ - ║ ║ - ║ ║ - ║ ║ - ╚══════════════════════════════════════════════════════════════╝ - • WHAT ▸ Debounces events; triggers tidySweep/backfill passes - • WHY ▸ Avoids excessive compute; respects CARET dynamics - • HOW ▸ Subscribes to TypingMonitor; invokes engines with input +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ SWEEPSCHEDULER ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ Integrate Noise → Context → Tone pipeline with staging buffer; English-only gating for full pipeline (Noise for others) + • WHY ▸ REQ-THREE-STAGE-PIPELINE, REQ-LANGUAGE-GATING + • HOW ▸ See linked contracts and guides in docs */ import { SHORT_PAUSE_MS, getTypingTickMs } from '../config/defaultThresholds'; -import { tidySweep } from '../engines/tidySweep'; +import { noiseTransform } from '../engines/noiseTransformer'; import { backfillConsistency } from '../engines/backfillConsistency'; import type { TypingMonitor, TypingEvent } from './typingMonitor'; import { createDiffusionController } from './diffusionController'; import type { LMAdapter } from './lm/types'; import { createLogger } from './logger'; import type { SecurityContext } from './security'; +import { contextTransform } from '../engines/contextTransformer'; +import { + detectBaseline, + planAdjustments, + type ToneOption, +} from '../engines/toneTransformer'; +import { detectLanguage } from './languageDetection'; +import { StagingBuffer } from './stagingBuffer'; +import { + applyThresholds, + computeConfidence, + computeInputFidelity, + type ConfidenceInputs, +} from './confidenceGate'; export interface SweepScheduler { start(): void; stop(): void; } +export interface PipelineOptions { + toneEnabled?: boolean; + toneTarget?: ToneOption; // 'None' | 'Casual' | 'Professional' +} + export function createSweepScheduler( monitor?: TypingMonitor, security?: SecurityContext, getLMAdapter?: () => LMAdapter | null, + pipeline?: PipelineOptions, ): SweepScheduler { let lastEvent: TypingEvent | null = null; let timer: ReturnType | null = null; let typingInterval: ReturnType | null = null; const diffusion = createDiffusionController(undefined, getLMAdapter); const log = createLogger('sweep'); + const sb = new StagingBuffer(); + const opts: Required = { + toneEnabled: pipeline?.toneEnabled ?? false, + toneTarget: pipeline?.toneTarget ?? 'None', + }; function clearIntervals() { if (timer) clearTimeout(timer); @@ -56,6 +82,10 @@ export function createSweepScheduler( lastEvent = ev; log.debug('onEvent', { caret: ev.caret, textLen: ev.text.length }); diffusion.update(ev.text, ev.caret); + // Caret moved; mark overlapping proposals for rollback (future: apply rollback) + try { + sb.onCaretMove(ev.caret); + } catch {} if (timer) clearTimeout(timer); // schedule pause catch-up timer = setTimeout(() => runSweeps(), SHORT_PAUSE_MS); @@ -93,8 +123,71 @@ export function createSweepScheduler( log.warn('catchUp threw; continuing'); } // Legacy engines can still run after catch-up - tidySweep({ text: lastEvent.text, caret: lastEvent.caret }); + noiseTransform({ text: lastEvent.text, caret: lastEvent.caret }); backfillConsistency({ text: lastEvent.text, caret: lastEvent.caret }); + + // v0.4 pipeline: Context → Tone (English-only) under confidence gating + try { + const st = diffusion.getState(); + const lang = detectLanguage(st.text); + if (lang === 'en') { + // Context stage + const ctx = contextTransform({ text: st.text, caret: st.caret }); + for (const p of ctx.proposals) { + const sample = st.text.slice( + Math.max(0, p.start - 80), + Math.min(st.caret, p.end + 80), + ); + const inputs: ConfidenceInputs = { + inputFidelity: computeInputFidelity(sample), + transformationQuality: p.text === st.text.slice(p.start, p.end) ? 0 : 0.95, + contextCoherence: 0.8, + temporalDecay: 1, + }; + const score = computeConfidence(inputs); + const decision = applyThresholds(score); + sb.updateScore(`ctx-${p.start}-${p.end}`, score, decision); + if (decision === 'commit') { + diffusion.applyExternal(p); + } + } + + // Tone stage (optional) + if (opts.toneEnabled && opts.toneTarget !== 'None') { + const updated = diffusion.getState(); + const baseline = detectBaseline(updated.text); + const tProps = planAdjustments( + baseline, + opts.toneTarget, + updated.text, + updated.caret, + ); + for (const p of tProps) { + const sample = updated.text.slice( + Math.max(0, p.start - 80), + Math.min(updated.caret, p.end + 80), + ); + const inputs: ConfidenceInputs = { + inputFidelity: computeInputFidelity(sample), + transformationQuality: + p.text === updated.text.slice(p.start, p.end) ? 0 : 0.9, + contextCoherence: 0.75, + temporalDecay: 1, + }; + const score = computeConfidence(inputs); + const decision = applyThresholds(score, undefined, { requireTone: true }); + sb.updateScore(`tone-${p.start}-${p.end}`, score, decision); + if (decision === 'commit') { + diffusion.applyExternal(p); + } + } + } + } + } catch (err) { + log.warn('v0.4 pipeline run failed', { err: (err as Error).message }); + } finally { + sb.cleanup(); + } } let unsubscribe: (() => void) | null = null; diff --git a/demo/band-swap/main.js b/demo/band-swap/main.js index 88ef7c1..77d3222 100644 --- a/demo/band-swap/main.js +++ b/demo/band-swap/main.js @@ -1,18 +1,18 @@ /*╔══════════════════════════════════════════════════════════╗ - ║ ░ MANUAL NOISE WAVE DEMO v2 ░░░░░░░░░░░░░░░░░░░░░░░ ║ - ║ ║ - ║ ║ - ║ ║ - ║ ║ + ║ ░ MAIN ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ ║ ╌╌ P L A C E H O L D E R ╌╌ ║ - ║ ║ - ║ ║ - ║ ║ - ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ ╚══════════════════════════════════════════════════════════╝ - • WHAT ▸ Manually controllable noise wave with 0.1s updates - • WHY ▸ Interactive living text experience with user control - • HOW ▸ Click/drag positioning, efficient noise generation + • WHAT ▸ Band-swap noise-cluster animation demo; Band-swap animation tokens + • WHY ▸ REQ-BAND-SWAP, CONTRACT-BAND-SWAP + • HOW ▸ See linked contracts and guides in docs */ // Configuration for the manual noise wave diff --git a/demo/band-swap/styles.css b/demo/band-swap/styles.css index 28922d8..4cad4e3 100644 --- a/demo/band-swap/styles.css +++ b/demo/band-swap/styles.css @@ -1,5 +1,5 @@ /*╔══════════════════════════════════════════════════════════╗ - ║ ░ MANUAL NOISE WAVE STYLES v2 ░░░░░░░░░░░░░░░░░░░░ ║ + ║ ░ STYLES ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ ║ ║ ║ ║ ║ ║ @@ -10,9 +10,9 @@ ║ ║ ║ ║ ╚══════════════════════════════════════════════════════════╝ - • WHAT ▸ Interactive manual wave control with click/drag support - • WHY ▸ Enable precise user control of noise wave position - • HOW ▸ Cursor states, visual feedback, touch support + • WHAT ▸ Band-swap noise-cluster animation demo + • WHY ▸ REQ-BAND-SWAP + • HOW ▸ See linked contracts and guides in docs */ :root { diff --git a/docs/ADHD-docs.md b/docs/ADHD-docs.md index b7559b5..b476daa 100644 --- a/docs/ADHD-docs.md +++ b/docs/ADHD-docs.md @@ -28,7 +28,7 @@ - **Keystrokes → Events**: `TypingMonitor` emits `{ text, caret, atMs }`. See `core/typingMonitor.ts`. - **Scheduler**: `SweepScheduler` paces streaming ticks (~60–90 ms) and catch‑up after ~500 ms idle. See `core/sweepScheduler.ts`. - **Diffusion**: `DiffusionController` moves a frontier toward the caret, validating word‑by‑word in a trailing band (3–8 words). See `core/diffusionController.ts` and `docs/guide/reference/band-policy.md`. -- **Engines**: Rules (`engines/tidySweep.ts`) and (optional) LM stream. Rules fix structure (typos, spaces). LM fixes semantics. See `docs/guide/reference/lm-behavior.md`. +- **Engines**: Rules (`engines/noiseTransformer.ts`) and (optional) LM stream. Rules fix structure (typos, spaces). LM fixes semantics. See `docs/guide/reference/lm-behavior.md`. - **Merge**: Apply tiny diffs, never at/after the caret; Unicode‑safe. TS: `utils/diff.ts`. Rust: `docs/guide/reference/rust-merge.md` (target). - **Host Injection**: Web updates a textarea; macOS uses Accessibility APIs. Contract in `docs/guide/reference/injector.md`. @@ -42,7 +42,7 @@ ## Rules vs LM (who fixes what) -- **Rules**: cheap, instant, deterministic. Good for typos, punctuation, capitalisation. File: `engines/tidySweep.ts`. +- **Rules**: cheap, instant, deterministic. Good for typos, punctuation, capitalisation. File: `engines/noiseTransformer.ts`. - **LM**: semantic upgrades (agreement, clarity) with strict policy: span‑only prompts, short outputs, abort on input. Files: `core/lm/policy.ts`, v0.2 orchestrator in `crates/core-rs/src/*`. - **Priority**: On conflicts, rules win for structure; LM wins for semantics when safe. Details in `docs/guide/reference/lm-behavior.md`. @@ -68,13 +68,13 @@ 2. `DiffusionController` advances one word → rules apply a tiny diff (if safe). 3. After a pause, controller catches up to the caret. If LM is on: it selects a short span, prompts, streams, merges safely. 4. UI shows a subtle band and highlight. Caret never moves. Undo is one step. - See: `core/sweepScheduler.ts`, `core/diffusionController.ts`, `engines/tidySweep.ts`, `docs/guide/reference/lm-behavior.md`. + See: `core/sweepScheduler.ts`, `core/diffusionController.ts`, `engines/noiseTransformer.ts`, `docs/guide/reference/lm-behavior.md`. ## Deep‑dive links (pick your lane) - Product constraints: `docs/PRD.md`, `docs/adr/0003-architecture-constraints.md` - Architecture: `docs/architecture/README.md`, `docs/architecture/C1-context.md`, `C2-containers.md`, `C3-components.md` -- Core engines: `engines/tidySweep.ts`, `engines/backfillConsistency.ts` +- Core engines: `engines/noiseTransformer.ts`, `engines/backfillConsistency.ts` - Diffusion & Band: `core/diffusionController.ts`, `docs/guide/reference/band-policy.md` - LM behavior: `docs/guide/reference/lm-behavior.md`, `core/lm/policy.ts`, `docs/guide/reference/lm-worker.md`, `crates/core-rs/src/*` - Merge safety: `utils/diff.ts`, `docs/guide/reference/rust-merge.md`, ADR‑0002 diff --git a/docs/adr/0002-caret-safe-diff.md b/docs/adr/0002-caret-safe-diff.md index cd083e0..114b21b 100644 --- a/docs/adr/0002-caret-safe-diff.md +++ b/docs/adr/0002-caret-safe-diff.md @@ -38,5 +38,5 @@ Links (Traceability) - PRD: `docs/PRD.md#functional-requirements` - Principles: `docs/system_principles.md#4-caret-safe-never-risky` - Architecture: `docs/architecture/C3-components.md` -- Code: `utils/diff.ts`, `engines/tidySweep.ts` -- Tests: `tests/diff.spec.ts`, `tests/tidySweep.spec.ts` +- Code: `utils/diff.ts`, `engines/noiseTransformer.ts` +- Tests: `tests/diff.spec.ts`, `tests/noiseTransformer.spec.ts` diff --git a/docs/analysis/v0.3_gap_report.md b/docs/analysis/v0.3_gap_report.md index 1967a89..e494daa 100644 --- a/docs/analysis/v0.3_gap_report.md +++ b/docs/analysis/v0.3_gap_report.md @@ -30,7 +30,7 @@ Date: 2025-08-26 | Cross‑platform core (Rust FFI + WASM) | Crate exists; caret monitor present; FFI only version/free; merge is stub append | Missing merge gate API; no wasm-bindgen apply_span; memory helpers minimal | FT-302, FT-500/501 | | Caret Monitor (typing/pause/caret_entered_active_region) | TS `typingMonitor.ts` minimal; Rust `caret_monitor.rs` rich | Not integrated; no `caret_entered_active_region` surfaced to hosts | FT-301 (adopt Rust monitor via WASM/C FFI) | | Scheduler (single‑flight + cooldown) | `core/sweepScheduler.ts` timers; LM client has single‑flight/cooldown | Not centralized; no abort routing for all transformers | FT-303 (new core scheduler) | -| Transformers: Noise | Rules live in `engines/tidySweep.ts`; no separate noise module | Need fast micro‑fixes with reason codes and confidences | FT-304 | +| Transformers: Noise | Rules live in `engines/noiseTransformer.ts`; no separate noise module | Need fast micro‑fixes with reason codes and confidences | FT-304 | | Transformers: Context (local LM) | `core/lm/*` and `mergePolicy.ts` stream LM tokens | Constrain to Active Region via Rust gate; orchestrate on pause | FT-305 | | Transformers: Tone | None | Implement light, post‑Context normalizations | FT-306 | | Diff/Merge Gate (Rust) | `merge.rs` stub; no caret clamp/UTF‑16/undo buckets | Implement real gate + undo buckets + exports | FT-302 | diff --git a/docs/architecture/C2-containers.md b/docs/architecture/C2-containers.md index 835a230..be6ea4e 100644 --- a/docs/architecture/C2-containers.md +++ b/docs/architecture/C2-containers.md @@ -26,5 +26,5 @@ Contracts - REQ-IME-CARETSAFE: applies within Engine/Accessibility boundary. -- REQ-TIDY-SWEEP: `engines/tidySweep.ts` public function contract. +- REQ-NOISE-TRANSFORMER: `engines/noiseTransformer.ts` public function contract. - REQ-A11Y-MOTION: `ui/highlighter.ts` honors motion prefs. diff --git a/docs/architecture/C3-components.md b/docs/architecture/C3-components.md index 19d1170..b3c1a45 100644 --- a/docs/architecture/C3-components.md +++ b/docs/architecture/C3-components.md @@ -18,7 +18,7 @@ - TypingMonitor (`core/typingMonitor.ts`): emits keystream events. - SweepScheduler (`core/sweepScheduler.ts`): orchestrates passes. -- TidySweep (`engines/tidySweep.ts`): proposes minimal, caret‑safe diffs. +- Noise Transformer (`engines/noiseTransformer.ts`): proposes minimal, caret‑safe diffs. - REQ-TIDY-SWEEP, REQ-IME-CARETSAFE - BackfillConsistency (`engines/backfillConsistency.ts`): stable‑zone passes. - Diff (`utils/diff.ts`): replaceRange with caret safety. REQ-IME-CARETSAFE diff --git a/docs/guide/how-to/add-a-grammar-rule.md b/docs/guide/how-to/add-a-grammar-rule.md index 10c2d76..27f5550 100644 --- a/docs/guide/how-to/add-a-grammar-rule.md +++ b/docs/guide/how-to/add-a-grammar-rule.md @@ -13,11 +13,11 @@ ╚══════════════════════════════════════════════════════╝ • WHAT ▸ Add a safe grammar tidy rule • WHY ▸ Improve fluency without changing voice - • HOW ▸ Implement in `engines/tidySweep.ts` + • HOW ▸ Implement in `engines/noiseTransformer.ts` --> Checklist - Never cross CARET; operate ≤ 80 chars behind it. - Confidence gate; return null if unsure. -- Add unit tests in `tests/tidySweep.spec.ts`. +- Add unit tests in `tests/noiseTransformer.spec.ts`. diff --git a/docs/guide/reference/confidence-system.md b/docs/guide/reference/confidence-system.md new file mode 100644 index 0000000..666422d --- /dev/null +++ b/docs/guide/reference/confidence-system.md @@ -0,0 +1,36 @@ + + +# Confidence System (v0.4) + +- Plainly: We score each proposal in four ways (was the input clear? was the change good? does it fit nearby text? is it fresh?). We mix those into one number and compare to thresholds. If it’s not strong enough, we hold. If it’s great, we commit. If it’s very weak, we discard. +- The Tone stage needs extra confidence: it must pass both τ_tone and τ_commit so we don’t rephrase text without being sure. +- This is fast math, not a heavy model — it adds under ~5ms. + +## Thresholds + +- τ_input = 0.65: below this, we avoid deep context work. +- τ_commit = 0.90: commit only when combined score is strong. +- τ_tone = 0.85: tone-specific quality bar. +- τ_discard = 0.30: drop very weak proposals quickly. + +## Developer Notes + +- All functions are in `core/confidenceGate.ts`. +- The staging buffer (`core/stagingBuffer.ts`) tracks proposal states and applies the decisions. +- Keep caret safety in mind: proposals must never touch or cross the caret. diff --git a/docs/guide/reference/three-stage-pipeline.md b/docs/guide/reference/three-stage-pipeline.md new file mode 100644 index 0000000..6e619db --- /dev/null +++ b/docs/guide/reference/three-stage-pipeline.md @@ -0,0 +1,27 @@ + + +# Three-Stage Pipeline (v0.4) + +- Noise: fast local cleanup of keystrokes (typos, spacing). Always behind the caret. +- Context: sentence-level fixes using ±2 sentences (S−1=1.0, S−2=0.5). Runs on pause when input fidelity ≥ τ_input. +- Tone: gentle rephrasing to match the selected tone (None/Casual/Professional). Applies only when τ_tone and τ_commit are met. + +Safety: Edits never touch or cross the caret. Tone stage does not rollback on caret move but still never edits at/after the caret. + +Scheduling: The scheduler streams Noise while typing. On a ≥500ms pause, it schedules Context; upon commit, Tone may run if language gating allows. diff --git a/docs/implementation.md b/docs/implementation.md index 0c506ea..457f5e7 100644 --- a/docs/implementation.md +++ b/docs/implementation.md @@ -227,7 +227,7 @@ Task checklist template (copy into PR description): ### Tidy Sweep Implementation (P1) - [x] (P1) [FT-210] Create tidy sweep engine scaffold - **AC:** - Basic engine structure in `engines/tidySweep.ts` - Rule interface defined - Test infrastructure + **AC:** - Basic engine structure in `engines/noiseTransformer.ts` - Rule interface defined - Test infrastructure **Owner:** @alex **DependsOn:** FT-120 **Source:** PRD REQ-TIDY-SWEEP @@ -849,3 +849,245 @@ All docs follow house comment header style; stubs will be filled as tasks land. - **Write the truth in docs.** The tool mirrors that truth onto files so others can see WHAT/WHY/HOW. - **Add SPEC blocks** (REQ/CONTRACT) where changes happen. - **Run `pnpm doc:sync`** to propagate updates. + +## Stage 6 — v0.4 Three-Stage Pipeline (P1) + +> Beginner-friendly summary +> +> We are upgrading from a single-stage “tidy sweep” into a 3-stage pipeline: Noise → Context → Tone. We’ll also add a confidence-scoring system and a staging buffer so only high-quality edits are applied. Finally, we add English-only gating and tone controls in the demo. + +```yaml +- id: FT-401 + title: Implement Context Transformer + priority: P1 + dependsOn: [FT-232] + acceptance: + - engines/contextTransformer.ts with ±2 sentence look-around + - Grammar, syntax, semantics correction + - Integration with confidence gating (τ_input ≥ 0.65) + - Never edits at/after caret + - Unit tests for context window and lookahead gate + output: engines/contextTransformer.ts, tests/contextTransformer.spec.ts + +- id: FT-402 + title: Implement Tone Transformer + priority: P1 + dependsOn: [FT-401] + acceptance: + - engines/toneTransformer.ts with baseline tone detection + - Options: None (pass-through), Casual, Professional + - Scope: last N sentences (CPU:10, WebGPU/WASM:20) + - Gating: τ_tone (0.85) AND τ_commit to apply + - Toggle control with in-flight completion + - Unit tests for tone detection and minimal-diff rewrites + output: engines/toneTransformer.ts, tests/toneTransformer.spec.ts + +- id: FT-403 + title: Implement Confidence Gating System + priority: P1 + dependsOn: [FT-241] + acceptance: + - core/confidenceGate.ts with mathematical scoring + - Four dimensions: input fidelity, transform quality, context coherence, temporal decay + - Threshold enforcement: τ_input, τ_commit, τ_tone, τ_discard + - Integration with staging buffer + - Unit tests for scoring algorithms and threshold behavior + output: core/confidenceGate.ts, tests/confidenceGate.spec.ts + +- id: FT-404 + title: Implement Staging Buffer State Machine + priority: P1 + dependsOn: [FT-403] + acceptance: + - core/stagingBuffer.ts with HOLD/COMMIT/DISCARD/ROLLBACK states + - State transition logic triggered by confidence scores + - Memory management and stale proposal cleanup + - Caret movement triggers and rollback handling + - Unit tests for state machine and edge cases + output: core/stagingBuffer.ts, tests/stagingBuffer.spec.ts + +- id: FT-405 + title: Integrate Three-Stage Pipeline + priority: P1 + dependsOn: [FT-401, FT-402, FT-403, FT-404] + acceptance: + - Update core/diffusionController.ts for Noise → Context → Tone flow + - Replace simple frontier with staging buffer + - Add confidence gating before edits + - Rollback triggers on caret entry + - Integration tests for full pipeline + output: Updated core/diffusionController.ts, tests/integration.spec.ts + +- id: FT-406 + title: Add Language Detection and English-Only Gating + priority: P1 + dependsOn: [FT-405] + acceptance: + - Language detection for input text + - Full pipeline (Context + Tone) only for English + - Noise-only for non-English (future multilingual support) + - Unit tests for language gating behavior + output: core/languageDetection.ts, tests/languageDetection.spec.ts + +- id: FT-407 + title: Update Web Demo for v0.4 Controls + priority: P1 + dependsOn: [FT-405, FT-406] + acceptance: + - Tone selection dropdown: None, Casual, Professional + - Toggle control for tone ON/OFF + - Confidence threshold sliders: τ_input, τ_commit, τ_tone + - Settings persistence to localStorage + - Performance metrics for each stage + - Cross-browser compatibility + output: Updated web-demo/src/App.tsx, web-demo/src/App.css + +- id: FT-408 + title: Update Examples and Rename Neutral → None + priority: P1 + dependsOn: [FT-407] + acceptance: + - All examples show three-stage pipeline flow + - Add None (pass-through) examples + - Add low-tier (N=10) scope examples + - Add English-only gating examples + - Rename "Neutral" → "None (pass-through)" throughout codebase + - Update all test fixtures and documentation + output: Updated tests/**, docs/**, web-demo/** +``` + +## Stage 7 — v0.4 Polish & Optimization (P2) + +```yaml +- id: FT-501 + title: Undo Isolation System + priority: P2 + dependsOn: [FT-405] + acceptance: + - core/undoIsolation.ts with time-bucketed system edits + - 100-200ms grouping windows + - Separate from user undo stack + - Internal rollback API + - Unit tests for bucket management + output: core/undoIsolation.ts, tests/undoIsolation.spec.ts + +- id: FT-502 + title: Enhanced Visual Feedback + priority: P2 + dependsOn: [FT-407] + acceptance: + - Complete mechanical swap animation in ui/swapRenderer.ts + - Braille marker ('⠿') option at swap sites + - Reduced-motion compliance (instant swaps) + - Timing coordination with confidence system + - Cross-browser compatibility + output: Updated ui/swapRenderer.ts, tests/ui/swapRenderer.spec.ts + +- id: FT-503 + title: Performance Optimization by Device Tier + priority: P2 + dependsOn: [FT-406] + acceptance: + - Tone analysis scope by tier: CPU (10), WebGPU/WASM (20) + - Token limits and cooldowns per tier + - Memory pressure monitoring and degradation + - Performance benchmarks and regression tests + output: Updated core/lm/**, tests/performance/** + +- id: FT-504 + title: macOS Platform Foundation + priority: P2 + dependsOn: [FT-405] + acceptance: + - Swift app with NSStatusItem menu bar presence + - Accessibility API integration for text monitoring + - FFI bridge to shared Rust core + - Overlay window system for visual feedback + - Basic preferences UI + output: macOS/** directory structure, bindings/swift/** +``` + + + + + + + + + + + + diff --git a/docs/qa/acceptance/confidence_gate.feature b/docs/qa/acceptance/confidence_gate.feature new file mode 100644 index 0000000..9fa751d --- /dev/null +++ b/docs/qa/acceptance/confidence_gate.feature @@ -0,0 +1,8 @@ +Feature: Confidence gating across pipeline stages + + # REQ-CONFIDENCE-GATE + Scenario: Confidence gating across pipeline stages + # SCEN-CONFIDENCE-001 + Given a precondition + When an action happens + Then an outcome is observed diff --git a/docs/qa/acceptance/context_transformer.feature b/docs/qa/acceptance/context_transformer.feature new file mode 100644 index 0000000..523194f --- /dev/null +++ b/docs/qa/acceptance/context_transformer.feature @@ -0,0 +1,8 @@ +Feature: Context transformer with ±2 sentence look-around + + # REQ-CONTEXT-TRANSFORMER + Scenario: Context transformer with ±2 sentence look-around + # SCEN-CONTEXT-001 + Given a precondition + When an action happens + Then an outcome is observed diff --git a/docs/qa/acceptance/language_gating.feature b/docs/qa/acceptance/language_gating.feature new file mode 100644 index 0000000..d9b5b00 --- /dev/null +++ b/docs/qa/acceptance/language_gating.feature @@ -0,0 +1,8 @@ +Feature: English-only gating for full pipeline (Noise for others) + + # REQ-LANGUAGE-GATING + Scenario: English-only gating for full pipeline (Noise for others) + # SCEN-LANG-001 + Given a precondition + When an action happens + Then an outcome is observed diff --git a/docs/qa/acceptance/three_stage_pipeline.feature b/docs/qa/acceptance/three_stage_pipeline.feature new file mode 100644 index 0000000..9e7cd01 --- /dev/null +++ b/docs/qa/acceptance/three_stage_pipeline.feature @@ -0,0 +1,8 @@ +Feature: Integrate Noise → Context → Tone pipeline with staging buffer + + # REQ-THREE-STAGE-PIPELINE + Scenario: Integrate Noise → Context → Tone pipeline with staging buffer + # SCEN-PIPELINE-001 + Given a precondition + When an action happens + Then an outcome is observed diff --git a/docs/qa/acceptance/tone_controls_ui.feature b/docs/qa/acceptance/tone_controls_ui.feature new file mode 100644 index 0000000..75b2daa --- /dev/null +++ b/docs/qa/acceptance/tone_controls_ui.feature @@ -0,0 +1,8 @@ +Feature: Web demo tone controls and thresholds + + # REQ-TONE-CONTROLS-UI + Scenario: Web demo tone controls and thresholds + # SCEN-TONE-UI-001 + Given a precondition + When an action happens + Then an outcome is observed diff --git a/docs/qa/acceptance/tone_transformer.feature b/docs/qa/acceptance/tone_transformer.feature new file mode 100644 index 0000000..1d94b05 --- /dev/null +++ b/docs/qa/acceptance/tone_transformer.feature @@ -0,0 +1,8 @@ +Feature: Tone transformer with baseline detection and selectable tone + + # REQ-TONE-TRANSFORMER + Scenario: Tone transformer with baseline detection and selectable tone + # SCEN-TONE-001 + Given a precondition + When an action happens + Then an outcome is observed diff --git a/docs/traceability.json b/docs/traceability.json index 99aa1bf..5b3597e 100644 --- a/docs/traceability.json +++ b/docs/traceability.json @@ -2,8 +2,13 @@ "REQ-STREAMED-DIFFUSION": { "kind": "REQ", "title": "Streamed diffusion of LM corrections", - "modules": ["core/diffusionController.ts", "core/lm/mergePolicy.ts"], - "acceptance": ["docs/qa/acceptance/streamed_diffusion.feature#SCEN-DIFFUSION-001"], + "modules": [ + "core/diffusionController.ts", + "core/lm/mergePolicy.ts" + ], + "acceptance": [ + "docs/qa/acceptance/streamed_diffusion.feature#SCEN-DIFFUSION-001" + ], "tests": [ "tests/diffusionController.spec.ts", "tests/diffusionController_lm_branches.spec.ts" @@ -15,9 +20,17 @@ "REQ-IME-CARETSAFE": { "kind": "REQ", "title": "No edits at or after the caret", - "modules": ["utils/diff.ts", "core/activeRegionPolicy.ts"], - "acceptance": ["docs/qa/acceptance/caret_safety.feature#SCEN-CARETS-001"], - "tests": ["tests/diff.spec.ts", "tests/policy.spec.ts"], + "modules": [ + "utils/diff.ts", + "core/activeRegionPolicy.ts" + ], + "acceptance": [ + "docs/qa/acceptance/caret_safety.feature#SCEN-CARETS-001" + ], + "tests": [ + "tests/diff.spec.ts", + "tests/policy.spec.ts" + ], "invariants": [], "types": [], "source": "docs/PRD.md" @@ -25,9 +38,17 @@ "REQ-A11Y-MOTION": { "kind": "REQ", "title": "Respect reduced-motion; single announcement; mechanical swap", - "modules": ["ui/motion.ts", "ui/liveRegion.ts"], - "acceptance": ["docs/qa/acceptance/two_word_highlight.feature#SCEN-HILITE-001"], - "tests": ["tests/motion.spec.ts", "tests/liveRegion.spec.ts"], + "modules": [ + "ui/motion.ts", + "ui/liveRegion.ts" + ], + "acceptance": [ + "docs/qa/acceptance/two_word_highlight.feature#SCEN-HILITE-001" + ], + "tests": [ + "tests/motion.spec.ts", + "tests/liveRegion.spec.ts" + ], "invariants": [], "types": [], "source": "docs/PRD.md" @@ -35,8 +56,13 @@ "REQ-LOCAL-LM-INTEGRATION": { "kind": "REQ", "title": "On-device LM integration with graceful fallback", - "modules": ["core/lm/factory.ts", "core/lm/transformersClient.ts"], - "acceptance": ["docs/qa/acceptance/local_lm_integration.feature#SCEN-LMLOCAL-001"], + "modules": [ + "core/lm/factory.ts", + "core/lm/transformersClient.ts" + ], + "acceptance": [ + "docs/qa/acceptance/local_lm_integration.feature#SCEN-LMLOCAL-001" + ], "tests": [ "tests/transformersClient.spec.ts", "tests/transformersClient_factory.spec.ts" @@ -54,16 +80,132 @@ "demo/band-swap/styles.css", "contracts/animTokens.ts" ], - "acceptance": ["docs/qa/acceptance/mechanical_swap.feature#SCEN-BAND-SWAP-001"], - "tests": ["e2e/tests/demo-band-swap.spec.ts"], + "acceptance": [ + "docs/qa/acceptance/mechanical_swap.feature#SCEN-BAND-SWAP-001" + ], + "tests": [ + "e2e/tests/demo-band-swap.spec.ts" + ], "invariants": [], "types": [], "source": "docs/PRD.md" }, + "REQ-CONTEXT-TRANSFORMER": { + "kind": "REQ", + "title": "Context transformer with ±2 sentence look-around", + "modules": [ + "engines/contextTransformer.ts", + "core/diffusionController.ts" + ], + "acceptance": [ + "docs/qa/acceptance/context_transformer.feature#SCEN-CONTEXT-001" + ], + "tests": [ + "tests/contextTransformer.spec.ts" + ], + "invariants": [ + "Never edits at/after caret (REQ-IME-CARETSAFE)" + ], + "types": [], + "source": "docs/implementation.md" + }, + "REQ-TONE-TRANSFORMER": { + "kind": "REQ", + "title": "Tone transformer with baseline detection and selectable tone", + "modules": [ + "engines/toneTransformer.ts", + "core/diffusionController.ts" + ], + "acceptance": [ + "docs/qa/acceptance/tone_transformer.feature#SCEN-TONE-001" + ], + "tests": [ + "tests/toneTransformer.spec.ts" + ], + "invariants": [ + "Never edits at/after caret (REQ-IME-CARETSAFE)" + ], + "types": [], + "source": "docs/implementation.md" + }, + "REQ-CONFIDENCE-GATE": { + "kind": "REQ", + "title": "Confidence gating across pipeline stages", + "modules": [ + "core/confidenceGate.ts", + "core/stagingBuffer.ts", + "core/diffusionController.ts" + ], + "acceptance": [ + "docs/qa/acceptance/confidence_gate.feature#SCEN-CONFIDENCE-001" + ], + "tests": [ + "tests/confidenceGate.spec.ts", + "tests/stagingBuffer.spec.ts" + ], + "invariants": [], + "types": [], + "source": "docs/implementation.md" + }, + "REQ-THREE-STAGE-PIPELINE": { + "kind": "REQ", + "title": "Integrate Noise → Context → Tone pipeline with staging buffer", + "modules": [ + "core/diffusionController.ts", + "core/sweepScheduler.ts" + ], + "acceptance": [ + "docs/qa/acceptance/three_stage_pipeline.feature#SCEN-PIPELINE-001" + ], + "tests": [ + "tests/integration.spec.ts" + ], + "invariants": [], + "types": [], + "source": "docs/implementation.md" + }, + "REQ-LANGUAGE-GATING": { + "kind": "REQ", + "title": "English-only gating for full pipeline (Noise for others)", + "modules": [ + "core/languageDetection.ts", + "core/diffusionController.ts", + "core/sweepScheduler.ts" + ], + "acceptance": [ + "docs/qa/acceptance/language_gating.feature#SCEN-LANG-001" + ], + "tests": [ + "tests/languageDetection.spec.ts" + ], + "invariants": [], + "types": [], + "source": "docs/implementation.md" + }, + "REQ-TONE-CONTROLS-UI": { + "kind": "REQ", + "title": "Web demo tone controls and thresholds", + "modules": [ + "web-demo/src/App.tsx", + "web-demo/src/App.css" + ], + "acceptance": [ + "docs/qa/acceptance/tone_controls_ui.feature#SCEN-TONE-UI-001" + ], + "tests": [ + "e2e/tests/web-demo-tone-controls.spec.ts" + ], + "invariants": [], + "types": [], + "source": "docs/implementation.md" + }, "CONTRACT-BAND-SWAP": { "kind": "CONTRACT", "title": "Band-swap animation tokens", - "modules": ["contracts/animTokens.ts", "demo/band-swap/main.js"], + "modules": [ + "contracts/animTokens.ts", + "demo/band-swap/main.js" + ], "acceptance": [], "tests": [], "invariants": [ @@ -89,7 +231,9 @@ "CONTRACT-ACTIVE-REGION": { "kind": "CONTRACT", "title": "Active region policy (render vs context ranges)", - "modules": ["core/activeRegionPolicy.ts"], + "modules": [ + "core/activeRegionPolicy.ts" + ], "acceptance": [], "tests": [], "invariants": [ @@ -102,7 +246,10 @@ "CONTRACT-LM-ADAPTER": { "kind": "CONTRACT", "title": "LMAdapter streaming contract", - "modules": ["core/lm/types.ts", "core/lm/factory.ts"], + "modules": [ + "core/lm/types.ts", + "core/lm/factory.ts" + ], "acceptance": [], "tests": [], "invariants": [ @@ -116,4 +263,4 @@ ], "source": "docs/guide/reference/lm-behavior.md" } -} +} \ No newline at end of file diff --git a/docs/v0.4/MindType v0.4-master guide.md b/docs/v0.4/MindType v0.4-master guide.md new file mode 100644 index 0000000..241cd27 --- /dev/null +++ b/docs/v0.4/MindType v0.4-master guide.md @@ -0,0 +1,1211 @@ + + +# MindType v0.4 — Master Guide + +## Executive Summary + +**What MindType Does** + +MindType watches you type, quietly cleans up what you meant, and only changes the document when it's sure. You keep your flow. The tool smooths your rushed keystrokes into readable sentences in the background. It stages suggested edits, scores them for confidence, and applies only the winners. When it changes text, it does so without moving your cursor or polluting your undo. + +### Example in One Glance + +- **You type:** `helloo thr weathfr has beenb hood` +- **MindType suggests and commits:** `Hello, the weather has been good.` + +- **You type:** `das fsdhge ovjvpsfdbjvdsi` + → MindType detects low fidelity and leaves it alone. + +- **You type:** `i willl meet yuo at 5pm` +- **MindType suggests and commits:** `I will meet you at 5pm.` + +- **You type:** `The quick brown fox jumps over the lazy dog` +- **MindType suggests and commits:** `The quick brown fox jumps over the lazy dog` + _(No changes needed; MindType leaves correct text untouched.)_ + +- **You type:** `i cant beleive its not butter` +- **MindType suggests and commits:** `I can't believe it's not butter.` + +--- + +## High-Level Idea (Plain Language) + +- You type fast and roughly. MindType turns fuzzy keystrokes into clear words. +- It does this in small, local steps that are cheap to compute first, then bigger repairs only when useful. +- It never rewrites text under your caret or adds changes you didn't intend, because every edit needs to pass a confidence check. + +Think of it as a patient editor that sits behind your shoulder: fixes tiny slips immediately, rearranges sentences when there's enough context, and only applies changes that improve clarity. + +--- + +## What Happens As You Type — Step by Step (Non-Technical) + +1. **UI Registration:** The UI registers your keystrokes. +2. **Boundary Detection:** A small monitor notices boundaries (spaces, punctuation, caret moves). +3. **Scheduling:** A scheduler decides which worker to run and when. +4. **Proposal Generation:** Workers propose edits; those proposals live in a staging area. +5. **Confidence Scoring:** A confidence check scores proposals. +6. **Selective Application:** Only high-scoring proposals are merged into the live text. +7. **Validation Marking:** Merged spans are marked validated and skipped next time. + +--- + +## The Parts, Explained with Human Analogies + +### Frontend: The Surface You See + +- **UI Renderer:** The text box. It displays text and accepts input. +- **Caret Monitor:** Like an attentive stenographer. It sees each key, backspace, arrow move, and IME session and emits simple signals such as "word finished" or "user paused." +- **Scheduler:** The editor's calendar. It decides if a small fix should run now or a deeper pass should wait until you pause. + +**Why this matters:** The UI must stay snappy. The monitor and scheduler ensure heavy work runs off the main path. + +### Platform Bindings: The Courier Between UI and Engine + +- **Swift / ObjC** on Apple +- **WASM + Worker** on web + +They pack a small payload (the active region text and caret) and hand it to the shared Rust core. Then they return proposals and timing hints. They keep the UI thread free and handle platform details. + +### Rust Core: The Trusted Editor Brain + +- **🧹 Noise (Stage 1):** Turns noisy keystrokes into the words most likely intended. Uses keyboard-proximity priors, word-frequency priors, and Damerau–Levenshtein edits to fix typos, repeats, out‑of‑order keys, and basic spacing. Outputs plausible, correctly spelled tokens. No grammar. + +- **📚 Context (Stage 2):** Reads the current sentence with a ±2 sentence look‑around (weight S±1=1.0, S±2=0.5) and corrects grammar, syntax, and semantics. Applies punctuation, capitalization, spacing, and stylistic polish. Ensures sentence flow and cross‑sentence coherence (agreement, tense, consistent naming/synonyms). Never edits at/after the caret. + +- **🎨 Tone (Stage 3):** Detects the document’s baseline tone, then normalizes or nudges it toward the selected tone (None/pass‑through, Casual, Professional). May change wording, grammar, and punctuation when needed to achieve tone and maintain clarity. Never edits at/after the caret. If tone is “None,” pass through Context output unchanged. + +#### Context Window & Lookaround + +- Window: Current sentence plus up to ±2 neighboring sentences (if available), weighted S±1=1.0, S±2=0.5. +- Lookahead gate: The model may peek into the next sentence only after a sentence boundary is observed; still never edits at/after the caret. +- Minimal‑diff policy: Prefer the smallest viable edit that satisfies agreement, coherence, and clarity. + +- **Staging Buffer:** Holds proposals until a decision is reached. No half-applied edits leak to the screen. +- **Confidence Gate:** Scores proposals on multiple axes; only high-score items proceed. +- **Diff/Merge Gate:** Applies approved edits atomically and caret-safely (and keeps them out of the user undo stack). + +**Why Rust core:** Same behavior everywhere, high performance, deterministic diffs. + +--- + +## How the Tool Decides — The Confidence Gate (Plain) + +Every proposal gets a score built from: + +- **Input fidelity** — How wordlike the raw keystrokes are (low for random hammering) +- **Transformation quality** — How probable the suggested correction is according to the LM +- **Context coherence** — Whether the suggestion fits surrounding sentences +- **Temporal decay** — Older proposals lose weight if they linger + +### Parameters You Should Know + +- **τ_input** (default 0.65) — Minimum fidelity to attempt a context pass +- **τ_commit** (default 0.90) — Minimum combined score to commit a change +- **τ_tone** (default 0.85) — Tone proposals must meet τ_tone AND τ_commit to apply. + +If a candidate scores below τ_commit, it stays staged until more context improves it or it is discarded. + +• Tone staging: Tone proposals commit only when τ_tone ≥ 0.85 AND τ_commit. Tone proposals are not rolled back on caret movement; they remain bounded to behind‑caret edits. + +--- + +## Concrete Examples (To Build Intuition) + +### 🧹➡️📚➡️🎨 Complete Pipeline Flow + +**Example 1: Typical Typing Correction** + +- **Raw Input:** `helloo thr weathfr has beenb hood` +- **🧹 Noise Stage:** `hello the weather has been good` (fixes typos, no grammar) +- **📚 Context Stage:** `Hello, the weather has been good.` (adds punctuation, capitalization) +- **🎨 Tone Stage:** With "Professional" tone → `The weather has been quite favorable.` (may change wording/grammar/punctuation when needed for clarity and tone) + +**Example 2: Context-Aware Correction** + +- **Raw Input:** `Me tall gear so lit` (in gaming document) +- **🧹 Noise Stage:** `Me tall gear so lit` (no obvious typos detected) +- **📚 Context Stage:** `Metal Gear Solid` (semantic understanding + context) +- **🎨 Tone Stage:** With "Casual" tone → `Metal Gear Solid` (no change needed) + +**Example 3: Low-Quality Input Protection** + +- **Raw Input:** `das fsdhge ovjvpsfdbjvdsi` (random mashing) +- **🧹 Noise Stage:** Detects very low input fidelity → skip all processing +- **Result:** No changes applied (preserves user intent) + +**Example 4: Tone Toggle Demonstration** + +- **Context Output:** `I think this approach works well.` +- **🎨 Tone Stage (Professional):** `This approach demonstrates considerable effectiveness.` +- **🎨 Tone Stage (Casual):** `I really think this approach works great!` +- **🎛️ Toggle OFF mid‑process:** In‑flight Tone proposals finish; no new Tone proposals created afterward. + +**Example 5: None (pass‑through) Tone** + +- **Context Output:** `We will review your application tomorrow.` +- **🎨 Tone Stage (None/pass‑through):** `We will review your application tomorrow.` (unchanged) + +**Example 6: Low Compute Tier (CPU)** + +- **Scope:** Tone analyzes last N sentences (N=10 on CPU) +- **Effect:** Subtle tone adjustments are limited to the most recent 10 sentences + +**Example 7: English‑Only Gating** + +- **Raw Input (Spanish):** `hola espero que estes bien` +- **🧹 Noise Stage:** Basic typo fixes only +- **📚 Context/Tone:** Skipped (non‑English detected) + +--- + +## User Experience Rules and Safety + +- **Caret-safe:** Never edit at or after the caret. You never lose your place. +- **Undo isolation:** System edits are not added to the user undo stack. We keep an internal log so the system can undo its own changes if later context invalidates them. +- **Secure fields:** Detection blocks transforms (passwords, etc.). +- **Reduced-motion / accessibility:** UI changes are minimal and announced via a11y hooks when needed. + +--- + +## 🎨 Tone Control System (v0.4 Enhancement) + +### **Tone Control System** + +- **Tone options**: None (pass‑through), Casual, Professional. Rename all references to “Neutral” → “None (pass‑through)”. +- **Detection**: Use an LM classifier to produce a baseline tone assessment over the entire document (internally represented as a tone vector for future use). +- **Gating**: τ_tone = 0.85. Tone proposals must meet τ_tone AND the global τ_commit to apply. +- **Scope**: On CPU tiers analyze up to the last 10 sentences; on higher tiers up to 20. For very short texts (<6 words), Tone still applies. +- **Toggle behavior**: If the user turns Tone OFF mid‑process, finish applying in‑flight Tone proposals; stop creating new Tone proposals for subsequent typing. +- **Caret movement**: Do not rollback Tone proposals simply because the caret moved; still never edit at/after the caret. +- **Global consistency**: Tone aims for document‑wide consistency; prioritize minimal‑diff rewrites that achieve the tone target without harming meaning. + +#### Language Detection & English‑Only Operation + +- Full pipeline (📚 Context and 🎨 Tone) runs only when language detection indicates English. Otherwise, run 🧹 Noise only and skip Context/Tone (future multilingual support). + +--- + +## 🚀 Performance and Tuning (Practical Notes) + +- **Default active region:** ~5 words. Shrink that on constrained devices. +- **Default context interval:** 1000 ms. Shorter intervals = quicker fixes but heavier CPU. +- **LM load strategy:** Lazy-load and cache; unload on memory pressure. + +## 🖥️ Platform Implementation Guide + +### 🌍 Web Platform (Primary - Fully Implemented) + +#### Architecture Overview + +- **Entry Point**: `web-demo/src/App.tsx` → `boot()` from `index.ts` +- **Event Handling**: DOM events → `caretShim.ts` → TypeScript pipeline +- **LM Integration**: Transformers.js with WebGPU → WASM → CPU fallback +- **Asset Management**: Local-only by default, graceful degradation + +#### Implementation Details + +```typescript +// Web Demo Integration (web-demo/src/App.tsx) +const [pipeline] = useState(() => + boot({ + security: { + isSecure: () => secureRef.current, + isIMEComposing: () => imeRef.current, + }, + }), +); + +// LM Integration with device tier detection +const adapter = createTransformersAdapter(runner); +const capabilities = adapter.init({ preferBackend: 'webgpu' }); +// Auto-degrades: WebGPU → WASM → CPU with appropriate token limits +``` + +#### Visual Feedback System + +- **Active Region**: `mindtype:activeRegion` events → CSS highlighting +- **Corrections**: `mindtype:highlight` events → mechanical swap animation +- **Accessibility**: Live region announcements via `ui/liveRegion.ts` +- **Reduced Motion**: Instant swaps when `prefers-reduced-motion: reduce` + +#### Performance Characteristics + +- **WebGPU**: 48 tokens, 160ms cooldown, ~15ms p95 latency +- **WASM**: 24 tokens, 240ms cooldown, ~30ms p95 latency +- **CPU**: 16 tokens, 400ms cooldown, ~100ms p95 latency + +--- + +### 🍎 macOS Platform (Secondary - Needs Implementation) + +#### Required Architecture + +- **Entry Point**: Swift app with `NSStatusItem` menu bar presence +- **Event Handling**: Accessibility API → Swift wrapper → FFI → Rust core +- **LM Integration**: Same Rust core, shared model assets via FFI +- **Permissions**: AX permissions with user onboarding flow + +#### Implementation Plan + +```swift +// macOS App Structure (need to create) +class MindTypeApp: NSObject, NSApplicationDelegate { + var statusItem: NSStatusItem? + var coreEngine: UnsafeMutableRawPointer? // FFI handle to Rust core + + func applicationDidFinishLaunching() { + setupStatusItem() + requestAccessibilityPermissions() + initializeCore() + } + + func initializeCore() { + // FFI calls to Rust core + coreEngine = mindtype_core_create() + mindtype_core_start(coreEngine) + } +} + +// AX Event Monitoring +class AccessibilityMonitor { + func startMonitoring() { + let observer = AXObserverCreate(getpid()) { observer, element, notification in + handleAccessibilityEvent(element, notification) + } + + AXObserverAddNotification(observer, focusedElement, + kAXValueChangedNotification, nil) + AXObserverAddNotification(observer, focusedElement, + kAXSelectedTextChangedNotification, nil) + } + + func handleAccessibilityEvent(_ element: AXUIElement, _ notification: CFString) { + guard let text = getTextFromElement(element), + let caret = getCaretPosition(element) else { return } + + // Forward to Rust core via FFI + mindtype_core_ingest(coreEngine, text, caret, getCurrentTimeMs()) + } +} +``` + +#### Visual Feedback System (macOS) + +- **Active Region**: Overlay window with subtle underline/highlight +- **Corrections**: AX insertion API preserving caret position +- **Accessibility**: Native VoiceOver integration +- **System Integration**: Respect system reduced motion, high contrast + +#### Required Files to Create + +``` +macOS/ +├── MindType/ +│ ├── App.swift # Main app + status item +│ ├── AccessibilityMonitor.swift # AX API integration +│ ├── CoreBridge.swift # FFI wrapper +│ ├── OverlayWindow.swift # Visual feedback +│ ├── PreferencesView.swift # Settings UI +│ └── Permissions.swift # AX permission flow +├── Info.plist # AX usage description +└── Package.swift # Swift Package Manager +``` + +#### Performance Targets + +- **M-series**: p95 ≤ 15ms, typical ≤ 150MB memory +- **Intel**: p95 ≤ 30ms, cap ≤ 200MB memory +- **Background Processing**: Core logic in background queues +- **Main Thread**: Only UI updates and AX calls + +--- + +### 📱 iOS Platform (Future - Design Only) + +#### Architecture Sketch + +- **Entry Point**: UIKit/SwiftUI app with keyboard extension +- **Event Handling**: `UITextInput` protocol → Swift wrapper → shared Rust core +- **LM Integration**: Same core, optimized for mobile constraints +- **Permissions**: Keyboard access, local processing emphasis + +#### Key Considerations + +- **Memory Constraints**: Aggressive model quantization, smaller context windows +- **Battery Impact**: Longer cooldowns, CPU-only inference +- **Keyboard Extension**: Limited API surface, careful state management +- **App Store Review**: Privacy policy, local processing emphasis + +_Note: iOS implementation deferred until macOS + Web are solid_ + +--- + +### 🔧 Cross-Platform Development Strategy + +#### Shared Components (Rust Core) + +- **Text Processing**: Unicode handling, caret safety, diff generation +- **LM Integration**: Model loading, inference, streaming +- **Confidence System**: Scoring algorithms, staging buffer +- **Business Logic**: All transformation rules and policies + +#### Platform-Specific Components + +- **Event Capture**: DOM events vs AX API vs UITextInput +- **Visual Feedback**: CSS animations vs overlay windows vs keyboard UI +- **Asset Management**: Web workers vs app bundles vs keyboard extensions +- **Permissions**: Web security vs AX permissions vs keyboard access + +#### Development Workflow + +1. **Develop in Web**: Fastest iteration, comprehensive debugging +2. **Validate in macOS**: Real-world usage, performance profiling +3. **Optimize for iOS**: Memory/battery constraints, submission process + +--- + +## 📋 Comprehensive v0.3 → v0.4 Migration Checklist + +### 🔴 Critical Missing Components (Must Create) + +#### 1. Context Transformer (High Priority) + +- [ ] **Create** `engines/contextTransformer.ts` + - **Function**: Grammar, syntax, semantics, AND stylistic polish (moved from Tone) + - **Responsibilities**: Punctuation, capitalization, spacing, sentence flow, coherence + - **Integration**: Hook into `core/diffusionController.ts` after Noise stage + - **Dependencies**: `core/lm/transformersClient.ts` (ready), `core/lm/mergePolicy.ts` (ready) + - **Tests**: Create `tests/contextTransformer.spec.ts` + +#### 2. Tone Transformer (High Priority) + +- [ ] **Create** `engines/toneTransformer.ts` + - **Function**: ONLY tone adjustments - no grammar/punctuation changes + - **Responsibilities**: Rewrite for tone consistency (neutral, friendly, professional, etc.) + - **Context Analysis**: Analyze entire text field for consistent tone + - **Toggle Control**: Implement ON/OFF toggle (default ON) + - **Integration**: Final stage after Context commits + - **Tests**: Create `tests/toneTransformer.spec.ts` + +#### 3. Confidence Gating System (Critical) + +- [ ] **Create** `core/confidenceGate.ts` + - **Implementation**: Mathematical scoring algorithms from spec above + - **Functions**: `computeInputFidelity()`, `computeConfidence()`, `applyThresholds()` + - **Integration**: Hook into staging buffer decision logic + - **Tests**: Create `tests/confidenceGate.spec.ts` + +#### 4. Staging Buffer State Machine (Critical) + +- [ ] **Create** `core/stagingBuffer.ts` + - **Implementation**: HOLD/COMMIT/DISCARD/ROLLBACK state transitions + - **Integration**: Replace simple proposal system in `core/diffusionController.ts` + - **Memory Management**: Cleanup stale proposals, temporal decay + - **Tests**: Create `tests/stagingBuffer.spec.ts` + +#### 5. Undo Isolation System (Medium Priority) + +- [ ] **Create** `core/undoIsolation.ts` + - **Function**: Time-bucketed system edits separate from user undo + - **Integration**: Hook into `utils/diff.ts` application layer + - **Buckets**: 100-200ms grouping, rollback API + - **Tests**: Create `tests/undoIsolation.spec.ts` + +### 🟡 Enhancements to Existing Components + +#### Core Pipeline Modifications + +- [ ] **Enhance** `core/diffusionController.ts` + - Add three-stage pipeline: Noise → Context → Tone + - Integrate confidence gating before applying edits + - Replace simple frontier tracking with staging buffer + - Add rollback triggers when caret enters active region + +- [ ] **Enhance** `core/sweepScheduler.ts` + - Add Context transformer scheduling on pause detection + - Add Tone transformer scheduling after Context commits + - Integrate with confidence system for adaptive timing + - Add memory pressure monitoring for LM degradation + +- [ ] **Complete** `core/tapestry.ts` + - Wire confidence scores into span metadata + - Add span merging/splitting logic for overlapping edits + - Implement validated span tracking and skipping + - Add query methods for confidence-based decisions + +#### LM Integration Completions + +- [ ] **Complete** `core/lm/factory.ts` + - Finish `createDefaultLMAdapter()` implementation + - Add device tier detection and auto-configuration + - Wire asset verification and fallback logic + - Add memory monitoring and degradation triggers + +- [ ] **Enhance** `core/lm/mergePolicy.ts` + - Add conflict resolution between rule and LM proposals + - Implement precedence logic: rules > LM on structure, LM > rules on semantics + - Add streaming merge cancellation on caret entry + - Enhance boundary detection for safer merges + +#### UI and Visual Feedback + +- [ ] **Enhance** `ui/swapRenderer.ts` + - Complete mechanical swap animation implementation + - Add braille marker ('⠿') option at swap sites + - Ensure reduced-motion compliance (instant swaps) + - Add timing coordination with confidence system + +- [ ] **Enhance** `ui/highlighter.ts` + - Add confidence-aware visual feedback + - Implement staging buffer state visualization (optional) + - Add debug overlays for development mode + - Ensure cross-browser compatibility + +### 🔵 Platform-Specific Tasks + +#### Web Demo Enhancements + +- [ ] **Enhance** `web-demo/src/App.tsx` + - Add confidence threshold controls (sliders for τ_input, τ_commit) + - Add staging buffer state visualization + - Add three-transformer toggle controls + - Add performance metrics dashboard + +#### macOS Platform Creation + +- [ ] **Create** macOS app structure + - Swift app with NSStatusItem menu bar presence + - Accessibility API integration for text monitoring + - FFI bridge to shared Rust core + - Overlay window system for visual feedback + - Preferences UI for confidence and behavior settings + +### 🟢 Testing and Quality Assurance + +#### New Test Suites Required + +- [ ] **Context Transformer Tests** + - Sentence repair accuracy with various LM backends + - Confidence scoring with different input quality levels + - Integration with staging buffer and rollback system + +- [ ] **Confidence System Tests** + - Mathematical accuracy of scoring algorithms + - Threshold behavior across different scenarios + - Temporal decay and cleanup mechanisms + +- [ ] **Three-Stage Pipeline Tests** + - End-to-end flow: Noise → Context → Tone + - Conflict resolution between transformer outputs + - Performance under various device tiers + +- [ ] **Platform Integration Tests** + - Web demo with full three-stage pipeline + - Cross-browser compatibility (Safari, Chrome, Firefox) + - Accessibility compliance (screen readers, reduced motion) + +#### Enhanced Existing Tests + +- [ ] **Update** `tests/diffusionController*.spec.ts` + - Add three-stage pipeline scenarios + - Add confidence gating test cases + - Add staging buffer integration tests + +- [ ] **Update** `tests/lm_*.spec.ts` + - Add Context transformer integration + - Add conflict resolution scenarios + - Add rollback and cancellation tests + +### 🟣 Documentation Updates + +#### Technical Documentation + +- [ ] **Update** `docs/PRD.md` + - Add three-transformer specification + - Add confidence system requirements + - Update platform implementation details + +- [ ] **Update** `docs/implementation.md` + - Mark v0.4 tasks as completed + - Add new task tracking for ongoing work + - Update quality gates and definition of done + +- [ ] **Create** `docs/guide/reference/confidence-system.md` + - Mathematical specification of scoring algorithms + - Threshold tuning guidelines + - Performance impact analysis + +- [ ] **Create** `docs/guide/reference/three-stage-pipeline.md` + - Detailed transformer interaction patterns + - Conflict resolution policies + - Performance optimization strategies + +### 🎯 Priority Order for Implementation + +**Phase 1: Foundation — Clean Pipeline (Weeks 1-2)** + +1. **🧹 Enhance Noise Transformer**: Focus purely on keystroke cleaning, remove grammar logic +2. **📚 Create Context Transformer**: Move stylistic polish from Tone stage, add comprehensive grammar/semantic corrections +3. **⚖️ Confidence Gating**: Mathematical scoring system +4. **📦 Staging Buffer**: State machine with HOLD/COMMIT/DISCARD logic + +**Phase 2: Tone Intelligence (Weeks 3-4)** + +1. **🎨 Create Tone Transformer**: Pure tone adjustments, document-wide analysis +2. **🎯 Toggle Control System**: ON/OFF with multiple tone options +3. **🔄 Undo Isolation**: Time-bucketed system edits +4. **🎨 Enhanced Visual Feedback**: Mechanical swaps with tone indicators + +**Phase 3: Platform & Polish (Weeks 5-6)** + +1. **🍎 macOS Integration**: Platform bindings and native UI +2. **🧠 Cross-Platform Testing**: Consistency across devices +3. **⚡ Performance Optimization**: Device-tier tone processing +4. **📚 Documentation**: Complete implementation guides + +### 🚨 Breaking Changes and Migration Notes + +- **API Changes**: `DiffusionController` signature will change to accept transformer pipeline +- **Event Changes**: New events for staging buffer state transitions +- **Config Changes**: New threshold parameters in `defaultThresholds.ts` +- **Test Changes**: Many existing tests will need updates for three-stage pipeline + +### 🎯 Success Criteria + +**Functional**: + +- [ ] Three transformers working in sequence with confidence gating +- [ ] Staging buffer handling concurrent proposals correctly +- [ ] Rollback system preserving caret safety under all conditions +- [ ] Web demo showcasing full v0.4 functionality + +**Performance**: + +- [ ] p95 latency targets met: ≤15ms (WebGPU), ≤30ms (WASM), ≤60ms (CPU) +- [ ] Memory usage within bounds: typical ≤150MB, cap ≤200MB +- [ ] Confidence system adds <5ms overhead per proposal + +**Quality**: + +- [ ] All existing tests passing with new pipeline +- [ ] New test coverage ≥90% for new components +- [ ] Cross-browser compatibility maintained +- [ ] Accessibility compliance verified + +--- + +## 🎥 Enhanced User Experience Storyboard (v0.4) + +### Scenario: "helloo thr weathfr has beenb hood" + +**Frame 1: Initial Typing** + +- User types rapidly: `helloo thr weathfr` +- **TypingMonitor** captures each keystroke with timestamps +- **Active region** (3-5 words) trails behind caret with subtle highlight +- **Security check** passes (not in password field, no IME composition) + +**Frame 2: Word Boundary Detection** + +- User hits space after `weathfr` +- **Noise Transformer** (Stage 1) immediately triggers +- **Rule engine** detects `helloo → hello`, `thr → the`, `weathfr → weather` +- **Proposals** enter staging buffer with high confidence (rule-based) + +**Frame 3: Continued Typing** + +- User continues: `has beenb hood` +- **Staged proposals** remain in buffer (HOLD state) +- **New typos** detected: `beenb → been` +- **Active region** expands to include new content + +**Frame 4: Pause Detection** + +- User pauses (500ms+ idle time) +- **Input fidelity** calculated: 0.72 (above τ_input = 0.65) +- **Context Transformer** (Stage 2) engages with full sentence +- **LM streaming** begins: local Qwen2.5 processes context + +**Frame 5: Context Processing** + +- **📚 Context analysis**: "weather" + "has been" + "good" = coherent sentence +- **Grammar & Style**: Adds punctuation, capitalization, spacing polish +- **Context proposal**: `Hello, the weather has been good.` +- **Confidence scoring**: + - Input fidelity: 0.72 + - Transformation quality: 0.91 (high context score) + - Context coherence: 0.93 (perfect fit) + - Temporal decay: 1.0 (fresh) + - **Combined: 0.92** (above τ_commit = 0.90) + +**Frame 6: Tone Processing (If Enabled)** + +- **🎨 Tone Transformer** detects baseline tone and plans minimal‑diff adjustments +- **Baseline tone**: None (pass‑through) detected across document +- **User setting**: "Professional" tone selected +- **Tone proposal**: `The weather conditions have been favorable.` (may adjust wording/grammar/punctuation to achieve tone) +- **Tone confidence**: 0.89 (≥ τ_tone = 0.85) + +**Frame 7: Commit Decision** + +- **Score ≥ τ_commit** → staging buffer state changes to COMMIT +- **Diff/Merge Gate** applies edit atomically +- **Caret safety** verified: all changes behind cursor +- **Undo isolation**: system edit bypasses user undo stack + +**Frame 8: Visual Feedback** + +- **Mechanical swap** animation shows letter-by-letter replacement +- **Braille marker** ('⠿') briefly appears at correction sites +- **Screen reader** announces: "text updated behind cursor" +- **Reduced motion**: instant replacement if user prefers + +**Frame 9: Validation and Cleanup** + +- **Tapestry** marks corrected spans as validated +- **Active region** advances past corrected text +- **Staging buffer** clears committed proposals +- **Performance metrics** updated: latency, confidence scores + +**Frame 10: Continued Flow** + +- User resumes typing new content +- **Validated spans** skipped by future processing +- **System adapts**: device tier affects timing and token limits +- **Memory monitoring**: auto-degrade if approaching limits + +### 🎯 Key v0.4 Improvements Demonstrated + +1. **🧹➡️📚➡️🎨 Refined Three-Stage Pipeline**: + - **Noise**: Pure keystroke cleaning (typos, spacing) + - **Context**: Comprehensive grammar, style, and semantic corrections + - **Tone**: Intelligent tone consistency without altering meaning + +2. **🎨 Smart Tone Control**: + - Document-wide tone analysis and consistency enforcement + - Toggle control with multiple tone options + - Meaning-preserving tone adjustments only + +3. **⚖️ Enhanced Confidence Gating**: Mathematical scoring prevents low-quality changes +4. **📦 Intelligent Staging Buffer**: Proposals can be held, improved, or discarded +5. **🧠 Advanced LM Integration**: Local model provides semantic understanding +6. **🎨 Polished Visual Feedback**: Mechanical swaps with accessibility compliance +7. **⚡ Adaptive Performance**: Device-aware resource management + +### 🔄 Error Recovery Scenarios + +**Scenario A: Caret Enters Active Region** + +- User clicks/moves cursor into area being processed +- **Rollback trigger** fires immediately +- **Staging buffer** transitions proposals to ROLLBACK state +- **Partial changes** reverted atomically +- **Processing cancels** gracefully, no corruption + +**Scenario B: Low Confidence Input** + +- User types: `das fsdhge ovjvpsfdbjvdsi` (random mashing) +- **Input fidelity**: 0.12 (well below τ_input = 0.65) +- **Context Transformer** skipped entirely +- **Only Noise** attempts basic cleanup, finds nothing +- **System stays silent**, preserves user intent + +**Scenario C: LM Failure/Timeout** + +- **WebGPU unavailable** or model loading fails +- **Auto-degradation**: falls back to WASM backend +- **Asset verification** fails → rules-only mode +- **User experience** continues uninterrupted +- **Debug panel** shows fallback status + +**Scenario D: Memory Pressure** + +- **System memory** approaching 200MB limit +- **LM adapter** auto-reduces token limits +- **Cooldown periods** extended to reduce load +- **Graceful degradation** to simpler processing +- **Performance dashboard** reflects current tier + +--- + +## 🎆 Implementation Roadmap & Next Steps + +### 📋 Immediate Actions (This Sprint) + +1. **Review and Validate This Guide** + - Ensure all technical specifications align with project vision + - Verify code location references are accurate + - Confirm priority ordering matches business needs + +2. **Set Up Development Environment** + - Run `pnpm test` to establish current baseline (should be green) + - Review failing tests and document expected behavior changes + - Set up branch strategy for v0.4 development + +3. **Begin Core Component Development** + - Start with Context Transformer (highest impact) + - Create confidence gating mathematical implementation + - Build staging buffer state machine + +### 🕰️ Development Timeline Estimate + +**Week 1-2: Foundation** + +- Context Transformer creation and basic LM integration +- Confidence scoring algorithms implementation +- Basic staging buffer with HOLD/COMMIT states + +**Week 3-4: Integration** + +- Three-stage pipeline wiring in DiffusionController +- Enhanced visual feedback with mechanical swaps +- Comprehensive testing of core functionality + +**Week 5-6: Polish & Platform** + +- Tone Transformer and full pipeline completion +- macOS app development start +- Performance optimization and device tier tuning + +**Week 7-8: Quality & Launch** + +- Cross-platform testing and bug fixes +- Documentation completion +- Demo scenarios and user validation + +### 📊 Success Metrics + +**Technical Metrics**: + +- All existing tests pass with new pipeline +- New test coverage ≥ 90% for v0.4 components +- Performance targets met across device tiers +- Memory usage within specified bounds + +**User Experience Metrics**: + +- Correction accuracy improvement over v0.3 baseline +- Reduced false positive rate (undo frequency) +- Accessibility compliance maintained +- Cross-browser compatibility verified + +**Business Metrics**: + +- Web demo showcases full v0.4 functionality +- macOS app reaches alpha state +- Documentation enables external contributors +- Architecture supports future enhancements + +### 🎯 Final Note — What to Expect in Day-to-Day Use + +**MindType v0.4** should feel like an intelligent, patient editor that understands context: + +- **Immediate Typo Fixes**: Simple errors like `teh → the` correct instantly as you type +- **Thoughtful Sentence Repair**: Waits for context before suggesting larger changes +- **Confident Decision Making**: Only applies changes when mathematically confident +- **Respectful of Intent**: Preserves meaning while improving clarity +- **Adaptive Performance**: Matches your device capabilities and typing rhythm +- **Accessible by Default**: Works with screen readers, respects reduced motion +- **Private and Local**: Processing stays on your device unless you opt-in otherwise + +The three-stage pipeline (Noise → Context → Tone) ensures corrections flow naturally from quick fixes to thoughtful improvements. The confidence gating prevents surprises, while the staging buffer allows the system to "think" before acting. + +**Customization**: Adjust τ_commit threshold for more/less aggressive corrections. Tune active region size for your preferred processing window. Enable debug mode to understand the system's decision-making process. + +**Safety Guarantees**: Your caret position is sacred — never modified. System edits stay separate from your undo history. Secure fields and IME composition are automatically detected and bypassed. + +This guide serves as the definitive blueprint for building MindType v0.4. Every component, algorithm, and interaction pattern has been specified to enable precise, confident implementation. 🚀 + +--- + +## 🔗 Related Documentation + +**Core References**: + +- [`docs/PRD.md`](PRD.md) - Product requirements and success criteria +- [`docs/implementation.md`](implementation.md) - Current task tracking and quality gates +- [`docs/system_principles.md`](system_principles.md) - Behavioral principles and design philosophy + +**Technical Deep-Dives**: + +- [`docs/architecture/`](architecture/) - C4 diagrams and system design +- [`docs/adr/`](adr/) - Architecture decision records +- [`docs/guide/reference/`](guide/reference/) - API contracts and implementation guides + +**Quality Assurance**: + +- [`docs/qa/acceptance/`](qa/acceptance/) - BDD scenarios and test specifications +- [`tests/`](../../tests/) - Comprehensive test suite with coverage reports + +**This guide is the definitive v0.4 specification. All implementation should reference back to these detailed requirements and architectural decisions.** + +--- + +## 🏗️ System Architecture + +### Visual Architecture Overview + +The v0.4 system follows a streaming pipeline architecture with three-stage transformation, confidence gating, and platform-specific bindings: + +[See the comprehensive architecture diagram above showing the complete data flow from user input through platform bindings, core pipeline, transformers, confidence gating, and UI feedback] + +### 🎯 Implementation Status Matrix + +| Component | Status | Location | v0.4 Ready? | +| ----------------------- | ----------------- | ----------------------------- | ----------- | +| **Core Pipeline** | ✅ Implemented | `index.ts` → `core/` | Yes | +| **Active Region** | ✅ Implemented | `core/diffusionController.ts` | Yes | +| **Noise Transformer** | ✅ Implemented | `engines/noiseTransformer.ts` | Yes | +| **Context Transformer** | ❌ Missing | Need to create | **No** | +| **Tone Transformer** | ❌ Missing | Need to create | **No** | +| **Confidence Gating** | 🔄 Partial | `core/tapestry.ts` exists | **No** | +| **Staging Buffer** | 🔄 Partial | State machine designed | **No** | +| **LM Integration** | ✅ Infrastructure | `core/lm/` complete | Yes | +| **Web Demo** | ✅ Implemented | `web-demo/` working | Yes | +| **macOS Bindings** | ❌ Missing | Need Swift/FFI | **No** | + +### 🔄 Data Flow Architecture (Detailed) + +#### 1. Input Layer → Platform Bindings + +- **Web**: DOM events → `web-demo/src/caretShim.ts` → WASM bridge +- **macOS**: AX API → Swift wrapper → FFI calls (⚠️ **Missing**) +- **Output**: Normalized `{text, caret, atMs}` events + +#### 2. Core Pipeline Orchestration + +```typescript +// Implemented in index.ts +TypingMonitor → SweepScheduler → DiffusionController +``` + +- **TypingMonitor**: Emits typing events, handles debouncing +- **SweepScheduler**: Manages timing, triggers engines based on pause detection +- **DiffusionController**: Word-by-word streaming with Unicode segmentation + +#### 3. Three-Stage Transformer Pipeline (v0.4 Design) + +**Stage 1: Noise Transformer** ✅ _Implemented_ + +- **Location**: `engines/noiseTransformer.ts` +- **Function**: Immediate typo fixes (transposition, punctuation, capitalization) +- **Trigger**: Word boundaries during typing +- **Examples**: `teh → the`, `recieve → receive` + +**Stage 2: Context Transformer** ❌ _Missing_ + +- **Location**: Need to create `engines/contextTransformer.ts` +- **Function**: Sentence-level repairs using local LM +- **Trigger**: Pause detection (500ms+) with sufficient input fidelity +- **Examples**: `me tall gear → Metal Gear`, grammar corrections + +**Stage 3: Tone Transformer** ❌ _Missing_ + +- **Location**: Need to create `engines/toneTransformer.ts` +- **Function**: Stylistic polish, punctuation spacing +- **Trigger**: After Context commits, during longer pauses +- **Examples**: Comma placement, quote normalization + +#### 4. Confidence Gating System (v0.4 Core Missing) + +**Current State**: `core/tapestry.ts` has data structures but no scoring algorithms + +**Required Implementation**: + +```typescript +interface ConfidenceScore { + inputFidelity: number; // How "word-like" the input is + transformationQuality: number; // LM probability score + contextCoherence: number; // Fits surrounding text + temporalDecay: number; // Age penalty for stale proposals + combined: number; // Weighted final score +} + +// Thresholds +const τ_input = 0.65; // Minimum to attempt Context pass +const τ_commit = 0.9; // Minimum to apply changes +``` + +#### 5. Staging Buffer State Machine (v0.4 Core Missing) + +**Current State**: Interface exists, state transitions not implemented + +**Required States**: + +- `HOLD`: Proposal waiting for more context +- `COMMIT`: High confidence, ready to apply +- `DISCARD`: Low confidence or superseded +- `ROLLBACK`: Caret entered active region mid-process + +#### 6. Platform-Specific UI Rendering + +**Web Implementation** ✅ _Working_ + +- **Active Region**: `ui/highlighter.ts` → `mindtype:activeRegion` events +- **Corrections**: `ui/swapRenderer.ts` → mechanical letter swap animation +- **Accessibility**: `ui/liveRegion.ts` → screen reader announcements + +**macOS Implementation** ❌ _Missing_ + +- **Active Region**: Overlay window with subtle underline (need to create) +- **Corrections**: AX insertion API with caret preservation (need to create) +- **Accessibility**: Native VoiceOver integration (need to create) + +### 🔧 Platform Integration Details + +#### Web Platform (Primary) ✅ _Ready_ + +- **Entry**: `web-demo/src/App.tsx` boots pipeline via `index.ts` +- **LM Integration**: Transformers.js with WebGPU → WASM → CPU fallback +- **Asset Verification**: Local-only by default, graceful degradation +- **Performance**: Device tier detection, token limits, cooldown policies + +#### macOS Platform (Secondary) ❌ _Needs Creation_ + +- **Entry**: Need Swift app with `NSStatusItem` menu bar presence +- **LM Integration**: Same Rust core via FFI, shared model assets +- **Permissions**: Accessibility API permissions with user onboarding +- **UI**: Preferences window, overlay rendering, system integration + +### 🎯 Critical v0.4 Gaps + +1. **Context & Tone Transformers**: Core functionality missing +2. **Confidence Scoring Algorithms**: Mathematical implementation needed +3. **Staging Buffer State Machine**: Transition logic incomplete +4. **macOS Platform Bindings**: Entire platform layer missing +5. **Undo Isolation**: Time-bucketed system separate from user undo + +--- + +## 🗺️ How to Read the Architecture Diagram + +_Think of this as your GPS guide to understanding the MindType system. We'll walk through it like following a path from typing to corrections._ + +--- + +## 🎯 **The Big Picture: What Am I Looking At?** + +The diagram shows **one complete journey** from "you type a character" to "you see a correction." It's like a factory assembly line, but for text processing. + +**The main path goes like this:** + +1. 📝 **You type** → 2. ⚡ **System processes** → 3. 🎨 **You see results** + +**Think of it as:** Raw typing → Smart fixing → Polished output + +--- + +## 📍 **Start Here: The Input/Output Loop (Top of Diagram)** + +### **Left Side: Text Goes IN** + +- **① Text Field**: Where you type (like any text box) +- **② Event Capture**: System notices each keystroke +- **③ Pipeline Start**: Your typing enters the processing system + +### **Right Side: Corrections Come OUT** + +- **⑫ Corrections Ready**: System has suggestions ready +- **⑬ Atomic Update**: Text gets updated safely +- **⑭ Updated Field**: You see the corrected text + +**The Loop**: Updated text becomes new input → continuous improvement cycle + +--- + +## 🏗️ **The Middle: Where the Magic Happens** + +_This is the "factory floor" where your rough typing gets transformed into polished text._ + +### **🌐 Platform Layer (How You Connect)** + +Think of this as the "entrance" to the system: + +- **Web**: Browser-based (what we have now) +- **macOS**: Desktop app (planned for later) + +Both send the same info: your text, where your cursor is, and when you typed it. + +### **⚡ Core Pipeline (The Assembly Line Manager)** + +This is like the factory foreman who coordinates everything: + +- **System Entry**: The main control center +- **Input Monitoring**: Watches your typing and checks for security (password fields, etc.) +- **Scheduler**: Decides when to run different types of processing +- **Diffusion Control**: Manages the "active region" (the 3-8 words behind your cursor that get processed) + +--- + +## 🔧 **The Three-Stage Assembly Line (The Heart of the System)** + +_This is where your messy typing gets progressively cleaner._ + +### **🧹 Stage 1: NOISE (Quick Fixes)** + +**What it does**: Fixes obvious typos instantly +**When it runs**: Every time you finish a word (hit space) +**Examples**: `teh → the`, `helllo → hello` +**Think of it as**: A spell-checker that works as you type + +### **📚 Stage 2: CONTEXT (Smart Grammar)** + +**What it does**: Understands meaning and fixes grammar +**When it runs**: When you pause typing (500ms break) +**Examples**: `me tall gear → Metal Gear`, adds punctuation +**Think of it as**: A grammar teacher who understands context +**Status**: _Needs to be built_ + +### **🎨 Stage 3: TONE (Style Polish)** + +**What it does**: Adjusts writing style (casual, professional, etc.) +**When it runs**: After grammar fixes are done +**Examples**: `This works well → This demonstrates effectiveness` +**Think of it as**: A writing coach who matches your desired tone +**Status**: _Needs to be built_ + +--- + +## 🧠 **The AI Brain (Language Model)** + +_This is what makes Stage 2 and 3 smart._ + +**What it includes**: + +- **LM Factory**: Creates the AI system +- **TransformersClient**: Manages AI requests +- **TransformersRunner**: Runs the actual AI model (Qwen2.5) + +**Device Tiers** (automatically detected): + +- **WebGPU**: Fastest, best quality +- **WASM**: Good speed, good compatibility +- **CPU**: Slowest, works everywhere + +--- + +## ⚖️ **Quality Control (The Gatekeeper)** + +_This decides which suggestions are good enough to show you._ + +### **Confidence Gate** + +Scores every suggestion on: + +- How word-like your original typing was +- How good the suggested fix is +- How well it fits the surrounding text +- How old the suggestion is + +### **Staging Buffer** + +Manages suggestion states: + +- 🟡 **HOLD**: Waiting for more info +- 🟢 **COMMIT**: Good enough, apply it +- 🔴 **DISCARD**: Not good enough, throw away +- 🔄 **ROLLBACK**: User moved cursor, undo everything + +**Status**: _Both need to be built_ + +--- + +## 🧩 **Safe Application (The Final Step)** + +_This actually changes your text safely._ + +### **Tapestry** + +Keeps track of what's been changed and what hasn't. + +### **Diff/Merge Gate** + +The actual text-changing function. Super safe: + +- Never moves your cursor +- All-or-nothing updates +- Handles special characters correctly + +### **Undo Isolation** + +Keeps system changes separate from your undo history. +**Status**: _Needs to be built_ + +--- + +## 🎨 **Visual Feedback (What You See)** + +_This shows you what's happening._ + +- **UI Highlighter**: Shows the "active region" behind your cursor +- **SwapRenderer**: Animates text changes (the letter-swapping effect) +- **LiveRegion**: Announces changes to screen readers + +--- + +## 🔄 **How to Follow the Arrows** + +### **Solid Arrows = Main Flow** + +Follow these to see the normal path from typing to corrections. + +### **Dotted Arrows = Error Recovery** + +These show what happens when something goes wrong (like you move your cursor into the processing area). + +--- + +## 🚦 **What's Built vs What's Not** + +### **✅ Working Right Now** + +- The input/output loop +- Web platform +- Core pipeline engine +- Stage 1 (Noise) transformer +- AI infrastructure +- Safe text updating +- Visual feedback basics + +### **🔄 Partially Built** + +- Some AI components +- Some visual effects +- Data tracking + +### **❌ Need to Build for v0.4** + +- macOS platform +- Stage 2 (Context) transformer +- Stage 3 (Tone) transformer +- Quality control system +- Undo isolation + +--- + +## 🎯 **Key Takeaways** + +1. **Most of the time, nothing happens** - 90% of processing results in no changes +2. **Safety first** - Multiple systems ensure your cursor never moves unexpectedly +3. **Progressive enhancement** - Each stage makes the text a little better +4. **Smart timing** - Quick fixes happen immediately, smart fixes wait for pauses +5. **Cross-platform ready** - Same core logic works everywhere + +**Bottom line**: The diagram shows a sophisticated but safe system that gradually improves your typing without getting in your way. diff --git a/docs/v0.4/MindType-v0.4-Architecture.mmd b/docs/v0.4/MindType-v0.4-Architecture.mmd new file mode 100644 index 0000000..3ecb35c --- /dev/null +++ b/docs/v0.4/MindType-v0.4-Architecture.mmd @@ -0,0 +1,282 @@ +graph LR + %% ======================================== + %% TEXT INPUT/OUTPUT LOOP (Top - Critical Flow) + %% ======================================== + subgraph TEXT_LOOP ["📝 **TEXT INPUT/OUTPUT LOOP**
Where text gets read and written"] + direction TB + + subgraph TEXT_INPUT ["**TEXT READING** (1-3)"] + TEXT_FIELD[("**① Text Field**
Example: 'helloo thr weathfr'
Caret at position 17
User actively typing")] + DOM_EVENTS["**② Event Capture**
handleTextChange()
Extract: text, caret, timestamp
Every keystroke captured"] + PIPELINE_INGEST["**③ Pipeline Start**
pipeline.ingest()
Creates TypingEvent
Triggers processing"] + end + + subgraph TEXT_OUTPUT ["**TEXT WRITING** (12-14)"] + CORRECTIONS_READY["**⑫ Corrections Ready**
High-confidence edits
Passed quality gates
Ready to apply"] + REPLACE_RANGE["**⑬ Atomic Update**
replaceRange()
UTF-16 safe
Caret preserved"] + UPDATED_FIELD[("**⑭ Updated Field**
Result: 'Hello, the weather'
Caret position preserved
User sees corrections")] + end + + TEXT_FIELD -->|"**Keystroke**
Immediate capture"| DOM_EVENTS + DOM_EVENTS -->|"**Extract Data**
text, caret, timestamp"| PIPELINE_INGEST + CORRECTIONS_READY -->|"**Apply Edits**
Score ≥ 0.90"| REPLACE_RANGE + REPLACE_RANGE -->|"**Atomic Update**
Caret preserved"| UPDATED_FIELD + UPDATED_FIELD -.->|"**Loop**
Continuous cycle"| TEXT_FIELD + end + + %% ======================================== + %% PLATFORM LAYER + %% ======================================== + subgraph PLATFORM ["🌐 **PLATFORM LAYER** (4-5)"] + direction TB + + WEB["**④ Web Platform**
web-demo/src/App.tsx
React + TypeScript + Vite
Direct pipeline.ingest() calls"] + MAC["**⑤ macOS Platform**
Swift + AX API + FFI
NSStatusItem menu bar app
*Needs creation*"] + + NORMALIZE["**Platform Bridge**
Normalizes all inputs:
{text, caret, atMs}
Cross-platform compatibility"] + end + + %% ======================================== + %% CORE PIPELINE ENGINE + %% ======================================== + subgraph CORE ["⚡ **CORE PIPELINE ENGINE** (6-9)"] + direction TB + + ENTRY["**⑥ System Entry**
index.ts boot() function
Creates all components
Wires monitor→scheduler→diffusion"] + + subgraph MONITORING ["**INPUT MONITORING** (7)"] + TM["**TypingMonitor**
core/typingMonitor.ts
Emits TypingEvent stream
Manages event listeners"] + SEC["**SecurityContext**
core/security.ts
Detects password/IME states
Blocks unsafe operations"] + end + + SS["**⑧ SweepScheduler**
core/sweepScheduler.ts
Pause detection (300ms)
Triggers engine execution
Controls tickOnce() intervals"] + + subgraph DIFFUSION ["**DIFFUSION CONTROL** (9)"] + DC["**DiffusionController**
core/diffusionController.ts
State: {text, caret, frontier}
Unicode: Intl.Segmenter"] + ARP["**ActiveRegionPolicy**
core/activeRegionPolicy.ts
Window: 3-8 words behind cursor
Ranges: Render vs Context"] + REGION_VIZ["**Visual:**
[████████░░░░░░] caret
■ Processing zone
□ Safe (ahead of cursor)"] + end + end + + %% ======================================== + %% THREE-STAGE TRANSFORMER PIPELINE + %% ======================================== + subgraph TRANSFORMERS ["🔧 **THREE-STAGE PIPELINE** (10a-c)"] + direction LR + + subgraph STAGE1 ["**🧹 STAGE 1: NOISE**
Most‑likely intended words
Priors: keyboard proximity, word frequency
NO grammar/punctuation"] + T1["**Noise Transformer**
engines/noiseTransformer.ts
Trigger: Word boundaries
Timing: Immediate (< 5ms)"] + T1_RULES["**Rules:**
• Keyboard-proximity priors
• Damerau–Levenshtein correction
• Letter transposition/repeats
• Basic spacing cleanup"] + end + + subgraph STAGE2 ["**📚 STAGE 2: CONTEXT**
Window: current sentence ±2
Weights: S±1=1.0, S±2=0.5
Never edit at/after caret"] + T2["**Context Transformer**
engines/contextTransformer.ts
*Needs creation*
Trigger: Pause (500ms)
Timing: LM inference (~30ms)"] + T2_EXAMPLES["**Corrections:**
• Grammar, syntax, semantics
• Punctuation, capitalization
• Cross-sentence coherence"] + end + + subgraph STAGE3 ["**🎨 STAGE 3: TONE**
Options: None, Casual, Professional
May change wording/grammar/punctuation
Never edit at/after caret
Scope: last N sentences (CPU:10, higher:20)"] + T3["**Tone Transformer**
engines/toneTransformer.ts
*Needs creation*
Trigger: After Context
Timing: Analysis (~50ms)"] + T3_POLISH["**Features:**
• Baseline tone detection
• Minimal‑diff rewrites
• Document consistency"] + T3_TOGGLE["**Toggle Control**
Default: ON
OFF mid‑process:
finish in‑flight, stop new"] + end + + T1 -->|"**Clean Words**
Correctly spelled
Ready for context"| T2 + T2 -->|"**Polished Text**
Grammar complete
Ready for tone"| T3 + T3_TOGGLE -.->|"**Toggle**
ON/OFF control"| T3 + end + + %% ======================================== + %% TONE CONTROL SUBSYSTEM + %% ======================================== + subgraph TONE_CONTROL ["🎨 **TONE CONTROL SUBSYSTEM**"] + direction TB + + TONE_TOGGLE["**Toggle Control**
Default: ON
User: Enable/Disable
OFF mid‑process: finish in‑flight"] + TONE_OPTIONS["**Tone Selection**
None (pass‑through)
Casual, Professional
Scope: last N sentences"] + TONE_DETECTOR["**Tone Detector**
LM classifier
Baseline tone vector
Document assessment"] + TONE_ANALYSIS["**Tone Analysis**
Plan minimal‑diff adjustments
τ_tone (0.85) ∧ τ_commit (0.90)"] + + TONE_TOGGLE -->|"**Control**"| TONE_OPTIONS + TONE_OPTIONS -->|"**Parameters**"| TONE_DETECTOR + TONE_DETECTOR -->|"**Baseline**"| TONE_ANALYSIS + TONE_ANALYSIS -->|"**Adjustments**"| T3 + end + + %% ======================================== + %% LANGUAGE MODEL SUBSYSTEM + %% ======================================== + subgraph LM ["🧠 **LANGUAGE MODEL SUBSYSTEM** (11)"] + direction TB + + LM_FACTORY["**LM Factory**
core/lm/factory.ts
*Needs completion*
createDefaultLMAdapter()
Device detection + fallback"] + LM_CLIENT["**TransformersClient**
core/lm/transformersClient.ts
Single-flight + abort
Device-tier adaptive cooldown
Tracks runs + stale drops"] + LM_RUNNER["**TransformersRunner**
core/lm/transformersRunner.ts
Qwen2.5-0.5B-Instruct
True token-by-token streaming
Singleton pattern"] + + subgraph LM_TIERS ["**Device Tiers**
Tone analysis scope: N sentences
(CPU: 10, WebGPU/WASM: 20)"] + WEBGPU["**WebGPU**
48 tokens max
160ms cooldown
~15ms latency"] + WASM["**WASM**
24 tokens max
240ms cooldown
~30ms latency"] + CPU["**CPU**
16 tokens max
400ms cooldown
~100ms latency"] + end + + LM_FACTORY -->|"**Creates**"| LM_CLIENT + LM_CLIENT -->|"**Manages**"| LM_RUNNER + end + + %% ======================================== + %% CONFIDENCE & STAGING SYSTEM + %% ======================================== + subgraph CONFIDENCE ["⚖️ **CONFIDENCE & STAGING** (12)"] + direction TB + + CG["**Confidence Gate**
core/confidenceGate.ts
*Critical for v0.4*
Mathematical scoring
All transformer proposals
Includes τ_tone gating"] + CG_MATH["**Scoring Algorithm:**
• Input fidelity (30%)
• Transform quality (40%)
• Context coherence (20%)
• Temporal decay (10%)"] + + SB["**Staging Buffer**
core/stagingBuffer.ts
*Critical for v0.4*
Proposal state machine
Cleanup stale proposals
Caret movement triggers"] + SB_STATES["**State Machine:**
🟡 HOLD → Waiting
🟢 COMMIT → Apply
🔴 DISCARD → Reject
🔄 ROLLBACK → Revert"] + + THRESHOLDS["**Decision Thresholds:**
τ_input = 0.65 (try Context)
τ_commit = 0.90 (apply)
τ_tone = 0.85 (Tone)
τ_discard = 0.30 (discard)
Tone: no rollback on caret move"] + + CG -->|"**Score [0,1]**"| SB + end + + %% ======================================== + %% VALIDATION & MERGE + %% ======================================== + subgraph VALIDATION ["🧩 **VALIDATION & MERGE** (13)"] + direction TB + + TAP["**Tapestry**
core/tapestry.ts
*Data structures exist*
Track validated spans
{original, corrected, confidence}
Prevent re-processing"] + TAP_DATA["**Capabilities:**
• Span tracking/merging
• Confidence score storage
• Applied timestamps
• Re-processing prevention
• Rollback state management"] + + DMG["**Diff/Merge Gate**
utils/diff.ts
replaceRange() atomic ops
Comprehensive caret protection
All text changes go through here"] + DMG_SAFETY["**Safety Guarantees:**
• Never edits at/after caret
• UTF-16 surrogate pair safe
• Atomic all-or-nothing
• Preserves cursor position
• Exception-safe rollback"] + + UNDO["**Undo Isolation**
core/undoIsolation.ts
*Important for UX*
Separate system/user undo
100-200ms time windows
Internal rollback capability"] + + TAP -->|"**Span Data**"| DMG + DMG -->|"**System Edits**"| UNDO + end + + %% ======================================== + %% UI FEEDBACK SYSTEM + %% ======================================== + subgraph UI_FEEDBACK ["🎨 **UI FEEDBACK SYSTEM** (14)"] + direction LR + + UI_HIGH["**UI Highlighter**
ui/highlighter.ts
emitActiveRegion() events
Called from DiffusionController
Subtle region highlighting"] + UI_SWAP["**SwapRenderer**
ui/swapRenderer.ts
*Needs polish*
Mechanical letter swap
Target: Braille markers"] + UI_LIVE["**LiveRegion**
ui/liveRegion.ts
WCAG 2.2 AA compliant
Screen reader announcements
'text updated behind cursor'"] + + UI_EVENTS["**Event Flow:**
• mindtype:activeRegion
• mindtype:highlight
• Screen reader announcements
• Reduced motion detection
• Cross-browser compatibility"] + end + + %% ======================================== + %% CONTINUOUS LOOP EXPLANATION + %% ======================================== + subgraph LOOP_DETAIL ["🔄 **TYPING LOOP EXAMPLE**"] + direction TB + + LOOP_TITLE["**Typing 'helloo thr'** - 12 Pipeline Runs"] + + RUNS["**Pipeline Runs:**
1-6: 'helloo' → Building, no changes
7: ' ' → 🧹 'helloo' → 'hello'
8-10: 'thr' → Building new word
11: ' ' → 🧹 'thr' → 'the'
12: Pause 500ms → 📚 Grammar + style
13: Document analysis → 🎨 Tone check
**Result:** 'hello the' → 'Hello, the'"] + + LOOP_PERFORMANCE["**Performance:**
• 90%+ runs: No changes
• Only boundaries trigger fixes
• Validated text skipped
• 60fps UI throttling"] + end + + %% ======================================== + %% PRIMARY DATA FLOW (Left to Right) + %% ======================================== + + %% ======================================== + %% PRIMARY DATA FLOW CONNECTIONS (Left to Right) + %% ======================================== + + %% Text Input Flow (Nodes 1-3 → 6) + PIPELINE_INGEST -->|"**Typing Event**
TypingEvent {text, caret, atMs}"| ENTRY + + %% Platform Integration (Nodes 4-5 → 6) + WEB -->|"**Direct Call**
handleTextChange() in App.tsx"| ENTRY + MAC -->|"**FFI Bridge**
Swift AX API → Rust core"| ENTRY + + %% Core Pipeline Flow (Nodes 6-9) + ENTRY -->|"**Event Distribution**
Creates monitor + scheduler"| TM + ENTRY -->|"**Security Context**
Injects security checks"| SEC + TM -->|"**Debounced Stream**
Filtered keystroke events"| SS + SEC -->|"**Security Signals**
Blocks unsafe operations"| SS + + %% Scheduling to Diffusion (Nodes 8-9) + SS -->|"**Processing Trigger**
Word boundary detected"| DC + SS -->|"**Region Policy**
3-8 word window config"| ARP + DC -->|"**Bounded Processing**
Active region: [████░░░░] caret"| T1 + ARP -->|"**Safety Constraints**
Caret-safe boundaries"| T1 + + %% LM Integration (Stage 2 only - Node 10b → 11) + T2 -->|"**Context Request**
Sentence for LM analysis"| LM_FACTORY + LM_RUNNER -->|"**Token Stream**
Incremental LM output"| T2 + + %% All Transformers to Confidence (Nodes 10a-c → 12a) + T1 -->|"**Noise Proposals**
Typo corrections"| CG + T2 -->|"**Context Proposals**
Grammar + style fixes"| CG + T3 -->|"**Tone Proposals**
Tone consistency"| CG + + %% Staging to Validation (Node 12b → 13a) + SB -->|"**Approved Edits**
Score ≥ τ_commit (0.90)"| TAP + + %% Merge to UI (Node 13b → 14a-c) + DMG -->|"**Highlight Event**
mindtype:activeRegion"| UI_HIGH + DMG -->|"**Swap Event**
mindtype:highlight"| UI_SWAP + DMG -->|"**Accessibility**
Screen reader announcement"| UI_LIVE + + %% UI to Final Output (Node 14 → 12-14) + UI_SWAP -->|"**Text Application**
DOM manipulation"| CORRECTIONS_READY + + %% ======================================== + %% FEEDBACK LOOPS (Dotted - Secondary Flow) + %% ======================================== + + %% Rollback Paths + UPDATED_FIELD -.->|"**Caret Moved**
Trigger rollback"| SB + TAP -.->|"**Rollback Data**"| SB + UNDO -.->|"**System Undo**"| SB + + %% Region Updates + ARP -.->|"**Region Update**"| DC + + %% ======================================== + %% VISUAL STYLING + %% ======================================== + + %% Implementation Status Colors + classDef ready fill:#c8e6c9,stroke:#388e3c,stroke-width:2px + classDef partial fill:#ffecb3,stroke:#f57c00,stroke-width:2px + classDef missing fill:#ffcdd2,stroke:#d32f2f,stroke-width:2px + + %% Layer Colors (Gestalt Grouping) + classDef textLoop fill:#e8f5e8,stroke:#2e7d2e,stroke-width:3px + classDef platform fill:#e3f2fd,stroke:#1565c0,stroke-width:2px + classDef core fill:#fff3e0,stroke:#ef6c00,stroke-width:2px + classDef transformers fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef lm fill:#e0f2f1,stroke:#00695c,stroke-width:2px + classDef confidence fill:#fff8e1,stroke:#f57f17,stroke-width:2px + classDef validation fill:#ffebee,stroke:#d32f2f,stroke-width:2px + classDef ui fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px + classDef explanation fill:#f1f8e9,stroke:#558b2f,stroke-width:2px + + %% Apply Layer Styles + class TEXT_LOOP,TEXT_FIELD,DOM_EVENTS,PIPELINE_INGEST,CORRECTIONS_READY,REPLACE_RANGE,UPDATED_FIELD textLoop + class PLATFORM,WEB,NORMALIZE platform + class CORE,ENTRY,MONITORING,TM,SEC,SS,DIFFUSION,DC,ARP,REGION_VIZ core + class TRANSFORMERS,STAGE1,STAGE2,STAGE3,T1,T2,T3,T1_RULES,T2_EXAMPLES,T3_POLISH transformers + class LM,LM_FACTORY,LM_CLIENT,LM_RUNNER,LM_TIERS,WEBGPU,WASM,CPU lm + class CONFIDENCE,CG,CG_MATH,SB,SB_STATES,THRESHOLDS confidence + class VALIDATION,TAP,TAP_DATA,DMG,DMG_SAFETY,UNDO validation + class UI_FEEDBACK,UI_HIGH,UI_SWAP,UI_LIVE,UI_EVENTS ui + class LOOP_DETAIL,LOOP_TITLE,RUNS,LOOP_PERFORMANCE explanation + + %% Apply Implementation Status (simplified) + class ENTRY,TM,SEC,SS,DC,ARP,T1,LM_CLIENT,LM_RUNNER,DMG,UI_HIGH,UI_LIVE,WEB ready + class TAP,UI_SWAP,LM_FACTORY,T2,T3,CG,SB,UNDO,MAC,TONE_TOGGLE,TONE_OPTIONS,TONE_ANALYSIS partial + + %% Apply specialized styling for tone control + classDef toneControl fill:#f8bbd9,stroke:#e91e63,stroke-width:2px + class TONE_CONTROL,TONE_TOGGLE,TONE_OPTIONS,TONE_ANALYSIS,T3_TOGGLE toneControl diff --git a/docs/v0.4/_archive/MindType-v0.4-Architecture.pdf b/docs/v0.4/_archive/MindType-v0.4-Architecture.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4256622d0c0d582446b4138e4dc1f8a509e9cb38 GIT binary patch literal 611988 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�_a$tEZX57P>~7 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𜿙!Ln_o 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%0Dy*hSD){OUYxw+nKL^w$K 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 z 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�D`|6mvg+ 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

c+YU4&2~tT^^O;DnoTmH?%8Rv)oCUdfp56J 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 literal 0 HcmV?d00001 diff --git a/docs/v0.4/v0.4-enhancement-summary.md b/docs/v0.4/v0.4-enhancement-summary.md new file mode 100644 index 0000000..4fce735 --- /dev/null +++ b/docs/v0.4/v0.4-enhancement-summary.md @@ -0,0 +1,155 @@ + + +# MindType v0.4 Master Guide Enhancement Summary + +## 🎯 Mission Accomplished + +We successfully transformed your **MindType v0.4 Master Guide** from a conceptual overview (233 lines) into a **comprehensive implementation blueprint** (856 lines) that can drive precise refactoring decisions. + +## 📊 What We Added + +### 1. 🏗️ Systems Architecture Diagram + +- **Visual Mermaid diagram** showing complete data flow +- **Component status matrix** (✅ Implemented, 🔄 Partial, ❌ Missing) +- **Code location mapping** for every component +- **Platform-specific binding details** + +### 2. ⚖️ Confidence Gating System (Mathematical Specification) + +- **Complete algorithms** for scoring proposals across 4 dimensions +- **Threshold definitions** with mathematical formulas +- **Temporal decay implementation** with exponential falloff +- **TypeScript pseudocode** for immediate implementation + +### 3. 🔄 Staging Buffer State Machine + +- **HOLD/COMMIT/DISCARD/ROLLBACK** state transitions +- **Event-driven updates** (caret entry, context changes) +- **Memory management** and cleanup strategies +- **Integration points** with confidence system + +### 4. 🖥️ Platform Implementation Guides + +- **Web Platform** (Primary): Complete implementation details +- **macOS Platform** (Secondary): Architecture plan with Swift/FFI +- **iOS Platform** (Future): Design considerations +- **Cross-platform strategy** with shared Rust core + +### 5. 📋 Comprehensive Migration Checklist + +- **Critical missing components** with exact file locations +- **Enhancement tasks** for existing components +- **Testing requirements** with new test file specifications +- **Priority ordering** and timeline estimates +- **Success criteria** and breaking change documentation + +### 6. 🎥 Enhanced User Experience Storyboard + +- **Detailed 10-frame walkthrough** of v0.4 three-stage pipeline +- **Error recovery scenarios** (caret entry, low confidence, LM failure) +- **Performance adaptation** examples across device tiers +- **Visual feedback** specification with accessibility compliance + +## 🔍 Key Insights from Codebase Analysis + +### ✅ What's Already Solid (v0.4-Ready) + +- **Core Pipeline**: `index.ts` → `TypingMonitor` → `SweepScheduler` → `DiffusionController` +- **Active Region System**: Unicode-aware word segmentation, frontier tracking +- **Caret Safety**: `replaceRange` with UTF-16 safety, comprehensive tests +- **Rule Engine**: 5 sophisticated tidy sweep rules (transposition, punctuation, etc.) +- **LM Infrastructure**: Streaming, single-flight, device tiers, asset verification +- **Web Demo**: Live integration with TS pipeline, controls, scenarios + +### 🔄 What Needs Enhancement + +- **Confidence Gating**: Data structures exist but scoring algorithms missing +- **Staging Buffer**: State machine designed but not fully implemented +- **Multi-Transformer Pipeline**: Only `tidySweep` engine; missing Context/Tone +- **LM Integration**: Infrastructure ready but orchestration incomplete +- **Visual Feedback**: Events fire but mechanical swap rendering needs polish + +### ❌ What's Missing for v0.4 + +- **Context Transformer**: Sentence-level LM repairs (`engines/contextTransformer.ts`) +- **Tone Transformer**: Punctuation/style polish (`engines/toneTransformer.ts`) +- **Confidence Scoring**: Mathematical algorithms (`core/confidenceGate.ts`) +- **Undo Isolation**: Time-bucketed system edits (`core/undoIsolation.ts`) +- **macOS Integration**: Platform bindings, AX API, overlay rendering + +## 🚀 Implementation Roadmap + +### Phase 1: Core Functionality (Weeks 1-2) + +1. **Context Transformer** creation with LM integration +2. **Confidence Gating** mathematical implementation +3. **Staging Buffer** state machine with HOLD/COMMIT/DISCARD +4. **Three-stage pipeline** integration in DiffusionController + +### Phase 2: Polish & Integration (Weeks 3-4) + +1. **Tone Transformer** creation +2. **Undo isolation** system +3. **Enhanced visual feedback** with mechanical swaps +4. **Comprehensive testing** of core functionality + +### Phase 3: Platform Expansion (Weeks 5-6) + +1. **macOS app** development start +2. **Cross-platform testing** +3. **Performance optimization** +4. **Documentation completion** + +## 📈 Impact and Value + +### For Development Team + +- **Clear Implementation Path**: Every component specified with code locations +- **Risk Mitigation**: Known gaps identified with mitigation strategies +- **Quality Assurance**: Comprehensive testing requirements defined +- **Performance Targets**: Specific latency and memory constraints + +### For Product Success + +- **User Experience**: Detailed storyboard shows v0.4 improvements +- **Platform Strategy**: Web-first with clear macOS expansion plan +- **Accessibility**: Built-in compliance with reduced motion, screen readers +- **Privacy**: Local-first architecture with explicit opt-in for remote + +### For Future Maintenance + +- **Architectural Clarity**: Visual diagrams show component relationships +- **Decision Documentation**: Mathematical specifications for confidence system +- **Platform Abstraction**: Shared Rust core enables multi-platform expansion +- **Testing Strategy**: Coverage requirements ensure long-term stability + +## 🎯 Next Steps + +1. **Review this enhanced guide** with your team for technical accuracy +2. **Validate the priority ordering** against business needs +3. **Begin implementation** with Context Transformer (highest impact) +4. **Set up development branches** for v0.4 work +5. **Create project tracking** based on the comprehensive checklist + +The **MindType v0.4 Master Guide** is now a definitive blueprint that any developer can use to understand exactly what needs to be built, where it goes, and how it integrates with the existing system. 🎉 + +--- + +_This enhancement transforms conceptual vision into executable reality. Every algorithm, state machine, and integration point has been specified to enable confident, precise implementation of MindType v0.4._ diff --git a/e2e/tests/web-demo-tone-controls.spec.ts b/e2e/tests/web-demo-tone-controls.spec.ts new file mode 100644 index 0000000..6f36b48 --- /dev/null +++ b/e2e/tests/web-demo-tone-controls.spec.ts @@ -0,0 +1,8 @@ +/* Auto-generated test stub for REQ-TONE-CONTROLS-UI */ +import { describe, it, expect } from 'vitest'; + +describe('REQ-TONE-CONTROLS-UI web-demo-tone-controls.spec', () => { + it('TODO: implement test for REQ-TONE-CONTROLS-UI', () => { + expect(true).toBe(true); + }); +}); diff --git a/engines/contextTransformer.ts b/engines/contextTransformer.ts new file mode 100644 index 0000000..76d1e60 --- /dev/null +++ b/engines/contextTransformer.ts @@ -0,0 +1,137 @@ +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ CONTEXTTRANSFORMER ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ Context transformer with ±2 sentence look-around + • WHY ▸ REQ-CONTEXT-TRANSFORMER + • HOW ▸ See linked contracts and guides in docs +*/ + +import { CONFIDENCE_THRESHOLDS } from '../config/defaultThresholds'; + +export interface ContextWindow { + currentSentence: string; + previousSentences: string[]; // up to 2 (S-1 weight 1.0, S-2 weight 0.5) + nextSentences: string[]; // lookahead gate (not editing after caret) +} + +export interface TransformInput { + text: string; + caret: number; +} + +export interface ProposalDiff { + start: number; + end: number; + text: string; +} + +export interface TransformResult { + window: ContextWindow; + proposals: ProposalDiff[]; // caret-safe proposals only +} + +function splitSentences(doc: string): Array<{ start: number; end: number }> { + // Simple sentence segmentation by punctuation; ensures end ≤ caret before edits + const out: Array<{ start: number; end: number }> = []; + let start = 0; + for (let i = 0; i < doc.length; i++) { + const ch = doc[i]; + if (ch === '.' || ch === '!' || ch === '?') { + // include trailing space + let end = i + 1; + while (end < doc.length && doc[end] === ' ') end++; + out.push({ start, end }); + start = end; + } + } + if (start < doc.length) out.push({ start, end: doc.length }); + return out; +} + +function sentenceAtCaret( + bounds: Array<{ start: number; end: number }>, + caret: number, +): number { + let idx = bounds.length - 1; + for (let i = 0; i < bounds.length; i++) { + const b = bounds[i]; + // Use half-open interval: [start, end) so caret at next start belongs to that next sentence + if (b.start <= caret && caret < b.end) return i; + if (caret < b.start) return Math.max(0, i - 1); + } + return idx; +} + +export function buildContextWindow(text: string, caret: number): ContextWindow { + const sent = splitSentences(text); + const idx = sentenceAtCaret(sent, caret); + const cur = sent[idx] ?? { start: 0, end: caret }; + const prev1 = sent[idx - 1]; + const prev2 = sent[idx - 2]; + const next1 = sent[idx + 1]; + const next2 = sent[idx + 2]; + return { + currentSentence: text.slice(cur.start, cur.end), + previousSentences: [prev1, prev2] + .filter(Boolean) + .map((b) => text.slice(b.start, b.end)), + nextSentences: [next1, next2].filter(Boolean).map((b) => text.slice(b.start, b.end)), + }; +} + +function deterministicRepairs(span: string): { span: string; changed: boolean } { + let out = span; + let changed = false; + // Minimal grammar repairs suitable for Context stage + // 1) Capitalize first letter after sentence boundary if lowercase + out = out.replace(/(^|[.!?]\s+)([a-z])/g, (m, p1, p2) => { + changed = changed || p2 !== p2.toUpperCase(); + return `${p1}${p2.toUpperCase()}`; + }); + // 2) Add period if sentence-like and missing terminal punctuation + if (/\w[\w\s,'”\)\]]+$/.test(out) && !/[.!?]\s*$/.test(out)) { + out = out.trimEnd() + '.'; + changed = true; + } + return { span: out, changed }; +} + +export function contextTransform(input: TransformInput): TransformResult { + const { text, caret } = input; + const window = buildContextWindow(text, caret); + + // Gate on input fidelity (cheap heuristic on current+prev context) + const sample = [window.previousSentences.join(' '), window.currentSentence] + .join(' ') + .slice(-200); + const nonSpace = sample.replace(/\s+/g, ''); + const inputFidelity = + nonSpace.length === 0 + ? 0 + : (nonSpace.match(/[\p{L}\p{N}]/gu) || []).length / nonSpace.length; + if (inputFidelity < CONFIDENCE_THRESHOLDS.τ_input) { + return { window, proposals: [] }; + } + + // Only operate strictly before the caret + const curStart = text.lastIndexOf(window.currentSentence); + const curEnd = curStart + window.currentSentence.length; + const safeEnd = Math.min(curEnd, caret); + const curSpan = text.slice(curStart, safeEnd); + const { span: repaired, changed } = deterministicRepairs(curSpan); + + const proposals: ProposalDiff[] = []; + if (changed) { + proposals.push({ start: curStart, end: safeEnd, text: repaired }); + } + return { window, proposals }; +} diff --git a/engines/tidySweep.ts b/engines/noiseTransformer.ts similarity index 94% rename from engines/tidySweep.ts rename to engines/noiseTransformer.ts index 77d22d7..80a0e8c 100644 --- a/engines/tidySweep.ts +++ b/engines/noiseTransformer.ts @@ -1,5 +1,5 @@ /*╔══════════════════════════════════════════════════════════════╗ - ║ ░ T I D Y S W E E P E N G I N E ░░░░░░░░░░░░░░░░░░░ ║ + ║ ░ N O I S E T R A N S F O R M E R ░░░░░░░░░░░░░░░░░░░ ║ ║ ║ ║ Forward cleanup (<80 chars) with caret-safe diffs. ║ ║ Works on the live TYPING ZONE just behind the caret. ║ @@ -16,32 +16,32 @@ import { MAX_SWEEP_WINDOW } from '../config/defaultThresholds'; -export interface SweepInput { +export interface NoiseInput { text: string; caret: number; // Optional hint constraining the proposed edit to a word range hint?: { start: number; end: number }; } -export interface SweepResult { +export interface NoiseResult { diff: { start: number; end: number; text: string } | null; } // Rule interface for individual correction rules -export interface SweepRule { +export interface NoiseRule { name: string; priority: number; // Lower number = higher priority - apply(input: SweepInput): SweepResult; + apply(input: NoiseInput): NoiseResult; } // ⟢ Future: Confidence threshold for applying corrections // const CONFIDENCE_THRESHOLD = 0.7; // Basic rule: Simple word substitutions (space-delimited for safety) -const wordSubstitutionRule: SweepRule = { +const wordSubstitutionRule: NoiseRule = { name: 'word-substitution', priority: 1, - apply(input: SweepInput): SweepResult { + apply(input: NoiseInput): NoiseResult { const { text, caret, hint } = input; // Define safe editing window (never at/after caret) @@ -98,10 +98,10 @@ const wordSubstitutionRule: SweepRule = { }; // Whitespace normalization: collapse multiple spaces/tabs; trim trailing spaces before newline -const whitespaceNormalizationRule: SweepRule = { +const whitespaceNormalizationRule: NoiseRule = { name: 'whitespace-normalization', priority: 1, - apply(input: SweepInput): SweepResult { + apply(input: NoiseInput): NoiseResult { const { text, caret, hint } = input; const windowStart = Math.max(0, caret - MAX_SWEEP_WINDOW); const windowEnd = caret; @@ -169,10 +169,10 @@ function isWordBoundary(char: string | undefined): boolean { } // Transposition detection rule: detects common letter swaps inside words -const transpositionRule: SweepRule = { +const transpositionRule: NoiseRule = { name: 'transposition-detection', priority: 0, - apply(input: SweepInput): SweepResult { + apply(input: NoiseInput): NoiseResult { const { text, caret, hint } = input; const windowStart = Math.max(0, caret - MAX_SWEEP_WINDOW); @@ -222,10 +222,10 @@ const transpositionRule: SweepRule = { }; // Punctuation normalization rule: spacing around commas, periods, em dashes, quotes -const punctuationNormalizationRule: SweepRule = { +const punctuationNormalizationRule: NoiseRule = { name: 'punctuation-normalization', priority: 0, - apply(input: SweepInput): SweepResult { + apply(input: NoiseInput): NoiseResult { const { text, caret, hint } = input; const windowStart = Math.max(0, caret - MAX_SWEEP_WINDOW); const windowEnd = caret; @@ -294,10 +294,10 @@ const punctuationNormalizationRule: SweepRule = { }; // Capitalization rules: sentence-start capitalization; standalone 'i' pronoun → 'I' -const capitalizationRule: SweepRule = { +const capitalizationRule: NoiseRule = { name: 'capitalization', priority: 1, - apply(input: SweepInput): SweepResult { + apply(input: NoiseInput): NoiseResult { const { text, caret, hint } = input; const windowStart = Math.max(0, caret - MAX_SWEEP_WINDOW); const windowEnd = caret; @@ -344,7 +344,7 @@ const capitalizationRule: SweepRule = { }; // Registry of all rules, ordered by priority -const RULES: SweepRule[] = [ +const RULES: NoiseRule[] = [ transpositionRule, punctuationNormalizationRule, capitalizationRule, @@ -353,7 +353,7 @@ const RULES: SweepRule[] = [ // ⟢ Future rules will be added here ]; -export function tidySweep(input: SweepInput): SweepResult { +export function noiseTransform(input: NoiseInput): NoiseResult { const { text, caret } = input; // Safety check: never edit at or after the caret diff --git a/engines/toneTransformer.ts b/engines/toneTransformer.ts new file mode 100644 index 0000000..a96ab2a --- /dev/null +++ b/engines/toneTransformer.ts @@ -0,0 +1,90 @@ +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ TONETRANSFORMER ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ Tone transformer with baseline detection and selectable tone + • WHY ▸ REQ-TONE-TRANSFORMER + • HOW ▸ See linked contracts and guides in docs +*/ + +export type ToneOption = 'None' | 'Casual' | 'Professional'; + +export interface ToneVector { + formality: number; // 0..1 (higher = more formal) + friendliness: number; // 0..1 (higher = more casual/friendly) +} + +export interface ToneProposal { + start: number; + end: number; + text: string; +} + +export interface ToneInput { + text: string; + caret: number; + target: ToneOption; + scopeSentences: number; // 10 for CPU, up to 20 for WebGPU/WASM +} + +export function detectBaseline(document: string): ToneVector { + // Heuristics: punctuation density, contractions, slang tokens + const len = document.length || 1; + const commas = (document.match(/[,;]/g) || []).length / len; + const contractions = ( + document.match(/\b(I'm|you're|we're|it's|can't|won't|don't)\b/gi) || [] + ).length; + const slang = (document.match(/\b(gonna|wanna|cool|hey|yup|nah)\b/gi) || []).length; + const formality = Math.max( + 0, + Math.min(1, 0.6 + commas * 5 - contractions * 0.05 - slang * 0.05), + ); + const friendliness = Math.max(0, Math.min(1, 0.4 + contractions * 0.05 + slang * 0.08)); + return { formality, friendliness }; +} + +export function planAdjustments( + baseline: ToneVector, + target: ToneOption, + text: string, + caret: number, +): ToneProposal[] { + if (target === 'None') return []; + // Operate on last sentences before the caret only (caret-safe) + const upto = caret; + const span = text.slice(0, upto); + // Minimalistic strategies + const proposals: ToneProposal[] = []; + if (target === 'Professional' && baseline.formality < 0.7) { + // Expand common contractions + const rep: Array<[RegExp, string]> = [ + [/\bcan't\b/gi, 'cannot'], + [/\bwon't\b/gi, 'will not'], + [/\bdon't\b/gi, 'do not'], + [/\bit's\b/gi, 'it is'], + [/\bI'm\b/g, 'I am'], + [/\byou're\b/gi, 'you are'], + [/\bwe're\b/gi, 'we are'], + ]; + let updated = span; + for (const [re, to] of rep) updated = updated.replace(re, to); + if (updated !== span) proposals.push({ start: 0, end: upto, text: updated }); + } + if (target === 'Casual' && baseline.friendliness < 0.6) { + // Introduce contractions lightly (only a couple of patterns) + let updated = span; + updated = updated.replace(/\bit is\b/gi, "it's"); + updated = updated.replace(/\bwe are\b/gi, "we're"); + updated = updated.replace(/\byou are\b/gi, "you're"); + if (updated !== span) proposals.push({ start: 0, end: upto, text: updated }); + } + return proposals; +} diff --git a/node_modules/.bin/eslint b/node_modules/.bin/eslint index 24d4499..f5a8fa5 100755 --- a/node_modules/.bin/eslint +++ b/node_modules/.bin/eslint @@ -10,12 +10,12 @@ case `uname` in esac if [ -z "$NODE_PATH" ]; then - export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0/node_modules/eslint/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0/node_modules/eslint/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules" + export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules/eslint/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules/eslint/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules" else - export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0/node_modules/eslint/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0/node_modules/eslint/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules:$NODE_PATH" + export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules/eslint/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules/eslint/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules:$NODE_PATH" fi if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../.pnpm/eslint@9.32.0/node_modules/eslint/bin/eslint.js" "$@" + exec "$basedir/node" "$basedir/../.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules/eslint/bin/eslint.js" "$@" else - exec node "$basedir/../.pnpm/eslint@9.32.0/node_modules/eslint/bin/eslint.js" "$@" + exec node "$basedir/../.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules/eslint/bin/eslint.js" "$@" fi diff --git a/node_modules/.bin/eslint-config-prettier b/node_modules/.bin/eslint-config-prettier index cbe6d78..9f33f39 100755 --- a/node_modules/.bin/eslint-config-prettier +++ b/node_modules/.bin/eslint-config-prettier @@ -10,12 +10,12 @@ case `uname` in esac if [ -z "$NODE_PATH" ]; then - export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules/eslint-config-prettier/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules/eslint-config-prettier/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules" + export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules/eslint-config-prettier/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules/eslint-config-prettier/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules" else - export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules/eslint-config-prettier/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules/eslint-config-prettier/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules:$NODE_PATH" + export NODE_PATH="/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules/eslint-config-prettier/bin/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules/eslint-config-prettier/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules:/Users/alexanderbeck/Coding Folder /MindType/node_modules/.pnpm/node_modules:$NODE_PATH" fi if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules/eslint-config-prettier/bin/cli.js" "$@" + exec "$basedir/node" "$basedir/../.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules/eslint-config-prettier/bin/cli.js" "$@" else - exec node "$basedir/../.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules/eslint-config-prettier/bin/cli.js" "$@" + exec node "$basedir/../.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules/eslint-config-prettier/bin/cli.js" "$@" fi diff --git a/node_modules/.modules.yaml b/node_modules/.modules.yaml index 7785050..9467415 100644 --- a/node_modules/.modules.yaml +++ b/node_modules/.modules.yaml @@ -1,10 +1,18 @@ hoistPattern: - '*' hoistedDependencies: + '@alloc/quick-lru@5.2.0': + '@alloc/quick-lru': private '@ampproject/remapping@2.3.0': '@ampproject/remapping': private + '@antfu/install-pkg@1.1.0': + '@antfu/install-pkg': private + '@antfu/utils@8.1.1': + '@antfu/utils': private '@asamuzakjp/css-color@3.2.0': '@asamuzakjp/css-color': private + '@babel/code-frame@7.27.1': + '@babel/code-frame': private '@babel/helper-string-parser@7.27.1': '@babel/helper-string-parser': private '@babel/helper-validator-identifier@7.27.1': @@ -15,6 +23,18 @@ hoistedDependencies: '@babel/types': private '@bcoe/v8-coverage@0.2.3': '@bcoe/v8-coverage': private + '@braintree/sanitize-url@7.1.1': + '@braintree/sanitize-url': private + '@chevrotain/cst-dts-gen@11.0.3': + '@chevrotain/cst-dts-gen': private + '@chevrotain/gast@11.0.3': + '@chevrotain/gast': private + '@chevrotain/regexp-to-ast@11.0.3': + '@chevrotain/regexp-to-ast': private + '@chevrotain/types@11.0.3': + '@chevrotain/types': private + '@chevrotain/utils@11.0.3': + '@chevrotain/utils': private '@csstools/color-helpers@5.0.2': '@csstools/color-helpers': private '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -27,6 +47,8 @@ hoistedDependencies: '@csstools/css-tokenizer': private '@esbuild/darwin-arm64@0.21.5': '@esbuild/darwin-arm64': private + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@1.21.7))': + '@eslint-community/eslint-utils': private '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)': '@eslint-community/eslint-utils': private '@eslint-community/regexpp@4.12.1': @@ -45,6 +67,20 @@ hoistedDependencies: '@eslint/object-schema': private '@eslint/plugin-kit@0.3.5': '@eslint/plugin-kit': private + '@floating-ui/core@1.7.3': + '@floating-ui/core': private + '@floating-ui/dom@1.7.4': + '@floating-ui/dom': private + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@floating-ui/react-dom': private + '@floating-ui/react@0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@floating-ui/react': private + '@floating-ui/utils@0.2.10': + '@floating-ui/utils': private + '@headlessui/react@2.2.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@headlessui/react': private + '@headlessui/tailwindcss@0.2.2(tailwindcss@3.4.17)': + '@headlessui/tailwindcss': private '@huggingface/jinja@0.5.1': '@huggingface/jinja': private '@humanfs/core@0.19.1': @@ -55,10 +91,16 @@ hoistedDependencies: '@humanwhocodes/module-importer': private '@humanwhocodes/retry@0.4.3': '@humanwhocodes/retry': private + '@iconify/types@2.0.0': + '@iconify/types': private + '@iconify/utils@2.3.0': + '@iconify/utils': private '@img/sharp-darwin-arm64@0.34.3': '@img/sharp-darwin-arm64': private '@img/sharp-libvips-darwin-arm64@1.2.0': '@img/sharp-libvips-darwin-arm64': private + '@isaacs/cliui@8.0.2': + '@isaacs/cliui': private '@isaacs/fs-minipass@4.0.1': '@isaacs/fs-minipass': private '@istanbuljs/schema@0.1.3': @@ -73,12 +115,18 @@ hoistedDependencies: '@jridgewell/sourcemap-codec': private '@jridgewell/trace-mapping@0.3.29': '@jridgewell/trace-mapping': private + '@mermaid-js/mermaid-zenuml@0.2.2(mermaid@11.10.1)': + '@mermaid-js/mermaid-zenuml': private + '@mermaid-js/parser@0.6.2': + '@mermaid-js/parser': private '@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir': private '@nodelib/fs.stat@2.0.5': '@nodelib/fs.stat': private '@nodelib/fs.walk@1.2.8': '@nodelib/fs.walk': private + '@pkgjs/parseargs@0.11.0': + '@pkgjs/parseargs': private '@pkgr/core@0.2.9': '@pkgr/core': private '@protobufjs/aspromise@1.1.2': @@ -101,34 +149,130 @@ hoistedDependencies: '@protobufjs/pool': private '@protobufjs/utf8@1.1.0': '@protobufjs/utf8': private + '@puppeteer/browsers@2.6.1': + '@puppeteer/browsers': private + '@react-aria/focus@3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@react-aria/focus': private + '@react-aria/interactions@3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@react-aria/interactions': private + '@react-aria/ssr@3.9.10(react@19.1.1)': + '@react-aria/ssr': private + '@react-aria/utils@3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@react-aria/utils': private + '@react-stately/flags@3.1.2': + '@react-stately/flags': private + '@react-stately/utils@3.10.8(react@19.1.1)': + '@react-stately/utils': private + '@react-types/shared@3.32.0(react@19.1.1)': + '@react-types/shared': private '@rollup/rollup-darwin-arm64@4.46.2': '@rollup/rollup-darwin-arm64': private '@sinclair/typebox@0.27.8': '@sinclair/typebox': private + '@swc/helpers@0.5.17': + '@swc/helpers': private + '@tanstack/react-virtual@3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@tanstack/react-virtual': private + '@tanstack/virtual-core@3.13.12': + '@tanstack/virtual-core': private + '@tootallnate/quickjs-emscripten@0.23.0': + '@tootallnate/quickjs-emscripten': private + '@types/d3-array@3.2.1': + '@types/d3-array': private + '@types/d3-axis@3.0.6': + '@types/d3-axis': private + '@types/d3-brush@3.0.6': + '@types/d3-brush': private + '@types/d3-chord@3.0.6': + '@types/d3-chord': private + '@types/d3-color@3.1.3': + '@types/d3-color': private + '@types/d3-contour@3.0.6': + '@types/d3-contour': private + '@types/d3-delaunay@6.0.4': + '@types/d3-delaunay': private + '@types/d3-dispatch@3.0.7': + '@types/d3-dispatch': private + '@types/d3-drag@3.0.7': + '@types/d3-drag': private + '@types/d3-dsv@3.0.7': + '@types/d3-dsv': private + '@types/d3-ease@3.0.2': + '@types/d3-ease': private + '@types/d3-fetch@3.0.7': + '@types/d3-fetch': private + '@types/d3-force@3.0.10': + '@types/d3-force': private + '@types/d3-format@3.0.4': + '@types/d3-format': private + '@types/d3-geo@3.1.0': + '@types/d3-geo': private + '@types/d3-hierarchy@3.1.7': + '@types/d3-hierarchy': private + '@types/d3-interpolate@3.0.4': + '@types/d3-interpolate': private + '@types/d3-path@3.1.1': + '@types/d3-path': private + '@types/d3-polygon@3.0.2': + '@types/d3-polygon': private + '@types/d3-quadtree@3.0.6': + '@types/d3-quadtree': private + '@types/d3-random@3.0.3': + '@types/d3-random': private + '@types/d3-scale-chromatic@3.1.0': + '@types/d3-scale-chromatic': private + '@types/d3-scale@4.0.9': + '@types/d3-scale': private + '@types/d3-selection@3.0.11': + '@types/d3-selection': private + '@types/d3-shape@3.1.7': + '@types/d3-shape': private + '@types/d3-time-format@4.0.3': + '@types/d3-time-format': private + '@types/d3-time@3.0.4': + '@types/d3-time': private + '@types/d3-timer@3.0.2': + '@types/d3-timer': private + '@types/d3-transition@3.0.9': + '@types/d3-transition': private + '@types/d3-zoom@3.0.8': + '@types/d3-zoom': private + '@types/d3@7.4.3': + '@types/d3': private '@types/debug@4.1.12': '@types/debug': private '@types/estree@1.0.8': '@types/estree': private + '@types/geojson@7946.0.16': + '@types/geojson': private '@types/json-schema@7.0.15': '@types/json-schema': private '@types/mdast@4.0.4': '@types/mdast': private '@types/ms@2.1.0': '@types/ms': private + '@types/trusted-types@2.0.7': + '@types/trusted-types': private '@types/unist@3.0.3': '@types/unist': private + '@types/yauzl@2.10.3': + '@types/yauzl': private '@typescript-eslint/project-service@8.39.0(typescript@5.9.2)': '@typescript-eslint/project-service': private '@typescript-eslint/scope-manager@8.39.0': '@typescript-eslint/scope-manager': private '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.9.2)': '@typescript-eslint/tsconfig-utils': private + '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': + '@typescript-eslint/type-utils': private '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0)(typescript@5.9.2)': '@typescript-eslint/type-utils': private '@typescript-eslint/types@8.39.0': '@typescript-eslint/types': private '@typescript-eslint/typescript-estree@8.39.0(typescript@5.9.2)': '@typescript-eslint/typescript-estree': private + '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': + '@typescript-eslint/utils': private '@typescript-eslint/utils@8.39.0(eslint@9.32.0)(typescript@5.9.2)': '@typescript-eslint/utils': private '@typescript-eslint/visitor-keys@8.39.0': @@ -143,6 +287,10 @@ hoistedDependencies: '@vitest/spy': private '@vitest/utils@1.6.1': '@vitest/utils': private + '@zenuml/core@3.36.0': + '@zenuml/core': private + abort-controller@3.0.0: + abort-controller: private acorn-jsx@5.3.2(acorn@8.15.0): acorn-jsx: private acorn-walk@8.3.4: @@ -155,50 +303,106 @@ hoistedDependencies: ajv: private ansi-escapes@7.0.0: ansi-escapes: private + ansi-regex@5.0.1: + ansi-regex: private ansi-regex@6.1.0: ansi-regex: private ansi-styles@4.3.0: ansi-styles: private + antlr4@4.11.0: + antlr4: private + any-promise@1.3.0: + any-promise: private + anymatch@3.1.3: + anymatch: private + arg@5.0.2: + arg: private argparse@2.0.1: argparse: private assertion-error@1.1.0: assertion-error: private + ast-types@0.13.4: + ast-types: private + atomic-sleep@1.0.0: + atomic-sleep: private + b4a@1.6.7: + b4a: private bail@2.0.2: bail: private balanced-match@1.0.2: balanced-match: private + bare-events@2.6.1: + bare-events: private + bare-fs@4.2.2: + bare-fs: private + bare-os@3.6.2: + bare-os: private + bare-path@3.0.0: + bare-path: private + bare-stream@2.7.0(bare-events@2.6.1): + bare-stream: private + base64-js@1.5.1: + base64-js: private + basic-ftp@5.0.5: + basic-ftp: private + binary-extensions@2.3.0: + binary-extensions: private boolean@3.2.0: boolean: private brace-expansion@1.1.12: brace-expansion: private braces@3.0.3: braces: private + buffer-crc32@0.2.13: + buffer-crc32: private + buffer@5.7.1: + buffer: private cac@6.7.14: cac: private callsites@3.1.0: callsites: private + camelcase-css@2.0.1: + camelcase-css: private ccount@2.0.1: ccount: private chai@4.5.0: chai: private chalk@4.1.2: chalk: private + chalk@5.5.0: + chalk: private character-entities@2.0.2: character-entities: private check-error@1.0.3: check-error: private + chevrotain-allstar@0.3.1(chevrotain@11.0.3): + chevrotain-allstar: private + chevrotain@11.0.3: + chevrotain: private + chokidar@3.6.0: + chokidar: private chownr@3.0.0: chownr: private + chromium-bidi@0.11.0(devtools-protocol@0.0.1367902): + chromium-bidi: private + class-variance-authority@0.7.1: + class-variance-authority: private cli-cursor@5.0.0: cli-cursor: private cli-truncate@4.0.0: cli-truncate: private + cliui@8.0.1: + cliui: private + clsx@2.1.1: + clsx: private color-convert@2.0.1: color-convert: private color-name@1.1.4: color-name: private color-string@1.9.1: color-string: private + color-string@2.1.0: + color-string: private color@4.2.3: color: private colorette@2.0.20: @@ -209,12 +413,94 @@ hoistedDependencies: concat-map: private confbox@0.1.8: confbox: private + cose-base@1.0.3: + cose-base: private + cosmiconfig@9.0.0(typescript@5.9.2): + cosmiconfig: private cross-spawn@7.0.6: cross-spawn: private + cssesc@3.0.0: + cssesc: private cssstyle@4.6.0: cssstyle: private + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + cytoscape-cose-bilkent: private + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + cytoscape-fcose: private + cytoscape@3.33.1: + cytoscape: private + d3-array@2.12.1: + d3-array: private + d3-axis@3.0.0: + d3-axis: private + d3-brush@3.0.0: + d3-brush: private + d3-chord@3.0.1: + d3-chord: private + d3-color@3.1.0: + d3-color: private + d3-contour@4.0.2: + d3-contour: private + d3-delaunay@6.0.4: + d3-delaunay: private + d3-dispatch@3.0.1: + d3-dispatch: private + d3-drag@3.0.0: + d3-drag: private + d3-dsv@3.0.1: + d3-dsv: private + d3-ease@3.0.1: + d3-ease: private + d3-fetch@3.0.1: + d3-fetch: private + d3-force@3.0.0: + d3-force: private + d3-format@3.1.0: + d3-format: private + d3-geo@3.1.1: + d3-geo: private + d3-hierarchy@3.1.2: + d3-hierarchy: private + d3-interpolate@3.0.1: + d3-interpolate: private + d3-path@3.1.0: + d3-path: private + d3-polygon@3.0.1: + d3-polygon: private + d3-quadtree@3.0.1: + d3-quadtree: private + d3-random@3.0.1: + d3-random: private + d3-sankey@0.12.3: + d3-sankey: private + d3-scale-chromatic@3.1.0: + d3-scale-chromatic: private + d3-scale@4.0.2: + d3-scale: private + d3-selection@3.0.0: + d3-selection: private + d3-shape@1.3.7: + d3-shape: private + d3-time-format@4.1.0: + d3-time-format: private + d3-time@3.1.0: + d3-time: private + d3-timer@3.0.1: + d3-timer: private + d3-transition@3.0.1(d3-selection@3.0.0): + d3-transition: private + d3-zoom@3.0.0: + d3-zoom: private + d3@7.9.0: + d3: private + dagre-d3-es@7.0.11: + dagre-d3-es: private + data-uri-to-buffer@6.0.2: + data-uri-to-buffer: private data-urls@5.0.0: data-urls: private + dayjs@1.11.18: + dayjs: private debug@4.4.1: debug: private decimal.js@10.6.0: @@ -229,6 +515,10 @@ hoistedDependencies: define-data-property: private define-properties@1.2.1: define-properties: private + degenerator@5.0.1: + degenerator: private + delaunator@5.0.1: + delaunator: private dequal@2.0.3: dequal: private detect-libc@2.0.4: @@ -237,14 +527,30 @@ hoistedDependencies: detect-node: private devlop@1.1.0: devlop: private + devtools-protocol@0.0.1367902: + devtools-protocol: private + didyoumean@1.2.2: + didyoumean: private diff-sequences@29.6.3: diff-sequences: private + dlv@1.1.3: + dlv: private + dompurify@3.2.6: + dompurify: private + eastasianwidth@0.2.0: + eastasianwidth: private emoji-regex@10.4.0: emoji-regex: private + end-of-stream@1.4.5: + end-of-stream: private entities@6.0.1: entities: private + env-paths@2.2.1: + env-paths: private environment@1.1.0: environment: private + error-ex@1.3.2: + error-ex: private es-define-property@1.0.1: es-define-property: private es-errors@1.3.0: @@ -253,8 +559,12 @@ hoistedDependencies: es6-error: private esbuild@0.21.5: esbuild: private + escalade@3.2.0: + escalade: private escape-string-regexp@4.0.0: escape-string-regexp: private + escodegen@2.1.0: + escodegen: private eslint-scope@8.4.0: eslint-scope: private eslint-visitor-keys@4.2.1: @@ -273,28 +583,42 @@ hoistedDependencies: estree-walker: private esutils@2.0.3: esutils: private + event-target-shim@5.0.1: + event-target-shim: private eventemitter3@5.0.1: eventemitter3: private + events@3.3.0: + events: private execa@8.0.1: execa: private + exsolve@1.0.7: + exsolve: private extend-shallow@2.0.1: extend-shallow: private extend@3.0.2: extend: private + extract-zip@2.0.1: + extract-zip: private fast-deep-equal@3.1.3: fast-deep-equal: private fast-diff@1.3.0: fast-diff: private + fast-fifo@1.3.2: + fast-fifo: private fast-glob@3.3.3: fast-glob: private fast-json-stable-stringify@2.1.0: fast-json-stable-stringify: private fast-levenshtein@2.0.6: fast-levenshtein: private + fast-redact@3.5.0: + fast-redact: private fastq@1.19.1: fastq: private fault@2.0.1: fault: private + fd-slicer@1.1.0: + fd-slicer: private file-entry-cache@8.0.0: file-entry-cache: private fill-range@7.1.1: @@ -307,18 +631,26 @@ hoistedDependencies: flatbuffers: private flatted@3.3.3: flatted: private + foreground-child@3.3.1: + foreground-child: private format@0.2.2: format: private fs.realpath@1.0.0: fs.realpath: private fsevents@2.3.3: fsevents: private + function-bind@1.1.2: + function-bind: private + get-caller-file@2.0.5: + get-caller-file: private get-east-asian-width@1.3.0: get-east-asian-width: private get-func-name@2.0.2: get-func-name: private get-stream@8.0.1: get-stream: private + get-uri@6.0.5: + get-uri: private glob-parent@6.0.2: glob-parent: private glob@7.2.3: @@ -335,14 +667,22 @@ hoistedDependencies: graphemer: private guid-typescript@1.0.9: guid-typescript: private + hachure-fill@0.5.2: + hachure-fill: private has-flag@4.0.0: has-flag: private has-property-descriptors@1.0.2: has-property-descriptors: private + hasown@2.0.2: + hasown: private + highlight.js@10.7.3: + highlight.js: private html-encoding-sniffer@4.0.0: html-encoding-sniffer: private html-escaper@2.0.2: html-escaper: private + html-to-image@1.11.13: + html-to-image: private http-proxy-agent@7.0.2: http-proxy-agent: private https-proxy-agent@7.0.6: @@ -351,18 +691,34 @@ hoistedDependencies: human-signals: private iconv-lite@0.6.3: iconv-lite: private + ieee754@1.2.1: + ieee754: private ignore@7.0.5: ignore: private + immer@10.1.3: + immer: private import-fresh@3.3.1: import-fresh: private + import-meta-resolve@4.2.0: + import-meta-resolve: private imurmurhash@0.1.4: imurmurhash: private inflight@1.0.6: inflight: private inherits@2.0.4: inherits: private + internmap@1.0.1: + internmap: private + ip-address@10.0.1: + ip-address: private + is-arrayish@0.2.1: + is-arrayish: private is-arrayish@0.3.2: is-arrayish: private + is-binary-path@2.1.0: + is-binary-path: private + is-core-module@2.16.1: + is-core-module: private is-extendable@0.1.1: is-extendable: private is-extglob@2.1.1: @@ -389,32 +745,54 @@ hoistedDependencies: istanbul-lib-source-maps: private istanbul-reports@3.1.7: istanbul-reports: private + jackspeak@3.4.3: + jackspeak: private + jiti@1.21.7: + jiti: private + jotai@2.13.1(react@19.1.1): + jotai: private js-tokens@9.0.1: js-tokens: private js-yaml@4.1.0: js-yaml: private json-buffer@3.0.1: json-buffer: private + json-parse-even-better-errors@2.3.1: + json-parse-even-better-errors: private json-schema-traverse@0.4.1: json-schema-traverse: private json-stable-stringify-without-jsonify@1.0.1: json-stable-stringify-without-jsonify: private json-stringify-safe@5.0.1: json-stringify-safe: private + katex@0.16.22: + katex: private keyv@4.5.4: keyv: private + khroma@2.1.0: + khroma: private kind-of@6.0.3: kind-of: private + kolorist@1.8.0: + kolorist: private + langium@3.3.1: + langium: private + layout-base@1.0.2: + layout-base: private levn@0.4.1: levn: private lilconfig@3.1.3: lilconfig: private + lines-and-columns@1.2.4: + lines-and-columns: private listr2@9.0.1: listr2: private local-pkg@0.5.1: local-pkg: private locate-path@6.0.0: locate-path: private + lodash-es@4.17.21: + lodash-es: private lodash.merge@4.6.2: lodash.merge: private log-update@6.1.0: @@ -435,6 +813,8 @@ hoistedDependencies: make-dir: private markdown-table@3.0.4: markdown-table: private + marked@16.2.1: + marked: private matcher@3.0.0: matcher: private mdast-util-find-and-replace@3.0.2: @@ -465,6 +845,8 @@ hoistedDependencies: merge-stream: private merge2@1.4.1: merge2: private + mermaid@11.10.1: + mermaid: private micromark-core-commonmark@2.0.3: micromark-core-commonmark: private micromark-extension-frontmatter@2.0.0: @@ -535,24 +917,38 @@ hoistedDependencies: minipass: private minizlib@3.0.2: minizlib: private + mitt@3.0.1: + mitt: private mkdirp@3.0.1: mkdirp: private mlly@1.7.4: mlly: private ms@2.1.3: ms: private + mz@2.7.0: + mz: private nano-spawn@1.0.2: nano-spawn: private nanoid@3.3.11: nanoid: private natural-compare@1.4.0: natural-compare: private + netmask@2.0.2: + netmask: private + normalize-path@3.0.0: + normalize-path: private npm-run-path@5.3.0: npm-run-path: private nwsapi@2.2.21: nwsapi: private + object-assign@4.1.1: + object-assign: private + object-hash@3.0.0: + object-hash: private object-keys@1.1.1: object-keys: private + on-exit-leak-free@2.1.2: + on-exit-leak-free: private once@1.4.0: once: private onetime@6.0.0: @@ -569,30 +965,76 @@ hoistedDependencies: p-limit: private p-locate@5.0.0: p-locate: private + pac-proxy-agent@7.2.0: + pac-proxy-agent: private + pac-resolver@7.0.1: + pac-resolver: private + package-json-from-dist@1.0.1: + package-json-from-dist: private + package-manager-detector@1.3.0: + package-manager-detector: private + pako@2.1.0: + pako: private parent-module@1.0.1: parent-module: private + parse-json@5.2.0: + parse-json: private parse5@7.3.0: parse5: private + path-data-parser@0.1.0: + path-data-parser: private path-exists@4.0.0: path-exists: private path-is-absolute@1.0.1: path-is-absolute: private path-key@3.1.1: path-key: private + path-parse@1.0.7: + path-parse: private + path-scurry@1.11.1: + path-scurry: private pathe@1.1.2: pathe: private pathval@1.1.1: pathval: private + pend@1.2.0: + pend: private picocolors@1.1.1: picocolors: private picomatch@2.3.1: picomatch: private pidtree@0.6.0: pidtree: private + pify@2.3.0: + pify: private + pino-abstract-transport@1.2.0: + pino-abstract-transport: private + pino-std-serializers@6.2.2: + pino-std-serializers: private + pino@8.21.0: + pino: private + pirates@4.0.7: + pirates: private pkg-types@1.3.1: pkg-types: private platform@1.3.6: platform: private + points-on-curve@0.2.0: + points-on-curve: private + points-on-path@0.2.1: + points-on-path: private + postcss-import@15.1.0(postcss@8.5.6): + postcss-import: private + postcss-js@4.0.1(postcss@8.5.6): + postcss-js: private + postcss-load-config@4.0.2(postcss@8.5.6): + postcss-load-config: private + postcss-nested@6.2.0(postcss@8.5.6): + postcss-nested: private + postcss-selector-parser@6.1.2: + postcss-selector-parser: private + postcss-value-parser@4.2.0: + postcss-value-parser: private postcss@8.5.6: postcss: private prelude-ls@1.2.1: @@ -601,16 +1043,56 @@ hoistedDependencies: prettier-linter-helpers: private pretty-format@29.7.0: pretty-format: private + process-warning@3.0.0: + process-warning: private + process@0.11.10: + process: private + progress@2.0.3: + progress: private protobufjs@7.5.4: protobufjs: private + proxy-agent@6.5.0: + proxy-agent: private + proxy-from-env@1.1.0: + proxy-from-env: private + pump@3.0.3: + pump: private punycode@2.3.1: punycode: private + puppeteer-core@23.11.1: + puppeteer-core: private + puppeteer@23.11.1(typescript@5.9.2): + puppeteer: private + quansync@0.2.11: + quansync: private queue-microtask@1.2.3: queue-microtask: private + quick-format-unescaped@4.0.4: + quick-format-unescaped: private + radash@12.1.1: + radash: private + ramda@0.28.0: + ramda: private + react-dom@19.1.1(react@19.1.1): + react-dom: private react-is@18.3.1: react-is: private + react@19.1.1: + react: private + read-cache@1.0.0: + read-cache: private + readable-stream@4.7.0: + readable-stream: private + readdirp@3.6.0: + readdirp: private + real-require@0.2.0: + real-require: private + require-directory@2.1.1: + require-directory: private resolve-from@4.0.0: resolve-from: private + resolve@1.22.10: + resolve: private restore-cursor@5.1.0: restore-cursor: private reusify@1.1.0: @@ -619,16 +1101,28 @@ hoistedDependencies: rfdc: private roarr@2.15.4: roarr: private + robust-predicates@3.0.2: + robust-predicates: private rollup@4.46.2: rollup: private + roughjs@4.6.6: + roughjs: private rrweb-cssom@0.8.0: rrweb-cssom: private run-parallel@1.2.0: run-parallel: private + rw@1.3.3: + rw: private + safe-buffer@5.2.1: + safe-buffer: private + safe-stable-stringify@2.5.0: + safe-stable-stringify: private safer-buffer@2.1.2: safer-buffer: private saxes@6.0.0: saxes: private + scheduler@0.26.0: + scheduler: private section-matter@1.0.0: section-matter: private semver-compare@1.0.0: @@ -651,8 +1145,20 @@ hoistedDependencies: simple-swizzle: private slice-ansi@5.0.0: slice-ansi: private + smart-buffer@4.2.0: + smart-buffer: private + socks-proxy-agent@8.0.5: + socks-proxy-agent: private + socks@2.8.7: + socks: private + sonic-boom@3.8.1: + sonic-boom: private source-map-js@1.2.1: source-map-js: private + source-map@0.6.1: + source-map: private + split2@4.2.0: + split2: private sprintf-js@1.0.3: sprintf-js: private sprintf-js@1.1.3: @@ -661,10 +1167,18 @@ hoistedDependencies: stackback: private std-env@3.9.0: std-env: private + streamx@2.22.1: + streamx: private string-argv@0.3.2: string-argv: private + string-width@4.2.3: + string-width-cjs: private string-width@7.2.0: string-width: private + string_decoder@1.3.0: + string_decoder: private + strip-ansi@6.0.1: + strip-ansi-cjs: private strip-ansi@7.1.0: strip-ansi: private strip-bom-string@1.0.0: @@ -675,18 +1189,46 @@ hoistedDependencies: strip-json-comments: private strip-literal@2.1.1: strip-literal: private + stylis@4.3.6: + stylis: private + sucrase@3.35.0: + sucrase: private supports-color@7.2.0: supports-color: private + supports-preserve-symlinks-flag@1.0.0: + supports-preserve-symlinks-flag: private symbol-tree@3.2.4: symbol-tree: private synckit@0.11.11: synckit: private + tabbable@6.2.0: + tabbable: private + tailwind-merge@3.3.1: + tailwind-merge: private + tailwindcss@3.4.17: + tailwindcss: private + tar-fs@3.1.0: + tar-fs: private + tar-stream@3.1.7: + tar-stream: private tar@7.4.3: tar: private test-exclude@6.0.0: test-exclude: private + text-decoder@1.2.3: + text-decoder: private + thenify-all@1.6.0: + thenify-all: private + thenify@3.3.1: + thenify: private + thread-stream@2.7.0: + thread-stream: private + through@2.3.8: + through: private tinybench@2.9.0: tinybench: private + tinyexec@1.0.1: + tinyexec: private tinypool@0.8.4: tinypool: private tinyspy@2.2.1: @@ -705,14 +1247,24 @@ hoistedDependencies: trough: private ts-api-utils@2.1.0(typescript@5.9.2): ts-api-utils: private + ts-dedent@2.2.0: + ts-dedent: private + ts-interface-checker@0.1.13: + ts-interface-checker: private + tslib@2.8.1: + tslib: private type-check@0.4.0: type-check: private type-detect@4.1.0: type-detect: private type-fest@0.13.1: type-fest: private + typed-query-selector@2.12.0: + typed-query-selector: private ufo@1.6.1: ufo: private + unbzip2-stream@1.4.3: + unbzip2-stream: private undici-types@7.10.0: undici-types: private unist-util-is@6.0.0: @@ -725,6 +1277,12 @@ hoistedDependencies: unist-util-visit: private uri-js@4.4.1: uri-js: private + use-sync-external-store@1.5.0(react@19.1.1): + use-sync-external-store: private + util-deprecate@1.0.2: + util-deprecate: private + uuid@11.1.0: + uuid: private vfile-message@4.0.3: vfile-message: private vfile@6.0.3: @@ -737,6 +1295,18 @@ hoistedDependencies: vite: private vite@5.4.19(@types/node@24.2.1): vite: private + vscode-jsonrpc@8.2.0: + vscode-jsonrpc: private + vscode-languageserver-protocol@3.17.5: + vscode-languageserver-protocol: private + vscode-languageserver-textdocument@1.0.12: + vscode-languageserver-textdocument: private + vscode-languageserver-types@3.17.5: + vscode-languageserver-types: private + vscode-languageserver@9.0.1: + vscode-languageserver: private + vscode-uri@3.0.8: + vscode-uri: private w3c-xmlserializer@5.0.0: w3c-xmlserializer: private webidl-conversions@7.0.0: @@ -753,6 +1323,8 @@ hoistedDependencies: why-is-node-running: private word-wrap@1.2.5: word-wrap: private + wrap-ansi@7.0.0: + wrap-ansi-cjs: private wrap-ansi@9.0.0: wrap-ansi: private wrappy@1.0.2: @@ -763,14 +1335,26 @@ hoistedDependencies: xml-name-validator: private xmlchars@2.2.0: xmlchars: private + y18n@5.0.8: + y18n: private yallist@5.0.0: yallist: private yaml@2.8.1: yaml: private + yargs-parser@21.1.1: + yargs-parser: private + yargs@17.7.2: + yargs: private + yauzl@2.10.0: + yauzl: private yocto-queue@1.2.1: yocto-queue: private + zod@3.23.8: + zod: private zwitch@2.0.4: zwitch: private +ignoredBuilds: + - puppeteer included: dependencies: true devDependencies: true @@ -848,7 +1432,6 @@ skipped: - '@rollup/rollup-win32-arm64-msvc@4.46.2' - '@rollup/rollup-win32-ia32-msvc@4.46.2' - '@rollup/rollup-win32-x64-msvc@4.46.2' - - tslib@2.8.1 storeDir: /Users/alexanderbeck/Library/pnpm/store/v10 virtualStoreDir: .pnpm virtualStoreDirMaxLength: 120 diff --git a/node_modules/.pnpm-workspace-state-v1.json b/node_modules/.pnpm-workspace-state-v1.json index 1d65f2f..a465590 100644 --- a/node_modules/.pnpm-workspace-state-v1.json +++ b/node_modules/.pnpm-workspace-state-v1.json @@ -1,5 +1,5 @@ { - "lastValidatedTimestamp": 1756488877657, + "lastValidatedTimestamp": 1756762405943, "projects": {}, "pnpmfiles": [], "settings": { diff --git a/node_modules/.pnpm/lock.yaml b/node_modules/.pnpm/lock.yaml index a1c9574..b75dd1b 100644 --- a/node_modules/.pnpm/lock.yaml +++ b/node_modules/.pnpm/lock.yaml @@ -11,6 +11,9 @@ importers: '@huggingface/transformers': specifier: ^3.7.0 version: 3.7.2 + '@mermaid-js/mermaid-cli': + specifier: ^11.9.0 + version: 11.9.0(puppeteer@23.11.1(typescript@5.9.2)) '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 @@ -19,22 +22,22 @@ importers: version: 24.2.1 '@typescript-eslint/eslint-plugin': specifier: ^8.4.0 - version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0)(typescript@5.9.2))(eslint@9.32.0)(typescript@5.9.2) + version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.4.0 - version: 8.39.0(eslint@9.32.0)(typescript@5.9.2) + version: 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^1.6.1 version: 1.6.1(vitest@1.6.1(@types/node@24.2.1)(jsdom@26.1.0)) eslint: specifier: ^9.9.0 - version: 9.32.0 + version: 9.32.0(jiti@1.21.7) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.2(eslint@9.32.0) + version: 9.1.2(eslint@9.32.0(jiti@1.21.7)) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2) + version: 5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(prettier@3.6.2) fast-glob: specifier: ^3.3.3 version: 3.3.3 @@ -80,13 +83,27 @@ importers: packages: + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -107,6 +124,24 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@braintree/sanitize-url@7.1.1': + resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + + '@chevrotain/cst-dts-gen@11.0.3': + resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + + '@chevrotain/gast@11.0.3': + resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} + + '@chevrotain/regexp-to-ast@11.0.3': + resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} + + '@chevrotain/types@11.0.3': + resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} + + '@chevrotain/utils@11.0.3': + resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} @@ -314,6 +349,46 @@ packages: resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.16': + resolution: {integrity: sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@headlessui/react@2.2.7': + resolution: {integrity: sha512-WKdTymY8Y49H8/gUc/lIyYK1M+/6dq0Iywh4zTZVAaiTDprRfioxSgD0wnXTQTBpjpGJuTL1NO/mqEvc//5SSg==} + engines: {node: '>=10'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + '@headlessui/tailwindcss@0.2.2': + resolution: {integrity: sha512-xNe42KjdyA4kfUKLLPGzME9zkH7Q3rOZ5huFihWNWOQFxnItxPB3/67yBI8/qBfY8nwBRx5GHn4VprsoluVMGw==} + engines: {node: '>=10'} + peerDependencies: + tailwindcss: ^3.0 || ^4.0 + '@huggingface/jinja@0.5.1': resolution: {integrity: sha512-yUZLld4lrM9iFxHCwFQ7D1HW2MWMwSbeB7WzWqFYDWK+rEb+WldkLdAJxUPOmgICMHZLzZGVcVjFh3w/YGubng==} engines: {node: '>=18'} @@ -341,6 +416,12 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + '@img/sharp-darwin-arm64@0.34.3': resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -463,6 +544,10 @@ packages: cpu: [x64] os: [win32] + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -488,6 +573,21 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@mermaid-js/mermaid-cli@11.9.0': + resolution: {integrity: sha512-qDPwzFRbwRrVd8W99iVNaMR2bdOqiBFGwER3k7eT207WADbeRm2suzTH22/Zs9SbhKrejCNDaaDfZ45hFEiovw==} + engines: {node: ^18.19 || >=20.0} + hasBin: true + peerDependencies: + puppeteer: ^23 + + '@mermaid-js/mermaid-zenuml@0.2.2': + resolution: {integrity: sha512-sUjwk4NWUpy9uaHypYSIGJDks10ZaZo5CHH9lx9xcmyqv9w7yvd4vecUmlUQxmlHStYO+aqSkYKX5/gFjDfypw==} + peerDependencies: + mermaid: ^10 || ^11 + + '@mermaid-js/parser@0.6.2': + resolution: {integrity: sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -500,6 +600,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -534,6 +638,48 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@puppeteer/browsers@2.6.1': + resolution: {integrity: sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==} + engines: {node: '>=18'} + hasBin: true + + '@react-aria/focus@3.21.1': + resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/interactions@3.25.5': + resolution: {integrity: sha512-EweYHOEvMwef/wsiEqV73KurX/OqnmbzKQa2fLxdULbec5+yDj6wVGaRHIzM4NiijIDe+bldEl5DG05CAKOAHA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/ssr@3.9.10': + resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/utils@3.30.1': + resolution: {integrity: sha512-zETcbDd6Vf9GbLndO6RiWJadIZsBU2MMm23rBACXLmpRztkrIqPEb2RVdlLaq1+GklDx0Ii6PfveVjx+8S5U6A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/flags@3.1.2': + resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} + + '@react-stately/utils@3.10.8': + resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/shared@3.32.0': + resolution: {integrity: sha512-t+cligIJsZYFMSPFMvsJMjzlzde06tZMOIOFa1OV5Z0BcMowrb2g4mB57j/9nP28iJIRYn10xCniQts+qadrqQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@rollup/rollup-android-arm-eabi@4.46.2': resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} cpu: [arm] @@ -637,12 +783,123 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@tanstack/react-virtual@3.13.12': + resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/virtual-core@3.13.12': + resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -658,9 +915,15 @@ packages: '@types/node@24.2.1': resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@8.39.0': resolution: {integrity: sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -740,6 +1003,14 @@ packages: '@vitest/utils@1.6.1': resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} + '@zenuml/core@3.36.0': + resolution: {integrity: sha512-haEUgNrEvAG3Ub8dutKoQk3inReaoYexYoXDWkF0rZebSolgyrMvglrjl5kZzjib43sRkpyq+/kc/BbmWCWr3A==} + engines: {node: '>=20'} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -765,6 +1036,10 @@ packages: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + ansi-regex@6.1.0: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} @@ -781,6 +1056,20 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + antlr4@4.11.0: + resolution: {integrity: sha512-GUGlpE2JUjAN+G8G5vY+nOoeyNhHsXoIJwP1XF1oRw89vifA1K46T6SEkwLwr7drihN7I/lf0DIjKc4OZvBX8w==} + engines: {node: '>=14'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -790,12 +1079,64 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bare-events@2.6.1: + resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} + + bare-fs@4.2.2: + resolution: {integrity: sha512-5vn+bdnlCYMwETIm1FqQXDP6TYPbxr2uJd88ve40kr4oPbiTZJVrTNzqA3/4sfWZeWKuQR/RkboBt7qEEDtfMA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.2: + resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -810,6 +1151,15 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -818,6 +1168,10 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -839,10 +1193,30 @@ packages: check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.0.3: + resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} + chromium-bidi@0.11.0: + resolution: {integrity: sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==} + peerDependencies: + devtools-protocol: '*' + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -851,6 +1225,14 @@ packages: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -858,9 +1240,17 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@2.0.0: + resolution: {integrity: sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==} + engines: {node: '>=12.20'} + color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-string@2.1.0: + resolution: {integrity: sha512-gNVoDzpaSwvftp6Y8nqk97FtZoXP9Yj7KGYB8yIXuv0JcfqbYihTrd1OU5iZW9btfXde4YAOCRySBHT7O910MA==} + engines: {node: '>=18'} + color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} @@ -872,24 +1262,222 @@ packages: resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} engines: {node: '>=20'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + cssstyle@4.6.0: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.11: + resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -920,6 +1508,13 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -934,21 +1529,52 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devtools-protocol@0.0.1367902: + resolution: {integrity: sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dompurify@3.2.6: + resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -965,6 +1591,10 @@ packages: engines: {node: '>=12'} hasBin: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -973,6 +1603,11 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-prettier@9.1.2: resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true @@ -1043,13 +1678,24 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -1057,12 +1703,20 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -1073,12 +1727,19 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1101,6 +1762,10 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -1113,6 +1778,13 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.3.0: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} @@ -1120,10 +1792,18 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} + engines: {node: '>= 14'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1132,6 +1812,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -1144,6 +1828,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -1162,6 +1850,9 @@ packages: guid-typescript@1.0.9: resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1169,6 +1860,13 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -1176,6 +1874,9 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-to-image@1.11.13: + resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -1197,6 +1898,9 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1205,10 +1909,16 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + immer@10.1.3: + resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1220,9 +1930,31 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + engines: {node: '>= 12'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -1231,6 +1963,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} @@ -1277,6 +2013,34 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jotai@2.13.1: + resolution: {integrity: sha512-cRsw6kFeGC9Z/D3egVKrTXRweycZ4z/k7i2MrfCzPYsL9SIWcPXTyqv258/+Ay8VUEcihNiE/coBLE6Kic6b8A==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@babel/core': '>=7.0.0' + '@babel/template': '>=7.0.0' + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@babel/template': + optional: true + '@types/react': + optional: true + react: + optional: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} @@ -1300,6 +2064,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -1309,13 +2076,33 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + katex@0.16.22: + resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} + hasBin: true + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + langium@3.3.1: + resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} + engines: {node: '>=16.0.0'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -1324,6 +2111,9 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lint-staged@16.1.5: resolution: {integrity: sha512-uAeQQwByI6dfV7wpt/gVqg+jAPaSp8WwOA8kKC/dv1qw14oGpnpAisY65ibGHUGDUv0rYaZ8CAJZ/1U8hUvC2A==} engines: {node: '>=20.17'} @@ -1337,10 +2127,17 @@ packages: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -1360,6 +2157,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -1373,6 +2174,16 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@16.2.1: + resolution: {integrity: sha512-r3UrXED9lMlHF97jJByry90cwrZBBvZmjG1L68oYfuPMW+uDTnuMbyJDymCWwbTE+f+3LhpNDKfpR3a3saFyjA==} + engines: {node: '>= 20'} + hasBin: true + + marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} @@ -1420,6 +2231,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mermaid@11.10.1: + resolution: {integrity: sha512-0PdeADVWURz7VMAX0+MiMcgfxFKY4aweSGsjgFihe3XlMKNqmai/cugMrqTd3WNHM93V+K+AZL6Wu6tB5HmxRw==} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -1534,6 +2348,9 @@ packages: resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} @@ -1545,6 +2362,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nano-spawn@1.0.2: resolution: {integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==} engines: {node: '>=20.17'} @@ -1557,6 +2377,14 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1564,10 +2392,22 @@ packages: nwsapi@2.2.21: resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -1608,13 +2448,37 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1631,6 +2495,13 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -1640,6 +2511,9 @@ packages: pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1652,12 +2526,76 @@ packages: engines: {node: '>=0.10'} hasBin: true + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + + pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + + pino@8.21.0: + resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} + hasBin: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -1679,20 +2617,88 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + protobufjs@7.5.4: resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + puppeteer-core@23.11.1: + resolution: {integrity: sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==} + engines: {node: '>=18'} + + puppeteer@23.11.1: + resolution: {integrity: sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw==} + engines: {node: '>=18'} + deprecated: < 24.9.0 is no longer supported + hasBin: true + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + radash@12.1.1: + resolution: {integrity: sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==} + engines: {node: '>=14.18.0'} + + ramda@0.28.0: + resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + + react-dom@19.1.1: + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} + peerDependencies: + react: ^19.1.1 + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + remark-frontmatter@5.0.0: resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} @@ -1705,10 +2711,19 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -1724,17 +2739,33 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@4.46.2: resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -1742,6 +2773,9 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -1788,10 +2822,33 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -1804,14 +2861,32 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + streamx@2.22.1: + resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} @@ -1831,10 +2906,22 @@ packages: strip-literal@2.1.1: resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -1842,6 +2929,23 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar-fs@3.1.0: + resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} @@ -1850,9 +2954,28 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinypool@0.8.4: resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} @@ -1889,6 +3012,13 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1904,6 +3034,9 @@ packages: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + typescript@5.9.2: resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} @@ -1912,6 +3045,9 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + undici-types@7.10.0: resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} @@ -1933,6 +3069,18 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} @@ -2000,6 +3148,26 @@ packages: jsdom: optional: true + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -2034,6 +3202,14 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrap-ansi@9.0.0: resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} @@ -2060,6 +3236,10 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} @@ -2069,6 +3249,17 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -2077,16 +3268,28 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@8.1.1': {} + '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -2095,6 +3298,12 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} @@ -2110,6 +3319,25 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@braintree/sanitize-url@7.1.1': {} + + '@chevrotain/cst-dts-gen@11.0.3': + dependencies: + '@chevrotain/gast': 11.0.3 + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/gast@11.0.3': + dependencies: + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/regexp-to-ast@11.0.3': {} + + '@chevrotain/types@11.0.3': {} + + '@chevrotain/utils@11.0.3': {} + '@csstools/color-helpers@5.0.2': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -2204,9 +3432,9 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@1.21.7))': dependencies: - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -2248,21 +3476,68 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 - '@huggingface/jinja@0.5.1': {} + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 - '@huggingface/transformers@3.7.2': + '@floating-ui/dom@1.7.4': dependencies: - '@huggingface/jinja': 0.5.1 - onnxruntime-node: 1.21.0 - onnxruntime-web: 1.22.0-dev.20250409-89f8206ba4 - sharp: 0.34.3 + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 - '@humanfs/core@0.19.1': {} + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - '@humanfs/node@0.16.6': + '@floating-ui/react@0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@floating-ui/utils': 0.2.10 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tabbable: 6.2.0 + + '@floating-ui/react@0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@floating-ui/utils': 0.2.10 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.10': {} + + '@headlessui/react@2.2.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/react-virtual': 3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) + + '@headlessui/tailwindcss@0.2.2(tailwindcss@3.4.17)': + dependencies: + tailwindcss: 3.4.17 + + '@huggingface/jinja@0.5.1': {} + + '@huggingface/transformers@3.7.2': + dependencies: + '@huggingface/jinja': 0.5.1 + onnxruntime-node: 1.21.0 + onnxruntime-web: 1.22.0-dev.20250409-89f8206ba4 + sharp: 0.34.3 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} @@ -2270,6 +3545,21 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.1 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.2 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + '@img/sharp-darwin-arm64@0.34.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.0 @@ -2356,6 +3646,15 @@ snapshots: '@img/sharp-win32-x64@0.34.3': optional: true + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 @@ -2380,6 +3679,35 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@mermaid-js/mermaid-cli@11.9.0(puppeteer@23.11.1(typescript@5.9.2))': + dependencies: + '@mermaid-js/mermaid-zenuml': 0.2.2(mermaid@11.10.1) + chalk: 5.5.0 + commander: 14.0.0 + import-meta-resolve: 4.2.0 + mermaid: 11.10.1 + puppeteer: 23.11.1(typescript@5.9.2) + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@types/react' + - supports-color + - ts-node + + '@mermaid-js/mermaid-zenuml@0.2.2(mermaid@11.10.1)': + dependencies: + '@zenuml/core': 3.36.0 + mermaid: 11.10.1 + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@types/react' + - ts-node + + '@mermaid-js/parser@0.6.2': + dependencies: + langium: 3.3.1 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2392,6 +3720,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@pkgjs/parseargs@0.11.0': + optional: true + '@pkgr/core@0.2.9': {} '@protobufjs/aspromise@1.1.2': {} @@ -2417,6 +3748,69 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@puppeteer/browsers@2.6.1': + dependencies: + debug: 4.4.1 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.2 + tar-fs: 3.1.0 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-buffer + - supports-color + + '@react-aria/focus@3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/interactions@3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/ssr@3.9.10(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-aria/utils@3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-stately/flags@3.1.2': + dependencies: + '@swc/helpers': 0.5.17 + + '@react-stately/utils@3.10.8(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-types/shared@3.32.0(react@19.1.1)': + dependencies: + react: 19.1.1 + '@rollup/rollup-android-arm-eabi@4.46.2': optional: true @@ -2479,12 +3873,145 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@tanstack/react-virtual@3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/virtual-core': 3.13.12 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@tanstack/virtual-core@3.13.12': {} + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@types/d3-array@3.2.1': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 '@types/estree@1.0.8': {} + '@types/geojson@7946.0.16': {} + '@types/js-yaml@4.0.9': {} '@types/json-schema@7.0.15': {} @@ -2499,17 +4026,25 @@ snapshots: dependencies: undici-types: 7.10.0 + '@types/trusted-types@2.0.7': + optional: true + '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0)(typescript@5.9.2))(eslint@9.32.0)(typescript@5.9.2)': + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 24.2.1 + optional: true + + '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0)(typescript@5.9.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0)(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0)(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -2518,14 +4053,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.39.0(eslint@9.32.0)(typescript@5.9.2)': + '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1 - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -2548,13 +4083,13 @@ snapshots: dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0)(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0)(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -2578,13 +4113,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.0(eslint@9.32.0)(typescript@5.9.2)': + '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -2642,6 +4177,39 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 + '@zenuml/core@3.36.0': + dependencies: + '@floating-ui/react': 0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@headlessui/react': 2.2.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@headlessui/tailwindcss': 0.2.2(tailwindcss@3.4.17) + antlr4: 4.11.0 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + color-string: 2.1.0 + dompurify: 3.2.6 + highlight.js: 10.7.3 + html-to-image: 1.11.13 + immer: 10.1.3 + jotai: 2.13.1(react@19.1.1) + marked: 4.3.0 + pako: 2.1.0 + pino: 8.21.0 + radash: 12.1.1 + ramda: 0.28.0 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tailwind-merge: 3.3.1 + tailwindcss: 3.4.17 + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@types/react' + - ts-node + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -2665,6 +4233,8 @@ snapshots: dependencies: environment: 1.1.0 + ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@4.3.0: @@ -2675,6 +4245,17 @@ snapshots: ansi-styles@6.2.1: {} + antlr4@4.11.0: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -2683,10 +4264,49 @@ snapshots: assertion-error@1.1.0: {} + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + + atomic-sleep@1.0.0: {} + + b4a@1.6.7: {} + bail@2.0.2: {} balanced-match@1.0.2: {} + bare-events@2.6.1: + optional: true + + bare-fs@4.2.2: + dependencies: + bare-events: 2.6.1 + bare-path: 3.0.0 + bare-stream: 2.7.0(bare-events@2.6.1) + optional: true + + bare-os@3.6.2: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.2 + optional: true + + bare-stream@2.7.0(bare-events@2.6.1): + dependencies: + streamx: 2.22.1 + optionalDependencies: + bare-events: 2.6.1 + optional: true + + base64-js@1.5.1: {} + + basic-ftp@5.0.5: {} + + binary-extensions@2.3.0: {} + boolean@3.2.0: {} brace-expansion@1.1.12: @@ -2702,10 +4322,24 @@ snapshots: dependencies: fill-range: 7.1.1 + buffer-crc32@0.2.13: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + cac@6.7.14: {} callsites@3.1.0: {} + camelcase-css@2.0.1: {} + ccount@2.0.1: {} chai@4.5.0: @@ -2731,8 +4365,44 @@ snapshots: dependencies: get-func-name: 2.0.2 + chevrotain-allstar@0.3.1(chevrotain@11.0.3): + dependencies: + chevrotain: 11.0.3 + lodash-es: 4.17.21 + + chevrotain@11.0.3: + dependencies: + '@chevrotain/cst-dts-gen': 11.0.3 + '@chevrotain/gast': 11.0.3 + '@chevrotain/regexp-to-ast': 11.0.3 + '@chevrotain/types': 11.0.3 + '@chevrotain/utils': 11.0.3 + lodash-es: 4.17.21 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chownr@3.0.0: {} + chromium-bidi@0.11.0(devtools-protocol@0.0.1367902): + dependencies: + devtools-protocol: 0.0.1367902 + mitt: 3.0.1 + zod: 3.23.8 + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -2742,17 +4412,31 @@ snapshots: slice-ansi: 5.0.0 string-width: 7.2.0 + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} + color-name@2.0.0: {} + color-string@1.9.1: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 + color-string@2.1.0: + dependencies: + color-name: 2.0.0 + color@4.2.3: dependencies: color-convert: 2.0.1 @@ -2762,26 +4446,241 @@ snapshots: commander@14.0.0: {} + commander@4.1.1: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + concat-map@0.0.1: {} confbox@0.1.8: {} + confbox@0.2.2: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + cosmiconfig@9.0.0(typescript@5.9.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.2 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + cssesc@3.0.0: {} + cssstyle@4.6.0: dependencies: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.1 + + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.1 + + cytoscape@3.33.1: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.11: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.21 + + data-uri-to-buffer@6.0.2: {} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + dayjs@1.11.18: {} + debug@4.4.1: dependencies: ms: 2.1.3 @@ -2810,6 +4709,16 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + dequal@2.0.3: {} detect-libc@2.0.4: {} @@ -2820,14 +4729,40 @@ snapshots: dependencies: dequal: 2.0.3 + devtools-protocol@0.0.1367902: {} + + didyoumean@1.2.2: {} + diff-sequences@29.6.3: {} + dlv@1.1.3: {} + + dompurify@3.2.6: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + eastasianwidth@0.2.0: {} + emoji-regex@10.4.0: {} + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + entities@6.0.1: {} + env-paths@2.2.1: {} + environment@1.1.0: {} + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -2860,22 +4795,32 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + escalade@3.2.0: {} + escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} - eslint-config-prettier@9.1.2(eslint@9.32.0): + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-prettier@9.1.2(eslint@9.32.0(jiti@1.21.7)): dependencies: - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) - eslint-plugin-prettier@5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(prettier@3.6.2): dependencies: - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: - eslint-config-prettier: 9.1.2(eslint@9.32.0) + eslint-config-prettier: 9.1.2(eslint@9.32.0(jiti@1.21.7)) eslint-scope@8.4.0: dependencies: @@ -2886,9 +4831,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.32.0: + eslint@9.32.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 @@ -2923,6 +4868,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 1.21.7 transitivePeerDependencies: - supports-color @@ -2950,8 +4897,12 @@ snapshots: esutils@2.0.3: {} + event-target-shim@5.0.1: {} + eventemitter3@5.0.1: {} + events@3.3.0: {} + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -2964,16 +4915,30 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + exsolve@1.0.7: {} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 extend@3.0.2: {} + extract-zip@2.0.1: + dependencies: + debug: 4.4.1 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} + fast-fifo@1.3.2: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2986,6 +4951,8 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-redact@3.5.0: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -2994,6 +4961,10 @@ snapshots: dependencies: format: 0.2.2 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -3016,6 +4987,11 @@ snapshots: flatted@3.3.3: {} + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + format@0.2.2: {} fs.realpath@1.0.0: {} @@ -3023,12 +4999,28 @@ snapshots: fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + get-east-asian-width@1.3.0: {} get-func-name@2.0.2: {} + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + get-stream@8.0.1: {} + get-uri@6.0.5: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -3037,6 +5029,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -3057,6 +5058,8 @@ snapshots: globals@14.0.0: {} + globals@15.15.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -3075,18 +5078,28 @@ snapshots: guid-typescript@1.0.9: {} + hachure-fill@0.5.2: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + highlight.js@10.7.3: {} + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 html-escaper@2.0.2: {} + html-to-image@1.11.13: {} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -3109,15 +5122,21 @@ snapshots: dependencies: safer-buffer: 2.1.2 + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} + immer@10.1.3: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} inflight@1.0.6: @@ -3127,12 +5146,30 @@ snapshots: inherits@2.0.4: {} + internmap@1.0.1: {} + + internmap@2.0.3: {} + + ip-address@10.0.1: {} + + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + is-extendable@0.1.1: {} is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-fullwidth-code-point@4.0.0: {} is-fullwidth-code-point@5.0.0: @@ -3174,6 +5211,20 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.7: {} + + jotai@2.13.1(react@19.1.1): + optionalDependencies: + react: 19.1.1 + + js-tokens@4.0.0: {} + js-tokens@9.0.1: {} js-yaml@3.14.1: @@ -3214,18 +5265,40 @@ snapshots: json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-safe@5.0.1: {} + katex@0.16.22: + dependencies: + commander: 8.3.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + khroma@2.1.0: {} + kind-of@6.0.3: {} + kolorist@1.8.0: {} + + langium@3.3.1: + dependencies: + chevrotain: 11.0.3 + chevrotain-allstar: 0.3.1(chevrotain@11.0.3) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -3233,6 +5306,8 @@ snapshots: lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} + lint-staged@16.1.5: dependencies: chalk: 5.5.0 @@ -3262,10 +5337,18 @@ snapshots: mlly: 1.7.4 pkg-types: 1.3.1 + local-pkg@1.1.2: + dependencies: + mlly: 1.7.4 + pkg-types: 2.3.0 + quansync: 0.2.11 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash-es@4.17.21: {} + lodash.merge@4.6.2: {} log-update@6.1.0: @@ -3286,6 +5369,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@7.18.3: {} + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.4 @@ -3302,6 +5387,10 @@ snapshots: markdown-table@3.0.4: {} + marked@16.2.1: {} + + marked@4.3.0: {} + matcher@3.0.0: dependencies: escape-string-regexp: 4.0.0 @@ -3423,6 +5512,31 @@ snapshots: merge2@1.4.1: {} + mermaid@11.10.1: + dependencies: + '@braintree/sanitize-url': 7.1.1 + '@iconify/utils': 2.3.0 + '@mermaid-js/parser': 0.6.2 + '@types/d3': 7.4.3 + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.11 + dayjs: 1.11.18 + dompurify: 3.2.6 + katex: 0.16.22 + khroma: 2.1.0 + lodash-es: 4.17.21 + marked: 16.2.1 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + transitivePeerDependencies: + - supports-color + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -3644,6 +5758,8 @@ snapshots: dependencies: minipass: 7.1.2 + mitt@3.0.1: {} + mkdirp@3.0.1: {} mlly@1.7.4: @@ -3655,20 +5771,36 @@ snapshots: ms@2.1.3: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nano-spawn@1.0.2: {} nanoid@3.3.11: {} natural-compare@1.4.0: {} + netmask@2.0.2: {} + + normalize-path@3.0.0: {} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 nwsapi@2.2.21: {} + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + object-keys@1.1.1: {} + on-exit-leak-free@2.1.2: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -3721,14 +5853,47 @@ snapshots: dependencies: p-limit: 3.1.0 + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.4 + debug: 4.4.1 + get-uri: 6.0.5 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + package-json-from-dist@1.0.1: {} + + package-manager-detector@1.3.0: {} + + pako@2.1.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parse5@7.3.0: dependencies: entities: 6.0.1 + path-data-parser@0.1.0: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -3737,26 +5902,104 @@ snapshots: path-key@4.0.0: {} + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + pathe@1.1.2: {} pathe@2.0.3: {} pathval@1.1.1: {} + pend@1.2.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} pidtree@0.6.0: {} + pify@2.3.0: {} + + pino-abstract-transport@1.2.0: + dependencies: + readable-stream: 4.7.0 + split2: 4.2.0 + + pino-std-serializers@6.2.2: {} + + pino@8.21.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 6.2.2 + process-warning: 3.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 3.8.1 + thread-stream: 2.7.0 + + pirates@4.0.7: {} + pkg-types@1.3.1: dependencies: confbox: 0.1.8 mlly: 1.7.4 pathe: 2.0.3 + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + platform@1.3.6: {} + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss-import@15.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.5.6): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.6 + + postcss-load-config@4.0.2(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.1 + optionalDependencies: + postcss: 8.5.6 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -3777,6 +6020,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + process-warning@3.0.0: {} + + process@0.11.10: {} + + progress@2.0.3: {} + protobufjs@7.5.4: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -3792,12 +6041,94 @@ snapshots: '@types/node': 24.2.1 long: 5.3.2 + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@2.3.1: {} + puppeteer-core@23.11.1: + dependencies: + '@puppeteer/browsers': 2.6.1 + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) + debug: 4.4.1 + devtools-protocol: 0.0.1367902 + typed-query-selector: 2.12.0 + ws: 8.18.3 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - utf-8-validate + + puppeteer@23.11.1(typescript@5.9.2): + dependencies: + '@puppeteer/browsers': 2.6.1 + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) + cosmiconfig: 9.0.0(typescript@5.9.2) + devtools-protocol: 0.0.1367902 + puppeteer-core: 23.11.1 + typed-query-selector: 2.12.0 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - typescript + - utf-8-validate + + quansync@0.2.11: {} + queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + + radash@12.1.1: {} + + ramda@0.28.0: {} + + react-dom@19.1.1(react@19.1.1): + dependencies: + react: 19.1.1 + scheduler: 0.26.0 + react-is@18.3.1: {} + react@19.1.1: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + real-require@0.2.0: {} + remark-frontmatter@5.0.0: dependencies: '@types/mdast': 4.0.4 @@ -3833,8 +6164,16 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 + require-directory@2.1.1: {} + resolve-from@4.0.0: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -3853,6 +6192,8 @@ snapshots: semver-compare: 1.0.0 sprintf-js: 1.1.3 + robust-predicates@3.0.2: {} + rollup@4.46.2: dependencies: '@types/estree': 1.0.8 @@ -3879,18 +6220,33 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.46.2 fsevents: 2.3.3 + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + + safe-buffer@5.2.1: {} + + safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: {} saxes@6.0.0: dependencies: xmlchars: 2.2.0 + scheduler@0.26.0: {} + section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 @@ -3957,8 +6313,32 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.0.1 + smart-buffer: 4.2.0 + + sonic-boom@3.8.1: + dependencies: + atomic-sleep: 1.0.0 + source-map-js@1.2.1: {} + source-map@0.6.1: + optional: true + + split2@4.2.0: {} + sprintf-js@1.0.3: {} sprintf-js@1.1.3: {} @@ -3967,14 +6347,41 @@ snapshots: std-env@3.9.0: {} + streamx@2.22.1: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.6.1 + string-argv@0.3.2: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string-width@7.2.0: dependencies: emoji-regex: 10.4.0 get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + strip-ansi@7.1.0: dependencies: ansi-regex: 6.1.0 @@ -3989,16 +6396,77 @@ snapshots: dependencies: js-tokens: 9.0.1 + stylis@4.3.6: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.12 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + symbol-tree@3.2.4: {} synckit@0.11.11: dependencies: '@pkgr/core': 0.2.9 + tabbable@6.2.0: {} + + tailwind-merge@3.3.1: {} + + tailwindcss@3.4.17: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.0.1(postcss@8.5.6) + postcss-load-config: 4.0.2(postcss@8.5.6) + postcss-nested: 6.2.0(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tar-fs@3.1.0: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.2.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.22.1 + tar@7.4.3: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -4014,8 +6482,28 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thread-stream@2.7.0: + dependencies: + real-require: 0.2.0 + + through@2.3.8: {} + tinybench@2.9.0: {} + tinyexec@1.0.1: {} + tinypool@0.8.4: {} tinyspy@2.2.1: {} @@ -4044,8 +6532,11 @@ snapshots: dependencies: typescript: 5.9.2 - tslib@2.8.1: - optional: true + ts-dedent@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + tslib@2.8.1: {} type-check@0.4.0: dependencies: @@ -4055,10 +6546,17 @@ snapshots: type-fest@0.13.1: {} + typed-query-selector@2.12.0: {} + typescript@5.9.2: {} ufo@1.6.1: {} + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + undici-types@7.10.0: {} unified@11.0.5: @@ -4094,6 +6592,14 @@ snapshots: dependencies: punycode: 2.3.1 + use-sync-external-store@1.5.0(react@19.1.1): + dependencies: + react: 19.1.1 + + util-deprecate@1.0.2: {} + + uuid@11.1.0: {} + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -4166,6 +6672,23 @@ snapshots: - supports-color - terser + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-uri@3.0.8: {} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -4194,6 +6717,18 @@ snapshots: word-wrap@1.2.5: {} + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 @@ -4208,12 +6743,33 @@ snapshots: xmlchars@2.2.0: {} + y18n@5.0.8: {} + yallist@5.0.0: {} yaml@2.8.1: {} + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yocto-queue@0.1.0: {} yocto-queue@1.2.1: {} + zod@3.23.8: {} + zwitch@2.0.4: {} diff --git a/node_modules/.pnpm/node_modules/@eslint-community/eslint-utils b/node_modules/.pnpm/node_modules/@eslint-community/eslint-utils index 0d2f0cb..bc3475d 120000 --- a/node_modules/.pnpm/node_modules/@eslint-community/eslint-utils +++ b/node_modules/.pnpm/node_modules/@eslint-community/eslint-utils @@ -1 +1 @@ -../../@eslint-community+eslint-utils@4.7.0_eslint@9.32.0/node_modules/@eslint-community/eslint-utils \ No newline at end of file +../../@eslint-community+eslint-utils@4.7.0_eslint@9.32.0_jiti@1.21.7_/node_modules/@eslint-community/eslint-utils \ No newline at end of file diff --git a/node_modules/.pnpm/node_modules/@typescript-eslint/type-utils b/node_modules/.pnpm/node_modules/@typescript-eslint/type-utils index 3e581c5..33ee38a 120000 --- a/node_modules/.pnpm/node_modules/@typescript-eslint/type-utils +++ b/node_modules/.pnpm/node_modules/@typescript-eslint/type-utils @@ -1 +1 @@ -../../@typescript-eslint+type-utils@8.39.0_eslint@9.32.0_typescript@5.9.2/node_modules/@typescript-eslint/type-utils \ No newline at end of file +../../@typescript-eslint+type-utils@8.39.0_eslint@9.32.0_jiti@1.21.7__typescript@5.9.2/node_modules/@typescript-eslint/type-utils \ No newline at end of file diff --git a/node_modules/.pnpm/node_modules/@typescript-eslint/utils b/node_modules/.pnpm/node_modules/@typescript-eslint/utils index 672e51c..9971536 120000 --- a/node_modules/.pnpm/node_modules/@typescript-eslint/utils +++ b/node_modules/.pnpm/node_modules/@typescript-eslint/utils @@ -1 +1 @@ -../../@typescript-eslint+utils@8.39.0_eslint@9.32.0_typescript@5.9.2/node_modules/@typescript-eslint/utils \ No newline at end of file +../../@typescript-eslint+utils@8.39.0_eslint@9.32.0_jiti@1.21.7__typescript@5.9.2/node_modules/@typescript-eslint/utils \ No newline at end of file diff --git a/node_modules/.pnpm/node_modules/chalk b/node_modules/.pnpm/node_modules/chalk index c21838d..4887062 120000 --- a/node_modules/.pnpm/node_modules/chalk +++ b/node_modules/.pnpm/node_modules/chalk @@ -1 +1 @@ -../chalk@4.1.2/node_modules/chalk \ No newline at end of file +../chalk@5.5.0/node_modules/chalk \ No newline at end of file diff --git a/node_modules/.vite/vitest/results.json b/node_modules/.vite/vitest/results.json index e4c2835..3a28941 100644 --- a/node_modules/.vite/vitest/results.json +++ b/node_modules/.vite/vitest/results.json @@ -1 +1 @@ -{"version":"1.6.1","results":[[":tests/transformersRunner.spec.ts",{"duration":22,"failed":false}],[":tests/detectBackend.spec.ts",{"duration":4,"failed":false}],[":tests/transformersClient.spec.ts",{"duration":288,"failed":false}],[":tests/swapRenderer.spec.ts",{"duration":5,"failed":false}],[":tests/tidySweep.spec.ts",{"duration":6,"failed":false}],[":tests/lm_mergePolicy.spec.ts",{"duration":19,"failed":false}],[":tests/core/lm_policy_activeRegion.spec.ts",{"duration":16,"failed":false}],[":tests/sweepScheduler.spec.ts",{"duration":6,"failed":false}],[":tests/integration.spec.ts",{"duration":10,"failed":false}],[":tests/diffusionController_branches.spec.ts",{"duration":15,"failed":false}],[":tests/transformersClient_more.spec.ts",{"duration":6,"failed":false}],[":tests/policy.spec.ts",{"duration":3,"failed":false}],[":tests/lm_mergePolicy_fuzz.spec.ts",{"duration":20,"failed":false}],[":tests/diffusionController_lm_branches.spec.ts",{"duration":31,"failed":false}],[":tests/ft202_integration.spec.ts",{"duration":6,"failed":false}],[":tests/diff.spec.ts",{"duration":11,"failed":false}],[":tests/policy_branches.spec.ts",{"duration":2,"failed":false}],[":tests/transformersRunner_defaults.spec.ts",{"duration":3,"failed":false}],[":tests/transformersClient_factory.spec.ts",{"duration":255,"failed":false}],[":tests/diffusionController.spec.ts",{"duration":4,"failed":false}],[":tests/logger.spec.ts",{"duration":4,"failed":false}],[":tests/logger_more.spec.ts",{"duration":5,"failed":false}],[":tests/transformersRunner_remote.spec.ts",{"duration":4,"failed":false}],[":tests/transformersClient_staledrops.spec.ts",{"duration":18,"failed":false}],[":tests/secureFields.spec.ts",{"duration":4,"failed":false}],[":tests/typingMonitor_logger.spec.ts",{"duration":2,"failed":false}],[":tests/lm_behavior_policy_more.spec.ts",{"duration":3,"failed":false}],[":tests/sweepScheduler_catchup_error.spec.ts",{"duration":8,"failed":false}],[":tests/core/caretMonitor.spec.ts",{"duration":422,"failed":false}],[":tests/diffusionController_policy_guard.spec.ts",{"duration":23,"failed":false}],[":tests/tapestry.spec.ts",{"duration":8,"failed":false}],[":tests/defaultThresholds.spec.ts",{"duration":3,"failed":false}],[":tests/transformersRunner_webgpu.spec.ts",{"duration":4,"failed":false}],[":tests/core/mockAdapter.spec.ts",{"duration":6,"failed":false}],[":tests/lm_adapter.spec.ts",{"duration":3,"failed":false}],[":tests/tidySweep_more_branches.spec.ts",{"duration":7,"failed":false}],[":tests/typingMonitor.spec.ts",{"duration":4,"failed":false}],[":tests/caret_shim_ui.spec.ts",{"duration":2,"failed":false}],[":tests/backfill.spec.ts",{"duration":1,"failed":false}],[":tests/security_default.spec.ts",{"duration":2,"failed":false}],[":tests/diffusionController_band.spec.ts",{"duration":4,"failed":false}],[":tests/sweepScheduler_error.spec.ts",{"duration":6,"failed":false}],[":tests/tidySweep_branches.spec.ts",{"duration":5,"failed":false}],[":tests/groupUndo.spec.ts",{"duration":2,"failed":false}],[":tests/tidySweep_whitespace.spec.ts",{"duration":3,"failed":false}],[":tests/diffusionController_tick.spec.ts",{"duration":3,"failed":false}],[":tests/diffusionController_catchup.spec.ts",{"duration":6,"failed":false}],[":tests/secureFields_web.spec.ts",{"duration":5,"failed":false}],[":tests/liveRegion.spec.ts",{"duration":10,"failed":false}],[":tests/motion.spec.ts",{"duration":4,"failed":false}]]} \ No newline at end of file +{"version":"1.6.1","results":[[":tests/transformersRunner.spec.ts",{"duration":25,"failed":false}],[":tests/transformersClient.spec.ts",{"duration":260,"failed":false}],[":tests/detectBackend.spec.ts",{"duration":3,"failed":false}],[":tests/lm_mergePolicy.spec.ts",{"duration":18,"failed":false}],[":tests/noiseTransformer.spec.ts",{"duration":5,"failed":false}],[":tests/core/lm_policy_activeRegion.spec.ts",{"duration":14,"failed":false}],[":tests/integration.spec.ts",{"duration":6,"failed":false}],[":tests/sweepScheduler.spec.ts",{"duration":5,"failed":false}],[":tests/sweepScheduler_pipeline.spec.ts",{"duration":11,"failed":false}],[":tests/swapRenderer.spec.ts",{"duration":5,"failed":false}],[":tests/diffusionController_branches.spec.ts",{"duration":17,"failed":false}],[":tests/lm_mergePolicy_fuzz.spec.ts",{"duration":15,"failed":false}],[":tests/policy.spec.ts",{"duration":2,"failed":false}],[":tests/transformersClient_more.spec.ts",{"duration":4,"failed":false}],[":tests/ft202_integration.spec.ts",{"duration":6,"failed":false}],[":tests/diffusionController_lm_branches.spec.ts",{"duration":23,"failed":false}],[":tests/confidenceGate.spec.ts",{"duration":3,"failed":false}],[":tests/diff.spec.ts",{"duration":3,"failed":false}],[":tests/transformersRunner_defaults.spec.ts",{"duration":4,"failed":false}],[":tests/logger_more.spec.ts",{"duration":5,"failed":false}],[":tests/policy_branches.spec.ts",{"duration":2,"failed":false}],[":tests/transformersClient_factory.spec.ts",{"duration":252,"failed":false}],[":tests/diffusionController.spec.ts",{"duration":4,"failed":false}],[":tests/logger.spec.ts",{"duration":3,"failed":false}],[":tests/transformersRunner_remote.spec.ts",{"duration":10,"failed":false}],[":tests/secureFields.spec.ts",{"duration":3,"failed":false}],[":tests/transformersClient_staledrops.spec.ts",{"duration":9,"failed":false}],[":tests/lm_behavior_policy_more.spec.ts",{"duration":2,"failed":false}],[":tests/stagingBuffer.spec.ts",{"duration":3,"failed":false}],[":tests/sweepScheduler_catchup_error.spec.ts",{"duration":5,"failed":false}],[":tests/typingMonitor_logger.spec.ts",{"duration":11,"failed":false}],[":tests/core/caretMonitor.spec.ts",{"duration":424,"failed":false}],[":tests/tapestry.spec.ts",{"duration":2,"failed":false}],[":tests/diffusionController_policy_guard.spec.ts",{"duration":26,"failed":false}],[":tests/defaultThresholds.spec.ts",{"duration":3,"failed":false}],[":tests/lm_adapter.spec.ts",{"duration":4,"failed":false}],[":tests/core/mockAdapter.spec.ts",{"duration":5,"failed":false}],[":tests/noiseTransformer_more_branches.spec.ts",{"duration":5,"failed":false}],[":tests/transformersRunner_webgpu.spec.ts",{"duration":4,"failed":false}],[":tests/typingMonitor.spec.ts",{"duration":2,"failed":false}],[":tests/backfill.spec.ts",{"duration":1,"failed":false}],[":tests/caret_shim_ui.spec.ts",{"duration":3,"failed":false}],[":tests/contextTransformer.spec.ts",{"duration":3,"failed":false}],[":tests/diffusionController_band.spec.ts",{"duration":3,"failed":false}],[":tests/sweepScheduler_error.spec.ts",{"duration":4,"failed":false}],[":tests/toneTransformer.spec.ts",{"duration":3,"failed":false}],[":tests/noiseTransformer_branches.spec.ts",{"duration":10,"failed":false}],[":tests/security_default.spec.ts",{"duration":1,"failed":false}],[":tests/groupUndo.spec.ts",{"duration":1,"failed":false}],[":tests/noiseTransformer_whitespace.spec.ts",{"duration":4,"failed":false}],[":tests/languageDetection.spec.ts",{"duration":2,"failed":false}],[":tests/diffusionController_catchup.spec.ts",{"duration":6,"failed":false}],[":tests/diffusionController_tick.spec.ts",{"duration":2,"failed":false}],[":tests/sweepScheduler_branches.spec.ts",{"duration":2,"failed":false}],[":tests/secureFields_web.spec.ts",{"duration":5,"failed":false}],[":tests/liveRegion.spec.ts",{"duration":11,"failed":false}],[":tests/motion.spec.ts",{"duration":3,"failed":false}]]} \ No newline at end of file diff --git a/node_modules/@typescript-eslint/eslint-plugin b/node_modules/@typescript-eslint/eslint-plugin index b4cfda7..559fa97 120000 --- a/node_modules/@typescript-eslint/eslint-plugin +++ b/node_modules/@typescript-eslint/eslint-plugin @@ -1 +1 @@ -../.pnpm/@typescript-eslint+eslint-plugin@8.39.0_@typescript-eslint+parser@8.39.0_eslint@9.32.0__138f9c56b5b9ea70b2c75e6d54b8eb68/node_modules/@typescript-eslint/eslint-plugin \ No newline at end of file +../.pnpm/@typescript-eslint+eslint-plugin@8.39.0_@typescript-eslint+parser@8.39.0_eslint@9.32.0__00ce81f385c2072d28c9a1160b15542f/node_modules/@typescript-eslint/eslint-plugin \ No newline at end of file diff --git a/node_modules/@typescript-eslint/parser b/node_modules/@typescript-eslint/parser index dbeaf34..6ad1e91 120000 --- a/node_modules/@typescript-eslint/parser +++ b/node_modules/@typescript-eslint/parser @@ -1 +1 @@ -../.pnpm/@typescript-eslint+parser@8.39.0_eslint@9.32.0_typescript@5.9.2/node_modules/@typescript-eslint/parser \ No newline at end of file +../.pnpm/@typescript-eslint+parser@8.39.0_eslint@9.32.0_jiti@1.21.7__typescript@5.9.2/node_modules/@typescript-eslint/parser \ No newline at end of file diff --git a/node_modules/eslint b/node_modules/eslint index 8334f3d..a0ba5b5 120000 --- a/node_modules/eslint +++ b/node_modules/eslint @@ -1 +1 @@ -.pnpm/eslint@9.32.0/node_modules/eslint \ No newline at end of file +.pnpm/eslint@9.32.0_jiti@1.21.7/node_modules/eslint \ No newline at end of file diff --git a/node_modules/eslint-config-prettier b/node_modules/eslint-config-prettier index 3a48745..b072bf9 120000 --- a/node_modules/eslint-config-prettier +++ b/node_modules/eslint-config-prettier @@ -1 +1 @@ -.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0/node_modules/eslint-config-prettier \ No newline at end of file +.pnpm/eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7_/node_modules/eslint-config-prettier \ No newline at end of file diff --git a/node_modules/eslint-plugin-prettier b/node_modules/eslint-plugin-prettier index 1452d10..5ef3c99 120000 --- a/node_modules/eslint-plugin-prettier +++ b/node_modules/eslint-plugin-prettier @@ -1 +1 @@ -.pnpm/eslint-plugin-prettier@5.5.4_eslint-config-prettier@9.1.2_eslint@9.32.0__eslint@9.32.0_prettier@3.6.2/node_modules/eslint-plugin-prettier \ No newline at end of file +.pnpm/eslint-plugin-prettier@5.5.4_eslint-config-prettier@9.1.2_eslint@9.32.0_jiti@1.21.7___e_17ec2cf2b0642e06b490cd2fd8508258/node_modules/eslint-plugin-prettier \ No newline at end of file diff --git a/package.json b/package.json index 40bf9c4..edb8aff 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ }, "devDependencies": { "@huggingface/transformers": "^3.7.0", + "@mermaid-js/mermaid-cli": "^11.9.0", "@types/js-yaml": "^4.0.9", "@types/node": "^24.2.1", "@typescript-eslint/eslint-plugin": "^8.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1c9574..b75dd1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@huggingface/transformers': specifier: ^3.7.0 version: 3.7.2 + '@mermaid-js/mermaid-cli': + specifier: ^11.9.0 + version: 11.9.0(puppeteer@23.11.1(typescript@5.9.2)) '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 @@ -19,22 +22,22 @@ importers: version: 24.2.1 '@typescript-eslint/eslint-plugin': specifier: ^8.4.0 - version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0)(typescript@5.9.2))(eslint@9.32.0)(typescript@5.9.2) + version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.4.0 - version: 8.39.0(eslint@9.32.0)(typescript@5.9.2) + version: 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^1.6.1 version: 1.6.1(vitest@1.6.1(@types/node@24.2.1)(jsdom@26.1.0)) eslint: specifier: ^9.9.0 - version: 9.32.0 + version: 9.32.0(jiti@1.21.7) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.2(eslint@9.32.0) + version: 9.1.2(eslint@9.32.0(jiti@1.21.7)) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2) + version: 5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(prettier@3.6.2) fast-glob: specifier: ^3.3.3 version: 3.3.3 @@ -80,13 +83,27 @@ importers: packages: + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -107,6 +124,24 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@braintree/sanitize-url@7.1.1': + resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + + '@chevrotain/cst-dts-gen@11.0.3': + resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + + '@chevrotain/gast@11.0.3': + resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} + + '@chevrotain/regexp-to-ast@11.0.3': + resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} + + '@chevrotain/types@11.0.3': + resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} + + '@chevrotain/utils@11.0.3': + resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} @@ -314,6 +349,46 @@ packages: resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.16': + resolution: {integrity: sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@headlessui/react@2.2.7': + resolution: {integrity: sha512-WKdTymY8Y49H8/gUc/lIyYK1M+/6dq0Iywh4zTZVAaiTDprRfioxSgD0wnXTQTBpjpGJuTL1NO/mqEvc//5SSg==} + engines: {node: '>=10'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + '@headlessui/tailwindcss@0.2.2': + resolution: {integrity: sha512-xNe42KjdyA4kfUKLLPGzME9zkH7Q3rOZ5huFihWNWOQFxnItxPB3/67yBI8/qBfY8nwBRx5GHn4VprsoluVMGw==} + engines: {node: '>=10'} + peerDependencies: + tailwindcss: ^3.0 || ^4.0 + '@huggingface/jinja@0.5.1': resolution: {integrity: sha512-yUZLld4lrM9iFxHCwFQ7D1HW2MWMwSbeB7WzWqFYDWK+rEb+WldkLdAJxUPOmgICMHZLzZGVcVjFh3w/YGubng==} engines: {node: '>=18'} @@ -341,6 +416,12 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + '@img/sharp-darwin-arm64@0.34.3': resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -463,6 +544,10 @@ packages: cpu: [x64] os: [win32] + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -488,6 +573,21 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@mermaid-js/mermaid-cli@11.9.0': + resolution: {integrity: sha512-qDPwzFRbwRrVd8W99iVNaMR2bdOqiBFGwER3k7eT207WADbeRm2suzTH22/Zs9SbhKrejCNDaaDfZ45hFEiovw==} + engines: {node: ^18.19 || >=20.0} + hasBin: true + peerDependencies: + puppeteer: ^23 + + '@mermaid-js/mermaid-zenuml@0.2.2': + resolution: {integrity: sha512-sUjwk4NWUpy9uaHypYSIGJDks10ZaZo5CHH9lx9xcmyqv9w7yvd4vecUmlUQxmlHStYO+aqSkYKX5/gFjDfypw==} + peerDependencies: + mermaid: ^10 || ^11 + + '@mermaid-js/parser@0.6.2': + resolution: {integrity: sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -500,6 +600,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -534,6 +638,48 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@puppeteer/browsers@2.6.1': + resolution: {integrity: sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==} + engines: {node: '>=18'} + hasBin: true + + '@react-aria/focus@3.21.1': + resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/interactions@3.25.5': + resolution: {integrity: sha512-EweYHOEvMwef/wsiEqV73KurX/OqnmbzKQa2fLxdULbec5+yDj6wVGaRHIzM4NiijIDe+bldEl5DG05CAKOAHA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/ssr@3.9.10': + resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/utils@3.30.1': + resolution: {integrity: sha512-zETcbDd6Vf9GbLndO6RiWJadIZsBU2MMm23rBACXLmpRztkrIqPEb2RVdlLaq1+GklDx0Ii6PfveVjx+8S5U6A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/flags@3.1.2': + resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} + + '@react-stately/utils@3.10.8': + resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/shared@3.32.0': + resolution: {integrity: sha512-t+cligIJsZYFMSPFMvsJMjzlzde06tZMOIOFa1OV5Z0BcMowrb2g4mB57j/9nP28iJIRYn10xCniQts+qadrqQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@rollup/rollup-android-arm-eabi@4.46.2': resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} cpu: [arm] @@ -637,12 +783,123 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@tanstack/react-virtual@3.13.12': + resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/virtual-core@3.13.12': + resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -658,9 +915,15 @@ packages: '@types/node@24.2.1': resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@8.39.0': resolution: {integrity: sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -740,6 +1003,14 @@ packages: '@vitest/utils@1.6.1': resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} + '@zenuml/core@3.36.0': + resolution: {integrity: sha512-haEUgNrEvAG3Ub8dutKoQk3inReaoYexYoXDWkF0rZebSolgyrMvglrjl5kZzjib43sRkpyq+/kc/BbmWCWr3A==} + engines: {node: '>=20'} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -765,6 +1036,10 @@ packages: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + ansi-regex@6.1.0: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} @@ -781,6 +1056,20 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + antlr4@4.11.0: + resolution: {integrity: sha512-GUGlpE2JUjAN+G8G5vY+nOoeyNhHsXoIJwP1XF1oRw89vifA1K46T6SEkwLwr7drihN7I/lf0DIjKc4OZvBX8w==} + engines: {node: '>=14'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -790,12 +1079,64 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bare-events@2.6.1: + resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} + + bare-fs@4.2.2: + resolution: {integrity: sha512-5vn+bdnlCYMwETIm1FqQXDP6TYPbxr2uJd88ve40kr4oPbiTZJVrTNzqA3/4sfWZeWKuQR/RkboBt7qEEDtfMA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.2: + resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -810,6 +1151,15 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -818,6 +1168,10 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -839,10 +1193,30 @@ packages: check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.0.3: + resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} + chromium-bidi@0.11.0: + resolution: {integrity: sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==} + peerDependencies: + devtools-protocol: '*' + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -851,6 +1225,14 @@ packages: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -858,9 +1240,17 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@2.0.0: + resolution: {integrity: sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==} + engines: {node: '>=12.20'} + color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-string@2.1.0: + resolution: {integrity: sha512-gNVoDzpaSwvftp6Y8nqk97FtZoXP9Yj7KGYB8yIXuv0JcfqbYihTrd1OU5iZW9btfXde4YAOCRySBHT7O910MA==} + engines: {node: '>=18'} + color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} @@ -872,24 +1262,222 @@ packages: resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} engines: {node: '>=20'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + cssstyle@4.6.0: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.11: + resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -920,6 +1508,13 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -934,21 +1529,52 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devtools-protocol@0.0.1367902: + resolution: {integrity: sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dompurify@3.2.6: + resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -965,6 +1591,10 @@ packages: engines: {node: '>=12'} hasBin: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -973,6 +1603,11 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-prettier@9.1.2: resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true @@ -1043,13 +1678,24 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -1057,12 +1703,20 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -1073,12 +1727,19 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1101,6 +1762,10 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -1113,6 +1778,13 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.3.0: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} @@ -1120,10 +1792,18 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} + engines: {node: '>= 14'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1132,6 +1812,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -1144,6 +1828,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -1162,6 +1850,9 @@ packages: guid-typescript@1.0.9: resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1169,6 +1860,13 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -1176,6 +1874,9 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-to-image@1.11.13: + resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -1197,6 +1898,9 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1205,10 +1909,16 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + immer@10.1.3: + resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1220,9 +1930,31 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + engines: {node: '>= 12'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -1231,6 +1963,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} @@ -1277,6 +2013,34 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jotai@2.13.1: + resolution: {integrity: sha512-cRsw6kFeGC9Z/D3egVKrTXRweycZ4z/k7i2MrfCzPYsL9SIWcPXTyqv258/+Ay8VUEcihNiE/coBLE6Kic6b8A==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@babel/core': '>=7.0.0' + '@babel/template': '>=7.0.0' + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@babel/template': + optional: true + '@types/react': + optional: true + react: + optional: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} @@ -1300,6 +2064,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -1309,13 +2076,33 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + katex@0.16.22: + resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} + hasBin: true + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + langium@3.3.1: + resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} + engines: {node: '>=16.0.0'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -1324,6 +2111,9 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lint-staged@16.1.5: resolution: {integrity: sha512-uAeQQwByI6dfV7wpt/gVqg+jAPaSp8WwOA8kKC/dv1qw14oGpnpAisY65ibGHUGDUv0rYaZ8CAJZ/1U8hUvC2A==} engines: {node: '>=20.17'} @@ -1337,10 +2127,17 @@ packages: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -1360,6 +2157,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -1373,6 +2174,16 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@16.2.1: + resolution: {integrity: sha512-r3UrXED9lMlHF97jJByry90cwrZBBvZmjG1L68oYfuPMW+uDTnuMbyJDymCWwbTE+f+3LhpNDKfpR3a3saFyjA==} + engines: {node: '>= 20'} + hasBin: true + + marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} @@ -1420,6 +2231,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mermaid@11.10.1: + resolution: {integrity: sha512-0PdeADVWURz7VMAX0+MiMcgfxFKY4aweSGsjgFihe3XlMKNqmai/cugMrqTd3WNHM93V+K+AZL6Wu6tB5HmxRw==} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -1534,6 +2348,9 @@ packages: resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} @@ -1545,6 +2362,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nano-spawn@1.0.2: resolution: {integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==} engines: {node: '>=20.17'} @@ -1557,6 +2377,14 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1564,10 +2392,22 @@ packages: nwsapi@2.2.21: resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -1608,13 +2448,37 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1631,6 +2495,13 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -1640,6 +2511,9 @@ packages: pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1652,12 +2526,76 @@ packages: engines: {node: '>=0.10'} hasBin: true + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + + pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + + pino@8.21.0: + resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} + hasBin: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -1679,20 +2617,88 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + protobufjs@7.5.4: resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + puppeteer-core@23.11.1: + resolution: {integrity: sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==} + engines: {node: '>=18'} + + puppeteer@23.11.1: + resolution: {integrity: sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw==} + engines: {node: '>=18'} + deprecated: < 24.9.0 is no longer supported + hasBin: true + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + radash@12.1.1: + resolution: {integrity: sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==} + engines: {node: '>=14.18.0'} + + ramda@0.28.0: + resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + + react-dom@19.1.1: + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} + peerDependencies: + react: ^19.1.1 + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + remark-frontmatter@5.0.0: resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} @@ -1705,10 +2711,19 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -1724,17 +2739,33 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@4.46.2: resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -1742,6 +2773,9 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -1788,10 +2822,33 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -1804,14 +2861,32 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + streamx@2.22.1: + resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} @@ -1831,10 +2906,22 @@ packages: strip-literal@2.1.1: resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -1842,6 +2929,23 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar-fs@3.1.0: + resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} @@ -1850,9 +2954,28 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinypool@0.8.4: resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} @@ -1889,6 +3012,13 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1904,6 +3034,9 @@ packages: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + typescript@5.9.2: resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} @@ -1912,6 +3045,9 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + undici-types@7.10.0: resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} @@ -1933,6 +3069,18 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} @@ -2000,6 +3148,26 @@ packages: jsdom: optional: true + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -2034,6 +3202,14 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrap-ansi@9.0.0: resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} @@ -2060,6 +3236,10 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} @@ -2069,6 +3249,17 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -2077,16 +3268,28 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@8.1.1': {} + '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -2095,6 +3298,12 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} @@ -2110,6 +3319,25 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@braintree/sanitize-url@7.1.1': {} + + '@chevrotain/cst-dts-gen@11.0.3': + dependencies: + '@chevrotain/gast': 11.0.3 + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/gast@11.0.3': + dependencies: + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/regexp-to-ast@11.0.3': {} + + '@chevrotain/types@11.0.3': {} + + '@chevrotain/utils@11.0.3': {} + '@csstools/color-helpers@5.0.2': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -2204,9 +3432,9 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@1.21.7))': dependencies: - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -2248,21 +3476,68 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 - '@huggingface/jinja@0.5.1': {} + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 - '@huggingface/transformers@3.7.2': + '@floating-ui/dom@1.7.4': dependencies: - '@huggingface/jinja': 0.5.1 - onnxruntime-node: 1.21.0 - onnxruntime-web: 1.22.0-dev.20250409-89f8206ba4 - sharp: 0.34.3 + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 - '@humanfs/core@0.19.1': {} + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - '@humanfs/node@0.16.6': + '@floating-ui/react@0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@floating-ui/utils': 0.2.10 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tabbable: 6.2.0 + + '@floating-ui/react@0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@floating-ui/utils': 0.2.10 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.10': {} + + '@headlessui/react@2.2.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/react-virtual': 3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) + + '@headlessui/tailwindcss@0.2.2(tailwindcss@3.4.17)': + dependencies: + tailwindcss: 3.4.17 + + '@huggingface/jinja@0.5.1': {} + + '@huggingface/transformers@3.7.2': + dependencies: + '@huggingface/jinja': 0.5.1 + onnxruntime-node: 1.21.0 + onnxruntime-web: 1.22.0-dev.20250409-89f8206ba4 + sharp: 0.34.3 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} @@ -2270,6 +3545,21 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.1 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.2 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + '@img/sharp-darwin-arm64@0.34.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.0 @@ -2356,6 +3646,15 @@ snapshots: '@img/sharp-win32-x64@0.34.3': optional: true + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 @@ -2380,6 +3679,35 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@mermaid-js/mermaid-cli@11.9.0(puppeteer@23.11.1(typescript@5.9.2))': + dependencies: + '@mermaid-js/mermaid-zenuml': 0.2.2(mermaid@11.10.1) + chalk: 5.5.0 + commander: 14.0.0 + import-meta-resolve: 4.2.0 + mermaid: 11.10.1 + puppeteer: 23.11.1(typescript@5.9.2) + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@types/react' + - supports-color + - ts-node + + '@mermaid-js/mermaid-zenuml@0.2.2(mermaid@11.10.1)': + dependencies: + '@zenuml/core': 3.36.0 + mermaid: 11.10.1 + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@types/react' + - ts-node + + '@mermaid-js/parser@0.6.2': + dependencies: + langium: 3.3.1 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2392,6 +3720,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@pkgjs/parseargs@0.11.0': + optional: true + '@pkgr/core@0.2.9': {} '@protobufjs/aspromise@1.1.2': {} @@ -2417,6 +3748,69 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@puppeteer/browsers@2.6.1': + dependencies: + debug: 4.4.1 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.2 + tar-fs: 3.1.0 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-buffer + - supports-color + + '@react-aria/focus@3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/interactions@3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/ssr@3.9.10(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-aria/utils@3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-stately/flags@3.1.2': + dependencies: + '@swc/helpers': 0.5.17 + + '@react-stately/utils@3.10.8(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-types/shared@3.32.0(react@19.1.1)': + dependencies: + react: 19.1.1 + '@rollup/rollup-android-arm-eabi@4.46.2': optional: true @@ -2479,12 +3873,145 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@tanstack/react-virtual@3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/virtual-core': 3.13.12 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@tanstack/virtual-core@3.13.12': {} + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@types/d3-array@3.2.1': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 '@types/estree@1.0.8': {} + '@types/geojson@7946.0.16': {} + '@types/js-yaml@4.0.9': {} '@types/json-schema@7.0.15': {} @@ -2499,17 +4026,25 @@ snapshots: dependencies: undici-types: 7.10.0 + '@types/trusted-types@2.0.7': + optional: true + '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0)(typescript@5.9.2))(eslint@9.32.0)(typescript@5.9.2)': + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 24.2.1 + optional: true + + '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0)(typescript@5.9.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0)(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0)(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -2518,14 +4053,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.39.0(eslint@9.32.0)(typescript@5.9.2)': + '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1 - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -2548,13 +4083,13 @@ snapshots: dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0)(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0)(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -2578,13 +4113,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.0(eslint@9.32.0)(typescript@5.9.2)': + '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -2642,6 +4177,39 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 + '@zenuml/core@3.36.0': + dependencies: + '@floating-ui/react': 0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@headlessui/react': 2.2.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@headlessui/tailwindcss': 0.2.2(tailwindcss@3.4.17) + antlr4: 4.11.0 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + color-string: 2.1.0 + dompurify: 3.2.6 + highlight.js: 10.7.3 + html-to-image: 1.11.13 + immer: 10.1.3 + jotai: 2.13.1(react@19.1.1) + marked: 4.3.0 + pako: 2.1.0 + pino: 8.21.0 + radash: 12.1.1 + ramda: 0.28.0 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tailwind-merge: 3.3.1 + tailwindcss: 3.4.17 + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@types/react' + - ts-node + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -2665,6 +4233,8 @@ snapshots: dependencies: environment: 1.1.0 + ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@4.3.0: @@ -2675,6 +4245,17 @@ snapshots: ansi-styles@6.2.1: {} + antlr4@4.11.0: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -2683,10 +4264,49 @@ snapshots: assertion-error@1.1.0: {} + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + + atomic-sleep@1.0.0: {} + + b4a@1.6.7: {} + bail@2.0.2: {} balanced-match@1.0.2: {} + bare-events@2.6.1: + optional: true + + bare-fs@4.2.2: + dependencies: + bare-events: 2.6.1 + bare-path: 3.0.0 + bare-stream: 2.7.0(bare-events@2.6.1) + optional: true + + bare-os@3.6.2: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.2 + optional: true + + bare-stream@2.7.0(bare-events@2.6.1): + dependencies: + streamx: 2.22.1 + optionalDependencies: + bare-events: 2.6.1 + optional: true + + base64-js@1.5.1: {} + + basic-ftp@5.0.5: {} + + binary-extensions@2.3.0: {} + boolean@3.2.0: {} brace-expansion@1.1.12: @@ -2702,10 +4322,24 @@ snapshots: dependencies: fill-range: 7.1.1 + buffer-crc32@0.2.13: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + cac@6.7.14: {} callsites@3.1.0: {} + camelcase-css@2.0.1: {} + ccount@2.0.1: {} chai@4.5.0: @@ -2731,8 +4365,44 @@ snapshots: dependencies: get-func-name: 2.0.2 + chevrotain-allstar@0.3.1(chevrotain@11.0.3): + dependencies: + chevrotain: 11.0.3 + lodash-es: 4.17.21 + + chevrotain@11.0.3: + dependencies: + '@chevrotain/cst-dts-gen': 11.0.3 + '@chevrotain/gast': 11.0.3 + '@chevrotain/regexp-to-ast': 11.0.3 + '@chevrotain/types': 11.0.3 + '@chevrotain/utils': 11.0.3 + lodash-es: 4.17.21 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chownr@3.0.0: {} + chromium-bidi@0.11.0(devtools-protocol@0.0.1367902): + dependencies: + devtools-protocol: 0.0.1367902 + mitt: 3.0.1 + zod: 3.23.8 + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -2742,17 +4412,31 @@ snapshots: slice-ansi: 5.0.0 string-width: 7.2.0 + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} + color-name@2.0.0: {} + color-string@1.9.1: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 + color-string@2.1.0: + dependencies: + color-name: 2.0.0 + color@4.2.3: dependencies: color-convert: 2.0.1 @@ -2762,26 +4446,241 @@ snapshots: commander@14.0.0: {} + commander@4.1.1: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + concat-map@0.0.1: {} confbox@0.1.8: {} + confbox@0.2.2: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + cosmiconfig@9.0.0(typescript@5.9.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.2 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + cssesc@3.0.0: {} + cssstyle@4.6.0: dependencies: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.1 + + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.1 + + cytoscape@3.33.1: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.11: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.21 + + data-uri-to-buffer@6.0.2: {} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + dayjs@1.11.18: {} + debug@4.4.1: dependencies: ms: 2.1.3 @@ -2810,6 +4709,16 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + dequal@2.0.3: {} detect-libc@2.0.4: {} @@ -2820,14 +4729,40 @@ snapshots: dependencies: dequal: 2.0.3 + devtools-protocol@0.0.1367902: {} + + didyoumean@1.2.2: {} + diff-sequences@29.6.3: {} + dlv@1.1.3: {} + + dompurify@3.2.6: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + eastasianwidth@0.2.0: {} + emoji-regex@10.4.0: {} + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + entities@6.0.1: {} + env-paths@2.2.1: {} + environment@1.1.0: {} + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -2860,22 +4795,32 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + escalade@3.2.0: {} + escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} - eslint-config-prettier@9.1.2(eslint@9.32.0): + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-prettier@9.1.2(eslint@9.32.0(jiti@1.21.7)): dependencies: - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) - eslint-plugin-prettier@5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@9.1.2(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(prettier@3.6.2): dependencies: - eslint: 9.32.0 + eslint: 9.32.0(jiti@1.21.7) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: - eslint-config-prettier: 9.1.2(eslint@9.32.0) + eslint-config-prettier: 9.1.2(eslint@9.32.0(jiti@1.21.7)) eslint-scope@8.4.0: dependencies: @@ -2886,9 +4831,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.32.0: + eslint@9.32.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 @@ -2923,6 +4868,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 1.21.7 transitivePeerDependencies: - supports-color @@ -2950,8 +4897,12 @@ snapshots: esutils@2.0.3: {} + event-target-shim@5.0.1: {} + eventemitter3@5.0.1: {} + events@3.3.0: {} + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -2964,16 +4915,30 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + exsolve@1.0.7: {} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 extend@3.0.2: {} + extract-zip@2.0.1: + dependencies: + debug: 4.4.1 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} + fast-fifo@1.3.2: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2986,6 +4951,8 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-redact@3.5.0: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -2994,6 +4961,10 @@ snapshots: dependencies: format: 0.2.2 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -3016,6 +4987,11 @@ snapshots: flatted@3.3.3: {} + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + format@0.2.2: {} fs.realpath@1.0.0: {} @@ -3023,12 +4999,28 @@ snapshots: fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + get-east-asian-width@1.3.0: {} get-func-name@2.0.2: {} + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + get-stream@8.0.1: {} + get-uri@6.0.5: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -3037,6 +5029,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -3057,6 +5058,8 @@ snapshots: globals@14.0.0: {} + globals@15.15.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -3075,18 +5078,28 @@ snapshots: guid-typescript@1.0.9: {} + hachure-fill@0.5.2: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + highlight.js@10.7.3: {} + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 html-escaper@2.0.2: {} + html-to-image@1.11.13: {} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -3109,15 +5122,21 @@ snapshots: dependencies: safer-buffer: 2.1.2 + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} + immer@10.1.3: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} inflight@1.0.6: @@ -3127,12 +5146,30 @@ snapshots: inherits@2.0.4: {} + internmap@1.0.1: {} + + internmap@2.0.3: {} + + ip-address@10.0.1: {} + + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + is-extendable@0.1.1: {} is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-fullwidth-code-point@4.0.0: {} is-fullwidth-code-point@5.0.0: @@ -3174,6 +5211,20 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.7: {} + + jotai@2.13.1(react@19.1.1): + optionalDependencies: + react: 19.1.1 + + js-tokens@4.0.0: {} + js-tokens@9.0.1: {} js-yaml@3.14.1: @@ -3214,18 +5265,40 @@ snapshots: json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-safe@5.0.1: {} + katex@0.16.22: + dependencies: + commander: 8.3.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + khroma@2.1.0: {} + kind-of@6.0.3: {} + kolorist@1.8.0: {} + + langium@3.3.1: + dependencies: + chevrotain: 11.0.3 + chevrotain-allstar: 0.3.1(chevrotain@11.0.3) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -3233,6 +5306,8 @@ snapshots: lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} + lint-staged@16.1.5: dependencies: chalk: 5.5.0 @@ -3262,10 +5337,18 @@ snapshots: mlly: 1.7.4 pkg-types: 1.3.1 + local-pkg@1.1.2: + dependencies: + mlly: 1.7.4 + pkg-types: 2.3.0 + quansync: 0.2.11 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash-es@4.17.21: {} + lodash.merge@4.6.2: {} log-update@6.1.0: @@ -3286,6 +5369,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@7.18.3: {} + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.4 @@ -3302,6 +5387,10 @@ snapshots: markdown-table@3.0.4: {} + marked@16.2.1: {} + + marked@4.3.0: {} + matcher@3.0.0: dependencies: escape-string-regexp: 4.0.0 @@ -3423,6 +5512,31 @@ snapshots: merge2@1.4.1: {} + mermaid@11.10.1: + dependencies: + '@braintree/sanitize-url': 7.1.1 + '@iconify/utils': 2.3.0 + '@mermaid-js/parser': 0.6.2 + '@types/d3': 7.4.3 + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.11 + dayjs: 1.11.18 + dompurify: 3.2.6 + katex: 0.16.22 + khroma: 2.1.0 + lodash-es: 4.17.21 + marked: 16.2.1 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + transitivePeerDependencies: + - supports-color + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -3644,6 +5758,8 @@ snapshots: dependencies: minipass: 7.1.2 + mitt@3.0.1: {} + mkdirp@3.0.1: {} mlly@1.7.4: @@ -3655,20 +5771,36 @@ snapshots: ms@2.1.3: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nano-spawn@1.0.2: {} nanoid@3.3.11: {} natural-compare@1.4.0: {} + netmask@2.0.2: {} + + normalize-path@3.0.0: {} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 nwsapi@2.2.21: {} + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + object-keys@1.1.1: {} + on-exit-leak-free@2.1.2: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -3721,14 +5853,47 @@ snapshots: dependencies: p-limit: 3.1.0 + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.4 + debug: 4.4.1 + get-uri: 6.0.5 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + package-json-from-dist@1.0.1: {} + + package-manager-detector@1.3.0: {} + + pako@2.1.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parse5@7.3.0: dependencies: entities: 6.0.1 + path-data-parser@0.1.0: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -3737,26 +5902,104 @@ snapshots: path-key@4.0.0: {} + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + pathe@1.1.2: {} pathe@2.0.3: {} pathval@1.1.1: {} + pend@1.2.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} pidtree@0.6.0: {} + pify@2.3.0: {} + + pino-abstract-transport@1.2.0: + dependencies: + readable-stream: 4.7.0 + split2: 4.2.0 + + pino-std-serializers@6.2.2: {} + + pino@8.21.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 6.2.2 + process-warning: 3.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 3.8.1 + thread-stream: 2.7.0 + + pirates@4.0.7: {} + pkg-types@1.3.1: dependencies: confbox: 0.1.8 mlly: 1.7.4 pathe: 2.0.3 + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + platform@1.3.6: {} + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss-import@15.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.5.6): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.6 + + postcss-load-config@4.0.2(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.1 + optionalDependencies: + postcss: 8.5.6 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -3777,6 +6020,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + process-warning@3.0.0: {} + + process@0.11.10: {} + + progress@2.0.3: {} + protobufjs@7.5.4: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -3792,12 +6041,94 @@ snapshots: '@types/node': 24.2.1 long: 5.3.2 + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@2.3.1: {} + puppeteer-core@23.11.1: + dependencies: + '@puppeteer/browsers': 2.6.1 + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) + debug: 4.4.1 + devtools-protocol: 0.0.1367902 + typed-query-selector: 2.12.0 + ws: 8.18.3 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - utf-8-validate + + puppeteer@23.11.1(typescript@5.9.2): + dependencies: + '@puppeteer/browsers': 2.6.1 + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) + cosmiconfig: 9.0.0(typescript@5.9.2) + devtools-protocol: 0.0.1367902 + puppeteer-core: 23.11.1 + typed-query-selector: 2.12.0 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - typescript + - utf-8-validate + + quansync@0.2.11: {} + queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + + radash@12.1.1: {} + + ramda@0.28.0: {} + + react-dom@19.1.1(react@19.1.1): + dependencies: + react: 19.1.1 + scheduler: 0.26.0 + react-is@18.3.1: {} + react@19.1.1: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + real-require@0.2.0: {} + remark-frontmatter@5.0.0: dependencies: '@types/mdast': 4.0.4 @@ -3833,8 +6164,16 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 + require-directory@2.1.1: {} + resolve-from@4.0.0: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -3853,6 +6192,8 @@ snapshots: semver-compare: 1.0.0 sprintf-js: 1.1.3 + robust-predicates@3.0.2: {} + rollup@4.46.2: dependencies: '@types/estree': 1.0.8 @@ -3879,18 +6220,33 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.46.2 fsevents: 2.3.3 + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + + safe-buffer@5.2.1: {} + + safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: {} saxes@6.0.0: dependencies: xmlchars: 2.2.0 + scheduler@0.26.0: {} + section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 @@ -3957,8 +6313,32 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.0.1 + smart-buffer: 4.2.0 + + sonic-boom@3.8.1: + dependencies: + atomic-sleep: 1.0.0 + source-map-js@1.2.1: {} + source-map@0.6.1: + optional: true + + split2@4.2.0: {} + sprintf-js@1.0.3: {} sprintf-js@1.1.3: {} @@ -3967,14 +6347,41 @@ snapshots: std-env@3.9.0: {} + streamx@2.22.1: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.6.1 + string-argv@0.3.2: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string-width@7.2.0: dependencies: emoji-regex: 10.4.0 get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + strip-ansi@7.1.0: dependencies: ansi-regex: 6.1.0 @@ -3989,16 +6396,77 @@ snapshots: dependencies: js-tokens: 9.0.1 + stylis@4.3.6: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.12 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + symbol-tree@3.2.4: {} synckit@0.11.11: dependencies: '@pkgr/core': 0.2.9 + tabbable@6.2.0: {} + + tailwind-merge@3.3.1: {} + + tailwindcss@3.4.17: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.0.1(postcss@8.5.6) + postcss-load-config: 4.0.2(postcss@8.5.6) + postcss-nested: 6.2.0(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tar-fs@3.1.0: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.2.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.22.1 + tar@7.4.3: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -4014,8 +6482,28 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thread-stream@2.7.0: + dependencies: + real-require: 0.2.0 + + through@2.3.8: {} + tinybench@2.9.0: {} + tinyexec@1.0.1: {} + tinypool@0.8.4: {} tinyspy@2.2.1: {} @@ -4044,8 +6532,11 @@ snapshots: dependencies: typescript: 5.9.2 - tslib@2.8.1: - optional: true + ts-dedent@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + tslib@2.8.1: {} type-check@0.4.0: dependencies: @@ -4055,10 +6546,17 @@ snapshots: type-fest@0.13.1: {} + typed-query-selector@2.12.0: {} + typescript@5.9.2: {} ufo@1.6.1: {} + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + undici-types@7.10.0: {} unified@11.0.5: @@ -4094,6 +6592,14 @@ snapshots: dependencies: punycode: 2.3.1 + use-sync-external-store@1.5.0(react@19.1.1): + dependencies: + react: 19.1.1 + + util-deprecate@1.0.2: {} + + uuid@11.1.0: {} + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -4166,6 +6672,23 @@ snapshots: - supports-color - terser + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-uri@3.0.8: {} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -4194,6 +6717,18 @@ snapshots: word-wrap@1.2.5: {} + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 @@ -4208,12 +6743,33 @@ snapshots: xmlchars@2.2.0: {} + y18n@5.0.8: {} + yallist@5.0.0: {} yaml@2.8.1: {} + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yocto-queue@0.1.0: {} yocto-queue@1.2.1: {} + zod@3.23.8: {} + zwitch@2.0.4: {} diff --git a/tests/confidenceGate.spec.ts b/tests/confidenceGate.spec.ts new file mode 100644 index 0000000..13f7b7b --- /dev/null +++ b/tests/confidenceGate.spec.ts @@ -0,0 +1,93 @@ +/* Auto-generated test for REQ-CONFIDENCE-GATE */ +import { describe, it, expect } from 'vitest'; +import { + applyThresholds, + computeConfidence, + computeInputFidelity, + clamp01, + type ConfidenceInputs, +} from '../core/confidenceGate'; +import { CONFIDENCE_THRESHOLDS } from '../config/defaultThresholds'; + +describe('confidenceGate', () => { + it('computes combined score with correct weights', () => { + const inp: ConfidenceInputs = { + inputFidelity: 1, + transformationQuality: 0.5, + contextCoherence: 0.5, + temporalDecay: 0.5, + }; + const s = computeConfidence(inp); + // 0.3*1 + 0.4*0.5 + 0.2*0.5 + 0.1*0.5 = 0.3 + 0.2 + 0.1 + 0.05 = 0.65 + expect(Math.round(s.combined * 100)).toBe(65); + }); + + it('applies thresholds for commit/hold/discard', () => { + const base: ConfidenceInputs = { + inputFidelity: 0.9, + transformationQuality: 0.95, + contextCoherence: 0.9, + temporalDecay: 0.9, + }; + const strong = computeConfidence(base); + expect(applyThresholds(strong)).toBe('commit'); + + const weak = computeConfidence({ ...base, inputFidelity: 0.2 }); + expect(applyThresholds(weak)).toBe('hold'); // below τ_input → hold + + const bad = computeConfidence({ + ...base, + inputFidelity: 0.9, + transformationQuality: 0, + contextCoherence: 0, + temporalDecay: 0, + }); + const decision = applyThresholds(bad); + // With near-zero components, should discard below τ_discard + expect(decision).toBe('discard'); + }); + + it('requires τ_tone when tone gating is requested', () => { + const s = computeConfidence({ + inputFidelity: 1, + transformationQuality: CONFIDENCE_THRESHOLDS.τ_tone - 0.01, + contextCoherence: 1, + temporalDecay: 1, + }); + const d = applyThresholds(s, CONFIDENCE_THRESHOLDS, { requireTone: true }); + expect(d).toBe('hold'); + }); + + it('commits when tone gating and both bars are met', () => { + const s = computeConfidence({ + inputFidelity: 1, + transformationQuality: CONFIDENCE_THRESHOLDS.τ_tone + 0.01, + contextCoherence: 1, + temporalDecay: 1, + }); + const d = applyThresholds(s, CONFIDENCE_THRESHOLDS, { requireTone: true }); + expect(d).toBe('commit'); + }); + + it('holds when combined below τ_commit but above τ_discard', () => { + const s = computeConfidence({ + inputFidelity: CONFIDENCE_THRESHOLDS.τ_input + 0.01, + transformationQuality: 0.6, + contextCoherence: 0.6, + temporalDecay: 0.6, + }); + const d = applyThresholds(s, CONFIDENCE_THRESHOLDS); + expect(d).toBe('hold'); + }); + + it('computes input fidelity from text', () => { + expect(computeInputFidelity('hello')).toBeGreaterThan(0.9); + expect(computeInputFidelity('!!!')).toBe(0); + expect(computeInputFidelity(' ')).toBe(0); + }); + + it('clamp01 guards against NaN/Infinity', () => { + expect(clamp01(NaN as unknown as number)).toBe(0); + expect(clamp01(Infinity as unknown as number)).toBe(0); + }); +}); diff --git a/tests/contextTransformer.spec.ts b/tests/contextTransformer.spec.ts new file mode 100644 index 0000000..4a318ce --- /dev/null +++ b/tests/contextTransformer.spec.ts @@ -0,0 +1,39 @@ +/* Auto-generated test for REQ-CONTEXT-TRANSFORMER */ +import { describe, it, expect } from 'vitest'; +import { buildContextWindow, contextTransform } from '../engines/contextTransformer'; + +describe('contextTransformer', () => { + it('builds ±2 sentence window around caret', () => { + const text = 'A. B. C. D. E.'; + const caret = text.indexOf('C'); + const w = buildContextWindow(text, caret); + expect(w.currentSentence.trim()).toContain('C.'); + expect(w.previousSentences.join('')).toContain('A.'); + }); + + it('produces caret-safe proposals only', () => { + const text = 'i am here'; + const caret = text.length; // end + const r = contextTransform({ text, caret }); + for (const p of r.proposals) { + expect(p.end).toBeLessThanOrEqual(caret); + } + }); + + it('yields proposals on missing punctuation/capitalization', () => { + const text = 'this is fine'; + const caret = text.length; + const r = contextTransform({ text, caret }); + // Likely to add capitalization and period + if (r.proposals.length) { + expect(r.proposals[0].text).toMatch(/[A-Z].*\.$/); + } + }); + + it('holds when input fidelity is extremely low', () => { + const text = '!!!! ####'; + const caret = text.length; + const r = contextTransform({ text, caret }); + expect(r.proposals.length).toBe(0); + }); +}); diff --git a/tests/diffusionController_branches.spec.ts b/tests/diffusionController_branches.spec.ts index 1ea1614..f111448 100644 --- a/tests/diffusionController_branches.spec.ts +++ b/tests/diffusionController_branches.spec.ts @@ -82,9 +82,9 @@ describe('DiffusionController branches', () => { }, })); - // Mock tidySweep to return a diff so we hit the try/catch path - vi.doMock('../engines/tidySweep', () => ({ - tidySweep: () => ({ diff: { start: 0, end: 3, text: 'the' } }), + // Mock noiseTransform to return a diff so we hit the try/catch path + vi.doMock('../engines/noiseTransformer', () => ({ + noiseTransform: () => ({ diff: { start: 0, end: 3, text: 'the' } }), })); const { createDiffusionController } = await import('../core/diffusionController'); diff --git a/tests/ft202_integration.spec.ts b/tests/ft202_integration.spec.ts index cf70343..fb1b31b 100644 --- a/tests/ft202_integration.spec.ts +++ b/tests/ft202_integration.spec.ts @@ -28,14 +28,14 @@ vi.mock('../ui/highlighter', () => ({ })); // Spy on engines to ensure they run on pause catch-up -vi.mock('../engines/tidySweep', () => ({ - tidySweep: vi.fn(() => ({ diff: null })), +vi.mock('../engines/noiseTransformer', () => ({ + noiseTransform: vi.fn(() => ({ diff: null })), })); vi.mock('../engines/backfillConsistency', () => ({ backfillConsistency: vi.fn(() => ({ diffs: [] })), })); -import { tidySweep } from '../engines/tidySweep'; +import { noiseTransform } from '../engines/noiseTransformer'; import { backfillConsistency } from '../engines/backfillConsistency'; describe('FT-202 Integration Harness', () => { @@ -43,7 +43,7 @@ describe('FT-202 Integration Harness', () => { vi.useFakeTimers(); regionCalls.length = 0; highlights.length = 0; - (tidySweep as unknown as { mockClear?: () => void }).mockClear?.(); + (noiseTransform as unknown as { mockClear?: () => void }).mockClear?.(); (backfillConsistency as unknown as { mockClear?: () => void }).mockClear?.(); }); afterEach(() => { @@ -80,7 +80,7 @@ describe('FT-202 Integration Harness', () => { expect(afterPauseRegion.end).toBe(15); // Engines invoked as part of pause processing - expect(tidySweep).toHaveBeenCalled(); + expect(noiseTransform).toHaveBeenCalled(); expect(backfillConsistency).toHaveBeenCalled(); // Any highlights produced must be strictly behind the caret (caret safety) diff --git a/tests/integration.spec.ts b/tests/integration.spec.ts index ecb4285..6da2c1e 100644 --- a/tests/integration.spec.ts +++ b/tests/integration.spec.ts @@ -14,7 +14,7 @@ import { createTypingMonitor } from '../core/typingMonitor'; import { createSweepScheduler } from '../core/sweepScheduler'; import { createDiffusionController } from '../core/diffusionController'; import type { LMAdapter } from '../core/lm/types'; -import { tidySweep } from '../engines/tidySweep'; +import { noiseTransform } from '../engines/noiseTransformer'; // Mock the UI calls for clean testing vi.mock('../ui/highlighter', () => ({ @@ -50,7 +50,7 @@ describe('Streaming Diffusion Integration', () => { const hint = { start: 5, end: 10 }; // " teh " with spaces // Test 4: TidySweep engine processes the hint - const sweepResult = tidySweep({ + const sweepResult = noiseTransform({ text, caret, hint, @@ -114,7 +114,7 @@ describe('Streaming Diffusion Integration', () => { const text = 'I was typing teh wrong word here'; const caretPosition = 32; // At end - const result = tidySweep({ + const result = noiseTransform({ text, caret: caretPosition, }); @@ -138,7 +138,7 @@ describe('Streaming Diffusion Integration', () => { ]; testCases.forEach(({ text, expected }) => { - const result = tidySweep({ + const result = noiseTransform({ text, caret: text.length, }); diff --git a/tests/languageDetection.spec.ts b/tests/languageDetection.spec.ts new file mode 100644 index 0000000..8740054 --- /dev/null +++ b/tests/languageDetection.spec.ts @@ -0,0 +1,12 @@ +/* Auto-generated test for REQ-LANGUAGE-GATING */ +import { describe, it, expect } from 'vitest'; +import { detectLanguage } from '../core/languageDetection'; + +describe('languageDetection', () => { + it('detects English on simple samples', () => { + expect(detectLanguage('This is a simple English sentence.')).toBe('en'); + }); + it('falls back to other for non-English-looking samples', () => { + expect(detectLanguage('これは日本語の文章です。')).toBe('other'); + }); +}); diff --git a/tests/tidySweep.spec.ts b/tests/noiseTransformer.spec.ts similarity index 78% rename from tests/tidySweep.spec.ts rename to tests/noiseTransformer.spec.ts index 7c8f930..dda1030 100644 --- a/tests/tidySweep.spec.ts +++ b/tests/noiseTransformer.spec.ts @@ -1,5 +1,5 @@ /*╔══════════════════════════════════════════════════════════════╗ - ║ ░ T I D Y S W E E P T E S T S ░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ░ N O I S E T R A N S F O R M E R T E S T S ░░░░░░░░ ║ ║ ║ ║ Validates rule-based corrections and caret safety in ║ ║ the forward cleanup engine behind the cursor. ║ @@ -7,20 +7,20 @@ ╚══════════════════════════════════════════════════════════════╝ • WHAT ▸ Assert rule application, caret safety, confidence gating • WHY ▸ Core safety and correctness for live typing corrections - • HOW ▸ Calls tidySweep with various scenarios; checks results + • HOW ▸ Calls noiseTransform with various scenarios; checks results */ import { describe, it, expect } from 'vitest'; -import { tidySweep, type SweepInput } from '../engines/tidySweep'; +import { noiseTransform, type NoiseInput } from '../engines/noiseTransformer'; -describe('TidySweep Engine', () => { +describe('Noise Transformer Engine', () => { describe('Caret Safety', () => { it('never proposes edits at or after the caret', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'Hello teh world', caret: 9, // Right before "world" }; - const result = tidySweep(input); + const result = noiseTransform(input); if (result.diff) { expect(result.diff.end).toBeLessThanOrEqual(input.caret); @@ -29,34 +29,34 @@ describe('TidySweep Engine', () => { }); it('returns null when no safe edits are possible', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'teh', caret: 3, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).toBeNull(); }); it('handles empty text gracefully', () => { - const input: SweepInput = { + const input: NoiseInput = { text: '', caret: 0, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).toBeNull(); }); }); describe('Word Substitution Rules', () => { it('corrects "teh" to "the"', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'Hello teh world and more', caret: 20, // After "and" }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.start).toBe(5); // Start of " teh " @@ -65,12 +65,12 @@ describe('TidySweep Engine', () => { }); it('corrects "adn" to "and"', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'cats adn dogs are cute', caret: 22, // At end }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); // Accept either substitution or another rule firing later; must include comma/and/etc. @@ -78,12 +78,12 @@ describe('TidySweep Engine', () => { }); it('finds the rightmost match when multiple exist', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'teh cat adn teh dog adn mouse', caret: 29, // At end }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); // Should find the last " adn " not the first @@ -91,13 +91,13 @@ describe('TidySweep Engine', () => { }); it('respects hint boundaries when provided', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'start teh middle teh end', caret: 24, hint: { start: 0, end: 12 }, // Only first part }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.start).toBeLessThan(12); // Within hint @@ -107,22 +107,22 @@ describe('TidySweep Engine', () => { describe('Transposition Detection (FT-211)', () => { it('corrects simple transpositions inside words (nto→not)', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'this is nto correct', caret: 20, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toBe('not'); }); it('chooses rightmost transposition within window and respects caret', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'waht is taht and nto here', caret: 26, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); // Should pick the last match before caret window end expect(result.diff!.end).toBeLessThanOrEqual(input.caret); @@ -134,7 +134,7 @@ describe('TidySweep Engine', () => { { text: 'waht now', expected: 'what', caret: 8 }, ]; for (const c of cases) { - const result = tidySweep({ text: c.text, caret: c.caret }); + const result = noiseTransform({ text: c.text, caret: c.caret }); if (result.diff) { expect(result.diff.text).toBe(c.expected); expect(result.diff.end).toBeLessThanOrEqual(c.caret); @@ -145,49 +145,49 @@ describe('TidySweep Engine', () => { describe('Punctuation Normalization (FT-212)', () => { it('removes space before comma and adds space after', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'word ,next', caret: 10, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); // Either remove space before comma or add space after depending on last match expect(result.diff!.text.includes(',')).toBe(true); }); it('adds space after comma (branch: a,b → a, b)', () => { - const input: SweepInput = { text: 'a,b', caret: 3 }; - const result = tidySweep(input); + const input: NoiseInput = { text: 'a,b', caret: 3 }; + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toBe(', b'); }); it('fixes missing space after period (branch: add space)', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'End.This', caret: 8, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toContain('. '); }); it('ensures spaces around em dash (branch: unify spacing)', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'alpha—beta', caret: 10, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toBe(' — '); }); it('does not add space after period when newline follows', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'End.\nNext', caret: 9, }; - const result = tidySweep(input); + const result = noiseTransform(input); // normalization should skip newline case; allow null if (result.diff) { expect(result.diff.text.includes('. ')).toBe(false); @@ -195,21 +195,21 @@ describe('TidySweep Engine', () => { }); it('removes space before period (branch: strip before .)', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'end .', caret: 5, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toBe('.'); }); it('no-op when em dash already spaced', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'a — b', caret: 5, }; - const result = tidySweep(input); + const result = noiseTransform(input); // Might return null or a later normalization; accept null if (result.diff) { expect(result.diff.text).not.toBe(' — '); @@ -219,11 +219,11 @@ describe('TidySweep Engine', () => { describe('Confidence gating (FT-213)', () => { it('does not suggest transposition when not at word boundary (branch)', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'sthierx token', caret: 12, }; - const result = tidySweep(input); + const result = noiseTransform(input); // our transposition regex uses \b and boundary gating; expect no diff for embedded pattern if (result.diff) { expect(result.diff.text).not.toBe('their'); @@ -233,21 +233,21 @@ describe('TidySweep Engine', () => { describe('Capitalization (FT-216)', () => { it('capitalizes sentence start after period', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'hello. world', caret: 12, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toBe('W'); }); it("capitalizes standalone 'i' pronoun", () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'when i pause', caret: 12, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toBe('I'); }); @@ -257,25 +257,25 @@ describe('TidySweep Engine', () => { it('respects MAX_SWEEP_WINDOW limit', () => { // Create text longer than MAX_SWEEP_WINDOW const prefix = 'x'.repeat(100); // Longer than 80-char window - const input: SweepInput = { + const input: NoiseInput = { text: prefix + ' teh world', caret: prefix.length + 10, // After " teh " }; - const result = tidySweep(input); + const result = noiseTransform(input); // Should still find the correction within the window expect(result.diff).not.toBeNull(); }); it('handles hint that extends beyond safe window', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'Hello teh world', caret: 10, hint: { start: 5, end: 15 }, // Hint crosses caret }; - const result = tidySweep(input); + const result = noiseTransform(input); if (result.diff) { expect(result.diff.end).toBeLessThanOrEqual(input.caret); @@ -287,12 +287,12 @@ describe('TidySweep Engine', () => { it('applies rules in priority order', () => { // This test verifies the rule system works // When we add more rules, we can test priority - const input: SweepInput = { + const input: NoiseInput = { text: 'Test teh system', caret: 15, }; - const result = tidySweep(input); + const result = noiseTransform(input); expect(result.diff).not.toBeNull(); expect(result.diff!.text).toBe(' the '); diff --git a/tests/tidySweep_branches.spec.ts b/tests/noiseTransformer_branches.spec.ts similarity index 58% rename from tests/tidySweep_branches.spec.ts rename to tests/noiseTransformer_branches.spec.ts index 420258c..b1cbd6f 100644 --- a/tests/tidySweep_branches.spec.ts +++ b/tests/noiseTransformer_branches.spec.ts @@ -1,39 +1,39 @@ /* Targets branch edges inside tidySweep rules via empty hint windows */ import { describe, it, expect } from 'vitest'; -import { tidySweep, type SweepInput } from '../engines/tidySweep'; +import { noiseTransform, type NoiseInput } from '../engines/noiseTransformer'; -describe('TidySweep branch edges: empty hint window', () => { - const base: Omit = { text: 'alpha beta gamma', caret: 5 }; +describe('NoiseTransformer branch edges: empty hint window', () => { + const base: Omit = { text: 'alpha beta gamma', caret: 5 }; it('word substitution: searchStart >= searchEnd returns null', () => { - const input: SweepInput = { ...base, hint: { start: 5, end: 5 } }; - const r = tidySweep(input); + const input: NoiseInput = { ...base, hint: { start: 5, end: 5 } }; + const r = noiseTransform(input); expect(r.diff).toBeNull(); }); it('transposition: searchStart >= searchEnd returns null', () => { - const input: SweepInput = { text: 'waht now', caret: 0, hint: { start: 0, end: 0 } }; - const r = tidySweep(input); + const input: NoiseInput = { text: 'waht now', caret: 0, hint: { start: 0, end: 0 } }; + const r = noiseTransform(input); expect(r.diff).toBeNull(); }); it('punctuation: searchStart >= searchEnd returns null', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'word ,next', caret: 0, hint: { start: 0, end: 0 }, }; - const r = tidySweep(input); + const r = noiseTransform(input); expect(r.diff).toBeNull(); }); it('capitalization: searchStart >= searchEnd returns null', () => { - const input: SweepInput = { + const input: NoiseInput = { text: 'hello. world', caret: 0, hint: { start: 0, end: 0 }, }; - const r = tidySweep(input); + const r = noiseTransform(input); expect(r.diff).toBeNull(); }); }); diff --git a/tests/tidySweep_more_branches.spec.ts b/tests/noiseTransformer_more_branches.spec.ts similarity index 87% rename from tests/tidySweep_more_branches.spec.ts rename to tests/noiseTransformer_more_branches.spec.ts index e2d116d..1b31d77 100644 --- a/tests/tidySweep_more_branches.spec.ts +++ b/tests/noiseTransformer_more_branches.spec.ts @@ -7,13 +7,13 @@ */ import { describe, it, expect } from 'vitest'; -import { tidySweep } from '../engines/tidySweep'; +import { noiseTransform } from '../engines/noiseTransformer'; -describe('tidySweep extra branches', () => { +describe('noiseTransform extra branches', () => { it('normalizes tabs between tokens to single space', () => { const text = 'foo\t\tbar baz'; const caret = text.length; // caret at end - const res = tidySweep({ text, caret }); + const res = noiseTransform({ text, caret }); expect(res.diff).not.toBeNull(); if (res.diff) { const applied = @@ -25,7 +25,7 @@ describe('tidySweep extra branches', () => { it('removes trailing spaces before newline', () => { const text = 'line with space \nnext'; const caret = text.length; // caret at end - const res = tidySweep({ text, caret }); + const res = noiseTransform({ text, caret }); expect(res.diff).not.toBeNull(); if (res.diff) { const applied = diff --git a/tests/tidySweep_whitespace.spec.ts b/tests/noiseTransformer_whitespace.spec.ts similarity index 58% rename from tests/tidySweep_whitespace.spec.ts rename to tests/noiseTransformer_whitespace.spec.ts index 53569f2..409945f 100644 --- a/tests/tidySweep_whitespace.spec.ts +++ b/tests/noiseTransformer_whitespace.spec.ts @@ -1,24 +1,24 @@ import { describe, it, expect } from 'vitest'; -import { tidySweep, type SweepInput } from '../engines/tidySweep'; +import { noiseTransform, type NoiseInput } from '../engines/noiseTransformer'; describe('Whitespace Normalization (FT-214)', () => { it('collapses multiple spaces to single space', () => { - const input: SweepInput = { text: 'alpha beta', caret: 11 }; - const r = tidySweep(input); + const input: NoiseInput = { text: 'alpha beta', caret: 11 }; + const r = noiseTransform(input); expect(r.diff).not.toBeNull(); expect(r.diff!.text).toBe(' '); }); it('replaces tabs between tokens with single space', () => { - const input: SweepInput = { text: 'alpha\tbeta', caret: 10 }; - const r = tidySweep(input); + const input: NoiseInput = { text: 'alpha\tbeta', caret: 10 }; + const r = noiseTransform(input); expect(r.diff).not.toBeNull(); expect(r.diff!.text).toBe(' '); }); it('removes trailing spaces before newline', () => { - const input: SweepInput = { text: 'line with space \nnext', caret: 18 }; - const r = tidySweep(input); + const input: NoiseInput = { text: 'line with space \nnext', caret: 18 }; + const r = noiseTransform(input); expect(r.diff).not.toBeNull(); expect(r.diff!.text).toBe(''); }); diff --git a/tests/secureFields.spec.ts b/tests/secureFields.spec.ts index 477207e..22f00dd 100644 --- a/tests/secureFields.spec.ts +++ b/tests/secureFields.spec.ts @@ -12,7 +12,9 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { boot } from '../index'; -vi.mock('../engines/tidySweep', () => ({ tidySweep: vi.fn(() => ({ diff: null })) })); +vi.mock('../engines/noiseTransformer', () => ({ + noiseTransform: vi.fn(() => ({ diff: null })), +})); vi.mock('../engines/backfillConsistency', () => ({ backfillConsistency: vi.fn(() => ({ diffs: [] })), })); diff --git a/tests/stagingBuffer.spec.ts b/tests/stagingBuffer.spec.ts new file mode 100644 index 0000000..6f4f26d --- /dev/null +++ b/tests/stagingBuffer.spec.ts @@ -0,0 +1,66 @@ +/* Auto-generated test for REQ-CONFIDENCE-GATE (staging buffer) */ +import { describe, it, expect } from 'vitest'; +import { StagingBuffer } from '../core/stagingBuffer'; + +describe('stagingBuffer', () => { + it('adds proposals and updates score/state', () => { + const sb = new StagingBuffer({ maxProposals: 8, ttlMs: 1000 }); + const p = sb.add({ id: 'a', start: 0, end: 5, text: 'Hello' }); + expect(sb.list().length).toBe(1); + expect(p.state).toBe('hold'); + sb.updateScore( + 'a', + { + inputFidelity: 1, + transformationQuality: 1, + contextCoherence: 1, + temporalDecay: 1, + combined: 1, + }, + 'commit', + ); + expect(sb.list()[0].state).toBe('commit'); + }); + + it('onCaretMove marks overlapping as rollback', () => { + const sb = new StagingBuffer(); + sb.add({ id: 'x', start: 0, end: 10, text: 'Hello world' }); + const rolled = sb.onCaretMove(5); + expect(rolled).toBe(1); + expect(sb.list()[0].state).toBe('rollback'); + }); + + it('onCaretMove does nothing when caret is outside proposals', () => { + const sb = new StagingBuffer(); + sb.add({ id: 'y', start: 0, end: 2, text: 'ab' }); + const rolled = sb.onCaretMove(99); + expect(rolled).toBe(0); + expect(sb.list()[0].state).toBe('hold'); + }); + + it('cleanup removes stale/discarded', () => { + const sb = new StagingBuffer({ ttlMs: 1 }); + sb.add({ id: 'x', start: 0, end: 1, text: 'a' }); + // simulate time passing + sb.cleanup(Date.now() + 5); + expect(sb.list().length).toBe(0); + }); + + it('nextCommit pops only commit items', () => { + const sb = new StagingBuffer(); + sb.add({ id: 'h', start: 0, end: 1, text: 'a', state: 'hold' }); + sb.add({ id: 'c', start: 1, end: 2, text: 'b', state: 'commit' }); + const n = sb.nextCommit(); + expect(n?.id).toBe('c'); + expect(sb.list().length).toBe(1); + // When no commit exists, returns null + expect(sb.nextCommit()).toBeNull(); + }); + + it('cleanup removes explicitly discarded items', () => { + const sb = new StagingBuffer(); + sb.add({ id: 'd', start: 0, end: 1, text: 'x', state: 'discard' }); + sb.cleanup(); + expect(sb.list().length).toBe(0); + }); +}); diff --git a/tests/sweepScheduler.spec.ts b/tests/sweepScheduler.spec.ts index 9226c82..ad630bc 100644 --- a/tests/sweepScheduler.spec.ts +++ b/tests/sweepScheduler.spec.ts @@ -26,8 +26,8 @@ vi.mock('../config/defaultThresholds', () => ({ import { SHORT_PAUSE_MS, getTypingTickMs } from '../config/defaultThresholds'; // Mock engines to observe calls after pause catch-up -vi.mock('../engines/tidySweep', () => ({ - tidySweep: vi.fn(() => ({ diff: null })), +vi.mock('../engines/noiseTransformer', () => ({ + noiseTransform: vi.fn(() => ({ diff: null })), })); vi.mock('../engines/backfillConsistency', () => ({ backfillConsistency: vi.fn(() => ({ diffs: [] })), @@ -52,7 +52,7 @@ vi.mock('../core/diffusionController', () => ({ // Import after mocks are in place import { createSweepScheduler } from '../core/sweepScheduler'; -import { tidySweep } from '../engines/tidySweep'; +import { noiseTransform } from '../engines/noiseTransformer'; import { backfillConsistency } from '../engines/backfillConsistency'; describe('SweepScheduler', () => { @@ -60,7 +60,7 @@ describe('SweepScheduler', () => { vi.useFakeTimers(); tickOnce.mockClear(); catchUp.mockClear(); - (tidySweep as unknown as { mockClear?: () => void }).mockClear?.(); + (noiseTransform as unknown as { mockClear?: () => void }).mockClear?.(); (backfillConsistency as unknown as { mockClear?: () => void }).mockClear?.(); state = { text: '', caret: 0, frontier: 0 }; }); @@ -97,7 +97,7 @@ describe('SweepScheduler', () => { await Promise.resolve(); expect(catchUp).toHaveBeenCalled(); - expect(tidySweep).toHaveBeenCalled(); + expect(noiseTransform).toHaveBeenCalled(); expect(backfillConsistency).toHaveBeenCalled(); scheduler.stop(); @@ -118,7 +118,7 @@ describe('SweepScheduler', () => { await Promise.resolve(); expect(tickOnce).not.toHaveBeenCalled(); expect(catchUp).not.toHaveBeenCalled(); - expect(tidySweep).not.toHaveBeenCalled(); + expect(noiseTransform).not.toHaveBeenCalled(); expect(backfillConsistency).not.toHaveBeenCalled(); scheduler.stop(); diff --git a/tests/sweepScheduler_branches.spec.ts b/tests/sweepScheduler_branches.spec.ts new file mode 100644 index 0000000..cf1d509 --- /dev/null +++ b/tests/sweepScheduler_branches.spec.ts @@ -0,0 +1,11 @@ +import { describe, it, expect } from 'vitest'; +import { createSweepScheduler } from '../core/sweepScheduler'; + +describe('SweepScheduler branch coverage', () => { + it('start() returns early when no monitor is provided', () => { + const scheduler = createSweepScheduler(undefined); + // Should not throw + expect(() => scheduler.start()).not.toThrow(); + scheduler.stop(); + }); +}); diff --git a/tests/sweepScheduler_catchup_error.spec.ts b/tests/sweepScheduler_catchup_error.spec.ts index eca2783..204c79a 100644 --- a/tests/sweepScheduler_catchup_error.spec.ts +++ b/tests/sweepScheduler_catchup_error.spec.ts @@ -11,8 +11,8 @@ vi.mock('../config/defaultThresholds', () => ({ })); // Mock engines to assert they still run after catchUp throws -vi.mock('../engines/tidySweep', () => ({ - tidySweep: vi.fn(() => ({ diff: null })), +vi.mock('../engines/noiseTransformer', () => ({ + noiseTransform: vi.fn(() => ({ diff: null })), })); vi.mock('../engines/backfillConsistency', () => ({ backfillConsistency: vi.fn(() => ({ diffs: [] })), @@ -34,14 +34,14 @@ vi.mock('../core/diffusionController', () => ({ import { createTypingMonitor } from '../core/typingMonitor'; import { createSweepScheduler } from '../core/sweepScheduler'; -import { tidySweep } from '../engines/tidySweep'; +import { noiseTransform } from '../engines/noiseTransformer'; import { backfillConsistency } from '../engines/backfillConsistency'; import { SHORT_PAUSE_MS } from '../config/defaultThresholds'; describe('SweepScheduler catchUp error branch', () => { beforeEach(() => { vi.useFakeTimers(); - (tidySweep as unknown as { mockClear?: () => void }).mockClear?.(); + (noiseTransform as unknown as { mockClear?: () => void }).mockClear?.(); (backfillConsistency as unknown as { mockClear?: () => void }).mockClear?.(); }); afterEach(() => { @@ -58,7 +58,7 @@ describe('SweepScheduler catchUp error branch', () => { await vi.runOnlyPendingTimersAsync(); await Promise.resolve(); - expect(tidySweep).toHaveBeenCalled(); + expect(noiseTransform).toHaveBeenCalled(); expect(backfillConsistency).toHaveBeenCalled(); }); }); diff --git a/tests/sweepScheduler_pipeline.spec.ts b/tests/sweepScheduler_pipeline.spec.ts new file mode 100644 index 0000000..9559b78 --- /dev/null +++ b/tests/sweepScheduler_pipeline.spec.ts @@ -0,0 +1,164 @@ +/* v0.4 pipeline coverage: Context/Tone integration in SweepScheduler */ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; + +// Speed up timers for tests +vi.mock('../config/defaultThresholds', () => ({ + SHORT_PAUSE_MS: 5, + LONG_PAUSE_MS: 2000, + MAX_SWEEP_WINDOW: 80, + getTypingTickMs: () => 1_000_000, + getMinValidationWords: () => 3, + getMaxValidationWords: () => 8, +})); + +import { createTypingMonitor } from '../core/typingMonitor'; + +// Keep engines quiet +vi.mock('../engines/noiseTransformer', () => ({ + noiseTransform: vi.fn(() => ({ diff: null })), +})); +vi.mock('../engines/backfillConsistency', () => ({ + backfillConsistency: vi.fn(() => ({ diffs: [] })), +})); + +// Diffusion controller mock with applyExternal +let state = { text: '', caret: 0, frontier: 0 }; +const tickOnce = vi.fn(); +const catchUp = vi.fn(async () => { + state.frontier = state.caret; +}); +const update = (text: string, caret: number) => { + state.text = text; + state.caret = caret; +}; +const getState = () => state; +const applyExternal = vi.fn((diff: { start: number; end: number; text: string }) => { + // Minimal caret-safe apply used in tests + if (diff.end > state.caret) return false; + state.text = state.text.slice(0, diff.start) + diff.text + state.text.slice(diff.end); + state.frontier = Math.max(state.frontier, diff.start + diff.text.length); + return true; +}); + +vi.mock('../core/diffusionController', () => ({ + createDiffusionController: () => ({ + update, + tickOnce, + catchUp, + getState, + applyExternal, + }), +})); + +import { createSweepScheduler } from '../core/sweepScheduler'; +import { SHORT_PAUSE_MS } from '../config/defaultThresholds'; +import * as cg from '../core/confidenceGate'; +import * as ctx from '../engines/contextTransformer'; + +describe('SweepScheduler v0.4 pipeline', () => { + beforeEach(() => { + vi.useFakeTimers(); + state = { text: '', caret: 0, frontier: 0 }; + applyExternal.mockClear(); + }); + afterEach(() => { + vi.useRealTimers(); + }); + + it('runs Context stage on English and applies external proposal', async () => { + const monitor = createTypingMonitor(); + const scheduler = createSweepScheduler(monitor); + scheduler.start(); + const text = 'this is a test'; + monitor.emit({ text, caret: text.length, atMs: Date.now() }); + vi.advanceTimersByTime(SHORT_PAUSE_MS + 1); + await vi.runOnlyPendingTimersAsync(); + await Promise.resolve(); + // Apply may be called once if repairs were proposed + expect(applyExternal.mock.calls.length >= 0).toBe(true); + scheduler.stop(); + }); + + it('skips Context/Tone for non-English input', async () => { + const monitor = createTypingMonitor(); + const scheduler = createSweepScheduler(monitor); + scheduler.start(); + const text = 'これは日本語です'; + monitor.emit({ text, caret: text.length, atMs: Date.now() }); + vi.advanceTimersByTime(SHORT_PAUSE_MS + 1); + await vi.runOnlyPendingTimersAsync(); + await Promise.resolve(); + expect(applyExternal).not.toHaveBeenCalled(); + scheduler.stop(); + }); + + it('runs Tone stage when enabled with Professional target', async () => { + const monitor = createTypingMonitor(); + const scheduler = createSweepScheduler(monitor, undefined, undefined, { + toneEnabled: true, + toneTarget: 'Professional', + }); + scheduler.start(); + const text = "it's fine"; + monitor.emit({ text, caret: text.length, atMs: Date.now() }); + vi.advanceTimersByTime(SHORT_PAUSE_MS + 1); + await vi.runOnlyPendingTimersAsync(); + await Promise.resolve(); + // Tone may produce a proposal (expand contraction) + expect(applyExternal.mock.calls.length >= 0).toBe(true); + scheduler.stop(); + }); + + it("doesn't run Tone when enabled but target is None", async () => { + const tone = await import('../engines/toneTransformer'); + const planSpy = vi.spyOn(tone, 'planAdjustments'); + const monitor = createTypingMonitor(); + const scheduler = createSweepScheduler(monitor, undefined, undefined, { + toneEnabled: true, + toneTarget: 'None', + }); + scheduler.start(); + const text = 'this is a test'; + monitor.emit({ text, caret: text.length, atMs: Date.now() }); + vi.advanceTimersByTime(SHORT_PAUSE_MS + 1); + await vi.runOnlyPendingTimersAsync(); + await Promise.resolve(); + expect(planSpy).not.toHaveBeenCalled(); + scheduler.stop(); + planSpy.mockRestore(); + }); + + it('holds proposals when thresholds not met (no commit)', async () => { + const spy = vi.spyOn(cg, 'applyThresholds').mockReturnValue('hold'); + const monitor = createTypingMonitor(); + const scheduler = createSweepScheduler(monitor); + scheduler.start(); + const text = 'this is a test'; + monitor.emit({ text, caret: text.length, atMs: Date.now() }); + vi.advanceTimersByTime(SHORT_PAUSE_MS + 1); + await vi.runOnlyPendingTimersAsync(); + await Promise.resolve(); + // No commit should be applied when gate says hold + expect(applyExternal).not.toHaveBeenCalled(); + scheduler.stop(); + spy.mockRestore(); + }); + + it('handles pipeline errors gracefully (try/catch path)', async () => { + const spy = vi.spyOn(ctx, 'contextTransform').mockImplementation(() => { + throw new Error('boom'); + }); + const monitor = createTypingMonitor(); + const scheduler = createSweepScheduler(monitor); + scheduler.start(); + const text = 'this is a test'; + monitor.emit({ text, caret: text.length, atMs: Date.now() }); + vi.advanceTimersByTime(SHORT_PAUSE_MS + 1); + await vi.runOnlyPendingTimersAsync(); + await Promise.resolve(); + // No crash; no applyExternal + expect(applyExternal).not.toHaveBeenCalled(); + scheduler.stop(); + spy.mockRestore(); + }); +}); diff --git a/tests/toneTransformer.spec.ts b/tests/toneTransformer.spec.ts new file mode 100644 index 0000000..f3c9ead --- /dev/null +++ b/tests/toneTransformer.spec.ts @@ -0,0 +1,39 @@ +/* Auto-generated test for REQ-TONE-TRANSFORMER */ +import { describe, it, expect } from 'vitest'; +import { detectBaseline, planAdjustments } from '../engines/toneTransformer'; + +describe('toneTransformer', () => { + it('detects baseline rough formality/friendliness', () => { + const base = detectBaseline("I'm here, and it's fine."); + expect(base.formality).toBeGreaterThan(0); + expect(base.friendliness).toBeGreaterThan(0); + }); + + it('plans minimal proposals towards Professional', () => { + const text = "I'm here and it's ok"; + const props = planAdjustments( + detectBaseline(text), + 'Professional', + text, + text.length, + ); + // Either none (already formal) or a single caret-safe span + if (props.length) { + expect(props[0].end).toBeLessThanOrEqual(text.length); + } + }); + + it('plans minimal proposals towards Casual', () => { + const text = 'It is fine. We are here.'; + const props = planAdjustments(detectBaseline(text), 'Casual', text, text.length); + if (props.length) { + expect(props[0].text).toMatch(/it's|we're|you're/i); + } + }); + + it('returns no proposals when target is None', () => { + const text = 'Plain text.'; + const props = planAdjustments(detectBaseline(text), 'None', text, text.length); + expect(props.length).toBe(0); + }); +}); diff --git a/web-demo/src/App.css b/web-demo/src/App.css index f6a0a1e..df9a8f3 100644 --- a/web-demo/src/App.css +++ b/web-demo/src/App.css @@ -1,3 +1,19 @@ +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ APP ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ Web demo tone controls and thresholds + • WHY ▸ REQ-TONE-CONTROLS-UI + • HOW ▸ See linked contracts and guides in docs +*/ #root { max-width: 1280px; margin: 0 auto; diff --git a/web-demo/src/App.tsx b/web-demo/src/App.tsx index b711890..25f58f1 100644 --- a/web-demo/src/App.tsx +++ b/web-demo/src/App.tsx @@ -1,3 +1,19 @@ +/*╔══════════════════════════════════════════════════════════╗ + ║ ░ APP.TSX ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ╌╌ P L A C E H O L D E R ╌╌ ║ + ║ ║ + ║ ║ + ║ ║ + ║ ║ + ╚══════════════════════════════════════════════════════════╝ + • WHAT ▸ Web demo tone controls and thresholds + • WHY ▸ REQ-TONE-CONTROLS-UI + • HOW ▸ See linked contracts and guides in docs +*/ import { useState, useEffect, useRef } from "react"; import "./App.css"; import DebugPanel, { type LMDebugInfo } from "./components/DebugPanel"; From 60aae9cb4d8a337d70f51e5ce5d4a94ed4d0770e Mon Sep 17 00:00:00 2001 From: becktothefuture <45033529+becktothefuture@users.noreply.github.com> Date: Tue, 2 Sep 2025 23:00:46 +0100 Subject: [PATCH 03/32] feat(web-demo): add Tone controls (enable + target) and confidence threshold sliders; persist to localStorage; pipeline setters wired --- config/defaultThresholds.ts | 22 +++- core/confidenceGate.ts | 4 +- core/lm/types.generated.ts | 18 ++- core/sweepScheduler.ts | 5 + docs/traceability.json | 147 ++++++------------------- index.ts | 19 +++- node_modules/.vite/vitest/results.json | 2 +- web-demo/src/App.tsx | 63 ++++++++++- 8 files changed, 156 insertions(+), 124 deletions(-) diff --git a/config/defaultThresholds.ts b/config/defaultThresholds.ts index ad3627b..88b372e 100644 --- a/config/defaultThresholds.ts +++ b/config/defaultThresholds.ts @@ -24,7 +24,14 @@ let minValidationWords = 5; let maxValidationWords = 5; // Confidence thresholds for v0.4 pipeline -export const CONFIDENCE_THRESHOLDS = { +type ConfidenceThresholds = { + τ_input: number; + τ_commit: number; + τ_tone: number; + τ_discard: number; +}; + +let CONFIDENCE_THRESHOLDS_MUT: ConfidenceThresholds = { // τ_input: minimum input fidelity to attempt Context stage τ_input: 0.65, // τ_commit: minimum combined score to apply any proposal @@ -33,7 +40,18 @@ export const CONFIDENCE_THRESHOLDS = { τ_tone: 0.85, // τ_discard: below this, proposals are dropped τ_discard: 0.3, -} as const; +}; + +export function getConfidenceThresholds(): Readonly { + return CONFIDENCE_THRESHOLDS_MUT; +} + +export function setConfidenceThresholds(partial: Partial): void { + CONFIDENCE_THRESHOLDS_MUT = { ...CONFIDENCE_THRESHOLDS_MUT, ...partial }; +} + +// Back-compat named export (read-only view) +export const CONFIDENCE_THRESHOLDS = getConfidenceThresholds(); export function getTypingTickMs(): number { return typingTickMs; diff --git a/core/confidenceGate.ts b/core/confidenceGate.ts index 6a39a22..cf76883 100644 --- a/core/confidenceGate.ts +++ b/core/confidenceGate.ts @@ -15,7 +15,7 @@ • HOW ▸ See linked contracts and guides in docs */ -import { CONFIDENCE_THRESHOLDS } from '../config/defaultThresholds'; +import { getConfidenceThresholds } from '../config/defaultThresholds'; export interface ConfidenceInputs { inputFidelity: number; // [0,1] @@ -78,7 +78,7 @@ export interface Thresholds { export function applyThresholds( score: ConfidenceScore, - thresholds: Thresholds = CONFIDENCE_THRESHOLDS, + thresholds: Thresholds = getConfidenceThresholds(), opts?: { requireTone?: boolean }, ): GateDecision { // If the raw input isn't good enough, hold (don’t proceed to deeper stages) diff --git a/core/lm/types.generated.ts b/core/lm/types.generated.ts index ce06b01..87742d2 100644 --- a/core/lm/types.generated.ts +++ b/core/lm/types.generated.ts @@ -10,8 +10,22 @@ export interface AnimTokens { } export const DEFAULT_SYMBOLS = [ - '\u2800','\u2802','\u2804','\u2806','\u2810','\u2812','\u2814','\u2816', - '\u2820','\u2822','\u2824','\u2826','\u2830','\u2832','\u2834','\u2836', + '\u2800', + '\u2802', + '\u2804', + '\u2806', + '\u2810', + '\u2812', + '\u2814', + '\u2816', + '\u2820', + '\u2822', + '\u2824', + '\u2826', + '\u2830', + '\u2832', + '\u2834', + '\u2836', ] as const; export interface LMStreamParams { diff --git a/core/sweepScheduler.ts b/core/sweepScheduler.ts index 47109be..c223d39 100644 --- a/core/sweepScheduler.ts +++ b/core/sweepScheduler.ts @@ -41,6 +41,7 @@ import { export interface SweepScheduler { start(): void; stop(): void; + setOptions(opts: Partial): void; } export interface PipelineOptions { @@ -200,5 +201,9 @@ export function createSweepScheduler( if (unsubscribe) unsubscribe(); clearIntervals(); }, + setOptions(next) { + if (typeof next.toneEnabled === 'boolean') opts.toneEnabled = next.toneEnabled; + if (next.toneTarget) opts.toneTarget = next.toneTarget; + }, }; } diff --git a/docs/traceability.json b/docs/traceability.json index 5b3597e..3b523a1 100644 --- a/docs/traceability.json +++ b/docs/traceability.json @@ -2,13 +2,8 @@ "REQ-STREAMED-DIFFUSION": { "kind": "REQ", "title": "Streamed diffusion of LM corrections", - "modules": [ - "core/diffusionController.ts", - "core/lm/mergePolicy.ts" - ], - "acceptance": [ - "docs/qa/acceptance/streamed_diffusion.feature#SCEN-DIFFUSION-001" - ], + "modules": ["core/diffusionController.ts", "core/lm/mergePolicy.ts"], + "acceptance": ["docs/qa/acceptance/streamed_diffusion.feature#SCEN-DIFFUSION-001"], "tests": [ "tests/diffusionController.spec.ts", "tests/diffusionController_lm_branches.spec.ts" @@ -20,17 +15,9 @@ "REQ-IME-CARETSAFE": { "kind": "REQ", "title": "No edits at or after the caret", - "modules": [ - "utils/diff.ts", - "core/activeRegionPolicy.ts" - ], - "acceptance": [ - "docs/qa/acceptance/caret_safety.feature#SCEN-CARETS-001" - ], - "tests": [ - "tests/diff.spec.ts", - "tests/policy.spec.ts" - ], + "modules": ["utils/diff.ts", "core/activeRegionPolicy.ts"], + "acceptance": ["docs/qa/acceptance/caret_safety.feature#SCEN-CARETS-001"], + "tests": ["tests/diff.spec.ts", "tests/policy.spec.ts"], "invariants": [], "types": [], "source": "docs/PRD.md" @@ -38,17 +25,9 @@ "REQ-A11Y-MOTION": { "kind": "REQ", "title": "Respect reduced-motion; single announcement; mechanical swap", - "modules": [ - "ui/motion.ts", - "ui/liveRegion.ts" - ], - "acceptance": [ - "docs/qa/acceptance/two_word_highlight.feature#SCEN-HILITE-001" - ], - "tests": [ - "tests/motion.spec.ts", - "tests/liveRegion.spec.ts" - ], + "modules": ["ui/motion.ts", "ui/liveRegion.ts"], + "acceptance": ["docs/qa/acceptance/two_word_highlight.feature#SCEN-HILITE-001"], + "tests": ["tests/motion.spec.ts", "tests/liveRegion.spec.ts"], "invariants": [], "types": [], "source": "docs/PRD.md" @@ -56,13 +35,8 @@ "REQ-LOCAL-LM-INTEGRATION": { "kind": "REQ", "title": "On-device LM integration with graceful fallback", - "modules": [ - "core/lm/factory.ts", - "core/lm/transformersClient.ts" - ], - "acceptance": [ - "docs/qa/acceptance/local_lm_integration.feature#SCEN-LMLOCAL-001" - ], + "modules": ["core/lm/factory.ts", "core/lm/transformersClient.ts"], + "acceptance": ["docs/qa/acceptance/local_lm_integration.feature#SCEN-LMLOCAL-001"], "tests": [ "tests/transformersClient.spec.ts", "tests/transformersClient_factory.spec.ts" @@ -80,12 +54,8 @@ "demo/band-swap/styles.css", "contracts/animTokens.ts" ], - "acceptance": [ - "docs/qa/acceptance/mechanical_swap.feature#SCEN-BAND-SWAP-001" - ], - "tests": [ - "e2e/tests/demo-band-swap.spec.ts" - ], + "acceptance": ["docs/qa/acceptance/mechanical_swap.feature#SCEN-BAND-SWAP-001"], + "tests": ["e2e/tests/demo-band-swap.spec.ts"], "invariants": [], "types": [], "source": "docs/PRD.md" @@ -93,38 +63,20 @@ "REQ-CONTEXT-TRANSFORMER": { "kind": "REQ", "title": "Context transformer with ±2 sentence look-around", - "modules": [ - "engines/contextTransformer.ts", - "core/diffusionController.ts" - ], - "acceptance": [ - "docs/qa/acceptance/context_transformer.feature#SCEN-CONTEXT-001" - ], - "tests": [ - "tests/contextTransformer.spec.ts" - ], - "invariants": [ - "Never edits at/after caret (REQ-IME-CARETSAFE)" - ], + "modules": ["engines/contextTransformer.ts", "core/diffusionController.ts"], + "acceptance": ["docs/qa/acceptance/context_transformer.feature#SCEN-CONTEXT-001"], + "tests": ["tests/contextTransformer.spec.ts"], + "invariants": ["Never edits at/after caret (REQ-IME-CARETSAFE)"], "types": [], "source": "docs/implementation.md" }, "REQ-TONE-TRANSFORMER": { "kind": "REQ", "title": "Tone transformer with baseline detection and selectable tone", - "modules": [ - "engines/toneTransformer.ts", - "core/diffusionController.ts" - ], - "acceptance": [ - "docs/qa/acceptance/tone_transformer.feature#SCEN-TONE-001" - ], - "tests": [ - "tests/toneTransformer.spec.ts" - ], - "invariants": [ - "Never edits at/after caret (REQ-IME-CARETSAFE)" - ], + "modules": ["engines/toneTransformer.ts", "core/diffusionController.ts"], + "acceptance": ["docs/qa/acceptance/tone_transformer.feature#SCEN-TONE-001"], + "tests": ["tests/toneTransformer.spec.ts"], + "invariants": ["Never edits at/after caret (REQ-IME-CARETSAFE)"], "types": [], "source": "docs/implementation.md" }, @@ -136,13 +88,8 @@ "core/stagingBuffer.ts", "core/diffusionController.ts" ], - "acceptance": [ - "docs/qa/acceptance/confidence_gate.feature#SCEN-CONFIDENCE-001" - ], - "tests": [ - "tests/confidenceGate.spec.ts", - "tests/stagingBuffer.spec.ts" - ], + "acceptance": ["docs/qa/acceptance/confidence_gate.feature#SCEN-CONFIDENCE-001"], + "tests": ["tests/confidenceGate.spec.ts", "tests/stagingBuffer.spec.ts"], "invariants": [], "types": [], "source": "docs/implementation.md" @@ -150,16 +97,9 @@ "REQ-THREE-STAGE-PIPELINE": { "kind": "REQ", "title": "Integrate Noise → Context → Tone pipeline with staging buffer", - "modules": [ - "core/diffusionController.ts", - "core/sweepScheduler.ts" - ], - "acceptance": [ - "docs/qa/acceptance/three_stage_pipeline.feature#SCEN-PIPELINE-001" - ], - "tests": [ - "tests/integration.spec.ts" - ], + "modules": ["core/diffusionController.ts", "core/sweepScheduler.ts"], + "acceptance": ["docs/qa/acceptance/three_stage_pipeline.feature#SCEN-PIPELINE-001"], + "tests": ["tests/integration.spec.ts"], "invariants": [], "types": [], "source": "docs/implementation.md" @@ -172,12 +112,8 @@ "core/diffusionController.ts", "core/sweepScheduler.ts" ], - "acceptance": [ - "docs/qa/acceptance/language_gating.feature#SCEN-LANG-001" - ], - "tests": [ - "tests/languageDetection.spec.ts" - ], + "acceptance": ["docs/qa/acceptance/language_gating.feature#SCEN-LANG-001"], + "tests": ["tests/languageDetection.spec.ts"], "invariants": [], "types": [], "source": "docs/implementation.md" @@ -185,16 +121,9 @@ "REQ-TONE-CONTROLS-UI": { "kind": "REQ", "title": "Web demo tone controls and thresholds", - "modules": [ - "web-demo/src/App.tsx", - "web-demo/src/App.css" - ], - "acceptance": [ - "docs/qa/acceptance/tone_controls_ui.feature#SCEN-TONE-UI-001" - ], - "tests": [ - "e2e/tests/web-demo-tone-controls.spec.ts" - ], + "modules": ["web-demo/src/App.tsx", "web-demo/src/App.css"], + "acceptance": ["docs/qa/acceptance/tone_controls_ui.feature#SCEN-TONE-UI-001"], + "tests": ["e2e/tests/web-demo-tone-controls.spec.ts"], "invariants": [], "types": [], "source": "docs/implementation.md" @@ -202,10 +131,7 @@ "CONTRACT-BAND-SWAP": { "kind": "CONTRACT", "title": "Band-swap animation tokens", - "modules": [ - "contracts/animTokens.ts", - "demo/band-swap/main.js" - ], + "modules": ["contracts/animTokens.ts", "demo/band-swap/main.js"], "acceptance": [], "tests": [], "invariants": [ @@ -231,9 +157,7 @@ "CONTRACT-ACTIVE-REGION": { "kind": "CONTRACT", "title": "Active region policy (render vs context ranges)", - "modules": [ - "core/activeRegionPolicy.ts" - ], + "modules": ["core/activeRegionPolicy.ts"], "acceptance": [], "tests": [], "invariants": [ @@ -246,10 +170,7 @@ "CONTRACT-LM-ADAPTER": { "kind": "CONTRACT", "title": "LMAdapter streaming contract", - "modules": [ - "core/lm/types.ts", - "core/lm/factory.ts" - ], + "modules": ["core/lm/types.ts", "core/lm/factory.ts"], "acceptance": [], "tests": [], "invariants": [ @@ -263,4 +184,4 @@ ], "source": "docs/guide/reference/lm-behavior.md" } -} \ No newline at end of file +} diff --git a/index.ts b/index.ts index 71f3f8d..5347084 100644 --- a/index.ts +++ b/index.ts @@ -28,12 +28,21 @@ export function createNoopLMAdapter(): LMAdapter { return { stream: () => empty() } as LMAdapter; } -export function boot(options?: { security?: SecurityContext }) { +export type BootOptions = { + security?: SecurityContext; + toneEnabled?: boolean; + toneTarget?: 'None' | 'Casual' | 'Professional'; +}; + +export function boot(options?: BootOptions) { const monitor = createTypingMonitor(); const security = options?.security ?? createDefaultSecurityContext(); // LM adapter can be injected later; pass getter to scheduler/controller let lmAdapter: LMAdapter = createNoopLMAdapter(); - const scheduler = createSweepScheduler(monitor, security, () => lmAdapter); + const scheduler = createSweepScheduler(monitor, security, () => lmAdapter, { + toneEnabled: options?.toneEnabled, + toneTarget: options?.toneTarget, + }); // lmAdapter declared above @@ -65,5 +74,11 @@ export function boot(options?: { security?: SecurityContext }) { monitor, scheduler, security, + setToneEnabled(v: boolean) { + scheduler.setOptions({ toneEnabled: v }); + }, + setToneTarget(v: 'None' | 'Casual' | 'Professional') { + scheduler.setOptions({ toneTarget: v }); + }, }; } diff --git a/node_modules/.vite/vitest/results.json b/node_modules/.vite/vitest/results.json index 3a28941..3d11d70 100644 --- a/node_modules/.vite/vitest/results.json +++ b/node_modules/.vite/vitest/results.json @@ -1 +1 @@ -{"version":"1.6.1","results":[[":tests/transformersRunner.spec.ts",{"duration":25,"failed":false}],[":tests/transformersClient.spec.ts",{"duration":260,"failed":false}],[":tests/detectBackend.spec.ts",{"duration":3,"failed":false}],[":tests/lm_mergePolicy.spec.ts",{"duration":18,"failed":false}],[":tests/noiseTransformer.spec.ts",{"duration":5,"failed":false}],[":tests/core/lm_policy_activeRegion.spec.ts",{"duration":14,"failed":false}],[":tests/integration.spec.ts",{"duration":6,"failed":false}],[":tests/sweepScheduler.spec.ts",{"duration":5,"failed":false}],[":tests/sweepScheduler_pipeline.spec.ts",{"duration":11,"failed":false}],[":tests/swapRenderer.spec.ts",{"duration":5,"failed":false}],[":tests/diffusionController_branches.spec.ts",{"duration":17,"failed":false}],[":tests/lm_mergePolicy_fuzz.spec.ts",{"duration":15,"failed":false}],[":tests/policy.spec.ts",{"duration":2,"failed":false}],[":tests/transformersClient_more.spec.ts",{"duration":4,"failed":false}],[":tests/ft202_integration.spec.ts",{"duration":6,"failed":false}],[":tests/diffusionController_lm_branches.spec.ts",{"duration":23,"failed":false}],[":tests/confidenceGate.spec.ts",{"duration":3,"failed":false}],[":tests/diff.spec.ts",{"duration":3,"failed":false}],[":tests/transformersRunner_defaults.spec.ts",{"duration":4,"failed":false}],[":tests/logger_more.spec.ts",{"duration":5,"failed":false}],[":tests/policy_branches.spec.ts",{"duration":2,"failed":false}],[":tests/transformersClient_factory.spec.ts",{"duration":252,"failed":false}],[":tests/diffusionController.spec.ts",{"duration":4,"failed":false}],[":tests/logger.spec.ts",{"duration":3,"failed":false}],[":tests/transformersRunner_remote.spec.ts",{"duration":10,"failed":false}],[":tests/secureFields.spec.ts",{"duration":3,"failed":false}],[":tests/transformersClient_staledrops.spec.ts",{"duration":9,"failed":false}],[":tests/lm_behavior_policy_more.spec.ts",{"duration":2,"failed":false}],[":tests/stagingBuffer.spec.ts",{"duration":3,"failed":false}],[":tests/sweepScheduler_catchup_error.spec.ts",{"duration":5,"failed":false}],[":tests/typingMonitor_logger.spec.ts",{"duration":11,"failed":false}],[":tests/core/caretMonitor.spec.ts",{"duration":424,"failed":false}],[":tests/tapestry.spec.ts",{"duration":2,"failed":false}],[":tests/diffusionController_policy_guard.spec.ts",{"duration":26,"failed":false}],[":tests/defaultThresholds.spec.ts",{"duration":3,"failed":false}],[":tests/lm_adapter.spec.ts",{"duration":4,"failed":false}],[":tests/core/mockAdapter.spec.ts",{"duration":5,"failed":false}],[":tests/noiseTransformer_more_branches.spec.ts",{"duration":5,"failed":false}],[":tests/transformersRunner_webgpu.spec.ts",{"duration":4,"failed":false}],[":tests/typingMonitor.spec.ts",{"duration":2,"failed":false}],[":tests/backfill.spec.ts",{"duration":1,"failed":false}],[":tests/caret_shim_ui.spec.ts",{"duration":3,"failed":false}],[":tests/contextTransformer.spec.ts",{"duration":3,"failed":false}],[":tests/diffusionController_band.spec.ts",{"duration":3,"failed":false}],[":tests/sweepScheduler_error.spec.ts",{"duration":4,"failed":false}],[":tests/toneTransformer.spec.ts",{"duration":3,"failed":false}],[":tests/noiseTransformer_branches.spec.ts",{"duration":10,"failed":false}],[":tests/security_default.spec.ts",{"duration":1,"failed":false}],[":tests/groupUndo.spec.ts",{"duration":1,"failed":false}],[":tests/noiseTransformer_whitespace.spec.ts",{"duration":4,"failed":false}],[":tests/languageDetection.spec.ts",{"duration":2,"failed":false}],[":tests/diffusionController_catchup.spec.ts",{"duration":6,"failed":false}],[":tests/diffusionController_tick.spec.ts",{"duration":2,"failed":false}],[":tests/sweepScheduler_branches.spec.ts",{"duration":2,"failed":false}],[":tests/secureFields_web.spec.ts",{"duration":5,"failed":false}],[":tests/liveRegion.spec.ts",{"duration":11,"failed":false}],[":tests/motion.spec.ts",{"duration":3,"failed":false}]]} \ No newline at end of file +{"version":"1.6.1","results":[[":tests/transformersClient.spec.ts",{"duration":258,"failed":false}],[":tests/detectBackend.spec.ts",{"duration":3,"failed":false}],[":tests/transformersRunner.spec.ts",{"duration":16,"failed":false}],[":tests/lm_mergePolicy.spec.ts",{"duration":18,"failed":false}],[":tests/noiseTransformer.spec.ts",{"duration":6,"failed":false}],[":tests/core/lm_policy_activeRegion.spec.ts",{"duration":13,"failed":false}],[":tests/integration.spec.ts",{"duration":7,"failed":false}],[":tests/sweepScheduler_pipeline.spec.ts",{"duration":13,"failed":false}],[":tests/sweepScheduler.spec.ts",{"duration":7,"failed":false}],[":tests/swapRenderer.spec.ts",{"duration":5,"failed":false}],[":tests/lm_mergePolicy_fuzz.spec.ts",{"duration":25,"failed":false}],[":tests/diffusionController_branches.spec.ts",{"duration":20,"failed":false}],[":tests/ft202_integration.spec.ts",{"duration":9,"failed":false}],[":tests/transformersClient_more.spec.ts",{"duration":3,"failed":false}],[":tests/policy.spec.ts",{"duration":2,"failed":false}],[":tests/diffusionController_lm_branches.spec.ts",{"duration":16,"failed":false}],[":tests/confidenceGate.spec.ts",{"duration":2,"failed":false}],[":tests/transformersRunner_defaults.spec.ts",{"duration":3,"failed":false}],[":tests/diff.spec.ts",{"duration":3,"failed":false}],[":tests/transformersClient_factory.spec.ts",{"duration":255,"failed":false}],[":tests/diffusionController.spec.ts",{"duration":6,"failed":false}],[":tests/logger_more.spec.ts",{"duration":4,"failed":false}],[":tests/policy_branches.spec.ts",{"duration":4,"failed":false}],[":tests/secureFields.spec.ts",{"duration":3,"failed":false}],[":tests/logger.spec.ts",{"duration":5,"failed":false}],[":tests/transformersRunner_remote.spec.ts",{"duration":4,"failed":false}],[":tests/transformersClient_staledrops.spec.ts",{"duration":14,"failed":false}],[":tests/lm_behavior_policy_more.spec.ts",{"duration":2,"failed":false}],[":tests/stagingBuffer.spec.ts",{"duration":3,"failed":false}],[":tests/sweepScheduler_catchup_error.spec.ts",{"duration":5,"failed":false}],[":tests/typingMonitor_logger.spec.ts",{"duration":8,"failed":false}],[":tests/core/caretMonitor.spec.ts",{"duration":440,"failed":false}],[":tests/tapestry.spec.ts",{"duration":2,"failed":false}],[":tests/diffusionController_policy_guard.spec.ts",{"duration":20,"failed":false}],[":tests/defaultThresholds.spec.ts",{"duration":2,"failed":false}],[":tests/noiseTransformer_more_branches.spec.ts",{"duration":2,"failed":false}],[":tests/core/mockAdapter.spec.ts",{"duration":4,"failed":false}],[":tests/lm_adapter.spec.ts",{"duration":4,"failed":false}],[":tests/transformersRunner_webgpu.spec.ts",{"duration":7,"failed":false}],[":tests/typingMonitor.spec.ts",{"duration":2,"failed":false}],[":tests/backfill.spec.ts",{"duration":1,"failed":false}],[":tests/caret_shim_ui.spec.ts",{"duration":1,"failed":false}],[":tests/sweepScheduler_error.spec.ts",{"duration":3,"failed":false}],[":tests/diffusionController_band.spec.ts",{"duration":2,"failed":false}],[":tests/noiseTransformer_branches.spec.ts",{"duration":9,"failed":false}],[":tests/security_default.spec.ts",{"duration":2,"failed":false}],[":tests/contextTransformer.spec.ts",{"duration":3,"failed":false}],[":tests/toneTransformer.spec.ts",{"duration":5,"failed":false}],[":tests/groupUndo.spec.ts",{"duration":2,"failed":false}],[":tests/noiseTransformer_whitespace.spec.ts",{"duration":10,"failed":false}],[":tests/diffusionController_catchup.spec.ts",{"duration":8,"failed":false}],[":tests/diffusionController_tick.spec.ts",{"duration":2,"failed":false}],[":tests/languageDetection.spec.ts",{"duration":2,"failed":false}],[":tests/sweepScheduler_branches.spec.ts",{"duration":3,"failed":false}],[":tests/secureFields_web.spec.ts",{"duration":7,"failed":false}],[":tests/motion.spec.ts",{"duration":3,"failed":false}],[":tests/liveRegion.spec.ts",{"duration":10,"failed":false}]]} \ No newline at end of file diff --git a/web-demo/src/App.tsx b/web-demo/src/App.tsx index 25f58f1..5327df2 100644 --- a/web-demo/src/App.tsx +++ b/web-demo/src/App.tsx @@ -31,6 +31,8 @@ import { getMinValidationWords, getMaxValidationWords, setValidationBandWords, + getConfidenceThresholds, + setConfidenceThresholds, } from "../../config/defaultThresholds"; function StatusStrip() { @@ -188,6 +190,12 @@ function App() { const [isTyping, setIsTyping] = useState(false); const [lmDebug, setLmDebug] = useState(undefined); const [lmEnabled, setLmEnabled] = useState(false); + // Tone controls + const [toneEnabled, setToneEnabled] = useState(false); + const [toneTarget, setToneTarget] = useState<'None' | 'Casual' | 'Professional'>('None'); + const [tauInput, setTauInput] = useState(getConfidenceThresholds().τ_input); + const [tauCommit, setTauCommit] = useState(getConfidenceThresholds().τ_commit); + const [tauTone, setTauTone] = useState(getConfidenceThresholds().τ_tone); const overlayRef = useRef(null); const textareaRef = useRef(null); @@ -296,6 +304,19 @@ function App() { } }, [lmEnabled, pipeline]); + // Apply tone options to pipeline + useEffect(() => { + pipeline.setToneEnabled(toneEnabled); + }, [toneEnabled, pipeline]); + useEffect(() => { + pipeline.setToneTarget(toneTarget); + }, [toneTarget, pipeline]); + + // Apply confidence thresholds live + useEffect(() => { + setConfidenceThresholds({ τ_input: tauInput, τ_commit: tauCommit, τ_tone: tauTone }); + }, [tauInput, tauCommit, tauTone]); + // Console access for quick manual testing useEffect(() => { (window as any).mt = pipeline; @@ -495,6 +516,11 @@ function App() { const storedTick = localStorage.getItem('mt.tickMs'); const storedMin = localStorage.getItem('mt.minBand'); const storedMax = localStorage.getItem('mt.maxBand'); + const storedToneEnabled = localStorage.getItem('mt.toneEnabled'); + const storedToneTarget = localStorage.getItem('mt.toneTarget'); + const storedTauInput = localStorage.getItem('mt.tauInput'); + const storedTauCommit = localStorage.getItem('mt.tauCommit'); + const storedTauTone = localStorage.getItem('mt.tauTone'); const prefersReduced = typeof window !== 'undefined' && window.matchMedia && @@ -503,6 +529,11 @@ function App() { else if (prefersReduced) setTickMs(120); if (storedMin) setMinBand(parseInt(storedMin, 10)); if (storedMax) setMaxBand(parseInt(storedMax, 10)); + if (storedToneEnabled) setToneEnabled(storedToneEnabled === 'true'); + if (storedToneTarget === 'None' || storedToneTarget === 'Casual' || storedToneTarget === 'Professional') setToneTarget(storedToneTarget); + if (storedTauInput) setTauInput(parseFloat(storedTauInput)); + if (storedTauCommit) setTauCommit(parseFloat(storedTauCommit)); + if (storedTauTone) setTauTone(parseFloat(storedTauTone)); } catch {} }, []); useEffect(() => { @@ -510,8 +541,13 @@ function App() { localStorage.setItem('mt.tickMs', String(tickMs)); localStorage.setItem('mt.minBand', String(minBand)); localStorage.setItem('mt.maxBand', String(maxBand)); + localStorage.setItem('mt.toneEnabled', String(toneEnabled)); + localStorage.setItem('mt.toneTarget', toneTarget); + localStorage.setItem('mt.tauInput', String(tauInput)); + localStorage.setItem('mt.tauCommit', String(tauCommit)); + localStorage.setItem('mt.tauTone', String(tauTone)); } catch {} - }, [tickMs, minBand, maxBand]); + }, [tickMs, minBand, maxBand, toneEnabled, toneTarget, tauInput, tauCommit, tauTone]); // 6. Keyboard shortcut for debug panel useEffect(() => { @@ -822,6 +858,30 @@ function App() { /> {/* WASM demo toggle removed */} + + + + + +