@milaboratories/pl-middle-layer 1.71.8 → 1.71.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,8 @@
2
2
  const VALID_TRAVERSAL_MODES = [
3
3
  "auto",
4
4
  "client-bfs",
5
- "backend-streaming"
5
+ "backend-streaming",
6
+ "backend-delta"
6
7
  ];
7
8
  /**
8
9
  * Parse the raw MI_TREE_TRAVERSAL env value into a typed TraversalMode.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["export type MlDebugFlags = {\n logTreeStats?: \"cumulative\" | \"per-request\";\n logProjectMutationStat: boolean;\n logTemplateCacheStat: boolean;\n dumpInitialTreeState: boolean;\n logOutputStatus?: \"any\" | \"unstable-only\";\n logOutputRecalculations?: boolean;\n logProjectOverviewStat: boolean;\n logJsExecStat: boolean;\n /** Resolved value of MI_TREE_TRAVERSAL env var, or undefined if not set. */\n treeTraversalMode?: \"auto\" | \"client-bfs\" | \"backend-streaming\";\n};\n\nconst VALID_TRAVERSAL_MODES = [\"auto\", \"client-bfs\", \"backend-streaming\"] as const;\n\n/**\n * Parse the raw MI_TREE_TRAVERSAL env value into a typed TraversalMode.\n * Returns undefined when raw is undefined (env var absent).\n * Logs a warning and returns \"auto\" on unrecognised values (AC-TM5).\n * Exported for unit testing.\n */\nexport function parseTraversalMode(\n raw: string | undefined,\n warn: (msg: string) => void = console.warn,\n): \"auto\" | \"client-bfs\" | \"backend-streaming\" | undefined {\n if (raw === undefined) return undefined;\n if ((VALID_TRAVERSAL_MODES as readonly string[]).includes(raw))\n return raw as \"auto\" | \"client-bfs\" | \"backend-streaming\";\n warn(\n `MI_TREE_TRAVERSAL=\"${raw}\" is not a valid traversal mode ` +\n `(valid: ${VALID_TRAVERSAL_MODES.join(\", \")}); falling back to \"auto\"`,\n );\n return \"auto\";\n}\n\nlet flags: MlDebugFlags | undefined = undefined;\nexport function getDebugFlags() {\n if (flags) return flags;\n flags = {\n dumpInitialTreeState: process.env.MI_DUMP_INITIAL_TREE_STATE !== undefined,\n logProjectMutationStat: process.env.MI_LOG_PROJECT_MUTATION_STAT !== undefined,\n logTemplateCacheStat: process.env.MI_LOG_TEMPLATE_CACHE_STAT !== undefined,\n logOutputRecalculations: process.env.MI_LOG_OUTPUT_RECALCULATIONS !== undefined,\n logProjectOverviewStat: process.env.MI_LOG_PROJECT_OVERVIEW_STAT !== undefined,\n logJsExecStat: process.env.MI_LOG_JS_EXEC_STAT !== undefined,\n };\n if (process.env.MI_LOG_OUTPUT_STATUS)\n flags.logOutputStatus =\n process.env.MI_LOG_OUTPUT_STATUS === \"unstable-only\" ? \"unstable-only\" : \"any\";\n if (process.env.MI_LOG_TREE_STAT)\n flags.logTreeStats =\n process.env.MI_LOG_TREE_STAT === \"cumulative\" ? \"cumulative\" : \"per-request\";\n const treeTraversalMode = parseTraversalMode(process.env.MI_TREE_TRAVERSAL);\n if (treeTraversalMode !== undefined) flags.treeTraversalMode = treeTraversalMode;\n return flags;\n}\n"],"mappings":";AAaA,MAAM,wBAAwB;CAAC;CAAQ;CAAc;AAAmB;;;;;;;AAQxE,SAAgB,mBACd,KACA,OAA8B,QAAQ,MACmB;CACzD,IAAI,QAAQ,KAAA,GAAW,OAAO,KAAA;CAC9B,IAAK,sBAA4C,SAAS,GAAG,GAC3D,OAAO;CACT,KACE,sBAAsB,IAAI,0CACb,sBAAsB,KAAK,IAAI,EAAE,0BAChD;CACA,OAAO;AACT;AAEA,IAAI,QAAkC,KAAA;AACtC,SAAgB,gBAAgB;CAC9B,IAAI,OAAO,OAAO;CAClB,QAAQ;EACN,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,yBAAyB,QAAQ,IAAI,iCAAiC,KAAA;EACtE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,eAAe,QAAQ,IAAI,wBAAwB,KAAA;CACrD;CACA,IAAI,QAAQ,IAAI,sBACd,MAAM,kBACJ,QAAQ,IAAI,yBAAyB,kBAAkB,kBAAkB;CAC7E,IAAI,QAAQ,IAAI,kBACd,MAAM,eACJ,QAAQ,IAAI,qBAAqB,eAAe,eAAe;CACnE,MAAM,oBAAoB,mBAAmB,QAAQ,IAAI,iBAAiB;CAC1E,IAAI,sBAAsB,KAAA,GAAW,MAAM,oBAAoB;CAC/D,OAAO;AACT"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["import type { TraversalMode } from \"@milaboratories/pl-tree\";\n\nexport type MlDebugFlags = {\n logTreeStats?: \"cumulative\" | \"per-request\";\n logProjectMutationStat: boolean;\n logTemplateCacheStat: boolean;\n dumpInitialTreeState: boolean;\n logOutputStatus?: \"any\" | \"unstable-only\";\n logOutputRecalculations?: boolean;\n logProjectOverviewStat: boolean;\n logJsExecStat: boolean;\n /** Resolved value of MI_TREE_TRAVERSAL env var, or undefined if not set. */\n treeTraversalMode?: TraversalMode;\n};\n\n// Kept in step with TraversalMode by the satisfies clause: a mode added there without being\n// listed here would stop being forceable through the env var, which is how backend-delta was\n// missed when it became the default.\nconst VALID_TRAVERSAL_MODES = [\n \"auto\",\n \"client-bfs\",\n \"backend-streaming\",\n \"backend-delta\",\n] as const satisfies readonly TraversalMode[];\n\n/**\n * Parse the raw MI_TREE_TRAVERSAL env value into a typed TraversalMode.\n * Returns undefined when raw is undefined (env var absent).\n * Logs a warning and returns \"auto\" on unrecognised values (AC-TM5).\n * Exported for unit testing.\n */\nexport function parseTraversalMode(\n raw: string | undefined,\n warn: (msg: string) => void = console.warn,\n): TraversalMode | undefined {\n if (raw === undefined) return undefined;\n if ((VALID_TRAVERSAL_MODES as readonly string[]).includes(raw)) return raw as TraversalMode;\n warn(\n `MI_TREE_TRAVERSAL=\"${raw}\" is not a valid traversal mode ` +\n `(valid: ${VALID_TRAVERSAL_MODES.join(\", \")}); falling back to \"auto\"`,\n );\n return \"auto\";\n}\n\nlet flags: MlDebugFlags | undefined = undefined;\nexport function getDebugFlags() {\n if (flags) return flags;\n flags = {\n dumpInitialTreeState: process.env.MI_DUMP_INITIAL_TREE_STATE !== undefined,\n logProjectMutationStat: process.env.MI_LOG_PROJECT_MUTATION_STAT !== undefined,\n logTemplateCacheStat: process.env.MI_LOG_TEMPLATE_CACHE_STAT !== undefined,\n logOutputRecalculations: process.env.MI_LOG_OUTPUT_RECALCULATIONS !== undefined,\n logProjectOverviewStat: process.env.MI_LOG_PROJECT_OVERVIEW_STAT !== undefined,\n logJsExecStat: process.env.MI_LOG_JS_EXEC_STAT !== undefined,\n };\n if (process.env.MI_LOG_OUTPUT_STATUS)\n flags.logOutputStatus =\n process.env.MI_LOG_OUTPUT_STATUS === \"unstable-only\" ? \"unstable-only\" : \"any\";\n if (process.env.MI_LOG_TREE_STAT)\n flags.logTreeStats =\n process.env.MI_LOG_TREE_STAT === \"cumulative\" ? \"cumulative\" : \"per-request\";\n const treeTraversalMode = parseTraversalMode(process.env.MI_TREE_TRAVERSAL);\n if (treeTraversalMode !== undefined) flags.treeTraversalMode = treeTraversalMode;\n return flags;\n}\n"],"mappings":";AAkBA,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;AACF;;;;;;;AAQA,SAAgB,mBACd,KACA,OAA8B,QAAQ,MACX;CAC3B,IAAI,QAAQ,KAAA,GAAW,OAAO,KAAA;CAC9B,IAAK,sBAA4C,SAAS,GAAG,GAAG,OAAO;CACvE,KACE,sBAAsB,IAAI,0CACb,sBAAsB,KAAK,IAAI,EAAE,0BAChD;CACA,OAAO;AACT;AAEA,IAAI,QAAkC,KAAA;AACtC,SAAgB,gBAAgB;CAC9B,IAAI,OAAO,OAAO;CAClB,QAAQ;EACN,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,yBAAyB,QAAQ,IAAI,iCAAiC,KAAA;EACtE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,eAAe,QAAQ,IAAI,wBAAwB,KAAA;CACrD;CACA,IAAI,QAAQ,IAAI,sBACd,MAAM,kBACJ,QAAQ,IAAI,yBAAyB,kBAAkB,kBAAkB;CAC7E,IAAI,QAAQ,IAAI,kBACd,MAAM,eACJ,QAAQ,IAAI,qBAAqB,eAAe,eAAe;CACnE,MAAM,oBAAoB,mBAAmB,QAAQ,IAAI,iBAAiB;CAC1E,IAAI,sBAAsB,KAAA,GAAW,MAAM,oBAAoB;CAC/D,OAAO;AACT"}
@@ -2,7 +2,8 @@
2
2
  const VALID_TRAVERSAL_MODES = [
3
3
  "auto",
4
4
  "client-bfs",
5
- "backend-streaming"
5
+ "backend-streaming",
6
+ "backend-delta"
6
7
  ];
7
8
  /**
8
9
  * Parse the raw MI_TREE_TRAVERSAL env value into a typed TraversalMode.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["export type MlDebugFlags = {\n logTreeStats?: \"cumulative\" | \"per-request\";\n logProjectMutationStat: boolean;\n logTemplateCacheStat: boolean;\n dumpInitialTreeState: boolean;\n logOutputStatus?: \"any\" | \"unstable-only\";\n logOutputRecalculations?: boolean;\n logProjectOverviewStat: boolean;\n logJsExecStat: boolean;\n /** Resolved value of MI_TREE_TRAVERSAL env var, or undefined if not set. */\n treeTraversalMode?: \"auto\" | \"client-bfs\" | \"backend-streaming\";\n};\n\nconst VALID_TRAVERSAL_MODES = [\"auto\", \"client-bfs\", \"backend-streaming\"] as const;\n\n/**\n * Parse the raw MI_TREE_TRAVERSAL env value into a typed TraversalMode.\n * Returns undefined when raw is undefined (env var absent).\n * Logs a warning and returns \"auto\" on unrecognised values (AC-TM5).\n * Exported for unit testing.\n */\nexport function parseTraversalMode(\n raw: string | undefined,\n warn: (msg: string) => void = console.warn,\n): \"auto\" | \"client-bfs\" | \"backend-streaming\" | undefined {\n if (raw === undefined) return undefined;\n if ((VALID_TRAVERSAL_MODES as readonly string[]).includes(raw))\n return raw as \"auto\" | \"client-bfs\" | \"backend-streaming\";\n warn(\n `MI_TREE_TRAVERSAL=\"${raw}\" is not a valid traversal mode ` +\n `(valid: ${VALID_TRAVERSAL_MODES.join(\", \")}); falling back to \"auto\"`,\n );\n return \"auto\";\n}\n\nlet flags: MlDebugFlags | undefined = undefined;\nexport function getDebugFlags() {\n if (flags) return flags;\n flags = {\n dumpInitialTreeState: process.env.MI_DUMP_INITIAL_TREE_STATE !== undefined,\n logProjectMutationStat: process.env.MI_LOG_PROJECT_MUTATION_STAT !== undefined,\n logTemplateCacheStat: process.env.MI_LOG_TEMPLATE_CACHE_STAT !== undefined,\n logOutputRecalculations: process.env.MI_LOG_OUTPUT_RECALCULATIONS !== undefined,\n logProjectOverviewStat: process.env.MI_LOG_PROJECT_OVERVIEW_STAT !== undefined,\n logJsExecStat: process.env.MI_LOG_JS_EXEC_STAT !== undefined,\n };\n if (process.env.MI_LOG_OUTPUT_STATUS)\n flags.logOutputStatus =\n process.env.MI_LOG_OUTPUT_STATUS === \"unstable-only\" ? \"unstable-only\" : \"any\";\n if (process.env.MI_LOG_TREE_STAT)\n flags.logTreeStats =\n process.env.MI_LOG_TREE_STAT === \"cumulative\" ? \"cumulative\" : \"per-request\";\n const treeTraversalMode = parseTraversalMode(process.env.MI_TREE_TRAVERSAL);\n if (treeTraversalMode !== undefined) flags.treeTraversalMode = treeTraversalMode;\n return flags;\n}\n"],"mappings":";AAaA,MAAM,wBAAwB;CAAC;CAAQ;CAAc;AAAmB;;;;;;;AAQxE,SAAgB,mBACd,KACA,OAA8B,QAAQ,MACmB;CACzD,IAAI,QAAQ,KAAA,GAAW,OAAO,KAAA;CAC9B,IAAK,sBAA4C,SAAS,GAAG,GAC3D,OAAO;CACT,KACE,sBAAsB,IAAI,0CACb,sBAAsB,KAAK,IAAI,EAAE,0BAChD;CACA,OAAO;AACT;AAEA,IAAI,QAAkC,KAAA;AACtC,SAAgB,gBAAgB;CAC9B,IAAI,OAAO,OAAO;CAClB,QAAQ;EACN,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,yBAAyB,QAAQ,IAAI,iCAAiC,KAAA;EACtE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,eAAe,QAAQ,IAAI,wBAAwB,KAAA;CACrD;CACA,IAAI,QAAQ,IAAI,sBACd,MAAM,kBACJ,QAAQ,IAAI,yBAAyB,kBAAkB,kBAAkB;CAC7E,IAAI,QAAQ,IAAI,kBACd,MAAM,eACJ,QAAQ,IAAI,qBAAqB,eAAe,eAAe;CACnE,MAAM,oBAAoB,mBAAmB,QAAQ,IAAI,iBAAiB;CAC1E,IAAI,sBAAsB,KAAA,GAAW,MAAM,oBAAoB;CAC/D,OAAO;AACT"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/debug/index.ts"],"sourcesContent":["import type { TraversalMode } from \"@milaboratories/pl-tree\";\n\nexport type MlDebugFlags = {\n logTreeStats?: \"cumulative\" | \"per-request\";\n logProjectMutationStat: boolean;\n logTemplateCacheStat: boolean;\n dumpInitialTreeState: boolean;\n logOutputStatus?: \"any\" | \"unstable-only\";\n logOutputRecalculations?: boolean;\n logProjectOverviewStat: boolean;\n logJsExecStat: boolean;\n /** Resolved value of MI_TREE_TRAVERSAL env var, or undefined if not set. */\n treeTraversalMode?: TraversalMode;\n};\n\n// Kept in step with TraversalMode by the satisfies clause: a mode added there without being\n// listed here would stop being forceable through the env var, which is how backend-delta was\n// missed when it became the default.\nconst VALID_TRAVERSAL_MODES = [\n \"auto\",\n \"client-bfs\",\n \"backend-streaming\",\n \"backend-delta\",\n] as const satisfies readonly TraversalMode[];\n\n/**\n * Parse the raw MI_TREE_TRAVERSAL env value into a typed TraversalMode.\n * Returns undefined when raw is undefined (env var absent).\n * Logs a warning and returns \"auto\" on unrecognised values (AC-TM5).\n * Exported for unit testing.\n */\nexport function parseTraversalMode(\n raw: string | undefined,\n warn: (msg: string) => void = console.warn,\n): TraversalMode | undefined {\n if (raw === undefined) return undefined;\n if ((VALID_TRAVERSAL_MODES as readonly string[]).includes(raw)) return raw as TraversalMode;\n warn(\n `MI_TREE_TRAVERSAL=\"${raw}\" is not a valid traversal mode ` +\n `(valid: ${VALID_TRAVERSAL_MODES.join(\", \")}); falling back to \"auto\"`,\n );\n return \"auto\";\n}\n\nlet flags: MlDebugFlags | undefined = undefined;\nexport function getDebugFlags() {\n if (flags) return flags;\n flags = {\n dumpInitialTreeState: process.env.MI_DUMP_INITIAL_TREE_STATE !== undefined,\n logProjectMutationStat: process.env.MI_LOG_PROJECT_MUTATION_STAT !== undefined,\n logTemplateCacheStat: process.env.MI_LOG_TEMPLATE_CACHE_STAT !== undefined,\n logOutputRecalculations: process.env.MI_LOG_OUTPUT_RECALCULATIONS !== undefined,\n logProjectOverviewStat: process.env.MI_LOG_PROJECT_OVERVIEW_STAT !== undefined,\n logJsExecStat: process.env.MI_LOG_JS_EXEC_STAT !== undefined,\n };\n if (process.env.MI_LOG_OUTPUT_STATUS)\n flags.logOutputStatus =\n process.env.MI_LOG_OUTPUT_STATUS === \"unstable-only\" ? \"unstable-only\" : \"any\";\n if (process.env.MI_LOG_TREE_STAT)\n flags.logTreeStats =\n process.env.MI_LOG_TREE_STAT === \"cumulative\" ? \"cumulative\" : \"per-request\";\n const treeTraversalMode = parseTraversalMode(process.env.MI_TREE_TRAVERSAL);\n if (treeTraversalMode !== undefined) flags.treeTraversalMode = treeTraversalMode;\n return flags;\n}\n"],"mappings":";AAkBA,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;AACF;;;;;;;AAQA,SAAgB,mBACd,KACA,OAA8B,QAAQ,MACX;CAC3B,IAAI,QAAQ,KAAA,GAAW,OAAO,KAAA;CAC9B,IAAK,sBAA4C,SAAS,GAAG,GAAG,OAAO;CACvE,KACE,sBAAsB,IAAI,0CACb,sBAAsB,KAAK,IAAI,EAAE,0BAChD;CACA,OAAO;AACT;AAEA,IAAI,QAAkC,KAAA;AACtC,SAAgB,gBAAgB;CAC9B,IAAI,OAAO,OAAO;CAClB,QAAQ;EACN,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,sBAAsB,QAAQ,IAAI,+BAA+B,KAAA;EACjE,yBAAyB,QAAQ,IAAI,iCAAiC,KAAA;EACtE,wBAAwB,QAAQ,IAAI,iCAAiC,KAAA;EACrE,eAAe,QAAQ,IAAI,wBAAwB,KAAA;CACrD;CACA,IAAI,QAAQ,IAAI,sBACd,MAAM,kBACJ,QAAQ,IAAI,yBAAyB,kBAAkB,kBAAkB;CAC7E,IAAI,QAAQ,IAAI,kBACd,MAAM,eACJ,QAAQ,IAAI,qBAAqB,eAAe,eAAe;CACnE,MAAM,oBAAoB,mBAAmB,QAAQ,IAAI,iBAAiB;CAC1E,IAAI,sBAAsB,KAAA,GAAW,MAAM,oBAAoB;CAC/D,OAAO;AACT"}
@@ -1,7 +1,7 @@
1
1
  //#region src/middle_layer/build_stamp.ts
2
2
  function injectedStamp() {
3
3
  try {
4
- return "ea3cdb56a59e-dirty-1789572582985";
4
+ return "285e72df361b-dirty-1789645405415";
5
5
  } catch {
6
6
  return;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  //#region src/middle_layer/build_stamp.ts
2
2
  function injectedStamp() {
3
3
  try {
4
- return "ea3cdb56a59e-dirty-1789572582956";
4
+ return "285e72df361b-dirty-1789645405392";
5
5
  } catch {
6
6
  return;
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-middle-layer",
3
- "version": "1.71.8",
3
+ "version": "1.71.10",
4
4
  "description": "Pl Middle Layer",
5
5
  "keywords": [],
6
6
  "license": "UNLICENSED",
@@ -19,7 +19,7 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@milaboratories/pframes-rs-node": "1.1.60",
22
+ "@milaboratories/pframes-rs-node": "1.1.61",
23
23
  "canonicalize": "~2.1.0",
24
24
  "denque": "^2.1.0",
25
25
  "es-toolkit": "^1.39.10",
@@ -30,26 +30,26 @@
30
30
  "utility-types": "^3.11.0",
31
31
  "yaml": "^2.8.0",
32
32
  "zod": "~3.25.76",
33
+ "@milaboratories/columns-collection-driver": "0.2.5",
33
34
  "@milaboratories/computable": "2.9.8",
34
35
  "@milaboratories/helpers": "1.14.5",
35
- "@milaboratories/columns-collection-driver": "0.2.5",
36
- "@milaboratories/pf-spec-driver": "1.5.2",
37
- "@milaboratories/pl-client": "3.16.2",
38
- "@milaboratories/pf-driver": "1.9.2",
39
- "@milaboratories/pl-deployments": "3.0.17",
40
- "@milaboratories/pl-drivers": "1.16.21",
36
+ "@milaboratories/pf-spec-driver": "1.5.3",
37
+ "@milaboratories/pf-driver": "1.9.3",
38
+ "@milaboratories/pl-client": "3.17.0",
41
39
  "@milaboratories/pl-crash-recorder": "0.3.0",
42
- "@milaboratories/pl-errors": "1.4.40",
40
+ "@milaboratories/pl-deployments": "3.0.17",
43
41
  "@milaboratories/pl-http": "1.2.4",
44
- "@milaboratories/pl-model-backend": "1.4.25",
42
+ "@milaboratories/pl-drivers": "1.16.22",
43
+ "@milaboratories/pl-errors": "1.4.41",
44
+ "@milaboratories/pl-model-backend": "1.4.26",
45
45
  "@milaboratories/pl-model-common": "1.49.0",
46
46
  "@milaboratories/pl-model-middle-layer": "1.32.1",
47
- "@milaboratories/pl-tree": "1.14.4",
47
+ "@milaboratories/pl-tree": "1.15.0",
48
48
  "@milaboratories/resolve-helper": "1.1.3",
49
- "@milaboratories/ts-helpers": "1.8.6",
50
- "@platforma-sdk/block-tools": "2.15.2",
49
+ "@platforma-sdk/block-tools": "2.15.3",
51
50
  "@platforma-sdk/model": "1.83.17",
52
- "@platforma-sdk/workflow-tengo": "6.10.3"
51
+ "@milaboratories/ts-helpers": "1.8.6",
52
+ "@platforma-sdk/workflow-tengo": "6.10.4"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/node": "~24.5.2",
@@ -57,9 +57,9 @@
57
57
  "@vitest/coverage-istanbul": "^4.1.3",
58
58
  "typescript": "7.0.2",
59
59
  "vitest": "^4.1.3",
60
- "@milaboratories/build-configs": "2.0.1",
60
+ "@milaboratories/ts-configs": "1.4.0",
61
61
  "@milaboratories/ts-builder": "1.7.2",
62
- "@milaboratories/ts-configs": "1.4.0"
62
+ "@milaboratories/build-configs": "2.0.1"
63
63
  },
64
64
  "engines": {
65
65
  "node": ">=22.19.0"
@@ -1,3 +1,5 @@
1
+ import type { TraversalMode } from "@milaboratories/pl-tree";
2
+
1
3
  export type MlDebugFlags = {
2
4
  logTreeStats?: "cumulative" | "per-request";
3
5
  logProjectMutationStat: boolean;
@@ -8,10 +10,18 @@ export type MlDebugFlags = {
8
10
  logProjectOverviewStat: boolean;
9
11
  logJsExecStat: boolean;
10
12
  /** Resolved value of MI_TREE_TRAVERSAL env var, or undefined if not set. */
11
- treeTraversalMode?: "auto" | "client-bfs" | "backend-streaming";
13
+ treeTraversalMode?: TraversalMode;
12
14
  };
13
15
 
14
- const VALID_TRAVERSAL_MODES = ["auto", "client-bfs", "backend-streaming"] as const;
16
+ // Kept in step with TraversalMode by the satisfies clause: a mode added there without being
17
+ // listed here would stop being forceable through the env var, which is how backend-delta was
18
+ // missed when it became the default.
19
+ const VALID_TRAVERSAL_MODES = [
20
+ "auto",
21
+ "client-bfs",
22
+ "backend-streaming",
23
+ "backend-delta",
24
+ ] as const satisfies readonly TraversalMode[];
15
25
 
16
26
  /**
17
27
  * Parse the raw MI_TREE_TRAVERSAL env value into a typed TraversalMode.
@@ -22,10 +32,9 @@ const VALID_TRAVERSAL_MODES = ["auto", "client-bfs", "backend-streaming"] as con
22
32
  export function parseTraversalMode(
23
33
  raw: string | undefined,
24
34
  warn: (msg: string) => void = console.warn,
25
- ): "auto" | "client-bfs" | "backend-streaming" | undefined {
35
+ ): TraversalMode | undefined {
26
36
  if (raw === undefined) return undefined;
27
- if ((VALID_TRAVERSAL_MODES as readonly string[]).includes(raw))
28
- return raw as "auto" | "client-bfs" | "backend-streaming";
37
+ if ((VALID_TRAVERSAL_MODES as readonly string[]).includes(raw)) return raw as TraversalMode;
29
38
  warn(
30
39
  `MI_TREE_TRAVERSAL="${raw}" is not a valid traversal mode ` +
31
40
  `(valid: ${VALID_TRAVERSAL_MODES.join(", ")}); falling back to "auto"`,