From 0a3a1964dd50ed83bf304b2e07afcbbafeb240e7 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Mon, 10 Aug 2026 16:51:43 +0200 Subject: [PATCH 1/2] Support vdj modality for DMS datasets --- .changeset/vdj-modality-model-selection.md | 35 +++ model/src/compat.ts | 30 ++- model/src/index.ts | 9 +- model/src/scopes.ts | 84 +++++-- model/src/types.ts | 31 ++- pnpm-lock.yaml | 278 ++++++++++----------- pnpm-workspace.yaml | 10 +- 7 files changed, 308 insertions(+), 169 deletions(-) create mode 100644 .changeset/vdj-modality-model-selection.md diff --git a/.changeset/vdj-modality-model-selection.md b/.changeset/vdj-modality-model-selection.md new file mode 100644 index 0000000..99ac88f --- /dev/null +++ b/.changeset/vdj-modality-model-selection.md @@ -0,0 +1,35 @@ +--- +'@platforma-open/milaboratories.sequence-embeddings.model': minor +'@platforma-open/milaboratories.sequence-embeddings': minor +--- + +Offer antibody and TCR models for VDJ amplicon-profiling input (MILAB-6668). + +`synthetic-repertoire-profiler` tags its whole-variant amino-acid sequence with the +`amplicon-sequence` feature in both of its modalities, and this block mapped that +feature onto the `peptide` scope unconditionally. Since model compatibility is gated +on the scope feature, a DMS **VDJ** run was offered only ESM-2 and PeptideCLM-2, with +the peptide specialist as the default — no antibody or TCR model was reachable. + +The block now reads the producer's `pl7.app/modality` declaration off the entity +axis. On a `vdj` run the whole-variant column becomes a `VDJRegion` scope and the +profiler's CDR3 region column becomes a `CDR3` scope (a new selector discovers the +region columns, which are keyed by region name in `pl7.app/feature` rather than on +`pl7.app/vdj/sequence`). That puts CurrAb, AbLang2, VHHBERT, H3BERTa and TCR-BERT in +reach. Amplicon runs, projects predating the declaration, and peptide-extraction +input are unaffected — all keep the peptide scope and the PeptideCLM-2 default. + +Receptor handling: the profiler declares VDJ data but emits neither +`pl7.app/vdj/receptor` nor `pl7.app/vdj/chain`, because germline auto-detection +builds a custom reference from the user's own parent sequences and has no library +locus to read. `ScopeReceptor` gains an explicit `"unknown"` value for that case, and +model filtering relaxes its receptor and heavy-chain gates rather than defaulting to +`IG` — which would have silently hidden the TCR specialists from TCR data. The trade +is deliberate: the dropdown can now offer a TCR model for antibody input, so the user +picks the model that matches their library. With the receptor unknown the default +model is the universal one (ESM-2) rather than the highest-priority specialist, so no +receptor-specific model is chosen on the user's behalf from data that does not state +a receptor. + +Inputs that do carry a receptor or chain key are unchanged, as are inputs with no +modality declaration — both keep the historical `IG` fallback and full gating. diff --git a/model/src/compat.ts b/model/src/compat.ts index f568374..59aed68 100644 --- a/model/src/compat.ts +++ b/model/src/compat.ts @@ -15,7 +15,13 @@ * only offered once it is **fully wired end-to-end** (weight asset packaged + * workflow routing); see `ENABLED_MODELS`. */ -import type { EmbeddingModelId, ModelTag, ScopeFeature, WorkflowReceptor } from "./types"; +import type { + EmbeddingModelId, + ModelTag, + ScopeFeature, + ScopeReceptor, + WorkflowReceptor, +} from "./types"; export type EmbeddingModelSpec = { id: EmbeddingModelId; @@ -147,7 +153,7 @@ export function modelTagLabel(tag: string): string { /** Context the recommendation needs beyond the scope itself, derived from the * full set of available scopes for the connected input. */ export type ScopeContext = { - receptor: WorkflowReceptor; + receptor: ScopeReceptor; /** True when the IG input is conventional paired antibody (light chain or Fv * present) rather than a heavy-only (nanobody-like) dataset. Drives the * VHHBERT-vs-CurrAb default. */ @@ -159,10 +165,17 @@ function modelSupports( spec: EmbeddingModelSpec, feature: ScopeFeature, isHeavy: boolean, - receptor: WorkflowReceptor, + receptor: ScopeReceptor, ): boolean { if (!ENABLED_MODELS.has(spec.id)) return false; if (!spec.features.includes(feature)) return false; + // An "unknown" receptor means the producer declared VDJ data but supplied no + // receptor and no chain (synthetic-repertoire-profiler — see ScopeReceptor). + // Filtering on metadata nobody supplied is what excluded every TCR specialist + // from DMS VDJ input, so both VDJ gates below are skipped in that case: the user + // is offered the full VDJ catalogue and picks the model that fits their data. + // The trade is deliberate — the dropdown can offer a TCR model for antibody data. + if (receptor === "unknown") return true; // Peptide inputs carry no receptor — gate on receptor only for VDJ features. if (feature !== "peptide" && !spec.receptors.includes(receptor)) return false; if (spec.heavyOnly && !isHeavy) return false; @@ -174,7 +187,7 @@ function modelSupports( export function compatibleModels( feature: ScopeFeature, isHeavy: boolean, - receptor: WorkflowReceptor, + receptor: ScopeReceptor, ): EmbeddingModelId[] { return (Object.keys(EMBEDDING_MODELS) as EmbeddingModelId[]) .filter((id) => modelSupports(EMBEDDING_MODELS[id], feature, isHeavy, receptor)) @@ -185,7 +198,7 @@ export function compatibleModels( export function isCompatible( feature: ScopeFeature, isHeavy: boolean, - receptor: WorkflowReceptor, + receptor: ScopeReceptor, model: EmbeddingModelId, ): boolean { return modelSupports(EMBEDDING_MODELS[model], feature, isHeavy, receptor); @@ -202,6 +215,13 @@ export function recommendedModel( ctx: ScopeContext, ): EmbeddingModelId { const compatible = compatibleModels(feature, isHeavy, ctx.receptor); + // Unknown receptor: the whole catalogue is offered, but specialist-first would + // silently pick a receptor-specific model (CurrAb, the highest priority) for data + // whose receptor nobody declared — an antibody model on a TCR library. Default to + // the universal model instead and let the user choose a specialist deliberately. + if (ctx.receptor === "unknown") { + return compatible.includes("esm2") ? "esm2" : (compatible[0] ?? "esm2"); + } if ( feature === "VDJRegion" && ctx.receptor === "IG" && diff --git a/model/src/index.ts b/model/src/index.ts index 5caf8df..0efa70e 100644 --- a/model/src/index.ts +++ b/model/src/index.ts @@ -2,7 +2,7 @@ import type { InferOutputsType } from "@platforma-sdk/model"; import { BlockModelV3, PColumnCollection } from "@platforma-sdk/model"; import { EMBEDDING_MODELS, isCompatible } from "./compat"; import { blockDataModel } from "./dataModel"; -import { buildScopeConfig, resolveReceptor, SEQUENCE_SELECTORS } from "./scopes"; +import { buildScopeConfig, isVdjModality, resolveReceptor, SEQUENCE_SELECTORS } from "./scopes"; import type { BlockArgs, EmbeddingTask, ScopeConfig, WorkflowStats } from "./types"; export { blockDataModel } from "./dataModel"; @@ -22,6 +22,7 @@ export type { ModelTag, ScopeConfig, ScopeFeature, + ScopeReceptor, SelectedScope, WorkflowReceptor, WorkflowScopeStats, @@ -114,6 +115,11 @@ export const platforma = BlockModelV3.create(blockDataModel) // Bulk single-chain inputs carry heavy/light on the input axis (not on a // per-chain key); pass it through so scopes get the right `isHeavy`. const bulkChain = spec.axesSpec[1]?.domain?.["pl7.app/vdj/chain"]; + // Producer-declared modality. On a VDJ run the profiler's whole-variant and + // CDR3 columns are V-domain scopes, not peptide ones — which is what makes the + // antibody/TCR models reachable. Absent on pre-declaration projects, which + // therefore keep the peptide classification they have today. + const isVdj = isVdjModality(spec.axesSpec[1]?.domain); const entries = new PColumnCollection() .addColumnProvider(ctx.resultPool) .addAxisLabelProvider(ctx.resultPool) @@ -129,6 +135,7 @@ export const platforma = BlockModelV3.create(blockDataModel) entries.map((e) => ({ id: e.id, spec: e.spec, label: e.label })), receptor, bulkChain, + isVdj, ), // Stamp the anchor this config belongs to, so the UI seed watcher can // reject a retained (stale) config from the previous input. diff --git a/model/src/scopes.ts b/model/src/scopes.ts index c3a1b2b..4d28d5d 100644 --- a/model/src/scopes.ts +++ b/model/src/scopes.ts @@ -26,7 +26,20 @@ import type { PColumnSpec, SUniversalPColumnId, } from "@platforma-sdk/model"; -import type { AvailableScope, ScopeConfig, SelectedScope, WorkflowReceptor } from "./types"; +import type { + AvailableScope, + ScopeConfig, + ScopeReceptor, + SelectedScope, + WorkflowReceptor, +} from "./types"; + +/** + * Run modality declared by the producer on the entity axis (`pl7.app/modality`). + * `"vdj"` means the variants are antibody/TCR V-domains; anything else (including + * absent) is treated as the general amplicon/peptide case. + */ +export const MODALITY_DOMAIN_KEY = "pl7.app/modality"; /** A discovered sequence column: its workflow-resolvable id, spec, and the * label derived for it (native label forced via includeNativeLabel upstream). */ @@ -52,9 +65,19 @@ export const SEQUENCE_SELECTORS: AnchoredPColumnSelector[] = [ name: "pl7.app/sequence", // synthetic-repertoire-profiler tags its whole-variant AA sequence with the // generic `amplicon-sequence` feature (shared with other consumers), not - // `peptide`; treat it as a peptide-family scope so it becomes embeddable. + // `peptide`. On an amplicon run it is a peptide-family scope; on a VDJ run the + // same column is the V-domain and maps to `VDJRegion` — see `buildScopeConfig`. domain: { "pl7.app/feature": "amplicon-sequence", "pl7.app/alphabet": "aminoacid" }, }, + { + axes: [{ anchor: "main", idx: 1 }], + name: "pl7.app/sequence", + // synthetic-repertoire-profiler region subsequence, keyed by region name in + // `pl7.app/feature` (FR1…FR4, CDR1…CDR3) rather than on `pl7.app/vdj/sequence`. + // CDR3 is the only one that is a scope in its own right, so it is the only one + // selected for; it is classified only on a VDJ run (`buildScopeConfig`). + domain: { "pl7.app/feature": "CDR3", "pl7.app/alphabet": "aminoacid" }, + }, { axes: [{ anchor: "main", idx: 1 }], name: "pl7.app/vdj/sequence", @@ -79,15 +102,27 @@ const CHAIN_TO_RECEPTOR: Record = { TCRDelta: "TCRGD", }; +/** True when the producer declared this run's modality as antibody/TCR V-domains. */ +export function isVdjModality(domain: Record | undefined): boolean { + return domain?.[MODALITY_DOMAIN_KEY] === "vdj"; +} + /** * Resolve receptor from a domain record: explicit `pl7.app/vdj/receptor` wins, - * then derive from `pl7.app/vdj/chain`, else default IG. + * then derive from `pl7.app/vdj/chain`. + * + * With neither key present the fallback depends on the declared modality. A + * producer that declares `pl7.app/modality: vdj` and supplies no receptor leaves it + * genuinely `"unknown"` (synthetic-repertoire-profiler) — guessing IG there hides + * the TCR specialists. Every other input keeps the historical `IG` default, so + * legacy MiXCR datasets that never carried the key behave exactly as before. */ -export function resolveReceptor(domain: Record | undefined): WorkflowReceptor { +export function resolveReceptor(domain: Record | undefined): ScopeReceptor { const r = domain?.["pl7.app/vdj/receptor"]; if (r === "IG" || r === "TCRAB" || r === "TCRGD") return r; const chain = domain?.["pl7.app/vdj/chain"]; - return (chain && CHAIN_TO_RECEPTOR[chain]) || "IG"; + if (chain && CHAIN_TO_RECEPTOR[chain]) return CHAIN_TO_RECEPTOR[chain]; + return isVdjModality(domain) ? "unknown" : "IG"; } function isAssembling(spec: PColumnSpec): boolean { @@ -103,10 +138,12 @@ function isAssembling(spec: PColumnSpec): boolean { * input axis as `pl7.app/vdj/chain` (passed in as `bulkChain`). */ function deriveIsHeavy( - receptor: WorkflowReceptor, + receptor: ScopeReceptor, chain: "A" | "B" | "", bulkChain: string | undefined, ): boolean { + // Non-IG and "unknown" both fall out here: an unknown receptor carries no chain + // either, so heaviness is not asserted — `compat.ts` relaxes the gate instead. if (receptor !== "IG") return false; if (chain === "A") return true; // single-cell heavy if (chain === "B") return false; // single-cell light @@ -122,8 +159,9 @@ function deriveIsHeavy( */ export function buildScopeConfig( entries: SeqEntry[], - receptor: WorkflowReceptor, + receptor: ScopeReceptor, bulkChain?: string, + isVdj = false, ): Omit { type Internal = AvailableScope & { assembling: boolean }; const scopes: Internal[] = []; @@ -135,16 +173,32 @@ export function buildScopeConfig( const d = e.spec.domain ?? {}; const assembling = isAssembling(e.spec); - // `peptide` (peptide-profiling) and `amplicon-sequence` - // (synthetic-repertoire-profiler whole-variant sequence) both map to the - // peptide scope feature — a single AA protein sequence embedded as-is. - if ( - name === "pl7.app/sequence" && - (d["pl7.app/feature"] === "peptide" || d["pl7.app/feature"] === "amplicon-sequence") - ) { + // `pl7.app/sequence` covers three producers, split by feature and modality. + // + // On a VDJ run the profiler's whole-variant sequence IS the V-domain, so it maps + // to `VDJRegion` and its CDR3 region column to `CDR3` — that is what puts the + // antibody/TCR models in reach. On an amplicon run the same whole-variant column + // is a flat protein sequence and maps to `peptide`, as does peptide-extraction's. + // + // `isHeavy` stays false throughout: the profiler declares no chain, so the + // heavy-only specialists are reached via the relaxed unknown-receptor gate in + // `compat.ts`, not by asserting a chain the data does not carry. + if (name === "pl7.app/sequence") { + const feature = d["pl7.app/feature"]; + const isWholeVariant = feature === "peptide" || feature === "amplicon-sequence"; + let scopeFeature: SelectedScope["feature"] | undefined; + if (isVdj && feature === "amplicon-sequence") { + scopeFeature = "VDJRegion"; + } else if (isVdj && feature === "CDR3") { + scopeFeature = "CDR3"; + } else if (isWholeVariant) { + scopeFeature = "peptide"; + } + // Region columns on a non-VDJ run, and FR1/CDR1/… generally, are not scopes. + if (scopeFeature === undefined) continue; scopes.push({ id: e.id, - feature: "peptide", + feature: scopeFeature, chain: "", columns: [e.id], label: e.label, diff --git a/model/src/types.ts b/model/src/types.ts index 914d099..7a41ce6 100644 --- a/model/src/types.ts +++ b/model/src/types.ts @@ -3,6 +3,23 @@ import type { PlRef, SUniversalPColumnId } from "@platforma-sdk/model"; /** Receptor type. Same enum as sequence-properties to keep label conventions aligned. */ export type WorkflowReceptor = "IG" | "TCRAB" | "TCRGD"; +/** + * A scope's receptor, or `"unknown"` when the producer declares VDJ data but no + * receptor at all. + * + * `synthetic-repertoire-profiler` is the case: it declares `pl7.app/modality: vdj` + * but emits neither `pl7.app/vdj/receptor` nor `pl7.app/vdj/chain` — germline + * auto-detection builds a custom reference from the user's own parent sequences, so + * there is no library locus to read a receptor from. Guessing `IG` there would + * silently exclude the TCR specialists from a TCR dataset, so the unknown is carried + * explicitly and `compat.ts` relaxes receptor/chain gating rather than filtering on + * a value nobody supplied. + * + * Widening only — every previously persisted `WorkflowReceptor` stays valid, so + * snapshotted scopes in existing projects deserialize unchanged. + */ +export type ScopeReceptor = WorkflowReceptor | "unknown"; + /** * ESM-2 fidelity the user picks per card, projected into args. Default is `standard`. * `standard` → ESM-2 150M; `high` → ESM-2 650M. Only meaningful when the card's @@ -64,11 +81,16 @@ export type SelectedScope = { * True when this is an IG heavy chain (single-cell chain `A`, or bulk * `IGHeavy`). Gates the heavy-only specialists (VHHBERT, H3BERTa) and the * VHH-vs-mAb default. Snapshotted so the args lambda stays `data`-only. + * + * Always `false` when `receptor` is `"unknown"` — a producer that supplies no + * receptor supplies no chain either, so this carries no information there and + * `compat.ts` does not gate on it. */ isHeavy: boolean; /** Receptor of the input this scope came from, snapshotted for `data`-only - * compatibility validation in the args lambda. */ - receptor: WorkflowReceptor; + * compatibility validation in the args lambda. `"unknown"` when the producer + * declares VDJ data without a receptor — see `ScopeReceptor`. */ + receptor: ScopeReceptor; }; /** A selectable scope. Alias of `SelectedScope` — the label lives on the base type. */ @@ -101,8 +123,9 @@ export type ScopeConfig = { * previous input is never applied to the newly selected one. */ forAnchor: string; - /** Input receptor — feeds the UI's model-compatibility filtering (`compat.ts`). */ - receptor: WorkflowReceptor; + /** Input receptor — feeds the UI's model-compatibility filtering (`compat.ts`). + * `"unknown"` relaxes that filtering; see `ScopeReceptor`. */ + receptor: ScopeReceptor; /** * True when the IG input is conventional paired antibody (a light chain or Fv * is present), false for a heavy-only (nanobody-like) dataset. Drives the diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c096faa..7a2010b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,20 +22,20 @@ catalogs: specifier: 1.10.7 version: 1.10.7 '@platforma-sdk/block-tools': - specifier: 2.12.9 - version: 2.12.9 + specifier: 2.12.10 + version: 2.12.10 '@platforma-sdk/model': - specifier: 1.80.10 - version: 1.80.10 + specifier: 1.80.13 + version: 1.80.13 '@platforma-sdk/tengo-builder': - specifier: 4.0.20 - version: 4.0.20 + specifier: 4.0.21 + version: 4.0.21 '@platforma-sdk/test': - specifier: 1.80.11 - version: 1.80.11 + specifier: 1.80.14 + version: 1.80.14 '@platforma-sdk/ui-vue': - specifier: 1.80.10 - version: 1.80.10 + specifier: 1.80.15 + version: 1.80.15 '@platforma-sdk/workflow-tengo': specifier: 6.8.2 version: 6.8.2 @@ -80,7 +80,7 @@ importers: version: 1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0) '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.9(@types/node@25.9.1) + version: 2.12.10(@types/node@25.9.1) shx: specifier: 'catalog:' version: 0.4.0 @@ -107,10 +107,10 @@ importers: version: link:../workflow '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.9(@types/node@25.9.1) + version: 2.12.10(@types/node@25.9.1) '@platforma-sdk/model': specifier: 'catalog:' - version: 1.80.10 + version: 1.80.13 shx: specifier: 'catalog:' version: 0.4.0 @@ -122,7 +122,7 @@ importers: dependencies: '@platforma-sdk/model': specifier: 'catalog:' - version: 1.80.10 + version: 1.80.13 '@types/node': specifier: '*' version: 25.9.1 @@ -138,7 +138,7 @@ importers: version: 1.3.1 '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.9(@types/node@25.9.1) + version: 2.12.10(@types/node@25.9.1) software: devDependencies: @@ -147,7 +147,7 @@ importers: version: 1.10.7 '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.9(@types/node@25.9.1) + version: 2.12.10(@types/node@25.9.1) test: dependencies: @@ -166,7 +166,7 @@ importers: version: 1.3.1 '@platforma-sdk/test': specifier: 'catalog:' - version: 1.80.11(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) + version: 1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' version: 4.0.18(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0) @@ -178,10 +178,10 @@ importers: version: link:../model '@platforma-sdk/model': specifier: 'catalog:' - version: 1.80.10 + version: 1.80.13 '@platforma-sdk/ui-vue': specifier: 'catalog:' - version: 1.80.10(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) + version: 1.80.15(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) '@types/node': specifier: '*' version: 25.9.1 @@ -219,10 +219,10 @@ importers: devDependencies: '@platforma-sdk/tengo-builder': specifier: 'catalog:' - version: 4.0.20 + version: 4.0.21 '@platforma-sdk/test': specifier: 'catalog:' - version: 1.80.11(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + version: 1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) shx: specifier: 'catalog:' version: 0.4.0 @@ -785,12 +785,12 @@ packages: cpu: [x64] os: [win32] - '@grpc/grpc-js@1.13.5': - resolution: {integrity: sha512-ILtqflBY9tzd79bKa87eS98vZFCso5/uYxuArfcKrmRDatRg7KWmI/Vr9+xOEf2Y2E/44HXMCx3JKZe/Y4yF6g==} + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} engines: {node: '>=12.10.0'} - '@grpc/proto-loader@0.7.15': - resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + '@grpc/proto-loader@0.8.1': + resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==} engines: {node: '>=6'} hasBin: true @@ -940,20 +940,20 @@ packages: resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} - '@jitl/quickjs-ffi-types@0.31.0': - resolution: {integrity: sha512-1yrgvXlmXH2oNj3eFTrkwacGJbmM0crwipA3ohCrjv52gBeDaD7PsTvFYinlAnqU8iPME3LGP437yk05a2oejw==} + '@jitl/quickjs-ffi-types@0.32.0': + resolution: {integrity: sha512-v9T+GQpmk43VDJ7d72sf0Nexhk+ArvtUihW27dy7lqAl0zBObFKtSBBIm5RBjwIhE8VwsPPm9PNuvPvNqLWUEg==} - '@jitl/quickjs-wasmfile-debug-asyncify@0.31.0': - resolution: {integrity: sha512-YkdzQdr1uaftFhgEnTRjTTZHk2SFZdpWO7XhOmRVbi6CEVsH9g5oNF8Ta1q3OuSJHRwwT8YsuR1YzEiEIJEk6w==} + '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': + resolution: {integrity: sha512-EX8zbXwGqCgAE764M+qvkHtyXDi/FUoMBea0JnES7vCM3P7a2+EOZOjGv85wtZ2sJhI1oJ+nekmqpOODFDY+hw==} - '@jitl/quickjs-wasmfile-debug-sync@0.31.0': - resolution: {integrity: sha512-8XvloaaWBONqcHXYs5tWOjdhQVxzULilIfB2hvZfS6S+fI4m2+lFiwQy7xeP8ExHmiZ7D8gZGChNkdLgjGfknw==} + '@jitl/quickjs-wasmfile-debug-sync@0.32.0': + resolution: {integrity: sha512-LeYWrPGC1uNCTBWvibo3ZLJj0CSVNYUXvJpXMCmuQ5Sap2cCACc3uvGvYV4homHHBAzfw5akoTqMMS4YFRtw+Q==} - '@jitl/quickjs-wasmfile-release-asyncify@0.31.0': - resolution: {integrity: sha512-uz0BbQYTxNsFkvkurd7vk2dOg57ElTBLCuvNtRl4rgrtbC++NIndD5qv2+AXb6yXDD3Uy1O2PCwmoaH0eXgEOg==} + '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': + resolution: {integrity: sha512-3oSwPfja12ICz4aIblB58cuY8JlEq5Txt8Cut4VLo+LH47QN+mzCnSgnbB03hWzg1LBcc+VyyI9UOag7a1NF+Q==} - '@jitl/quickjs-wasmfile-release-sync@0.31.0': - resolution: {integrity: sha512-hYduecOByj9AsAfsJhZh5nA6exokmuFC8cls39+lYmTCGY51bgjJJJwReEu7Ff7vBWaQCL6TeDdVlnp2WYz0jw==} + '@jitl/quickjs-wasmfile-release-sync@0.32.0': + resolution: {integrity: sha512-BKNDI/TPBfGlLNGYpLrhcDGXmIk4xHm4MRAisOBnOzpXVn9HZWsfmMAc9WMBrAHjvvds6HOikKeaOBKdPdpVrg==} '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1037,40 +1037,40 @@ packages: '@milaboratories/pl-model-common': 1.46.2 '@milaboratories/pl-model-middle-layer': 1.30.7 - '@milaboratories/pl-client@3.14.4': - resolution: {integrity: sha512-LljKMbKa8zl2lNFkg3VthMx9E6308B5vSH7dtWnlVz20ZU1GF7steToGv5gWs1lwUtm4GRU7kmmsMzU9a7l2yg==} + '@milaboratories/pl-client@3.14.5': + resolution: {integrity: sha512-/n7Hjr43WYNkyrgPQ4FL0rQ5FthNS009WvVOBggnMSqCnp6xDHhv4DjLKlmlmdvQSzgI+SeoAjAn7TkOKpaoaA==} engines: {node: '>=22.19.0'} '@milaboratories/pl-config@1.8.5': resolution: {integrity: sha512-XnfYXSSkRxeImQ21k6I8y5apisvagcSgMGfEeyRxNdSGwUVJbbI8TwJk+XBEDQ4lErW8oqtLxKjFQuHJMzRUoQ==} - '@milaboratories/pl-deployments@3.0.14': - resolution: {integrity: sha512-ltkbSlNf7kIHxZ5SG0L7MVxlGa2NKwjN051NzJ6mF0DsWVpn6kcSz1usIsmpJnK7F7xprDKDgVD/YbtMJipy+A==} + '@milaboratories/pl-deployments@3.0.15': + resolution: {integrity: sha512-+i3bdvfPCXLZ789f5fRdtrbil3/RFyzSBNMkULcnyKY5u6GRZLjWDBC5aSE75PRTWx3Fxf743Fj9L3B6loMSWw==} engines: {node: '>=22.19.0'} - '@milaboratories/pl-drivers@1.16.12': - resolution: {integrity: sha512-sIk57/rDhTf8Yy+ajM77+xIWLLlb36UsqduCz4bmxTSn81Ll77dGvowv0Vt606horkDMGcnZ9gs/78Hgpjb3qQ==} + '@milaboratories/pl-drivers@1.16.14': + resolution: {integrity: sha512-/MB4jHlV6ONaBaa6DtdKpOmCNCd5oMwhs7Wrj4b79W/JseKeLhXEFozdt5QIZgfOLZqu+IGKqy4z6KyWcF+mnQ==} engines: {node: '>=22'} '@milaboratories/pl-error-like@1.12.10': resolution: {integrity: sha512-iHmnLG5lxJqcymUmEL8onCDGEADk1S/5RNACQ5yfTCNcCkUc+7hYrDHQpFmWXPPGC9sG+NTBxt4wr5m8UsLm2g==} - '@milaboratories/pl-errors@1.4.33': - resolution: {integrity: sha512-ijKj4jMJlWzihOWLq6Q/HWfFhMyuRY5hmnR/HzlHNf/tjhKa5/yCx2H9V5HduH81xORgPSRceTrDUZy1cqXwTQ==} + '@milaboratories/pl-errors@1.4.34': + resolution: {integrity: sha512-+sxZtw+DjQmLmBp6hUeONV83OYsmkD3G15Aw6J5uzXn5r99lrXQVSFZSlpa7ok7gw24olfyVQwXiubfcxP5qcQ==} - '@milaboratories/pl-healthcheck@1.0.4': - resolution: {integrity: sha512-VLoF7iW7px8BG+vTT/nQ+qkJDNSsXUivRsyZlbM7VCxKdVrZwPfn/rqQIJ4g6daBONVtCqUhAFi52IeXRg5mxg==} + '@milaboratories/pl-healthcheck@1.0.5': + resolution: {integrity: sha512-ZkQti4VU2FapJBFRtZGfR5NDPXEAEFgTf/NfemypgY0aA75fFPi4/c3BpXX5K7dht+JOgHqkMrBHxKIuE2T+fA==} engines: {node: '>=22.19.0'} '@milaboratories/pl-http@1.2.4': resolution: {integrity: sha512-QKmhx+WEvJCV9dUy/SBdQk/ApaJ5ewBFgm/b+XPlS10SusAdqUUTGvK5+hq8YSuUMXlHb/dk++UtI5YlDuDl2Q==} - '@milaboratories/pl-middle-layer@1.66.10': - resolution: {integrity: sha512-fDjfD1mp6T6gkMfLClWJUd6ld8UjcrFy3x3F/aZnjbZ8mwdH2nLkO7DoVsS+5+8/8+QB5XaMK1UJh/wJOQhBKw==} + '@milaboratories/pl-middle-layer@1.66.13': + resolution: {integrity: sha512-Acx5ewjeLRUoAcReakQgtoMnajdSqm5eB+K2aj93FVCtTS8i+5l9kBdpVnJTnXv0UHmOJHFGZTwBlQOjrqyDNw==} engines: {node: '>=22.19.0'} - '@milaboratories/pl-model-backend@1.4.18': - resolution: {integrity: sha512-cDSreI5DV25v9JmiRDMdp8c2+ZxJgeIjnybsuToVbBwDHoANFqB+2Nsxos5jzU2nxCx5kt2KYJw9/tweuSC4xQ==} + '@milaboratories/pl-model-backend@1.4.19': + resolution: {integrity: sha512-288BUlxQtpsd8CNpOGBqGTM1xMFX4JOuNzw5A4hxB+3sq+P2+JU0kNv6PbqIAiTwXeTZ7zsiqN4Gw/aYMSop6Q==} '@milaboratories/pl-model-common@1.46.2': resolution: {integrity: sha512-VEeauisApYScvCS8lnK3zpFJ520xuTAodKJmjR8ulHcMrWMyWMfHEdGb7j5OMD0mM/OwTgmQrrJ5eB7Xd+xoOQ==} @@ -1084,8 +1084,8 @@ packages: '@milaboratories/pl-model-middle-layer@1.30.7': resolution: {integrity: sha512-rs9x3Ron4ujR/UOdEgB8WUB1SvZ8ZAScT1Av/e4or+iiQ/CzhmK9nqtYamHVwKV+JgwIFbXQwxGvIHDVz955dQ==} - '@milaboratories/pl-tree@1.13.3': - resolution: {integrity: sha512-39QT6opCX4ejjT0UI7dq4HMEs/NBXEI2nQyyaHbJBLKGKr6DKhUAUd0mLqeIjsEdH0B4eo3bKMlgry5PaPSlpQ==} + '@milaboratories/pl-tree@1.13.5': + resolution: {integrity: sha512-dR3ejGQ+Yuerrvje9oLyknC1LATKPO86mMFwnNRfCAeleW2yKjMeULW9/tl6HjIXWiwnuWSdG8aqUQDlCLP9uQ==} engines: {node: '>=22.19.0'} '@milaboratories/ptabler-expression-js@1.2.37': @@ -1113,8 +1113,8 @@ packages: resolution: {integrity: sha512-ef01tARUl+0Urt3x8HHAByrhYHg4Rnn7WiFyJ+joZFZl1T1pUKTgfB7Zxc8Cn06HIl4i6H7s5OSymjZePIGqfQ==} engines: {node: '>=22.19.0'} - '@milaboratories/uikit@2.15.18': - resolution: {integrity: sha512-PUxUKDdR7KW5+Bb2NQFD+9u4oNIzusSK1VkCiyfDJ/4B0TxpUG1Fi8mJgCHZMtmTqMZ4d7V7zBuFPQsI9+xg4Q==} + '@milaboratories/uikit@2.15.20': + resolution: {integrity: sha512-+ZxvfmSzig/NVg287ebkkbPWMo2LFsRA7DW14+ssxXTj3ItzgwtzCfyCbnHIlb3eJUnEZpRYyRgRM0KmQZezQw==} '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -1735,30 +1735,30 @@ packages: '@platforma-open/milaboratories.software-small-binaries@2.1.1': resolution: {integrity: sha512-KN1PR7YgUUfx1dxh/TtcoWpSZbOXbRxXzQuJ505qHuXuE0spYwC7bXnvJsEYbEwRcPMa0foTrjBnPNORE4yr+Q==} - '@platforma-sdk/block-tools@2.12.9': - resolution: {integrity: sha512-wtqkPsjMpan+XjP0GHa8pcJbj3CX0Jmzxjxez0sz+jGMiIqpsNV3sSTQGYj1zkgYA9Wi0lusKiNoVOYB7Jtmbw==} + '@platforma-sdk/block-tools@2.12.10': + resolution: {integrity: sha512-ba2uau/QIcSTwVNUZcVUdlBoicp0jucuS7qxer+bJf4gQbzkcWaH4TyAO+843NIM7ZWNKy/9KhyjZEJvKwWGew==} hasBin: true '@platforma-sdk/blocks-deps-updater@2.2.0': resolution: {integrity: sha512-p9lBxhFXM9WoRsrJO7dfkiXSK+1m63yIn1sKhBO71eMbhrLMyVYHEOeNf3w5OCdbRF5QsNhXzWuiTmFK3zHFsA==} hasBin: true - '@platforma-sdk/model@1.80.10': - resolution: {integrity: sha512-M9a2yuiYmov4Xv0yMArkl4SJ591vOSccSRWMK8KV0fH098PJiS2ailmaIqS4KfL2WYh2hoe7ceCaVlpHHf+JWg==} + '@platforma-sdk/model@1.80.13': + resolution: {integrity: sha512-wxGQ4/sxgWMAKrGWeGD13s9BZYLfg9+5StwH4ZsdNfGkBSwj9Amu8O6az63qRc0n+HUce5MVBxVeSoAc6eFEvA==} '@platforma-sdk/package-builder-lib@1.2.1': resolution: {integrity: sha512-H6weitj7JxbiJSlteEFLafTJ+tfty6iv/imf3ysy8oCS8AZIRJk2VMW3M/aAc+xVkQeX7oVIwMwFMYrJIoFsAg==} - '@platforma-sdk/tengo-builder@4.0.20': - resolution: {integrity: sha512-4zf38sLzctOgbwym39+YdrE07/W61zzNaeZebZd0p2QDYNacAf83hRlD5KlDvUZtrDbhYNMgoZtghw61XAchog==} + '@platforma-sdk/tengo-builder@4.0.21': + resolution: {integrity: sha512-ecv4TE4eNljBHbpjQT50NPJofrE5Qv5Q8EY02RO8rSWpYbTmkbzaJ0eUwKcYkxkO9NlLhhMpXe7RpMC2QPLAsQ==} engines: {node: '>=22'} hasBin: true - '@platforma-sdk/test@1.80.11': - resolution: {integrity: sha512-6AjBpc7UjvT3DFXAtHseBgu0DF8q2AHPThwibxPTGY/fbmhfph3ulEilyRjHIrEre2v3oiud1a65RhrkGCKIQA==} + '@platforma-sdk/test@1.80.14': + resolution: {integrity: sha512-ScdpB9ZOR4z65hE3HhHzuVS5s07/xkU5lulDtYs4LOt6nK9qEmIreG1+9s0Xco6AnGdLYQq/kaSXfiASWeXCsg==} - '@platforma-sdk/ui-vue@1.80.10': - resolution: {integrity: sha512-nwBVD/NMGBn2aRpOylIx2/acPpsE1sTLXcQBYsAoQJ35J8ah3fDuA4AmUvqGHemZNPYo59tNXRhk5mAd6vlWwg==} + '@platforma-sdk/ui-vue@1.80.15': + resolution: {integrity: sha512-iPFZnLrPyFUev9mRwnsDFg6wYbf/BEgN0a9KX/Tto8Tp6qMbOk6LFfz49tHUDzNZN25lceLhriAHTWN/iBO0tw==} '@platforma-sdk/workflow-tengo@6.8.2': resolution: {integrity: sha512-AHR/Y+vbyfda17A7xY2uH9TlXiBpM8242tTO6+lj8phA4/KS6mez4GLu4ZEaASlZpX6YkQsUs5LUxYQU7pXeiQ==} @@ -4097,11 +4097,11 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quickjs-emscripten-core@0.31.0: - resolution: {integrity: sha512-oQz8p0SiKDBc1TC7ZBK2fr0GoSHZKA0jZIeXxsnCyCs4y32FStzCW4d1h6E1sE0uHDMbGITbk2zhNaytaoJwXQ==} + quickjs-emscripten-core@0.32.0: + resolution: {integrity: sha512-QFnPfjFey8EqknSrSxe1hZrf1/8z7/6s1QzGOmKo6++02r7QRRX7ZoyNaZh7JuVjWsVW87KnQrbZqnHkOAzUyg==} - quickjs-emscripten@0.31.0: - resolution: {integrity: sha512-K7Yt78aRPLjPcqv3fIuLW1jW3pvwO21B9pmFOolsjM/57ZhdVXBr51GqJpalgBlkPu9foAvhEAuuQPnvIGvLvQ==} + quickjs-emscripten@0.32.0: + resolution: {integrity: sha512-So0Sqw869y/S2oE3Nuc0uT3Dhqgvsj8FSrwBdsuTosVsG8ME5/OcudU1GxsrIFdFABgy17GHnTVO9TYV/bLQcA==} engines: {node: '>=16.0.0'} rc@1.2.8: @@ -5851,12 +5851,12 @@ snapshots: '@esbuild/win32-x64@0.27.7': optional: true - '@grpc/grpc-js@1.13.5': + '@grpc/grpc-js@1.14.4': dependencies: - '@grpc/proto-loader': 0.7.15 + '@grpc/proto-loader': 0.8.1 '@js-sdsl/ordered-map': 4.4.2 - '@grpc/proto-loader@0.7.15': + '@grpc/proto-loader@0.8.1': dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 @@ -6003,23 +6003,23 @@ snapshots: '@istanbuljs/schema@0.1.6': {} - '@jitl/quickjs-ffi-types@0.31.0': {} + '@jitl/quickjs-ffi-types@0.32.0': {} - '@jitl/quickjs-wasmfile-debug-asyncify@0.31.0': + '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - '@jitl/quickjs-wasmfile-debug-sync@0.31.0': + '@jitl/quickjs-wasmfile-debug-sync@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - '@jitl/quickjs-wasmfile-release-asyncify@0.31.0': + '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - '@jitl/quickjs-wasmfile-release-sync@0.31.0': + '@jitl/quickjs-wasmfile-release-sync@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -6176,13 +6176,13 @@ snapshots: '@milaboratories/pl-model-common': 1.47.3 '@milaboratories/pl-model-middle-layer': 1.30.15 - '@milaboratories/pl-client@3.14.4': + '@milaboratories/pl-client@3.14.5': dependencies: - '@grpc/grpc-js': 1.13.5 + '@grpc/grpc-js': 1.14.4 '@milaboratories/pl-http': 1.2.4 '@milaboratories/pl-model-common': 1.47.3 '@milaboratories/ts-helpers': 1.8.6 - '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.13.5) + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 canonicalize: 2.1.0 @@ -6200,10 +6200,10 @@ snapshots: upath: 2.0.1 yaml: 2.9.0 - '@milaboratories/pl-deployments@3.0.14': + '@milaboratories/pl-deployments@3.0.15': dependencies: '@milaboratories/pl-config': 1.8.5 - '@milaboratories/pl-healthcheck': 1.0.4 + '@milaboratories/pl-healthcheck': 1.0.5 '@milaboratories/pl-http': 1.2.4 '@milaboratories/pl-model-common': 1.47.3 '@milaboratories/ts-helpers': 1.8.6 @@ -6215,16 +6215,16 @@ snapshots: yaml: 2.9.0 zod: 3.25.76 - '@milaboratories/pl-drivers@1.16.12': + '@milaboratories/pl-drivers@1.16.14': dependencies: - '@grpc/grpc-js': 1.13.5 + '@grpc/grpc-js': 1.14.4 '@milaboratories/computable': 2.9.8 '@milaboratories/helpers': 1.14.5 - '@milaboratories/pl-client': 3.14.4 + '@milaboratories/pl-client': 3.14.5 '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-tree': 1.13.3 + '@milaboratories/pl-tree': 1.13.5 '@milaboratories/ts-helpers': 1.8.6 - '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.13.5) + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/plugin': 2.11.1 '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 @@ -6246,17 +6246,17 @@ snapshots: json-stringify-safe: 5.0.1 zod: 3.25.76 - '@milaboratories/pl-errors@1.4.33': + '@milaboratories/pl-errors@1.4.34': dependencies: - '@milaboratories/pl-client': 3.14.4 + '@milaboratories/pl-client': 3.14.5 '@milaboratories/ts-helpers': 1.8.6 zod: 3.25.76 - '@milaboratories/pl-healthcheck@1.0.4': + '@milaboratories/pl-healthcheck@1.0.5': dependencies: - '@grpc/grpc-js': 1.13.5 + '@grpc/grpc-js': 1.14.4 '@milaboratories/ts-helpers': 1.8.6 - '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.13.5) + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 @@ -6264,7 +6264,7 @@ snapshots: dependencies: undici: 7.16.0 - '@milaboratories/pl-middle-layer@1.66.10(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)': + '@milaboratories/pl-middle-layer@1.66.13(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)': dependencies: '@milaboratories/columns-collection-driver': 0.2.3 '@milaboratories/computable': 2.9.8 @@ -6273,25 +6273,25 @@ snapshots: '@milaboratories/pf-spec-driver': 1.4.24(@bytecodealliance/preview2-shim@0.17.9) '@milaboratories/pframes-rs-node': 1.1.56 '@milaboratories/pframes-rs-wasm': 1.1.56(@bytecodealliance/preview2-shim@0.17.9)(@milaboratories/pl-model-common@1.47.3)(@milaboratories/pl-model-middle-layer@1.30.15) - '@milaboratories/pl-client': 3.14.4 - '@milaboratories/pl-deployments': 3.0.14 - '@milaboratories/pl-drivers': 1.16.12 - '@milaboratories/pl-errors': 1.4.33 + '@milaboratories/pl-client': 3.14.5 + '@milaboratories/pl-deployments': 3.0.15 + '@milaboratories/pl-drivers': 1.16.14 + '@milaboratories/pl-errors': 1.4.34 '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-backend': 1.4.18 + '@milaboratories/pl-model-backend': 1.4.19 '@milaboratories/pl-model-common': 1.47.3 '@milaboratories/pl-model-middle-layer': 1.30.15 - '@milaboratories/pl-tree': 1.13.3 + '@milaboratories/pl-tree': 1.13.5 '@milaboratories/resolve-helper': 1.1.3 '@milaboratories/ts-helpers': 1.8.6 - '@platforma-sdk/block-tools': 2.12.9(@types/node@25.9.1) - '@platforma-sdk/model': 1.80.10 + '@platforma-sdk/block-tools': 2.12.10(@types/node@25.9.1) + '@platforma-sdk/model': 1.80.13 '@platforma-sdk/workflow-tengo': 6.8.2 canonicalize: 2.1.0 denque: 2.1.0 es-toolkit: 1.47.0 lru-cache: 11.5.1 - quickjs-emscripten: 0.31.0 + quickjs-emscripten: 0.32.0 semver: 7.8.1 undici: 7.16.0 utility-types: 3.11.0 @@ -6307,9 +6307,9 @@ snapshots: - react-native-b4a - supports-color - '@milaboratories/pl-model-backend@1.4.18': + '@milaboratories/pl-model-backend@1.4.19': dependencies: - '@milaboratories/pl-client': 3.14.4 + '@milaboratories/pl-client': 3.14.5 canonicalize: 2.1.0 zod: 3.25.76 @@ -6344,11 +6344,11 @@ snapshots: utility-types: 3.11.0 zod: 3.25.76 - '@milaboratories/pl-tree@1.13.3': + '@milaboratories/pl-tree@1.13.5': dependencies: '@milaboratories/computable': 2.9.8 - '@milaboratories/pl-client': 3.14.4 - '@milaboratories/pl-errors': 1.4.33 + '@milaboratories/pl-client': 3.14.5 + '@milaboratories/pl-errors': 1.4.34 '@milaboratories/ts-helpers': 1.8.6 denque: 2.1.0 utility-types: 3.11.0 @@ -6495,10 +6495,10 @@ snapshots: canonicalize: 2.1.0 denque: 2.1.0 - '@milaboratories/uikit@2.15.18(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': + '@milaboratories/uikit@2.15.20(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': dependencies: '@milaboratories/helpers': 1.14.5 - '@platforma-sdk/model': 1.80.10 + '@platforma-sdk/model': 1.80.13 '@types/d3-array': 3.2.2 '@types/d3-axis': 3.0.6 '@types/d3-scale': 4.0.9 @@ -6978,13 +6978,13 @@ snapshots: '@platforma-open/milaboratories.software-small-binaries.mnz-client': 1.6.5 '@platforma-open/milaboratories.software-small-binaries.table-converter': 1.3.5 - '@platforma-sdk/block-tools@2.12.9(@types/node@25.9.1)': + '@platforma-sdk/block-tools@2.12.10(@types/node@25.9.1)': dependencies: '@aws-sdk/client-ecr-public': 3.859.0 '@aws-sdk/client-s3': 3.859.0 '@inquirer/prompts': 7.10.1(@types/node@25.9.1) '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-backend': 1.4.18 + '@milaboratories/pl-model-backend': 1.4.19 '@milaboratories/pl-model-common': 1.47.3 '@milaboratories/pl-model-middle-layer': 1.30.15 '@milaboratories/resolve-helper': 1.1.3 @@ -7010,7 +7010,7 @@ snapshots: dependencies: yaml: 2.9.0 - '@platforma-sdk/model@1.80.10': + '@platforma-sdk/model@1.80.13': dependencies: '@milaboratories/helpers': 1.14.5 '@milaboratories/pl-error-like': 1.12.10 @@ -7040,22 +7040,22 @@ snapshots: - bare-buffer - react-native-b4a - '@platforma-sdk/tengo-builder@4.0.20': + '@platforma-sdk/tengo-builder@4.0.21': dependencies: - '@milaboratories/pl-model-backend': 1.4.18 + '@milaboratories/pl-model-backend': 1.4.19 '@milaboratories/resolve-helper': 1.1.3 '@milaboratories/tengo-tester': 1.6.4 '@milaboratories/ts-helpers': 1.8.6 commander: 15.0.0 winston: 3.19.0 - '@platforma-sdk/test@1.80.11(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0))': + '@platforma-sdk/test@1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0))': dependencies: '@milaboratories/computable': 2.9.8 - '@milaboratories/pl-client': 3.14.4 - '@milaboratories/pl-middle-layer': 1.66.10(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) - '@milaboratories/pl-tree': 1.13.3 - '@platforma-sdk/model': 1.80.10 + '@milaboratories/pl-client': 3.14.5 + '@milaboratories/pl-middle-layer': 1.66.13(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) + '@milaboratories/pl-tree': 1.13.5 + '@platforma-sdk/model': 1.80.13 '@vitest/coverage-istanbul': 4.1.8(vitest@4.0.18(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) vitest: 4.1.8(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.8)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) transitivePeerDependencies: @@ -7079,13 +7079,13 @@ snapshots: - supports-color - vite - '@platforma-sdk/test@1.80.11(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))': + '@platforma-sdk/test@1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))': dependencies: '@milaboratories/computable': 2.9.8 - '@milaboratories/pl-client': 3.14.4 - '@milaboratories/pl-middle-layer': 1.66.10(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) - '@milaboratories/pl-tree': 1.13.3 - '@platforma-sdk/model': 1.80.10 + '@milaboratories/pl-client': 3.14.5 + '@milaboratories/pl-middle-layer': 1.66.13(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) + '@milaboratories/pl-tree': 1.13.5 + '@platforma-sdk/model': 1.80.13 '@vitest/coverage-istanbul': 4.1.8(vitest@4.1.8) vitest: 4.1.8(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.8)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) transitivePeerDependencies: @@ -7109,13 +7109,13 @@ snapshots: - supports-color - vite - '@platforma-sdk/ui-vue@1.80.10(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': + '@platforma-sdk/ui-vue@1.80.15(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': dependencies: '@milaboratories/columns-collection-driver': 0.2.3 '@milaboratories/pf-spec-driver': 1.4.24(@bytecodealliance/preview2-shim@0.17.9) '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/uikit': 2.15.18(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) - '@platforma-sdk/model': 1.80.10 + '@milaboratories/uikit': 2.15.20(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) + '@platforma-sdk/model': 1.80.13 '@types/d3-format': 3.0.4 '@types/node': 24.5.2 '@types/semver': 7.7.1 @@ -7156,9 +7156,9 @@ snapshots: '@platforma-open/milaboratories.software-ptexter': 1.2.4 '@platforma-open/milaboratories.software-small-binaries': 2.1.1 - '@protobuf-ts/grpc-transport@2.11.1(@grpc/grpc-js@1.13.5)': + '@protobuf-ts/grpc-transport@2.11.1(@grpc/grpc-js@1.14.4)': dependencies: - '@grpc/grpc-js': 1.13.5 + '@grpc/grpc-js': 1.14.4 '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 @@ -9475,17 +9475,17 @@ snapshots: queue-microtask@1.2.3: {} - quickjs-emscripten-core@0.31.0: + quickjs-emscripten-core@0.32.0: dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - quickjs-emscripten@0.31.0: + quickjs-emscripten@0.32.0: dependencies: - '@jitl/quickjs-wasmfile-debug-asyncify': 0.31.0 - '@jitl/quickjs-wasmfile-debug-sync': 0.31.0 - '@jitl/quickjs-wasmfile-release-asyncify': 0.31.0 - '@jitl/quickjs-wasmfile-release-sync': 0.31.0 - quickjs-emscripten-core: 0.31.0 + '@jitl/quickjs-wasmfile-debug-asyncify': 0.32.0 + '@jitl/quickjs-wasmfile-debug-sync': 0.32.0 + '@jitl/quickjs-wasmfile-release-asyncify': 0.32.0 + '@jitl/quickjs-wasmfile-release-sync': 0.32.0 + quickjs-emscripten-core: 0.32.0 rc@1.2.8: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0a1018a..c451a38 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,11 +11,11 @@ catalog: "@milaboratories/ts-configs": 1.3.1 "typescript": ~5.9.3 "@platforma-sdk/workflow-tengo": 6.8.2 - "@platforma-sdk/block-tools": 2.12.9 - "@platforma-sdk/model": 1.80.10 - "@platforma-sdk/ui-vue": 1.80.10 - "@platforma-sdk/test": 1.80.11 - "@platforma-sdk/tengo-builder": 4.0.20 + "@platforma-sdk/block-tools": 2.12.10 + "@platforma-sdk/model": 1.80.13 + "@platforma-sdk/ui-vue": 1.80.15 + "@platforma-sdk/test": 1.80.14 + "@platforma-sdk/tengo-builder": 4.0.21 "@platforma-sdk/package-builder": 3.14.2 "@platforma-sdk/blocks-deps-updater": 2.2.0 From c2fffd235a31eca9ad0047b80c1785b4a4f795bb Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Mon, 31 Aug 2026 18:36:39 +0200 Subject: [PATCH 2/2] Migration to latest block layout --- .changeset/sequence-embeddings-kind.md | 32 + .changeset/vdj-modality-model-selection.md | 4 +- .github/workflows/build.yaml | 7 +- .github/workflows/mark-stable.yaml | 2 +- block/package.json | 1 + kind/.oxfmtrc.json | 4 + kind/.oxlintrc.json | 3 + kind/package.json | 37 + kind/src/index.ts | 177 +++ kind/src/types.ts | 106 ++ kind/tsconfig.json | 10 + model/package.json | 1 + model/src/dataModel.ts | 11 +- model/src/index.ts | 10 +- model/src/types.ts | 108 +- pnpm-lock.yaml | 1334 ++++++++++++++------ pnpm-workspace.yaml | 20 +- 17 files changed, 1381 insertions(+), 486 deletions(-) create mode 100644 .changeset/sequence-embeddings-kind.md create mode 100644 kind/.oxfmtrc.json create mode 100644 kind/.oxlintrc.json create mode 100644 kind/package.json create mode 100644 kind/src/index.ts create mode 100644 kind/src/types.ts create mode 100644 kind/tsconfig.json diff --git a/.changeset/sequence-embeddings-kind.md b/.changeset/sequence-embeddings-kind.md new file mode 100644 index 0000000..171bb39 --- /dev/null +++ b/.changeset/sequence-embeddings-kind.md @@ -0,0 +1,32 @@ +--- +'@platforma-open/milaboratories.sequence-embeddings': patch +'@platforma-open/milaboratories.sequence-embeddings.model': patch +--- + +Add the block's `kind` component + +Every block must now declare a kind — a fourth component next to model, workflow +and ui. It carries the block's identity and its init-params contract, and +`block-tools structure check` fails without it. + +This block's contract is `{ inputAnchor?: PlRef; embedding?: EmbeddingSelection }`. +A project template can therefore seed a new instance with both the dataset to +embed and the (scope, model) combination to embed it with. Everything else in +the block's data still defaults: `embeddingInitializedForAnchor` is the UI's +re-seed guard, `mem` and `cpu` are opt-in overrides the workflow otherwise sizes +itself, and `defaultBlockLabel` is written by the UI from the chosen input. + +The two fields travel as a pair. A scope's `columns` are anchored ids that +resolve against `inputAnchor`, so an `embedding` seeded without the matching +`inputAnchor` points at nothing. Both stay optional, and the args projection — +which already refuses an incomplete selection — is what catches the mismatch +when the block runs. + +The model's `init` now reads those params, and a new `templateParams` projection +hands the same two fields back out, so seeding and exporting are inverses. A +block created without params starts exactly as before. + +The types the contract is built from (`EmbeddingSelection`, `SelectedScope`, +`EmbeddingModelId`, `Fidelity`, `ScopeFeature`, `ScopeReceptor`, +`WorkflowReceptor`) moved into the kind package, which owns the contract. The +model re-exports them, so every existing import path keeps working. diff --git a/.changeset/vdj-modality-model-selection.md b/.changeset/vdj-modality-model-selection.md index 99ac88f..73574ec 100644 --- a/.changeset/vdj-modality-model-selection.md +++ b/.changeset/vdj-modality-model-selection.md @@ -1,6 +1,6 @@ --- -'@platforma-open/milaboratories.sequence-embeddings.model': minor -'@platforma-open/milaboratories.sequence-embeddings': minor +'@platforma-open/milaboratories.sequence-embeddings.model': patch +'@platforma-open/milaboratories.sequence-embeddings': patch --- Offer antibody and TCR models for VDJ amplicon-profiling input (MILAB-6668). diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4d25b25..186fe2f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,7 +24,7 @@ jobs: with: app-name: 'Block: Sequence Embeddings' app-name-slug: 'block-sequence-embeddings' - node-version: '20.x' + node-version: '22.x' gha-runner-label: hz-ubuntu-dind build-script-name: 'build:dev-local' build-before-publish-script-name: 'build:release' @@ -39,6 +39,11 @@ jobs: package-path: 'block' create-tag: 'true' + # Require the published `block` package to be bumped by a changeset on + # PRs (empty changeset or the `skip-changelog` label waives it). Needs + # the input to exist on the pinned `@v4` reusable workflow. + require-package-path-bump: true + npmrc-config: | { "registries": { diff --git a/.github/workflows/mark-stable.yaml b/.github/workflows/mark-stable.yaml index 7d06f75..2aabdff 100644 --- a/.github/workflows/mark-stable.yaml +++ b/.github/workflows/mark-stable.yaml @@ -15,7 +15,7 @@ jobs: uses: milaboratory/github-ci/.github/workflows/block-mark-stable.yaml@v4 with: app-name: 'Block: Sequence Embeddings - Mark Stable' - node-version: '20.x' + node-version: '22.x' npmrc-config: | { "registries": { diff --git a/block/package.json b/block/package.json index 270a44a..b2d2dff 100644 --- a/block/package.json +++ b/block/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@milaboratories/ts-builder": "catalog:", "@milaboratories/ts-configs": "catalog:", + "@platforma-open/milaboratories.sequence-embeddings.kind": "workspace:*", "@platforma-open/milaboratories.sequence-embeddings.model": "workspace:*", "@platforma-open/milaboratories.sequence-embeddings.ui": "workspace:*", "@platforma-open/milaboratories.sequence-embeddings.workflow": "workspace:*", diff --git a/kind/.oxfmtrc.json b/kind/.oxfmtrc.json new file mode 100644 index 0000000..7eff5e7 --- /dev/null +++ b/kind/.oxfmtrc.json @@ -0,0 +1,4 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/configs/oxfmt.json"], + "ignorePatterns": ["dist", "coverage", "CHANGELOG.md"] +} diff --git a/kind/.oxlintrc.json b/kind/.oxlintrc.json new file mode 100644 index 0000000..b1a1390 --- /dev/null +++ b/kind/.oxlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-node.json"] +} diff --git a/kind/package.json b/kind/package.json new file mode 100644 index 0000000..eab80a8 --- /dev/null +++ b/kind/package.json @@ -0,0 +1,37 @@ +{ + "name": "@platforma-open/milaboratories.sequence-embeddings.kind", + "version": "1.0.0", + "private": true, + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "sources": "./src/index.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + } + }, + "scripts": { + "fmt": "ts-builder format", + "watch": "ts-builder build --target block-kind --watch", + "build": "ts-builder build --target block-kind && block-tools build-kind-manifest", + "check": "ts-builder check --target block-kind" + }, + "dependencies": { + "@platforma-sdk/block-kind": "catalog:", + "@platforma-sdk/model": "catalog:" + }, + "devDependencies": { + "@milaboratories/ts-builder": "catalog:", + "@milaboratories/ts-configs": "catalog:", + "@platforma-sdk/block-tools": "catalog:" + }, + "peerDependencies": { + "@types/node": "*", + "typescript": "*" + } +} diff --git a/kind/src/index.ts b/kind/src/index.ts new file mode 100644 index 0000000..b3d06aa --- /dev/null +++ b/kind/src/index.ts @@ -0,0 +1,177 @@ +import { assertParamsObject, defineBlockKind } from "@platforma-sdk/block-kind"; +import type { PlRef, SUniversalPColumnId } from "@platforma-sdk/model"; +import { isPlRef } from "@platforma-sdk/model"; +import { name, version } from "../package.json" with { type: "json" }; +import type { + EmbeddingModelId, + EmbeddingSelection, + Fidelity, + ScopeFeature, + ScopeReceptor, + SelectedScope, +} from "./types"; + +export * from "./types"; + +/** + * This block's init-params contract — the upstream dataset a new instance embeds, + * and the (scope, model) combination it embeds it with. + * + * Those two are what a creator actually chooses; everything else in the model's + * `BlockData` always defaults. `embeddingInitializedForAnchor` is the UI's + * re-seed guard, `mem`/`cpu` are opt-in overrides the workflow otherwise sizes + * itself, and `defaultBlockLabel` is written by the UI from the chosen input's + * option label. + * + * The two fields travel as a pair. A scope's `columns` are anchored ids that + * resolve against `inputAnchor`, so a template carrying an `embedding` without + * the matching `inputAnchor` seeds a selection that points at nothing. The + * contract cannot express that pairing as a type, so both stay optional and the + * args projection — which already refuses an incomplete selection — is what + * catches the mismatch at run time. + * + * Both fields are optional because the projection hands live state back + * untouched, and a freshly created block holds `undefined` and `{}` there. + * Requiring either would make the block export a file its own kind refuses to + * apply, so export and apply would stop being inverses. + */ +export type BlockParams = { + inputAnchor?: PlRef; + embedding?: EmbeddingSelection; +}; + +// Each closed set is declared once, as a const tuple, and its type is derived +// from it. That is what keeps the run-time check and the compile-time union from +// drifting: adding a case to the tuple widens the type, and a case added to the +// type alone does not compile. +const SCOPE_FEATURES = ["peptide", "CDR3", "VDJRegion", "Fv", "scFv"] as const; +const SCOPE_CHAINS = ["A", "B", ""] as const; +const SCOPE_RECEPTORS = ["IG", "TCRAB", "TCRGD", "unknown"] as const; +const FIDELITIES = ["high", "standard"] as const; +const EMBEDDING_MODEL_IDS = [ + "esm2", + "ablang2", + "currab", + "vhhbert", + "h3berta", + "tcr-bert", + "peptideclm2", + "sceptr", +] as const; + +function assertMember( + key: string, + allowed: readonly T[], + value: unknown, +): asserts value is T { + if (typeof value !== "string" || !(allowed as readonly string[]).includes(value)) { + throw new Error(`'${key}' must be one of ${allowed.join(", ")}. Got: ${JSON.stringify(value)}`); + } +} + +function assertString(key: string, value: unknown): asserts value is string { + if (typeof value !== "string") { + throw new Error(`'${key}' must be a string. Got: ${JSON.stringify(value)}`); + } +} + +/** + * `SUniversalPColumnId` is a branded string and the SDK ships no guard for it, so + * the check stops at "non-empty string". Whether an id resolves is a question + * about the anchor it is read against, not about the shape of the params. + */ +function assertColumnIds(value: unknown): asserts value is SUniversalPColumnId[] { + if (!Array.isArray(value) || value.length === 0) { + throw new Error("'scope.columns' must be a non-empty array of column ids."); + } + for (const [i, id] of value.entries()) { + if (typeof id !== "string" || id === "") { + throw new Error(`'scope.columns[${i}]' must be a non-empty column id string.`); + } + } +} + +/** + * A scope is a snapshot the UI takes from the picker, so every one of its fields + * is present once the scope exists at all. There is no half-written scope to be + * lenient about — the leniency lives one level up, where `scope` itself may be + * missing. + */ +function assertSelectedScope(value: unknown): asserts value is SelectedScope { + if (typeof value !== "object" || value === null || Array.isArray(value)) { + throw new Error("'embedding.scope' must be an object."); + } + const scope = value as Record; + + assertString("scope.id", scope.id); + assertString("scope.label", scope.label); + assertMember("scope.feature", SCOPE_FEATURES, scope.feature); + assertMember<"A" | "B" | "">("scope.chain", SCOPE_CHAINS, scope.chain); + assertMember("scope.receptor", SCOPE_RECEPTORS, scope.receptor); + assertColumnIds(scope.columns); + + if (typeof scope.isHeavy !== "boolean") { + throw new Error("'scope.isHeavy' must be a boolean."); + } +} + +/** + * The selection the user assembles. All three fields are optional in the model, + * because the UI fills one dropdown at a time — so each is checked only when + * present. Whether the resulting pair is a *compatible* (scope, model) is + * meaning, not shape; the args projection is what decides that, and it does so + * only when the block runs. + */ +function parseEmbedding(value: unknown): EmbeddingSelection { + if (typeof value !== "object" || value === null || Array.isArray(value)) { + throw new Error("'embedding' must be an object."); + } + const { scope, model, fidelity } = value as Record; + + if (scope !== undefined) assertSelectedScope(scope); + if (model !== undefined) { + assertMember("embedding.model", EMBEDDING_MODEL_IDS, model); + } + if (fidelity !== undefined) { + assertMember("embedding.fidelity", FIDELITIES, fidelity); + } + + return { scope, model, fidelity }; +} + +/** + * The same contract at runtime, for params arriving from a template file rather + * than from typed code — the only point that can catch a hand-written entry + * being wrong. + * + * Keys the contract does not name are dropped by not being read; refusing them + * would mean holding a list of field names as strings that nothing keeps in step + * with the type. + */ +function parseInitializationParams(value: unknown): BlockParams { + assertParamsObject(value); + + const { inputAnchor, embedding } = value; + + // A readable `{ block, name }` reference is expanded to a full `PlRef` before + // this runs, so `isPlRef` is the only shape to accept here. + if (inputAnchor !== undefined && !isPlRef(inputAnchor)) { + throw new Error( + "'inputAnchor' must be a reference to an upstream column, written as { block, name }.", + ); + } + + return { + inputAnchor, + embedding: embedding === undefined ? undefined : parseEmbedding(embedding), + }; +} + +// Identity (`name`/`version`) comes from this package's own `package.json`, so +// the on-wire `{name}@{version}` reference can never drift from what npm +// publishes; the bundler inlines the JSON import. +export const kind = defineBlockKind({ + name, + version, + parseInitializationParams, +}); diff --git a/kind/src/types.ts b/kind/src/types.ts new file mode 100644 index 0000000..1fdf5cf --- /dev/null +++ b/kind/src/types.ts @@ -0,0 +1,106 @@ +import type { SUniversalPColumnId } from "@platforma-sdk/model"; + +/** + * The types the block's init-params contract is built from. + * + * They live in the kind, not in the model, because the kind owns the contract: + * `BlockParams` is what a project template serializes, and a second copy of these + * shapes in the model would drift the moment one side gains a case the other + * misses. The model re-exports them from here, so every existing import path + * keeps working. + */ + +/** Receptor type. Same enum as sequence-properties to keep label conventions aligned. */ +export type WorkflowReceptor = "IG" | "TCRAB" | "TCRGD"; + +/** + * A scope's receptor, or `"unknown"` when the producer declares VDJ data but no + * receptor at all. + * + * `synthetic-repertoire-profiler` is the case: it declares `pl7.app/modality: vdj` + * but emits neither `pl7.app/vdj/receptor` nor `pl7.app/vdj/chain` — germline + * auto-detection builds a custom reference from the user's own parent sequences, so + * there is no library locus to read a receptor from. Guessing `IG` there would + * silently exclude the TCR specialists from a TCR dataset, so the unknown is carried + * explicitly and `compat.ts` relaxes receptor/chain gating rather than filtering on + * a value nobody supplied. + * + * Widening only — every previously persisted `WorkflowReceptor` stays valid, so + * snapshotted scopes in existing projects deserialize unchanged. + */ +export type ScopeReceptor = WorkflowReceptor | "unknown"; + +/** + * ESM-2 fidelity the user picks, projected into args. Default is `standard`. + * `standard` → ESM-2 150M; `high` → ESM-2 650M. Only meaningful when the + * model is ESM-2; ignored for the single-checkpoint specialists. + */ +export type Fidelity = "high" | "standard"; + +/** + * User-facing embedding-model choice — the value of the model dropdown. A + * logical id; the workflow maps it (plus `Fidelity` for ESM-2) to a concrete + * checkpoint `ModelTag`. The catalog and scope↔model compatibility live in the + * model package's `compat.ts`. + */ +export type EmbeddingModelId = + | "esm2" + | "ablang2" + | "currab" + | "vhhbert" + | "h3berta" + | "tcr-bert" + | "peptideclm2" + | "sceptr"; // pass 2 — gated off in compat.ts until its input path lands + +/** Embedding scope feature. `Fv` and `scFv` span/merge chains and carry no `chain`. */ +export type ScopeFeature = "peptide" | "CDR3" | "VDJRegion" | "Fv" | "scFv"; + +/** + * One embedding scope the user can select. `columns` carries the workflow- + * resolvable `SUniversalPColumnId`(s) of the sequence column(s) to embed — one + * for single-chain scopes, two (`[VH, VL]`) for the paired Fv scope. The column + * ids (and `isHeavy`/`receptor`) are snapshotted into `BlockData` on the user's + * gesture (the anchored-id storage pattern), so the args lambda stays `data`-only. + * + * Those ids are anchored — they resolve against the block's own `inputAnchor`. + * That is why a template that carries a scope must carry the matching + * `inputAnchor` too; the two params travel as a pair or not at all. + */ +export type SelectedScope = { + /** Stable picker key. The sequence column id for single scopes; `"Fv"` for paired Fv. */ + id: string; + feature: ScopeFeature; + chain: "A" | "B" | ""; + columns: SUniversalPColumnId[]; + // Display label, snapshotted from the picker option. + label: string; + /** + * True when this is an IG heavy chain (single-cell chain `A`, or bulk + * `IGHeavy`). Gates the heavy-only specialists (VHHBERT, H3BERTa) and the + * VHH-vs-mAb default. Snapshotted so the args lambda stays `data`-only. + * + * Always `false` when `receptor` is `"unknown"` — a producer that supplies no + * receptor supplies no chain either, so this carries no information there and + * `compat.ts` does not gate on it. + */ + isHeavy: boolean; + /** Receptor of the input this scope came from, snapshotted for `data`-only + * compatibility validation in the args lambda. `"unknown"` when the producer + * declares VDJ data without a receptor — see `ScopeReceptor`. */ + receptor: ScopeReceptor; +}; + +/** + * The single (sequence scope, model) selection the user assembles. `scope` and + * `model` are each undefined until picked — the UI fills one and bidirectionally + * filters the other. `fidelity` applies only when `model` is ESM-2. Always present + * in `BlockData` (initialised to `{}`); the args lambda wraps it into the workflow's + * 1-element task list, so the workflow's list contract is unchanged. + */ +export type EmbeddingSelection = { + scope?: SelectedScope; + model?: EmbeddingModelId; + /** ESM-2 fidelity; ignored for other models. */ + fidelity?: Fidelity; +}; diff --git a/kind/tsconfig.json b/kind/tsconfig.json new file mode 100644 index 0000000..5411207 --- /dev/null +++ b/kind/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@milaboratories/ts-configs/block/facade", + "compilerOptions": { + "outDir": "./dist", + "rootDir": ".", + "resolveJsonModule": true + }, + "include": ["src/**/*", "package.json"], + "exclude": ["dist", "node_modules"] +} diff --git a/model/package.json b/model/package.json index 0a2b8e7..04a8706 100644 --- a/model/package.json +++ b/model/package.json @@ -22,6 +22,7 @@ "check": "ts-builder check --target block-model" }, "dependencies": { + "@platforma-open/milaboratories.sequence-embeddings.kind": "workspace:*", "@platforma-sdk/model": "catalog:" }, "devDependencies": { diff --git a/model/src/dataModel.ts b/model/src/dataModel.ts index 81bb754..bf13f0b 100644 --- a/model/src/dataModel.ts +++ b/model/src/dataModel.ts @@ -1,3 +1,4 @@ +import { kind } from "@platforma-open/milaboratories.sequence-embeddings.kind"; import { DataModelBuilder } from "@platforma-sdk/model"; import type { BlockDataV1, BlockDataV2, BlockDataV3, EmbeddingCardV2 } from "./types"; @@ -45,14 +46,18 @@ function migrateV2ToV3(v2: BlockDataV2): BlockDataV3 { }; } -export const blockDataModel = new DataModelBuilder() +export const blockDataModel = new DataModelBuilder({ kind }) .from("Ver_2026_05_29") .migrate("Ver_2026_06_23_models", migrateV1ToV2) .migrate("Ver_2026_07_03_single_selection", migrateV2ToV3) - .init(() => ({ + // `params` carries the kind's init-params contract, and is undefined when the + // block is created outside a template. Both fields it can carry keep a default + // behind them, so a block created without params starts exactly as before. + .init(({ params }) => ({ + inputAnchor: params?.inputAnchor, // The selection is seeded by the UI on first input connection (specialist-first); // starts blank so the dropdowns have an object to bind to before an input exists. - embedding: {}, + embedding: params?.embedding ?? {}, // mem/cpu are intentionally left UNSET: the workflow sizes the embedding step's // resources automatically from device (CPU/GPU) and input volume. They become // opt-in overrides — set only when the user fills them in Advanced Settings. diff --git a/model/src/index.ts b/model/src/index.ts index 0efa70e..347f234 100644 --- a/model/src/index.ts +++ b/model/src/index.ts @@ -1,5 +1,6 @@ import type { InferOutputsType } from "@platforma-sdk/model"; import { BlockModelV3, PColumnCollection } from "@platforma-sdk/model"; +import { kind } from "@platforma-open/milaboratories.sequence-embeddings.kind"; import { EMBEDDING_MODELS, isCompatible } from "./compat"; import { blockDataModel } from "./dataModel"; import { buildScopeConfig, isVdjModality, resolveReceptor, SEQUENCE_SELECTORS } from "./scopes"; @@ -61,7 +62,7 @@ const inputAnchorSpecs = [ }, ]; -export const platforma = BlockModelV3.create(blockDataModel) +export const platforma = BlockModelV3.create({ dataModel: blockDataModel, kind }) .args((data) => { if (data.inputAnchor === undefined) { throw new Error("Select an input dataset"); @@ -95,6 +96,13 @@ export const platforma = BlockModelV3.create(blockDataModel) // Prerun feeds a lightweight always-rerun template that reports whether the // backend advertises a GPU .prerunArgs(() => ({})) + // The inverse of `init`: the two fields a template seeds are projected back out + // unchanged. Live state travels as-is — a half-picked selection is ordinary + // state, and the kind's parser accepts it. + .templateParams((data) => ({ + inputAnchor: data.inputAnchor, + embedding: data.embedding, + })) // Dropdown source for the input picker. Refs returned here populate the UI // selector; the user's pick is written back into `data.inputAnchor`. .output("inputOptions", (ctx) => ctx.resultPool.getOptions(inputAnchorSpecs)) diff --git a/model/src/types.ts b/model/src/types.ts index 7a41ce6..5ac3b52 100644 --- a/model/src/types.ts +++ b/model/src/types.ts @@ -1,47 +1,27 @@ +import type { + EmbeddingModelId, + EmbeddingSelection, + Fidelity, + ScopeFeature, + ScopeReceptor, + SelectedScope, +} from "@platforma-open/milaboratories.sequence-embeddings.kind"; import type { PlRef, SUniversalPColumnId } from "@platforma-sdk/model"; -/** Receptor type. Same enum as sequence-properties to keep label conventions aligned. */ -export type WorkflowReceptor = "IG" | "TCRAB" | "TCRGD"; - /** - * A scope's receptor, or `"unknown"` when the producer declares VDJ data but no - * receptor at all. - * - * `synthetic-repertoire-profiler` is the case: it declares `pl7.app/modality: vdj` - * but emits neither `pl7.app/vdj/receptor` nor `pl7.app/vdj/chain` — germline - * auto-detection builds a custom reference from the user's own parent sequences, so - * there is no library locus to read a receptor from. Guessing `IG` there would - * silently exclude the TCR specialists from a TCR dataset, so the unknown is carried - * explicitly and `compat.ts` relaxes receptor/chain gating rather than filtering on - * a value nobody supplied. - * - * Widening only — every previously persisted `WorkflowReceptor` stays valid, so - * snapshotted scopes in existing projects deserialize unchanged. + * The init-params contract's types live in the kind package, which owns the + * contract a project template serializes. They are re-exported here so every + * existing `./types` import keeps working and there is only one definition. */ -export type ScopeReceptor = WorkflowReceptor | "unknown"; - -/** - * ESM-2 fidelity the user picks per card, projected into args. Default is `standard`. - * `standard` → ESM-2 150M; `high` → ESM-2 650M. Only meaningful when the card's - * model is ESM-2; ignored for the single-checkpoint specialists. - */ -export type Fidelity = "high" | "standard"; - -/** - * User-facing embedding-model choice — the value of a card's model dropdown. A - * logical id; the workflow maps it (plus `Fidelity` for ESM-2) to a concrete - * checkpoint `ModelTag`. The catalog and scope↔model compatibility live in - * `compat.ts`. - */ -export type EmbeddingModelId = - | "esm2" - | "ablang2" - | "currab" - | "vhhbert" - | "h3berta" - | "tcr-bert" - | "peptideclm2" - | "sceptr"; // pass 2 — gated off in compat.ts until its input path lands +export type { + EmbeddingModelId, + EmbeddingSelection, + Fidelity, + ScopeFeature, + ScopeReceptor, + SelectedScope, + WorkflowReceptor, +} from "@platforma-open/milaboratories.sequence-embeddings.kind"; /** * Checkpoint tag emitted on the `pl7.app/embedding/model` domain of every output @@ -59,40 +39,6 @@ export type ModelTag = | "peptideclm2" | "sceptr"; -/** Embedding scope feature. `Fv` and `scFv` span/merge chains and carry no `chain`. */ -export type ScopeFeature = "peptide" | "CDR3" | "VDJRegion" | "Fv" | "scFv"; - -/** - * One embedding scope the user can select. `columns` carries the workflow- - * resolvable `SUniversalPColumnId`(s) of the sequence column(s) to embed — one - * for single-chain scopes, two (`[VH, VL]`) for the paired Fv scope. The column - * ids (and `isHeavy`/`receptor`) are snapshotted into `BlockData` on the user's - * gesture (the anchored-id storage pattern), so the args lambda stays `data`-only. - */ -export type SelectedScope = { - /** Stable picker key. The sequence column id for single scopes; `"Fv"` for paired Fv. */ - id: string; - feature: ScopeFeature; - chain: "A" | "B" | ""; - columns: SUniversalPColumnId[]; - // Display label, snapshotted from the picker option. - label: string; - /** - * True when this is an IG heavy chain (single-cell chain `A`, or bulk - * `IGHeavy`). Gates the heavy-only specialists (VHHBERT, H3BERTa) and the - * VHH-vs-mAb default. Snapshotted so the args lambda stays `data`-only. - * - * Always `false` when `receptor` is `"unknown"` — a producer that supplies no - * receptor supplies no chain either, so this carries no information there and - * `compat.ts` does not gate on it. - */ - isHeavy: boolean; - /** Receptor of the input this scope came from, snapshotted for `data`-only - * compatibility validation in the args lambda. `"unknown"` when the producer - * declares VDJ data without a receptor — see `ScopeReceptor`. */ - receptor: ScopeReceptor; -}; - /** A selectable scope. Alias of `SelectedScope` — the label lives on the base type. */ export type AvailableScope = SelectedScope; @@ -134,20 +80,6 @@ export type ScopeConfig = { paired: boolean; }; -/** - * The single (sequence scope, model) selection the user assembles. `scope` and - * `model` are each undefined until picked — the UI fills one and bidirectionally - * filters the other. `fidelity` applies only when `model` is ESM-2. Always present - * in `BlockData` (initialised to `{}`); the args lambda wraps it into the workflow's - * 1-element task list, so the workflow's list contract is unchanged. - */ -export type EmbeddingSelection = { - scope?: SelectedScope; - model?: EmbeddingModelId; - /** ESM-2 fidelity; ignored for other models. */ - fidelity?: Fidelity; -}; - /** * Frozen V2 card shape (per-card model selection, before the single-selection * redesign). Kept only as the migration source type so `BlockDataV2` stays diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a2010b..43e74f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,35 +10,38 @@ catalogs: specifier: 2.29.8 version: 2.29.8 '@milaboratories/ts-builder': - specifier: 1.6.1 - version: 1.6.1 + specifier: 1.7.2 + version: 1.7.2 '@milaboratories/ts-configs': - specifier: 1.3.1 - version: 1.3.1 + specifier: 1.4.0 + version: 1.4.0 '@platforma-open/milaboratories.protein-embeddings-assets': specifier: 1.2.0 version: 1.2.0 '@platforma-open/milaboratories.runenv-python-3': specifier: 1.10.7 version: 1.10.7 + '@platforma-sdk/block-kind': + specifier: 1.1.0 + version: 1.1.0 '@platforma-sdk/block-tools': - specifier: 2.12.10 - version: 2.12.10 + specifier: 2.14.3 + version: 2.14.3 '@platforma-sdk/model': - specifier: 1.80.13 - version: 1.80.13 + specifier: 1.83.0 + version: 1.83.0 '@platforma-sdk/tengo-builder': - specifier: 4.0.21 - version: 4.0.21 + specifier: 4.0.23 + version: 4.0.23 '@platforma-sdk/test': - specifier: 1.80.14 - version: 1.80.14 + specifier: 1.83.2 + version: 1.83.2 '@platforma-sdk/ui-vue': - specifier: 1.80.15 - version: 1.80.15 + specifier: 1.83.3 + version: 1.83.3 '@platforma-sdk/workflow-tengo': - specifier: 6.8.2 - version: 6.8.2 + specifier: 6.8.3 + version: 6.8.3 ag-grid-enterprise: specifier: ~34.1.2 version: 34.1.2 @@ -77,10 +80,10 @@ importers: version: 2.29.8(@types/node@25.9.1) '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0) + version: 1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@7.0.2))(yaml@2.9.0) '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.10(@types/node@25.9.1) + version: 2.14.3(@types/node@25.9.1) shx: specifier: 'catalog:' version: 0.4.0 @@ -92,10 +95,13 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@5.9.3))(yaml@2.9.0) + version: 1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@5.9.3))(yaml@2.9.0) '@milaboratories/ts-configs': specifier: 'catalog:' - version: 1.3.1 + version: 1.4.0 + '@platforma-open/milaboratories.sequence-embeddings.kind': + specifier: workspace:* + version: link:../kind '@platforma-open/milaboratories.sequence-embeddings.model': specifier: workspace:* version: link:../model @@ -107,10 +113,10 @@ importers: version: link:../workflow '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.10(@types/node@25.9.1) + version: 2.14.3(@types/node@25.9.1) '@platforma-sdk/model': specifier: 'catalog:' - version: 1.80.13 + version: 1.83.0 shx: specifier: 'catalog:' version: 0.4.0 @@ -118,11 +124,39 @@ importers: specifier: 'catalog:' version: 5.9.3 + kind: + dependencies: + '@platforma-sdk/block-kind': + specifier: 'catalog:' + version: 1.1.0 + '@platforma-sdk/model': + specifier: 'catalog:' + version: 1.83.0 + '@types/node': + specifier: '*' + version: 25.9.1 + typescript: + specifier: '*' + version: 7.0.2 + devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@7.0.2))(yaml@2.9.0) + '@milaboratories/ts-configs': + specifier: 'catalog:' + version: 1.4.0 + '@platforma-sdk/block-tools': + specifier: 'catalog:' + version: 2.14.3(@types/node@25.9.1) + model: dependencies: + '@platforma-open/milaboratories.sequence-embeddings.kind': + specifier: workspace:* + version: link:../kind '@platforma-sdk/model': specifier: 'catalog:' - version: 1.80.13 + version: 1.83.0 '@types/node': specifier: '*' version: 25.9.1 @@ -132,13 +166,13 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0) + version: 1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0) '@milaboratories/ts-configs': specifier: 'catalog:' - version: 1.3.1 + version: 1.4.0 '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.10(@types/node@25.9.1) + version: 2.14.3(@types/node@25.9.1) software: devDependencies: @@ -147,7 +181,7 @@ importers: version: 1.10.7 '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.12.10(@types/node@25.9.1) + version: 2.14.3(@types/node@25.9.1) test: dependencies: @@ -160,13 +194,13 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0) + version: 1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0) '@milaboratories/ts-configs': specifier: 'catalog:' - version: 1.3.1 + version: 1.4.0 '@platforma-sdk/test': specifier: 'catalog:' - version: 1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) + version: 1.83.2(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' version: 4.0.18(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0) @@ -178,10 +212,10 @@ importers: version: link:../model '@platforma-sdk/model': specifier: 'catalog:' - version: 1.80.13 + version: 1.83.0 '@platforma-sdk/ui-vue': specifier: 'catalog:' - version: 1.80.15(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) + version: 1.83.3(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) '@types/node': specifier: '*' version: 25.9.1 @@ -200,10 +234,10 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.24(typescript@6.0.3))(yaml@2.9.0) + version: 1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.24(typescript@6.0.3))(yaml@2.9.0) '@milaboratories/ts-configs': specifier: 'catalog:' - version: 1.3.1 + version: 1.4.0 workflow: dependencies: @@ -215,14 +249,14 @@ importers: version: link:../software '@platforma-sdk/workflow-tengo': specifier: 'catalog:' - version: 6.8.2 + version: 6.8.3 devDependencies: '@platforma-sdk/tengo-builder': specifier: 'catalog:' - version: 4.0.21 + version: 4.0.23 '@platforma-sdk/test': specifier: 'catalog:' - version: 1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + version: 1.83.2(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) shx: specifier: 'catalog:' version: 0.4.0 @@ -464,10 +498,6 @@ packages: resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} - '@babel/generator@8.0.0': - resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-compilation-targets@7.29.7': resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} @@ -490,18 +520,10 @@ packages: resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@8.0.0': - resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@8.0.2': - resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-option@7.29.7': resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} @@ -515,11 +537,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@8.0.0': - resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} - engines: {node: ^22.18.0 || >=24.11.0} - hasBin: true - '@babel/runtime@7.29.7': resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} @@ -536,10 +553,6 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} - '@babel/types@8.0.0': - resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} - engines: {node: ^22.18.0 || >=24.11.0} - '@bufbuild/protobuf@2.12.0': resolution: {integrity: sha512-B/XlCaFIP8LOwzo+bz5uFzATYokcwCKQcghqnlfwSmM5eX/qTkvDBnDPs+gXtX/RyjxJ4DRikECcPJbyALA8FA==} @@ -998,8 +1011,8 @@ packages: '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - '@milaboratories/columns-collection-driver@0.2.3': - resolution: {integrity: sha512-3rNWmuQGvEaBEzGMHIWeOi1p8j8sMDpnPKNUQvT0Ji7/ArvnfM5HK8dywxB+n3mLK8c11lW16+auM5xuydJXGw==} + '@milaboratories/columns-collection-driver@0.2.4': + resolution: {integrity: sha512-abbgAzME71ARvgnGQHte+dPMgt2JGBJN4YpGLVxiYr7GToHwypsEi3PY/dAqriQWRtpKR82EpIAMxXVq0d7XMw==} '@milaboratories/computable@2.9.8': resolution: {integrity: sha512-X0ZtxOnIJlAd9Y7CyBtWSKHgVuTKXbIryMwJaoYSEz0gY3JZVnsD0f59J/lwe3Key0/lSYh3EbL/pP5jACIzfQ==} @@ -1013,12 +1026,17 @@ packages: resolution: {integrity: sha512-Kiy0g7sEmFQxDwtnmTrdJ8XdUK0IDAB5ZnPCNEbK7lPGHIa+xG3kzfeR4y44QBdrYaK0NwG63D8Fc7dlv9KItg==} engines: {node: '>=22'} - '@milaboratories/pf-driver@1.8.5': - resolution: {integrity: sha512-w9GqvYClb7q4BkvHvKeUa8JrcnO/uAN7OrN5aLTs8cmMp5JQGHm13N5KQOQ5I1Tj9slREk+x+QOsRrPO0HQFCA==} + '@milaboratories/pf-driver@1.9.1': + resolution: {integrity: sha512-i4qt1kcOcvOAHGlA7tCHce1QpsvmrCDu2vvmZz/kfHPma7YyDU7PSSr6hhuV+rf7HZTJz7z193c7wCXTFTLrzQ==} engines: {node: '>=22.19.0'} - '@milaboratories/pf-spec-driver@1.4.24': - resolution: {integrity: sha512-ZGDodKhtw8gMIFUU2tFB8SmMmmFX13ywIemJApHQZsDBFNwmXdCQaj2jweKzJkOu+nZMrAi2gTE2dWd1CcfYSg==} + '@milaboratories/pf-spec-driver@1.5.1': + resolution: {integrity: sha512-K7BuQCUXqpUOAwgJ1aIO8SSQbE8RSEVb8J5e6vIpI6PqV7Uc8LHFswTguOSgSuacpMgQmEP9jmIKyafJdJ7PDw==} + + '@milaboratories/pf-spec@1.0.1': + resolution: {integrity: sha512-UbLycglulwrFgil6n1By17YGOVHzZXeb+tAVUej6ZFOmpRtAMQYVLOXAX4FN2tc98eDTJ+YrYdZCa7qWi1gBxw==} + peerDependencies: + '@bytecodealliance/preview2-shim': ^0.20.1 '@milaboratories/pframes-rs-node@1.1.56': resolution: {integrity: sha512-H6qltcR+HHb2kAy0U0zP90rqmv/MZGGkdXIyf89FUZTpoHOlXG4Ahxq7wXp9vviUczci4cLl2L0Q+dL2XGcsUA==} @@ -1030,33 +1048,26 @@ packages: '@milaboratories/pframes-rs-wasip2@1.1.56': resolution: {integrity: sha512-54bhC6XCAVO09J/sqVwEKA4hhTa27BDDNdH8BE+6+LvjBVkg/qq2/f0MzdrVijrmagbr97F1zgj5wIgUqwCSoA==} - '@milaboratories/pframes-rs-wasm@1.1.56': - resolution: {integrity: sha512-k/RQqiF+SwoOtFnYQ+i34Lzna8prOoFbLHaPY5oEUOrB/czehosFMzRQJAeFDKOxI/SbrH4D5jmWzTgUuhavLQ==} - peerDependencies: - '@bytecodealliance/preview2-shim': 0.17.9 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.7 - - '@milaboratories/pl-client@3.14.5': - resolution: {integrity: sha512-/n7Hjr43WYNkyrgPQ4FL0rQ5FthNS009WvVOBggnMSqCnp6xDHhv4DjLKlmlmdvQSzgI+SeoAjAn7TkOKpaoaA==} + '@milaboratories/pl-client@3.14.7': + resolution: {integrity: sha512-HIjPfGAYRRD0hbq5YSTkWt5XgBiv+yYtw73EjWLxui8eUEeB2ffdgsvH7IhVx2oXjUOL4p7M4i8PBnmdJ3830w==} engines: {node: '>=22.19.0'} '@milaboratories/pl-config@1.8.5': resolution: {integrity: sha512-XnfYXSSkRxeImQ21k6I8y5apisvagcSgMGfEeyRxNdSGwUVJbbI8TwJk+XBEDQ4lErW8oqtLxKjFQuHJMzRUoQ==} - '@milaboratories/pl-deployments@3.0.15': - resolution: {integrity: sha512-+i3bdvfPCXLZ789f5fRdtrbil3/RFyzSBNMkULcnyKY5u6GRZLjWDBC5aSE75PRTWx3Fxf743Fj9L3B6loMSWw==} + '@milaboratories/pl-deployments@3.0.16': + resolution: {integrity: sha512-nFAIY4rxAssVqicSzgSNVQB/ZOjHjh4uhvde8aWFqQcMZCQDhHSaVJezzxRdotS8JiY5kI4r/Y0cN+Ey1MDDog==} engines: {node: '>=22.19.0'} - '@milaboratories/pl-drivers@1.16.14': - resolution: {integrity: sha512-/MB4jHlV6ONaBaa6DtdKpOmCNCd5oMwhs7Wrj4b79W/JseKeLhXEFozdt5QIZgfOLZqu+IGKqy4z6KyWcF+mnQ==} + '@milaboratories/pl-drivers@1.16.17': + resolution: {integrity: sha512-Wy2SLso+2gj3nb1qWj76/V+F2gPzdZ/IlOxEYKGyGVUyD2dyvenVBEqKw/dM1g+YjhBhFGVetimyCEISB3/QfA==} engines: {node: '>=22'} '@milaboratories/pl-error-like@1.12.10': resolution: {integrity: sha512-iHmnLG5lxJqcymUmEL8onCDGEADk1S/5RNACQ5yfTCNcCkUc+7hYrDHQpFmWXPPGC9sG+NTBxt4wr5m8UsLm2g==} - '@milaboratories/pl-errors@1.4.34': - resolution: {integrity: sha512-+sxZtw+DjQmLmBp6hUeONV83OYsmkD3G15Aw6J5uzXn5r99lrXQVSFZSlpa7ok7gw24olfyVQwXiubfcxP5qcQ==} + '@milaboratories/pl-errors@1.4.36': + resolution: {integrity: sha512-WzKECX8Te6uP2DT7z2yTN6RrkiAWowYeU1rmB1Uc6sQBBWC6OjiqjiyOjvFeqxi73oXODARhLaLnqJcpG1onNA==} '@milaboratories/pl-healthcheck@1.0.5': resolution: {integrity: sha512-ZkQti4VU2FapJBFRtZGfR5NDPXEAEFgTf/NfemypgY0aA75fFPi4/c3BpXX5K7dht+JOgHqkMrBHxKIuE2T+fA==} @@ -1065,31 +1076,31 @@ packages: '@milaboratories/pl-http@1.2.4': resolution: {integrity: sha512-QKmhx+WEvJCV9dUy/SBdQk/ApaJ5ewBFgm/b+XPlS10SusAdqUUTGvK5+hq8YSuUMXlHb/dk++UtI5YlDuDl2Q==} - '@milaboratories/pl-middle-layer@1.66.13': - resolution: {integrity: sha512-Acx5ewjeLRUoAcReakQgtoMnajdSqm5eB+K2aj93FVCtTS8i+5l9kBdpVnJTnXv0UHmOJHFGZTwBlQOjrqyDNw==} + '@milaboratories/pl-middle-layer@1.68.0': + resolution: {integrity: sha512-adedq3Wvi9tOc6ugZZ2DhKj9rU+qXZWY91JMXi6nrTi03iJUqiduwFY5+v0AZEu6dkbHgQXwTnSKNesSm3RbJw==} engines: {node: '>=22.19.0'} - '@milaboratories/pl-model-backend@1.4.19': - resolution: {integrity: sha512-288BUlxQtpsd8CNpOGBqGTM1xMFX4JOuNzw5A4hxB+3sq+P2+JU0kNv6PbqIAiTwXeTZ7zsiqN4Gw/aYMSop6Q==} + '@milaboratories/pl-model-backend@1.4.21': + resolution: {integrity: sha512-Z2z5J8bglslgXXoi1aySi1ho+/d+ylJiuEaRw9XTNuE5iBM3EQPe0rw095pXGOinTlMpmvUcCI2wkVCraUQ1dA==} '@milaboratories/pl-model-common@1.46.2': resolution: {integrity: sha512-VEeauisApYScvCS8lnK3zpFJ520xuTAodKJmjR8ulHcMrWMyWMfHEdGb7j5OMD0mM/OwTgmQrrJ5eB7Xd+xoOQ==} - '@milaboratories/pl-model-common@1.47.3': - resolution: {integrity: sha512-tXmKujm+6ru/Fh9hr9H3iRBWbS+JE0Q7FNualtzJpijaB3SNtScR4erLTamdANv5RYNn7kbYpDWr6wAjAOajrg==} - - '@milaboratories/pl-model-middle-layer@1.30.15': - resolution: {integrity: sha512-oBkVlKR+qgsQR74N8G3aW3wBaJw78+9HJjnaNbH7QrTjKq4pno7wTXdrz7Ptk6Tu4SWfkcecXY6+xCnkDKr4eQ==} + '@milaboratories/pl-model-common@1.48.0': + resolution: {integrity: sha512-oCVrjFNmjQolb7YWnbSGHnp6GGVm1PhG1lnNABp9lqYjvA2ISjIPQLIo/vT2ca0mqwLrEvbuRqiqSFOg7sQ5tQ==} '@milaboratories/pl-model-middle-layer@1.30.7': resolution: {integrity: sha512-rs9x3Ron4ujR/UOdEgB8WUB1SvZ8ZAScT1Av/e4or+iiQ/CzhmK9nqtYamHVwKV+JgwIFbXQwxGvIHDVz955dQ==} - '@milaboratories/pl-tree@1.13.5': - resolution: {integrity: sha512-dR3ejGQ+Yuerrvje9oLyknC1LATKPO86mMFwnNRfCAeleW2yKjMeULW9/tl6HjIXWiwnuWSdG8aqUQDlCLP9uQ==} + '@milaboratories/pl-model-middle-layer@1.32.0': + resolution: {integrity: sha512-X1iLGgOwzkw8mQ/GfTxfOTJakBJ26np85h5HqUziMbVkFL0SR7wpd7xpgUs6TKVkYNM8viAv3iA2k63Yc5SahQ==} + + '@milaboratories/pl-tree@1.14.0': + resolution: {integrity: sha512-MAuqKi/d6yZbT+SOqPgOIXgA4CEtwZn0/ft5KMx+efGQ0SAfRzdqV4FG0YmnwJzznllHgamWifa0nPbsOwK76A==} engines: {node: '>=22.19.0'} - '@milaboratories/ptabler-expression-js@1.2.37': - resolution: {integrity: sha512-urVRk4b5Jse555euNNITlOJ437McZVtBnC5h/E6O+iHm+hfNIi6OP1aAD5ai4jOpHllm85zW5Ne7hVyyd71bJw==} + '@milaboratories/ptabler-expression-js@1.2.38': + resolution: {integrity: sha512-z14oa/V3nkBGHxnygpfxUBU7EfHQKHh1KZgK47ouqIw7CvuOmqjViRdynY4HZNjAh3n3AGHpBbEFs/J+hQMW3g==} '@milaboratories/resolve-helper@1.1.3': resolution: {integrity: sha512-38/dW/XRZQREOxAOOKtO0lzEWPCP/DH0qhB3q1kYcGoN++5V92/zbVwbYrMDeDcjTyo+D62iIep+sKXeWHa7Uw==} @@ -1102,19 +1113,19 @@ packages: os: [darwin, linux, win32] hasBin: true - '@milaboratories/ts-builder@1.6.1': - resolution: {integrity: sha512-0m+I8bdxw6mGTfPt+xW8OGvburrxLUpI/QZsyACHsXwyfVRfDKvWB3/9Hm053KzwHqrzpeuvidEBdKRVRAi9KQ==} + '@milaboratories/ts-builder@1.7.2': + resolution: {integrity: sha512-cHDscAjCDA5SXYkgE14kkbbzqYQfm6ltH0kWFcL8ZlxDzxUWo5AL6uziNJDBgZ6ybb4kEa4I+FMYwvEwh6VEkw==} hasBin: true - '@milaboratories/ts-configs@1.3.1': - resolution: {integrity: sha512-MfLF+qgDwnD2BuncGzFqQxKuqq/0KtXcXXftcvp8E08xY9cl5kkmBHX/H8RYAH4FvF6ghb56c3I6iaxIa5xIUw==} + '@milaboratories/ts-configs@1.4.0': + resolution: {integrity: sha512-VzU9D+RiggsG4VYteJSBN4o8IjYae9GbZ8MofikMJQLOI1Ir9/pVyPXXGnG/TAGvmcjbK/psAiZVGSvI5MBPGg==} '@milaboratories/ts-helpers@1.8.6': resolution: {integrity: sha512-ef01tARUl+0Urt3x8HHAByrhYHg4Rnn7WiFyJ+joZFZl1T1pUKTgfB7Zxc8Cn06HIl4i6H7s5OSymjZePIGqfQ==} engines: {node: '>=22.19.0'} - '@milaboratories/uikit@2.15.20': - resolution: {integrity: sha512-+ZxvfmSzig/NVg287ebkkbPWMo2LFsRA7DW14+ssxXTj3ItzgwtzCfyCbnHIlb3eJUnEZpRYyRgRM0KmQZezQw==} + '@milaboratories/uikit@2.15.27': + resolution: {integrity: sha512-cXZemE5RxLQuF9EjktG+TMjfFAk66DGTS7VSxC6M+qV0z4+09tmlRm74y5iJTK0b1GNNwSRXoCPOxIwd3dshxQ==} '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -1708,8 +1719,8 @@ packages: '@platforma-open/milaboratories.runenv-python-3@1.10.7': resolution: {integrity: sha512-Rc6iBMfzMh9/kAC44Rv2sQY5svk8K95ty7SdGdEYMlftZBT2rzboc1LP1UcQtWN3ndU2i4Giu+QbKs0MwjHUWQ==} - '@platforma-open/milaboratories.software-ptabler.schema@1.15.21': - resolution: {integrity: sha512-3EWO64poe5VcBIgVIdIFHwN7nPi000kPuaRmlVt3xnnQZqXUYDFNZfZ2Mc9/mE1Eq3FLwQxcy/5mng7LvgWnXg==} + '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': + resolution: {integrity: sha512-f9vT+iSfNelgAGjaNzn1GErhmxHbjG6HtskAMoaUEbrciCG8c8i8cSCJPLu0xKNBcjM1UW+T10uD89Ckq2vkxQ==} '@platforma-open/milaboratories.software-ptabler@2.1.8': resolution: {integrity: sha512-28dKwcKNIB/8OYH6l/li7Qa/aE2NgDVtNUmN8v6jZsLKT59ogFclz8ZrQ+OiQFzHQCLBlWBt5TdIHfHPxBaNFw==} @@ -1735,33 +1746,36 @@ packages: '@platforma-open/milaboratories.software-small-binaries@2.1.1': resolution: {integrity: sha512-KN1PR7YgUUfx1dxh/TtcoWpSZbOXbRxXzQuJ505qHuXuE0spYwC7bXnvJsEYbEwRcPMa0foTrjBnPNORE4yr+Q==} - '@platforma-sdk/block-tools@2.12.10': - resolution: {integrity: sha512-ba2uau/QIcSTwVNUZcVUdlBoicp0jucuS7qxer+bJf4gQbzkcWaH4TyAO+843NIM7ZWNKy/9KhyjZEJvKwWGew==} + '@platforma-sdk/block-kind@1.1.0': + resolution: {integrity: sha512-4uh+40o6BGfQcPPhkYGCjng8EXR9qn+6i5Fuc3RJ5QGfPYfcwbxT35G2V7ALUxmsqjLZ5SGL+JcW6Lm2v0cZHA==} + + '@platforma-sdk/block-tools@2.14.3': + resolution: {integrity: sha512-CD0NPfUoXiJhl6JArC057oCXbqKkJf5HJsmrlZShnh6lKRaIQlibF8VUqbpBi9+PopsGCQ4/s5HnLR7wQoWDzg==} hasBin: true '@platforma-sdk/blocks-deps-updater@2.2.0': resolution: {integrity: sha512-p9lBxhFXM9WoRsrJO7dfkiXSK+1m63yIn1sKhBO71eMbhrLMyVYHEOeNf3w5OCdbRF5QsNhXzWuiTmFK3zHFsA==} hasBin: true - '@platforma-sdk/model@1.80.13': - resolution: {integrity: sha512-wxGQ4/sxgWMAKrGWeGD13s9BZYLfg9+5StwH4ZsdNfGkBSwj9Amu8O6az63qRc0n+HUce5MVBxVeSoAc6eFEvA==} + '@platforma-sdk/model@1.83.0': + resolution: {integrity: sha512-uBg8vJ1BnSUKqgQMz2ADXOm/tyaYlF218p+ILqh16y3HXRH+pqQqpwP0iHp9P6tf8vThIOC2TW+5mREGCaTmBw==} - '@platforma-sdk/package-builder-lib@1.2.1': - resolution: {integrity: sha512-H6weitj7JxbiJSlteEFLafTJ+tfty6iv/imf3ysy8oCS8AZIRJk2VMW3M/aAc+xVkQeX7oVIwMwFMYrJIoFsAg==} + '@platforma-sdk/package-builder-lib@1.3.0': + resolution: {integrity: sha512-CdBjmNo6E1fBxKYWaXa49L/L2WLURxs2f1TAqxLIZlHRE4DZ6E1TEj3jNNKESWp+/9rwtLkTAzmTzNPrDgz+2Q==} - '@platforma-sdk/tengo-builder@4.0.21': - resolution: {integrity: sha512-ecv4TE4eNljBHbpjQT50NPJofrE5Qv5Q8EY02RO8rSWpYbTmkbzaJ0eUwKcYkxkO9NlLhhMpXe7RpMC2QPLAsQ==} + '@platforma-sdk/tengo-builder@4.0.23': + resolution: {integrity: sha512-Qkxpg3wuZQOc6KbEL3pifOCdqOH91TaL3jDluVIm5mz3qpx96KO+To8AT/0nLqmvaF7yv8AP22QiyyqduAhGiw==} engines: {node: '>=22'} hasBin: true - '@platforma-sdk/test@1.80.14': - resolution: {integrity: sha512-ScdpB9ZOR4z65hE3HhHzuVS5s07/xkU5lulDtYs4LOt6nK9qEmIreG1+9s0Xco6AnGdLYQq/kaSXfiASWeXCsg==} + '@platforma-sdk/test@1.83.2': + resolution: {integrity: sha512-tdNihBcIQX7UoOP8Cbswf68oQkc6p2rHvgTQqwT7si62CpTRoCQsXnuRFlPgx0J+DI9zB1N6VrLIQLISSQXx/g==} - '@platforma-sdk/ui-vue@1.80.15': - resolution: {integrity: sha512-iPFZnLrPyFUev9mRwnsDFg6wYbf/BEgN0a9KX/Tto8Tp6qMbOk6LFfz49tHUDzNZN25lceLhriAHTWN/iBO0tw==} + '@platforma-sdk/ui-vue@1.83.3': + resolution: {integrity: sha512-bRhh2Qg6cvt4VLJDDLMvbCwZpcqIE0717H/zUODAbTnLZpGeKHYN/PZbItTyhD+UCu39rWsE6dXfU/NBVSupYg==} - '@platforma-sdk/workflow-tengo@6.8.2': - resolution: {integrity: sha512-AHR/Y+vbyfda17A7xY2uH9TlXiBpM8242tTO6+lj8phA4/KS6mez4GLu4ZEaASlZpX6YkQsUs5LUxYQU7pXeiQ==} + '@platforma-sdk/workflow-tengo@6.8.3': + resolution: {integrity: sha512-KImCzq7v/2qgH/PIBCTipV0B/ulLxDnDOpWOO+zs56+p/B2Dg25ZevlA2LzOFVk9SWx6ilXp4ilWx3K2HbccqQ==} '@protobuf-ts/grpc-transport@2.11.1': resolution: {integrity: sha512-l6wrcFffY+tuNnuyrNCkRM8hDIsAZVLA8Mn7PKdVyYxITosYh60qW663p9kL6TWXYuDCL3oxH8ih3vLKTDyhtg==} @@ -2383,9 +2397,6 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/jsesc@2.5.1': - resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} - '@types/minimatch@6.0.0': resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. @@ -2414,13 +2425,137 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@typescript/typescript6@6.0.2': + resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==} + hasBin: true + '@typescript/vfs@1.6.4': resolution: {integrity: sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ==} peerDependencies: typescript: '*' - '@vitejs/plugin-vue@6.0.7': - resolution: {integrity: sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==} + '@vitejs/plugin-vue@6.0.8': + resolution: {integrity: sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2522,19 +2657,8 @@ packages: '@vue/compiler-ssr@3.5.35': resolution: {integrity: sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==} - '@vue/compiler-vue2@2.7.16': - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - - '@vue/language-core@2.2.0': - resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-core@3.3.5': - resolution: {integrity: sha512-UkKu5nhX89fg4VhlG/FOeI10G3cj/7radKT/cy9BT4Q9qJmJlSTAc/dP63Xqs29aypN4f39xUV6PsLNk/dcD6g==} + '@vue/language-core@3.3.10': + resolution: {integrity: sha512-CR7ByBbgPHqhxrioKPOcZBqttaozzLNwtkCzXQ+uF8gLPHnUe03srPnGpdtHD3zp+bq5iyVkZ1WNx7W564RPwg==} '@vue/reactivity@3.5.24': resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} @@ -2635,6 +2759,129 @@ packages: peerDependencies: vue: ^3.5.0 + '@yuku-codegen/binding-android-arm64@0.9.3': + resolution: {integrity: sha512-viote6xAyL5cKLquV2X2wRfopSckH+msDYbaI8Hh8JAaogYs8MJZVRUbSrbsY29TaPrIFZwNRwQ8+YSxs0dkGw==} + cpu: [arm64] + os: [android] + + '@yuku-codegen/binding-darwin-arm64@0.9.3': + resolution: {integrity: sha512-y2PGOLyxc724EJ+Et/5PxGfutQuV1Z2J9cxHo6W1I5CR3nk0i03J4yPrnw6rNJOfrtlISzcc7q0RrSyfPndpIg==} + cpu: [arm64] + os: [darwin] + + '@yuku-codegen/binding-darwin-x64@0.9.3': + resolution: {integrity: sha512-xZ9UpXUOLmsrKVUp7MRXxWU3drNiilRC42OLpjWEhnOehIGVF1bZgzHcqRYJxVyU53RMrkRMsaxplkGd6Qo/ow==} + cpu: [x64] + os: [darwin] + + '@yuku-codegen/binding-freebsd-x64@0.9.3': + resolution: {integrity: sha512-RGCYSZw3VonreVTpur9iOfnbMngR2/f7UOE7gwcDx5WoHjIhtmTK9EIq9qs78ARdMFAPzKp5OzHljl5QMaGJ7g==} + cpu: [x64] + os: [freebsd] + + '@yuku-codegen/binding-linux-arm-gnu@0.9.3': + resolution: {integrity: sha512-kjIJIw39GSPTF0hnq+jnM0tR+J5WlariAAWetxMtawNskITDT1ZigaK3YF5hMhDz2mAofaM1t+63qtx+7aXjeg==} + cpu: [arm] + os: [linux] + + '@yuku-codegen/binding-linux-arm-musl@0.9.3': + resolution: {integrity: sha512-TVHeVdzaS4ub86URrQufiy4t01ZtdyKDZ5sTPqWFKAUbQJ7rQ0o5vIT+/jCeHQbP+Yf9p5peRdmPbcZewoDNiA==} + cpu: [arm] + os: [linux] + + '@yuku-codegen/binding-linux-arm64-gnu@0.9.3': + resolution: {integrity: sha512-9aQeeLh1qaCa2GcyzHnwLKGfFrsI+KOyhnh4+fICSq5kyhzCWQfXVCCK4RTEZPLcyuVwfN5Id0JEYavRN4oNTQ==} + cpu: [arm64] + os: [linux] + + '@yuku-codegen/binding-linux-arm64-musl@0.9.3': + resolution: {integrity: sha512-TLXA5Hd1nr8VSP2MtxcFddsBIHj+DPpyG5eberEGMATndgG7STlKQmle51MV0MZ8UgsdYM6CybIVpzlCPQwP9w==} + cpu: [arm64] + os: [linux] + + '@yuku-codegen/binding-linux-x64-gnu@0.9.3': + resolution: {integrity: sha512-tk0BFbF3Clb9k9biPH3qmr+Qwk24rRM26+HY91hYXmZlzlepZG0scQ6OffZFWtzwKE5JjlZpMdcWj1lTiHbEjA==} + cpu: [x64] + os: [linux] + + '@yuku-codegen/binding-linux-x64-musl@0.9.3': + resolution: {integrity: sha512-xo+pXshsCXruEEkDMbwHqkeTyC4XHb6A6oXr6x2YK3jOMcS5kZz0e26BmTCr40J0nY/K3ysmwG9R1xHygtiuwQ==} + cpu: [x64] + os: [linux] + + '@yuku-codegen/binding-win32-arm64@0.9.3': + resolution: {integrity: sha512-70gAQo6HZzMgIJTjeMZOEO2XaRj4GcNGP/n81R9tXQv0x8d4ZHnZDv+ygeWfHo+xchAUPwpnrVZA4p6RhJa3GQ==} + cpu: [arm64] + os: [win32] + + '@yuku-codegen/binding-win32-x64@0.9.3': + resolution: {integrity: sha512-7Hz3NGlq6qBBR8zMEk6GMZivofNjnYZpMXSoUwUgz9Ur2LaivuP23HQh0ern+T6HVkTJEvilw4VJrg1rX1Ugcg==} + cpu: [x64] + os: [win32] + + '@yuku-parser/binding-android-arm64@0.9.3': + resolution: {integrity: sha512-z3tDGTaUXD5Q4IuebFOY/QHxhR/SqujMhkMv9C5bh25upyFEXdafp0MsXQIIheWhVZzn5VMOniyxFni/7s9LgQ==} + cpu: [arm64] + os: [android] + + '@yuku-parser/binding-darwin-arm64@0.9.3': + resolution: {integrity: sha512-hzKvKSKS7z3ufnu1VkQYEoxmS6A5uNnkwukKnc2atxpWdq648nLVOqut4h1jUXjbM2WcoTfuZLF6AHAGFf8cmg==} + cpu: [arm64] + os: [darwin] + + '@yuku-parser/binding-darwin-x64@0.9.3': + resolution: {integrity: sha512-OM2PiVlPATvzlj/KGHNlu+t8FC3YzM5joVNjhsz/EaigQ8x2UUQ1Q0agQLiv5GZ2L8TSzrLUwBCZ7YOvP8q+tw==} + cpu: [x64] + os: [darwin] + + '@yuku-parser/binding-freebsd-x64@0.9.3': + resolution: {integrity: sha512-WMn9M4LHNVysGNwsAJ9gpRPqQIW2lcPrDNGcyk0agx3IYqCJq1MQugh6Be8Otc5U08eGdE39o8Kx9YWJmXz7GA==} + cpu: [x64] + os: [freebsd] + + '@yuku-parser/binding-linux-arm-gnu@0.9.3': + resolution: {integrity: sha512-vqKjwiyW1FWvbykYMEQIcAJwA17WxK3rxxqDuyCvQwcNVaLEUxI4BXiUdlF3kHucc7MnoFQhoRPkySgOzlLM+Q==} + cpu: [arm] + os: [linux] + + '@yuku-parser/binding-linux-arm-musl@0.9.3': + resolution: {integrity: sha512-qohilhYOT+zkt2gYzym4F1T6BzRdvPqS9/sFB03pmnVV8LrvjOXVsGwEBAa3CEvzJKhAZjdTmVz7zsVdjyHWLg==} + cpu: [arm] + os: [linux] + + '@yuku-parser/binding-linux-arm64-gnu@0.9.3': + resolution: {integrity: sha512-tvTIyUvTGkeee68i4JIo9o27As+Ug6LXOZvElGgFbTs6+KBdb5LGhvugaIQljdfIsm2XnIbOLG6OnQSXHMLB9w==} + cpu: [arm64] + os: [linux] + + '@yuku-parser/binding-linux-arm64-musl@0.9.3': + resolution: {integrity: sha512-OWZBHW1wuChBpFlrF+On1yiBcFPMRrj2g0VKsM/PCBGffu1OM0ORkS+vLS3Snu6wYwndM5Dd9Ctvux6eUlrQjA==} + cpu: [arm64] + os: [linux] + + '@yuku-parser/binding-linux-x64-gnu@0.9.3': + resolution: {integrity: sha512-/tbk1h0dlADOCngbiQO9V3SHwBIJkoGBq8BDEraSw2CC3nGxPEPTCCYUDp5738Ij2FxVwy1FWVuhFkHvpMrPbQ==} + cpu: [x64] + os: [linux] + + '@yuku-parser/binding-linux-x64-musl@0.9.3': + resolution: {integrity: sha512-u3+0sCso/mcjDvtc3866D2giV7l34PDyDVBkMesAWa3DWbIWPlybehi2SSnmScgArV22ctqSSgUzdBBVJ6zYAg==} + cpu: [x64] + os: [linux] + + '@yuku-parser/binding-win32-arm64@0.9.3': + resolution: {integrity: sha512-xnGEvdhyjRkXozHtpXVpEEkyGZWAxJ3RoILv7XRV5SvTEztaTCk5GQyfcOzI9An/EJtcL4ERCI8QmS0TpDPJiA==} + cpu: [arm64] + os: [win32] + + '@yuku-parser/binding-win32-x64@0.9.3': + resolution: {integrity: sha512-N5eShGcuwnrXEprePFmEjtng6acZmtnC4zgazK9xxkavcx1q1uX8Nz8lU5RS973EMlNr902cIc6Cd2D4tqZDBg==} + cpu: [x64] + os: [win32] + + '@yuku-toolchain/types@0.9.3': + resolution: {integrity: sha512-rFE+5P4g2wxko5C85MugJOlVjBHEQq87dIkhLkniLXLp63PEtgaFjD954i5HXlfnyzLxPcZHsSOVDVgmo1HToA==} + '@zip.js/zip.js@2.8.26': resolution: {integrity: sha512-RQ4h9F6DOiHxpdocUDrOl6xBM+yOtz+LkUol47AVWcfebGBDpZ7w7Xvz9PS24JgXvLGiXXzSAfdCdVy1tPlaFA==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'} @@ -2705,9 +2952,6 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - alien-signals@0.4.14: - resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} - alien-signals@3.2.1: resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==} @@ -2760,10 +3004,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-kit@3.0.0: - resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} - engines: {node: ^22.18.0 || >=24.11.0} - async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -2849,9 +3089,6 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - birpc@4.0.0: - resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - bl@1.2.3: resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} @@ -3088,9 +3325,6 @@ packages: resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -3392,8 +3626,8 @@ packages: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} - get-tsconfig@5.0.0-beta.5: - resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} + get-tsconfig@5.0.0-beta.6: + resolution: {integrity: sha512-X6fBC0pmImC70gvX2zm56go9hx0MyoGVdG0tUCkg/D+Xnh5TJsOZ7iDbOdI3PvmtrDxnu1YdDufpK2QJX1Meqw==} engines: {node: '>=20.20.0'} github-from-package@0.0.0: @@ -3446,10 +3680,6 @@ packages: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -3881,6 +4111,10 @@ packages: resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} engines: {node: '>=12.20.0'} + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -4160,20 +4394,20 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown-plugin-dts@0.26.0: - resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} - engines: {node: ^22.18.0 || >=24.11.0} + rolldown-plugin-dts@0.28.4: + resolution: {integrity: sha512-yNg16bsWNk1MQ0Pkf3bAPFoZRqSWtxhiTHxKKHCoTZIwwyWerA5pX1MOogb1mjjwusVN2/kd4pK08iQ8M8hFIw==} + engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} peerDependencies: - '@ts-macro/tsc': ^0.3.6 - '@typescript/native-preview': '>=7.0.0-dev.20260325.1' - rolldown: ^1.0.0 - typescript: ^5.0.0 || ^6.0.0 + '@typescript/native-preview': '*' + '@volar/typescript': ~2.4.0 + rolldown: ^1.2.0 + typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 vue-tsc: ~3.2.0 || ~3.3.0 peerDependenciesMeta: - '@ts-macro/tsc': - optional: true '@typescript/native-preview': optional: true + '@volar/typescript': + optional: true typescript: optional: true vue-tsc: @@ -4540,6 +4774,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} @@ -4568,6 +4807,40 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unplugin-dts@1.0.3: + resolution: {integrity: sha512-/GR887wfG4r1cWyt1UZsLRuMIjsmEbGkS9yJrz+0dsToHAYUD5CTyP3JMGVLv25j9K0mJcwAVvZno/aTuSUvNg==} + peerDependencies: + '@microsoft/api-extractor': '>=7' + '@rspack/core': ^1 + '@vue/language-core': ^3.1.5 + esbuild: '*' + rolldown: '*' + rollup: '>=3' + typescript: '>=4' + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@rspack/core': + optional: true + '@vue/language-core': + optional: true + esbuild: + optional: true + rolldown: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} + upath@2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -4593,12 +4866,17 @@ packages: vite-plugin-commonjs@0.10.4: resolution: {integrity: sha512-eWQuvQKCcx0QYB5e5xfxBNjQKyrjEWZIR9UOkOV6JAgxVhtbZvCOF+FNC2ZijBJ3U3Px04ZMMyyMyFBVWIJ5+g==} - vite-plugin-dts@4.5.4: - resolution: {integrity: sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==} + vite-plugin-dts@5.0.3: + resolution: {integrity: sha512-gIth6NdCEHWPiiRMCK3N6C8WjvdsrtEQrmsiG8h6Ov+lFP+b07Y+wcs9H0H7n146l0PDTYK4cQN1vgeG1pMdRQ==} peerDependencies: - typescript: '*' - vite: '*' + '@microsoft/api-extractor': '>=7' + rollup: '>=3' + vite: '>=3' peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + rollup: + optional: true vite: optional: true @@ -4779,8 +5057,8 @@ packages: vue-component-type-helpers@3.3.3: resolution: {integrity: sha512-x4nsFpy5Pe8fqPzp/5vkTPeTTDBpAx4WVtV47Ejt0+2FQrq4pRRsJs7JmYRqMFzTu/LW+pCWEjQ3YVCkPV7f9g==} - vue-tsc@3.3.5: - resolution: {integrity: sha512-Rzh/G2MmNlMSAMTiQEjDrsb4dgB/jbtEM47rVN2NtidF1dfb/q4w4QvpQBtW5+y3y5H27Hjh7deVwk+YB02fNg==} + vue-tsc@3.3.10: + resolution: {integrity: sha512-YaDVxcW+CGtaOt3pZahMG5jYPx0hsUTxyEoPOTSMebcGUXP9lIBabQ14vfKMORb2CqqK5CxsNo/d1d+4IQwiKg==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -4804,6 +5082,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -4883,6 +5164,15 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} + yuku-ast@0.9.3: + resolution: {integrity: sha512-Kt0PXlPCXdKF1fWFTl7N3DaxsVk6DHF8VAXHJMkwPtJnWYgbx20pYgGSweuC/86mIM7k1NUITQ4JffgOLUWTCw==} + + yuku-codegen@0.9.3: + resolution: {integrity: sha512-7oTWwetHiMSyrVPFb8089lBBqkU1gaeQZyumNBJ0t5hocMQRaWhnMeSXTz7J1xm/rcw9+ePsajORdZbub2C35w==} + + yuku-parser@0.9.3: + resolution: {integrity: sha512-96wPoHnwaXfkZv7UIOUkDb+s7ZH8lv8Qtg+MxdvHUV1LFa5jV9iKOaams1942YQt+krFQrWiD6lSg2ermv5kHA==} + zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -5488,15 +5778,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/generator@8.0.0': - dependencies: - '@babel/parser': 8.0.0 - '@babel/types': 8.0.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@types/jsesc': 2.5.1 - jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.29.7': dependencies: '@babel/compat-data': 7.29.7 @@ -5525,12 +5806,8 @@ snapshots: '@babel/helper-string-parser@7.29.7': {} - '@babel/helper-string-parser@8.0.0': {} - '@babel/helper-validator-identifier@7.29.7': {} - '@babel/helper-validator-identifier@8.0.2': {} - '@babel/helper-validator-option@7.29.7': {} '@babel/helpers@7.29.7': @@ -5542,10 +5819,6 @@ snapshots: dependencies: '@babel/types': 7.29.7 - '@babel/parser@8.0.0': - dependencies: - '@babel/types': 8.0.0 - '@babel/runtime@7.29.7': {} '@babel/template@7.29.7': @@ -5571,11 +5844,6 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/types@8.0.0': - dependencies: - '@babel/helper-string-parser': 8.0.0 - '@babel/helper-validator-identifier': 8.0.2 - '@bufbuild/protobuf@2.12.0': {} '@bufbuild/protoplugin@2.12.0': @@ -6078,6 +6346,7 @@ snapshots: '@rushstack/node-core-library': 5.23.1(@types/node@25.9.1) transitivePeerDependencies: - '@types/node' + optional: true '@microsoft/api-extractor@7.58.7(@types/node@25.9.1)': dependencies: @@ -6096,6 +6365,7 @@ snapshots: typescript: 5.9.3 transitivePeerDependencies: - '@types/node' + optional: true '@microsoft/tsdoc-config@0.18.1': dependencies: @@ -6103,13 +6373,15 @@ snapshots: ajv: 8.18.0 jju: 1.4.0 resolve: 1.22.12 + optional: true - '@microsoft/tsdoc@0.16.0': {} + '@microsoft/tsdoc@0.16.0': + optional: true - '@milaboratories/columns-collection-driver@0.2.3': + '@milaboratories/columns-collection-driver@0.2.4': dependencies: '@milaboratories/helpers': 1.14.5 - '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-common': 1.48.0 '@milaboratories/computable@2.9.8': dependencies: @@ -6122,13 +6394,13 @@ snapshots: '@milaboratories/helpers@1.14.5': {} - '@milaboratories/pf-driver@1.8.5(@bytecodealliance/preview2-shim@0.17.9)': + '@milaboratories/pf-driver@1.9.1(@bytecodealliance/preview2-shim@0.17.9)': dependencies: '@milaboratories/helpers': 1.14.5 + '@milaboratories/pf-spec': 1.0.1(@bytecodealliance/preview2-shim@0.17.9) '@milaboratories/pframes-rs-node': 1.1.56 - '@milaboratories/pframes-rs-wasm': 1.1.56(@bytecodealliance/preview2-shim@0.17.9)(@milaboratories/pl-model-common@1.47.3)(@milaboratories/pl-model-middle-layer@1.30.15) - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-model-middle-layer': 1.30.15 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 '@milaboratories/ts-helpers': 1.8.6 es-toolkit: 1.47.0 lru-cache: 11.5.1 @@ -6137,16 +6409,21 @@ snapshots: - encoding - supports-color - '@milaboratories/pf-spec-driver@1.4.24(@bytecodealliance/preview2-shim@0.17.9)': + '@milaboratories/pf-spec-driver@1.5.1(@bytecodealliance/preview2-shim@0.17.9)': dependencies: '@milaboratories/helpers': 1.14.5 - '@milaboratories/pframes-rs-wasm': 1.1.56(@bytecodealliance/preview2-shim@0.17.9)(@milaboratories/pl-model-common@1.47.3)(@milaboratories/pl-model-middle-layer@1.30.15) - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-model-middle-layer': 1.30.15 + '@milaboratories/pf-spec': 1.0.1(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pl-model-common': 1.48.0 '@noble/hashes': 2.2.0 transitivePeerDependencies: - '@bytecodealliance/preview2-shim' + '@milaboratories/pf-spec@1.0.1(@bytecodealliance/preview2-shim@0.17.9)': + dependencies: + '@bytecodealliance/preview2-shim': 0.17.9 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 + '@milaboratories/pframes-rs-node@1.1.56': dependencies: '@mapbox/node-pre-gyp': 2.0.3 @@ -6169,18 +6446,11 @@ snapshots: '@milaboratories/pframes-rs-wasip2@1.1.56': {} - '@milaboratories/pframes-rs-wasm@1.1.56(@bytecodealliance/preview2-shim@0.17.9)(@milaboratories/pl-model-common@1.47.3)(@milaboratories/pl-model-middle-layer@1.30.15)': - dependencies: - '@bytecodealliance/preview2-shim': 0.17.9 - '@milaboratories/pframes-rs-wasip2': 1.1.56 - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-model-middle-layer': 1.30.15 - - '@milaboratories/pl-client@3.14.5': + '@milaboratories/pl-client@3.14.7': dependencies: '@grpc/grpc-js': 1.14.4 '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-common': 1.48.0 '@milaboratories/ts-helpers': 1.8.6 '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/runtime': 2.11.1 @@ -6200,12 +6470,12 @@ snapshots: upath: 2.0.1 yaml: 2.9.0 - '@milaboratories/pl-deployments@3.0.15': + '@milaboratories/pl-deployments@3.0.16': dependencies: '@milaboratories/pl-config': 1.8.5 '@milaboratories/pl-healthcheck': 1.0.5 '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-common': 1.48.0 '@milaboratories/ts-helpers': 1.8.6 decompress: 4.2.1 ssh2: 1.17.0 @@ -6215,14 +6485,14 @@ snapshots: yaml: 2.9.0 zod: 3.25.76 - '@milaboratories/pl-drivers@1.16.14': + '@milaboratories/pl-drivers@1.16.17': dependencies: '@grpc/grpc-js': 1.14.4 '@milaboratories/computable': 2.9.8 '@milaboratories/helpers': 1.14.5 - '@milaboratories/pl-client': 3.14.5 - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-tree': 1.13.5 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-tree': 1.14.0 '@milaboratories/ts-helpers': 1.8.6 '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/plugin': 2.11.1 @@ -6246,9 +6516,9 @@ snapshots: json-stringify-safe: 5.0.1 zod: 3.25.76 - '@milaboratories/pl-errors@1.4.34': + '@milaboratories/pl-errors@1.4.36': dependencies: - '@milaboratories/pl-client': 3.14.5 + '@milaboratories/pl-client': 3.14.7 '@milaboratories/ts-helpers': 1.8.6 zod: 3.25.76 @@ -6264,29 +6534,28 @@ snapshots: dependencies: undici: 7.16.0 - '@milaboratories/pl-middle-layer@1.66.13(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)': + '@milaboratories/pl-middle-layer@1.68.0(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)': dependencies: - '@milaboratories/columns-collection-driver': 0.2.3 + '@milaboratories/columns-collection-driver': 0.2.4 '@milaboratories/computable': 2.9.8 '@milaboratories/helpers': 1.14.5 - '@milaboratories/pf-driver': 1.8.5(@bytecodealliance/preview2-shim@0.17.9) - '@milaboratories/pf-spec-driver': 1.4.24(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pf-driver': 1.9.1(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pf-spec-driver': 1.5.1(@bytecodealliance/preview2-shim@0.17.9) '@milaboratories/pframes-rs-node': 1.1.56 - '@milaboratories/pframes-rs-wasm': 1.1.56(@bytecodealliance/preview2-shim@0.17.9)(@milaboratories/pl-model-common@1.47.3)(@milaboratories/pl-model-middle-layer@1.30.15) - '@milaboratories/pl-client': 3.14.5 - '@milaboratories/pl-deployments': 3.0.15 - '@milaboratories/pl-drivers': 1.16.14 - '@milaboratories/pl-errors': 1.4.34 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-deployments': 3.0.16 + '@milaboratories/pl-drivers': 1.16.17 + '@milaboratories/pl-errors': 1.4.36 '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-backend': 1.4.19 - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-model-middle-layer': 1.30.15 - '@milaboratories/pl-tree': 1.13.5 + '@milaboratories/pl-model-backend': 1.4.21 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 + '@milaboratories/pl-tree': 1.14.0 '@milaboratories/resolve-helper': 1.1.3 '@milaboratories/ts-helpers': 1.8.6 - '@platforma-sdk/block-tools': 2.12.10(@types/node@25.9.1) - '@platforma-sdk/model': 1.80.13 - '@platforma-sdk/workflow-tengo': 6.8.2 + '@platforma-sdk/block-tools': 2.14.3(@types/node@25.9.1) + '@platforma-sdk/model': 1.83.0 + '@platforma-sdk/workflow-tengo': 6.8.3 canonicalize: 2.1.0 denque: 2.1.0 es-toolkit: 1.47.0 @@ -6307,9 +6576,9 @@ snapshots: - react-native-b4a - supports-color - '@milaboratories/pl-model-backend@1.4.19': + '@milaboratories/pl-model-backend@1.4.21': dependencies: - '@milaboratories/pl-client': 3.14.5 + '@milaboratories/pl-client': 3.14.7 canonicalize: 2.1.0 zod: 3.25.76 @@ -6320,7 +6589,7 @@ snapshots: canonicalize: 2.1.0 zod: 3.25.76 - '@milaboratories/pl-model-common@1.47.3': + '@milaboratories/pl-model-common@1.48.0': dependencies: '@milaboratories/helpers': 1.14.5 '@milaboratories/pl-error-like': 1.12.10 @@ -6328,35 +6597,35 @@ snapshots: es-toolkit: 1.47.0 zod: 3.25.76 - '@milaboratories/pl-model-middle-layer@1.30.15': + '@milaboratories/pl-model-middle-layer@1.30.7': dependencies: - '@milaboratories/helpers': 1.14.5 - '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/helpers': 1.14.2 + '@milaboratories/pl-model-common': 1.46.2 es-toolkit: 1.47.0 utility-types: 3.11.0 zod: 3.25.76 - '@milaboratories/pl-model-middle-layer@1.30.7': + '@milaboratories/pl-model-middle-layer@1.32.0': dependencies: - '@milaboratories/helpers': 1.14.2 - '@milaboratories/pl-model-common': 1.46.2 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-model-common': 1.48.0 es-toolkit: 1.47.0 utility-types: 3.11.0 zod: 3.25.76 - '@milaboratories/pl-tree@1.13.5': + '@milaboratories/pl-tree@1.14.0': dependencies: '@milaboratories/computable': 2.9.8 - '@milaboratories/pl-client': 3.14.5 - '@milaboratories/pl-errors': 1.4.34 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-errors': 1.4.36 '@milaboratories/ts-helpers': 1.8.6 denque: 2.1.0 utility-types: 3.11.0 zod: 3.25.76 - '@milaboratories/ptabler-expression-js@1.2.37': + '@milaboratories/ptabler-expression-js@1.2.38': dependencies: - '@platforma-open/milaboratories.software-ptabler.schema': 1.15.21 + '@platforma-open/milaboratories.software-ptabler.schema': 1.15.22 '@milaboratories/resolve-helper@1.1.3': {} @@ -6364,31 +6633,35 @@ snapshots: '@milaboratories/tengo-tester@1.6.4': {} - '@milaboratories/ts-builder@1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.24(typescript@6.0.3))(yaml@2.9.0)': + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.24(typescript@6.0.3))(yaml@2.9.0)': dependencies: - '@milaboratories/ts-configs': 1.3.1 - '@vitejs/plugin-vue': 6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.24(typescript@6.0.3)) + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.24(typescript@6.0.3)) commander: 15.0.0 jsonc-parser: 3.3.1 oxfmt: 0.35.0 oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.4 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.4)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.9.3)) + rolldown-plugin-dts: 0.28.4(@volar/typescript@2.4.28)(rolldown@1.1.4)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.7(@types/node@25.9.1)(rollup@4.61.0) - typescript: 5.9.3 + typescript: 7.0.2 vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) vite-plugin-commonjs: 0.10.4 - vite-plugin-dts: 4.5.4(@types/node@25.9.1)(rollup@4.61.0)(typescript@5.9.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@vue/language-core@3.3.10)(esbuild@0.27.7)(rolldown@1.1.4)(rollup@4.61.0)(typescript@7.0.2)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) vite-plugin-externalize-deps: 0.10.0(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) vite-plugin-lib-inject-css: 2.2.2(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) - vue-tsc: 3.3.5(typescript@5.9.3) + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - - '@ts-macro/tsc' + - '@microsoft/api-extractor' + - '@rspack/core' - '@types/node' - '@typescript/native-preview' - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' - esbuild - jiti - less @@ -6403,33 +6676,38 @@ snapshots: - terser - tsx - vue + - webpack - yaml - '@milaboratories/ts-builder@1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@5.9.3))(yaml@2.9.0)': + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@5.9.3))(yaml@2.9.0)': dependencies: - '@milaboratories/ts-configs': 1.3.1 - '@vitejs/plugin-vue': 6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@5.9.3)) + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@5.9.3)) commander: 15.0.0 jsonc-parser: 3.3.1 oxfmt: 0.35.0 oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.4 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.4)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.9.3)) + rolldown-plugin-dts: 0.28.4(@volar/typescript@2.4.28)(rolldown@1.1.4)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.7(@types/node@25.9.1)(rollup@4.61.0) - typescript: 5.9.3 + typescript: 7.0.2 vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) vite-plugin-commonjs: 0.10.4 - vite-plugin-dts: 4.5.4(@types/node@25.9.1)(rollup@4.61.0)(typescript@5.9.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@vue/language-core@3.3.10)(esbuild@0.27.7)(rolldown@1.1.4)(rollup@4.61.0)(typescript@7.0.2)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) vite-plugin-externalize-deps: 0.10.0(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) vite-plugin-lib-inject-css: 2.2.2(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) - vue-tsc: 3.3.5(typescript@5.9.3) + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - - '@ts-macro/tsc' + - '@microsoft/api-extractor' + - '@rspack/core' - '@types/node' - '@typescript/native-preview' - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' - esbuild - jiti - less @@ -6444,33 +6722,38 @@ snapshots: - terser - tsx - vue + - webpack - yaml - '@milaboratories/ts-builder@1.6.1(@types/node@25.9.1)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0)': + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@6.0.3))(yaml@2.9.0)': dependencies: - '@milaboratories/ts-configs': 1.3.1 - '@vitejs/plugin-vue': 6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@6.0.3)) + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@6.0.3)) commander: 15.0.0 jsonc-parser: 3.3.1 oxfmt: 0.35.0 oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.4 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.4)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.9.3)) + rolldown-plugin-dts: 0.28.4(@volar/typescript@2.4.28)(rolldown@1.1.4)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.7(@types/node@25.9.1)(rollup@4.61.0) - typescript: 5.9.3 + typescript: 7.0.2 vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) vite-plugin-commonjs: 0.10.4 - vite-plugin-dts: 4.5.4(@types/node@25.9.1)(rollup@4.61.0)(typescript@5.9.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@vue/language-core@3.3.10)(esbuild@0.27.7)(rolldown@1.1.4)(rollup@4.61.0)(typescript@7.0.2)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) vite-plugin-externalize-deps: 0.10.0(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) vite-plugin-lib-inject-css: 2.2.2(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) - vue-tsc: 3.3.5(typescript@5.9.3) + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - - '@ts-macro/tsc' + - '@microsoft/api-extractor' + - '@rspack/core' - '@types/node' - '@typescript/native-preview' - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' - esbuild - jiti - less @@ -6485,9 +6768,56 @@ snapshots: - terser - tsx - vue + - webpack - yaml - '@milaboratories/ts-configs@1.3.1': {} + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@types/node@25.9.1)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(esbuild@0.27.7)(rollup@4.61.0)(vue@3.5.35(typescript@7.0.2))(yaml@2.9.0)': + dependencies: + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@7.0.2)) + commander: 15.0.0 + jsonc-parser: 3.3.1 + oxfmt: 0.35.0 + oxlint: 1.63.0 + oxlint-plugin-eslint: 1.63.0 + rolldown: 1.1.4 + rolldown-plugin-dts: 0.28.4(@volar/typescript@2.4.28)(rolldown@1.1.4)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) + rollup-plugin-copy: 3.5.0 + rollup-plugin-sourcemaps2: 0.5.7(@types/node@25.9.1)(rollup@4.61.0) + typescript: 7.0.2 + vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) + vite-plugin-commonjs: 0.10.4 + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@vue/language-core@3.3.10)(esbuild@0.27.7)(rolldown@1.1.4)(rollup@4.61.0)(typescript@7.0.2)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + vite-plugin-externalize-deps: 0.10.0(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + vite-plugin-lib-inject-css: 2.2.2(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) + vue-tsc: 3.3.10(typescript@7.0.2) + transitivePeerDependencies: + - '@microsoft/api-extractor' + - '@rspack/core' + - '@types/node' + - '@typescript/native-preview' + - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' + - esbuild + - jiti + - less + - oxc-resolver + - oxlint-tsgolint + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - vue + - webpack + - yaml + + '@milaboratories/ts-configs@1.4.0': {} '@milaboratories/ts-helpers@1.8.6': dependencies: @@ -6495,10 +6825,10 @@ snapshots: canonicalize: 2.1.0 denque: 2.1.0 - '@milaboratories/uikit@2.15.20(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': + '@milaboratories/uikit@2.15.27(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': dependencies: '@milaboratories/helpers': 1.14.5 - '@platforma-sdk/model': 1.80.13 + '@platforma-sdk/model': 1.83.0 '@types/d3-array': 3.2.2 '@types/d3-axis': 3.0.6 '@types/d3-scale': 4.0.9 @@ -6952,9 +7282,9 @@ snapshots: '@platforma-open/milaboratories.runenv-python-3.12.10-scientific-slim': 1.1.0 '@platforma-open/milaboratories.runenv-python-3.12.10-torch-cuda': 0.2.0 - '@platforma-open/milaboratories.software-ptabler.schema@1.15.21': + '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': dependencies: - '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-common': 1.48.0 '@platforma-open/milaboratories.software-ptabler@2.1.8': {} @@ -6978,19 +7308,21 @@ snapshots: '@platforma-open/milaboratories.software-small-binaries.mnz-client': 1.6.5 '@platforma-open/milaboratories.software-small-binaries.table-converter': 1.3.5 - '@platforma-sdk/block-tools@2.12.10(@types/node@25.9.1)': + '@platforma-sdk/block-kind@1.1.0': {} + + '@platforma-sdk/block-tools@2.14.3(@types/node@25.9.1)': dependencies: '@aws-sdk/client-ecr-public': 3.859.0 '@aws-sdk/client-s3': 3.859.0 '@inquirer/prompts': 7.10.1(@types/node@25.9.1) '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-backend': 1.4.19 - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-model-middle-layer': 1.30.15 + '@milaboratories/pl-model-backend': 1.4.21 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 '@milaboratories/resolve-helper': 1.1.3 '@milaboratories/ts-helpers': 1.8.6 '@platforma-sdk/blocks-deps-updater': 2.2.0 - '@platforma-sdk/package-builder-lib': 1.2.1 + '@platforma-sdk/package-builder-lib': 1.3.0 canonicalize: 2.1.0 commander: 15.0.0 lru-cache: 11.5.1 @@ -7010,13 +7342,13 @@ snapshots: dependencies: yaml: 2.9.0 - '@platforma-sdk/model@1.80.13': + '@platforma-sdk/model@1.83.0': dependencies: '@milaboratories/helpers': 1.14.5 '@milaboratories/pl-error-like': 1.12.10 - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/pl-model-middle-layer': 1.30.15 - '@milaboratories/ptabler-expression-js': 1.2.37 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 + '@milaboratories/ptabler-expression-js': 1.2.38 canonicalize: 2.1.0 es-toolkit: 1.47.0 fast-json-patch: 3.1.1 @@ -7024,7 +7356,7 @@ snapshots: utility-types: 3.11.0 zod: 3.25.76 - '@platforma-sdk/package-builder-lib@1.2.1': + '@platforma-sdk/package-builder-lib@1.3.0': dependencies: '@aws-sdk/client-s3': 3.859.0 '@aws-sdk/lib-storage': 3.859.0(@aws-sdk/client-s3@3.859.0) @@ -7040,22 +7372,22 @@ snapshots: - bare-buffer - react-native-b4a - '@platforma-sdk/tengo-builder@4.0.21': + '@platforma-sdk/tengo-builder@4.0.23': dependencies: - '@milaboratories/pl-model-backend': 1.4.19 + '@milaboratories/pl-model-backend': 1.4.21 '@milaboratories/resolve-helper': 1.1.3 '@milaboratories/tengo-tester': 1.6.4 '@milaboratories/ts-helpers': 1.8.6 commander: 15.0.0 winston: 3.19.0 - '@platforma-sdk/test@1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0))': + '@platforma-sdk/test@1.83.2(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0))': dependencies: '@milaboratories/computable': 2.9.8 - '@milaboratories/pl-client': 3.14.5 - '@milaboratories/pl-middle-layer': 1.66.13(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) - '@milaboratories/pl-tree': 1.13.5 - '@platforma-sdk/model': 1.80.13 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-middle-layer': 1.68.0(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) + '@milaboratories/pl-tree': 1.14.0 + '@platforma-sdk/model': 1.83.0 '@vitest/coverage-istanbul': 4.1.8(vitest@4.0.18(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) vitest: 4.1.8(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.8)(vite@7.3.5(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0)) transitivePeerDependencies: @@ -7079,13 +7411,13 @@ snapshots: - supports-color - vite - '@platforma-sdk/test@1.80.14(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))': + '@platforma-sdk/test@1.83.2(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))': dependencies: '@milaboratories/computable': 2.9.8 - '@milaboratories/pl-client': 3.14.5 - '@milaboratories/pl-middle-layer': 1.66.13(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) - '@milaboratories/pl-tree': 1.13.5 - '@platforma-sdk/model': 1.80.13 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-middle-layer': 1.68.0(@bytecodealliance/preview2-shim@0.17.9)(@types/node@25.9.1) + '@milaboratories/pl-tree': 1.14.0 + '@platforma-sdk/model': 1.83.0 '@vitest/coverage-istanbul': 4.1.8(vitest@4.1.8) vitest: 4.1.8(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.8)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) transitivePeerDependencies: @@ -7109,13 +7441,13 @@ snapshots: - supports-color - vite - '@platforma-sdk/ui-vue@1.80.15(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': + '@platforma-sdk/ui-vue@1.83.3(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3)': dependencies: - '@milaboratories/columns-collection-driver': 0.2.3 - '@milaboratories/pf-spec-driver': 1.4.24(@bytecodealliance/preview2-shim@0.17.9) - '@milaboratories/pl-model-common': 1.47.3 - '@milaboratories/uikit': 2.15.20(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) - '@platforma-sdk/model': 1.80.13 + '@milaboratories/columns-collection-driver': 0.2.4 + '@milaboratories/pf-spec-driver': 1.5.1(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/uikit': 2.15.27(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.24(typescript@6.0.3)))(typescript@6.0.3) + '@platforma-sdk/model': 1.83.0 '@types/d3-format': 3.0.4 '@types/node': 24.5.2 '@types/semver': 7.7.1 @@ -7148,7 +7480,7 @@ snapshots: - typescript - universal-cookie - '@platforma-sdk/workflow-tengo@6.8.2': + '@platforma-sdk/workflow-tengo@6.8.3': dependencies: '@milaboratories/pframes-rs-wasip2': 1.1.56 '@milaboratories/software-pframes-conv': 2.2.9 @@ -7406,15 +7738,18 @@ snapshots: semver: 7.7.4 optionalDependencies: '@types/node': 25.9.1 + optional: true '@rushstack/problem-matcher@0.2.1(@types/node@25.9.1)': optionalDependencies: '@types/node': 25.9.1 + optional: true '@rushstack/rig-package@0.7.3': dependencies: jju: 1.4.0 resolve: 1.22.12 + optional: true '@rushstack/terminal@0.24.0(@types/node@25.9.1)': dependencies: @@ -7423,6 +7758,7 @@ snapshots: supports-color: 8.1.1 optionalDependencies: '@types/node': 25.9.1 + optional: true '@rushstack/ts-command-line@5.3.9(@types/node@25.9.1)': dependencies: @@ -7432,6 +7768,7 @@ snapshots: string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' + optional: true '@smithy/abort-controller@4.2.16': dependencies: @@ -7664,7 +8001,8 @@ snapshots: tslib: 2.8.1 optional: true - '@types/argparse@1.0.38': {} + '@types/argparse@1.0.38': + optional: true '@types/chai@5.2.3': dependencies: @@ -7700,8 +8038,6 @@ snapshots: '@types/minimatch': 6.0.0 '@types/node': 25.9.1 - '@types/jsesc@2.5.1': {} - '@types/minimatch@6.0.0': dependencies: minimatch: 10.2.5 @@ -7726,6 +8062,70 @@ snapshots: '@types/web-bluetooth@0.0.21': {} + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + '@typescript/typescript6@6.0.2': + dependencies: + '@typescript/old': typescript@6.0.3 + '@typescript/vfs@1.6.4(typescript@5.4.5)': dependencies: debug: 4.4.3 @@ -7733,24 +8133,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.24(typescript@6.0.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.24(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.1 vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) vue: 3.5.24(typescript@6.0.3) - '@vitejs/plugin-vue@6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.1 vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) vue: 3.5.35(typescript@5.9.3) - '@vitejs/plugin-vue@6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@6.0.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.1 vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) vue: 3.5.35(typescript@6.0.3) + '@vitejs/plugin-vue@6.0.8(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0))(vue@3.5.35(typescript@7.0.2))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) + vue: 3.5.35(typescript@7.0.2) + '@vitest/coverage-istanbul@4.1.8(vitest@4.0.18(@types/node@25.9.1)(lightningcss@1.32.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7 @@ -7943,25 +8349,7 @@ snapshots: '@vue/compiler-dom': 3.5.35 '@vue/shared': 3.5.35 - '@vue/compiler-vue2@2.7.16': - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - - '@vue/language-core@2.2.0(typescript@5.9.3)': - dependencies: - '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.35 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.35 - alien-signals: 0.4.14 - minimatch: 9.0.9 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.9.3 - - '@vue/language-core@3.3.5': + '@vue/language-core@3.3.10': dependencies: '@volar/language-core': 2.4.28 '@vue/compiler-dom': 3.5.35 @@ -8028,6 +8416,12 @@ snapshots: '@vue/shared': 3.5.35 vue: 3.5.35(typescript@6.0.3) + '@vue/server-renderer@3.5.35(vue@3.5.35(typescript@7.0.2))': + dependencies: + '@vue/compiler-ssr': 3.5.35 + '@vue/shared': 3.5.35 + vue: 3.5.35(typescript@7.0.2) + '@vue/shared@3.5.24': {} '@vue/shared@3.5.35': {} @@ -8062,6 +8456,80 @@ snapshots: dependencies: vue: 3.5.24(typescript@6.0.3) + '@yuku-codegen/binding-android-arm64@0.9.3': + optional: true + + '@yuku-codegen/binding-darwin-arm64@0.9.3': + optional: true + + '@yuku-codegen/binding-darwin-x64@0.9.3': + optional: true + + '@yuku-codegen/binding-freebsd-x64@0.9.3': + optional: true + + '@yuku-codegen/binding-linux-arm-gnu@0.9.3': + optional: true + + '@yuku-codegen/binding-linux-arm-musl@0.9.3': + optional: true + + '@yuku-codegen/binding-linux-arm64-gnu@0.9.3': + optional: true + + '@yuku-codegen/binding-linux-arm64-musl@0.9.3': + optional: true + + '@yuku-codegen/binding-linux-x64-gnu@0.9.3': + optional: true + + '@yuku-codegen/binding-linux-x64-musl@0.9.3': + optional: true + + '@yuku-codegen/binding-win32-arm64@0.9.3': + optional: true + + '@yuku-codegen/binding-win32-x64@0.9.3': + optional: true + + '@yuku-parser/binding-android-arm64@0.9.3': + optional: true + + '@yuku-parser/binding-darwin-arm64@0.9.3': + optional: true + + '@yuku-parser/binding-darwin-x64@0.9.3': + optional: true + + '@yuku-parser/binding-freebsd-x64@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm-gnu@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm-musl@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm64-gnu@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm64-musl@0.9.3': + optional: true + + '@yuku-parser/binding-linux-x64-gnu@0.9.3': + optional: true + + '@yuku-parser/binding-linux-x64-musl@0.9.3': + optional: true + + '@yuku-parser/binding-win32-arm64@0.9.3': + optional: true + + '@yuku-parser/binding-win32-x64@0.9.3': + optional: true + + '@yuku-toolchain/types@0.9.3': {} + '@zip.js/zip.js@2.8.26': {} abbrev@2.0.0: {} @@ -8118,10 +8586,12 @@ snapshots: ajv-draft-04@1.0.0(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 + optional: true ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 + optional: true ajv@8.18.0: dependencies: @@ -8129,8 +8599,7 @@ snapshots: fast-uri: 3.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - - alien-signals@0.4.14: {} + optional: true alien-signals@3.2.1: {} @@ -8190,12 +8659,6 @@ snapshots: assertion-error@2.0.1: {} - ast-kit@3.0.0: - dependencies: - '@babel/parser': 8.0.0 - estree-walker: 3.0.3 - pathe: 2.0.3 - async@3.2.6: {} available-typed-arrays@1.0.7: @@ -8261,8 +8724,6 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - birpc@4.0.0: {} - bl@1.2.3: dependencies: readable-stream: 2.3.8 @@ -8492,8 +8953,6 @@ snapshots: dependencies: d3-array: 3.2.4 - de-indent@1.0.2: {} - debug@4.4.3: dependencies: ms: 2.1.3 @@ -8554,7 +9013,8 @@ snapshots: detect-libc@2.1.2: {} - diff@8.0.4: {} + diff@8.0.4: + optional: true dir-glob@3.0.1: dependencies: @@ -8679,7 +9139,8 @@ snapshots: extendable-error@0.1.7: {} - fast-deep-equal@3.1.3: {} + fast-deep-equal@3.1.3: + optional: true fast-fifo@1.3.2: {} @@ -8693,7 +9154,8 @@ snapshots: fast-json-patch@3.1.1: {} - fast-uri@3.1.2: {} + fast-uri@3.1.2: + optional: true fast-xml-parser@5.2.5: dependencies: @@ -8748,6 +9210,7 @@ snapshots: graceful-fs: 4.2.11 jsonfile: 6.2.1 universalify: 2.0.1 + optional: true fs-extra@7.0.1: dependencies: @@ -8799,7 +9262,7 @@ snapshots: dependencies: pump: 3.0.4 - get-tsconfig@5.0.0-beta.5: + get-tsconfig@5.0.0-beta.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -8867,8 +9330,6 @@ snapshots: dependencies: function-bind: 1.1.2 - he@1.2.0: {} - html-escaper@2.0.2: {} https-proxy-agent@7.0.6: @@ -8890,7 +9351,8 @@ snapshots: immer@11.1.4: {} - import-lazy@4.0.0: {} + import-lazy@4.0.0: + optional: true inflight@1.0.6: dependencies: @@ -8964,7 +9426,8 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jju@1.4.0: {} + jju@1.4.0: + optional: true js-beautify@1.15.4: dependencies: @@ -8989,7 +9452,8 @@ snapshots: jsesc@3.1.0: {} - json-schema-traverse@1.0.0: {} + json-schema-traverse@1.0.0: + optional: true json-stringify-safe@5.0.1: {} @@ -9006,6 +9470,7 @@ snapshots: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + optional: true kolorist@1.8.0: {} @@ -9137,6 +9602,7 @@ snapshots: minimatch@10.2.3: dependencies: brace-expansion: 5.0.6 + optional: true minimatch@10.2.5: dependencies: @@ -9218,6 +9684,8 @@ snapshots: obug@2.1.3: {} + obug@2.1.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -9537,7 +10005,8 @@ snapshots: require-directory@2.1.1: {} - require-from-string@2.0.2: {} + require-from-string@2.0.2: + optional: true resize-observer-polyfill@1.5.1: {} @@ -9554,20 +10023,19 @@ snapshots: reusify@1.1.0: {} - rolldown-plugin-dts@0.26.0(rolldown@1.1.4)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.9.3)): + rolldown-plugin-dts@0.28.4(@volar/typescript@2.4.28)(rolldown@1.1.4)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)): dependencies: - '@babel/generator': 8.0.0 - '@babel/helper-validator-identifier': 8.0.2 - '@babel/parser': 8.0.0 - ast-kit: 3.0.0 - birpc: 4.0.0 dts-resolver: 3.0.0 - get-tsconfig: 5.0.0-beta.5 - obug: 2.1.3 + get-tsconfig: 5.0.0-beta.6 + obug: 2.1.4 rolldown: 1.1.4 + yuku-ast: 0.9.3 + yuku-codegen: 0.9.3 + yuku-parser: 0.9.3 optionalDependencies: - typescript: 5.9.3 - vue-tsc: 3.3.5(typescript@5.9.3) + '@volar/typescript': 2.4.28 + typescript: 7.0.2 + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - oxc-resolver @@ -9684,7 +10152,8 @@ snapshots: semver@6.3.1: {} - semver@7.7.4: {} + semver@7.7.4: + optional: true semver@7.8.1: {} @@ -9741,7 +10210,8 @@ snapshots: source-map-js@1.2.1: {} - source-map@0.6.1: {} + source-map@0.6.1: + optional: true spawndamnit@3.0.1: dependencies: @@ -9780,7 +10250,8 @@ snapshots: - bare-abort-controller - react-native-b4a - string-argv@0.3.2: {} + string-argv@0.3.2: + optional: true string-width@4.2.3: dependencies: @@ -9829,6 +10300,7 @@ snapshots: supports-color@8.1.1: dependencies: has-flag: 4.0.0 + optional: true supports-preserve-symlinks-flag@1.0.0: {} @@ -9989,6 +10461,29 @@ snapshots: typescript@6.0.3: {} + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + ufo@1.6.4: {} ulid@3.0.2: {} @@ -10006,7 +10501,36 @@ snapshots: universalify@0.1.2: {} - universalify@2.0.1: {} + universalify@2.0.1: + optional: true + + unplugin-dts@1.0.3(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@vue/language-core@3.3.10)(esbuild@0.27.7)(rolldown@1.1.4)(rollup@4.61.0)(typescript@7.0.2)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)): + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.61.0) + '@volar/typescript': 2.4.28 + compare-versions: 6.1.1 + debug: 4.4.3 + kolorist: 1.8.0 + local-pkg: 1.2.1 + magic-string: 0.30.21 + typescript: 7.0.2 + unplugin: 2.3.11 + optionalDependencies: + '@microsoft/api-extractor': 7.58.7(@types/node@25.9.1) + '@vue/language-core': 3.3.10 + esbuild: 0.27.7 + rolldown: 1.1.4 + rollup: 4.61.0 + vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) + transitivePeerDependencies: + - supports-color + + unplugin@2.3.11: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.16.0 + picomatch: 4.0.4 + webpack-virtual-modules: 0.6.2 upath@2.0.1: {} @@ -10028,24 +10552,21 @@ snapshots: magic-string: 0.30.21 vite-plugin-dynamic-import: 1.6.0 - vite-plugin-dts@4.5.4(@types/node@25.9.1)(rollup@4.61.0)(typescript@5.9.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)): + vite-plugin-dts@5.0.3(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@vue/language-core@3.3.10)(esbuild@0.27.7)(rolldown@1.1.4)(rollup@4.61.0)(typescript@7.0.2)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)): dependencies: - '@microsoft/api-extractor': 7.58.7(@types/node@25.9.1) - '@rollup/pluginutils': 5.4.0(rollup@4.61.0) - '@volar/typescript': 2.4.28 - '@vue/language-core': 2.2.0(typescript@5.9.3) - compare-versions: 6.1.1 - debug: 4.4.3 - kolorist: 1.8.0 - local-pkg: 1.2.1 - magic-string: 0.30.21 - typescript: 5.9.3 + unplugin-dts: 1.0.3(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(@vue/language-core@3.3.10)(esbuild@0.27.7)(rolldown@1.1.4)(rollup@4.61.0)(typescript@7.0.2)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0)) optionalDependencies: + '@microsoft/api-extractor': 7.58.7(@types/node@25.9.1) + rollup: 4.61.0 vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(yaml@2.9.0) transitivePeerDependencies: - - '@types/node' - - rollup + - '@rspack/core' + - '@vue/language-core' + - esbuild + - rolldown - supports-color + - typescript + - webpack vite-plugin-dynamic-import@1.6.0: dependencies: @@ -10189,11 +10710,11 @@ snapshots: vue-component-type-helpers@3.3.3: {} - vue-tsc@3.3.5(typescript@5.9.3): + vue-tsc@3.3.10(typescript@7.0.2): dependencies: '@volar/typescript': 2.4.28 - '@vue/language-core': 3.3.5 - typescript: 5.9.3 + '@vue/language-core': 3.3.10 + typescript: 7.0.2 vue@3.5.24(typescript@6.0.3): dependencies: @@ -10225,8 +10746,20 @@ snapshots: optionalDependencies: typescript: 6.0.3 + vue@3.5.35(typescript@7.0.2): + dependencies: + '@vue/compiler-dom': 3.5.35 + '@vue/compiler-sfc': 3.5.35 + '@vue/runtime-dom': 3.5.35 + '@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@7.0.2)) + '@vue/shared': 3.5.35 + optionalDependencies: + typescript: 7.0.2 + webidl-conversions@3.0.1: {} + webpack-virtual-modules@0.6.2: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -10324,6 +10857,45 @@ snapshots: yoctocolors-cjs@2.1.3: {} + yuku-ast@0.9.3: + dependencies: + '@yuku-toolchain/types': 0.9.3 + + yuku-codegen@0.9.3: + dependencies: + '@yuku-toolchain/types': 0.9.3 + optionalDependencies: + '@yuku-codegen/binding-android-arm64': 0.9.3 + '@yuku-codegen/binding-darwin-arm64': 0.9.3 + '@yuku-codegen/binding-darwin-x64': 0.9.3 + '@yuku-codegen/binding-freebsd-x64': 0.9.3 + '@yuku-codegen/binding-linux-arm-gnu': 0.9.3 + '@yuku-codegen/binding-linux-arm-musl': 0.9.3 + '@yuku-codegen/binding-linux-arm64-gnu': 0.9.3 + '@yuku-codegen/binding-linux-arm64-musl': 0.9.3 + '@yuku-codegen/binding-linux-x64-gnu': 0.9.3 + '@yuku-codegen/binding-linux-x64-musl': 0.9.3 + '@yuku-codegen/binding-win32-arm64': 0.9.3 + '@yuku-codegen/binding-win32-x64': 0.9.3 + + yuku-parser@0.9.3: + dependencies: + '@yuku-toolchain/types': 0.9.3 + yuku-ast: 0.9.3 + optionalDependencies: + '@yuku-parser/binding-android-arm64': 0.9.3 + '@yuku-parser/binding-darwin-arm64': 0.9.3 + '@yuku-parser/binding-darwin-x64': 0.9.3 + '@yuku-parser/binding-freebsd-x64': 0.9.3 + '@yuku-parser/binding-linux-arm-gnu': 0.9.3 + '@yuku-parser/binding-linux-arm-musl': 0.9.3 + '@yuku-parser/binding-linux-arm64-gnu': 0.9.3 + '@yuku-parser/binding-linux-arm64-musl': 0.9.3 + '@yuku-parser/binding-linux-x64-gnu': 0.9.3 + '@yuku-parser/binding-linux-x64-musl': 0.9.3 + '@yuku-parser/binding-win32-arm64': 0.9.3 + '@yuku-parser/binding-win32-x64': 0.9.3 + zip-stream@6.0.1: dependencies: archiver-utils: 5.0.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c451a38..9a8bdc9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,6 @@ packages: - block + - kind - model - software - test @@ -7,16 +8,17 @@ packages: - workflow catalog: - "@milaboratories/ts-builder": 1.6.1 - "@milaboratories/ts-configs": 1.3.1 + "@milaboratories/ts-builder": 1.7.2 + "@milaboratories/ts-configs": 1.4.0 "typescript": ~5.9.3 - "@platforma-sdk/workflow-tengo": 6.8.2 - "@platforma-sdk/block-tools": 2.12.10 - "@platforma-sdk/model": 1.80.13 - "@platforma-sdk/ui-vue": 1.80.15 - "@platforma-sdk/test": 1.80.14 - "@platforma-sdk/tengo-builder": 4.0.21 - "@platforma-sdk/package-builder": 3.14.2 + "@platforma-sdk/workflow-tengo": 6.8.3 + "@platforma-sdk/block-tools": 2.14.3 + "@platforma-sdk/block-kind": 1.1.0 + "@platforma-sdk/model": 1.83.0 + "@platforma-sdk/ui-vue": 1.83.3 + "@platforma-sdk/test": 1.83.2 + "@platforma-sdk/tengo-builder": 4.0.23 + "@platforma-sdk/package-builder": 3.15.0 "@platforma-sdk/blocks-deps-updater": 2.2.0 "vue": 3.5.24