@okf/ootils 1.37.1 → 1.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/node.js CHANGED
@@ -247,6 +247,15 @@ var init_GLOBAL_BULLMQ_CONFIG = __esm({
247
247
  }
248
248
  },
249
249
  AI_AUTO_ANNOTATE_QUEUE: {
250
+ // PARENT queue in the per-doc Flow. One job per doc; child jobs (one
251
+ // per chunk) live on AI_AUTO_ANNOTATE_CHUNK_QUEUE. BullMQ Flow fires
252
+ // the parent only after all children settle. Parent job's worker
253
+ // collects children's suggestions, runs ONE doc-level inductive batch
254
+ // dedup, applies merged annotations to editor state, writes the doc.
255
+ //
256
+ // The progress tracker aggregator (calculateSegByAutoAnnotateIdJobs in
257
+ // okf-sub) filters by this queue's id, so parents = 1 job per doc
258
+ // matches the existing FE progress counting semantics 1:1.
250
259
  id: "ai-auto-annotate-queue",
251
260
  queueConfig: {
252
261
  defaultJobOptions: {
@@ -265,14 +274,70 @@ var init_GLOBAL_BULLMQ_CONFIG = __esm({
265
274
  }
266
275
  },
267
276
  workerConfig: {
268
- // Parallel-safe: createTag/createSubTheme catch E11000 on the unique tagId
269
- // index and re-fetch the existing doc, so concurrent jobs proposing the
270
- // same tag converge to one. See ai/dualAgentAnnotation/tools/createTaxonomyItem.js.
271
- // Starting at 10; real ceiling is the LLM provider's rate limit.
272
- concurrency: 15,
277
+ // Parallel-safe across docs: per-doc isolation on annotations.tags
278
+ // rollup (each parent processes a different doc); tenant-level Redis
279
+ // lock in resolveInductiveBatch serializes inductive dedup across
280
+ // concurrent parents; createTag/createSubTheme catch E11000 on the
281
+ // unique tagId index. See ai/dualAgentAnnotation/tools/createTaxonomyItem.js
282
+ // + ai/dualAgentAnnotation/tools/resolveInductiveBatch.js.
283
+ concurrency: 5,
273
284
  lockDuration: 3e5,
274
- // 5 minutes lock duration since annotation can be slow
275
- maxStalledCount: 3
285
+ // 5 min generous ceiling so heartbeat stutters don't trip stalled detection
286
+ // With attempts:1 a stalled job has no retry left anyway, but keeping
287
+ // stalled-count low ensures BullMQ doesn't mis-pickup a job whose
288
+ // worker is just CPU-busy.
289
+ maxStalledCount: 1
290
+ }
291
+ },
292
+ AI_AUTO_ANNOTATE_CHUNK_QUEUE: {
293
+ // CHILDREN queue in the per-doc Flow. One job per (doc, field, chunk).
294
+ // Each job calls okf-be /internal/getChunkSuggestions for its one chunk
295
+ // — a small fast call well under App Engine's 60s ceiling regardless
296
+ // of how large the source doc is. Failure of a single chunk does NOT
297
+ // kill the parent (children opt in via failParentOnFailure: false) —
298
+ // the parent's worker handles partial-success aggregation, mirroring
299
+ // the Promise.allSettled semantic at the BullMQ level.
300
+ //
301
+ // The progress tracker IGNORES this queue (the aggregator filters on
302
+ // AI_AUTO_ANNOTATE_QUEUE.id), so chunk granularity is available in
303
+ // job state for any future drill-in UI without disrupting today's
304
+ // doc-level progress UI.
305
+ id: "ai-auto-annotate-chunk-queue",
306
+ queueConfig: {
307
+ defaultJobOptions: {
308
+ // One try, no retries. A retry would re-fire the dual-agent LLM
309
+ // chain (annotator + moderator + attribute classifier) for the
310
+ // same chunk — expensive, and if the first try hit an OpenAI
311
+ // 429/timeout the retry will likely hit the same condition.
312
+ // Failed chunks surface to the parent via getFailedChildrenValues
313
+ // and become a partial-success on the field (the rest still apply).
314
+ attempts: 1,
315
+ backoff: {
316
+ type: "exponential",
317
+ delay: 5e3
318
+ },
319
+ removeOnComplete: 100,
320
+ // chunks fan out wider; keep a few more
321
+ removeOnFail: 300
322
+ },
323
+ streams: {
324
+ events: {
325
+ maxLen: 10
326
+ }
327
+ }
328
+ },
329
+ workerConfig: {
330
+ // OpenAI gpt-4.1-mini TPM ceiling is 10M tokens/min. Each chunk
331
+ // does ~4 LLM calls in series totalling ~22K tokens.
332
+ // 5 chunks in flight × 4 calls/chunk × 60s / 15s-per-call
333
+ // ≈ 80 calls/min × 6.5K tokens
334
+ // ≈ 520K tokens/min sustained → ~5% of TPM ceiling.
335
+ // Comfortable headroom for variance (long-tail chunks, bigger
336
+ // taxonomies, mixed-tenant batches).
337
+ concurrency: 5,
338
+ lockDuration: 18e4,
339
+ // 3 min — a single chunk's dual-agent run fits well under
340
+ maxStalledCount: 1
276
341
  }
277
342
  },
278
343
  ANNOS_ELASTIC_SYNC_QUEUE: {
@@ -2124,6 +2189,7 @@ __export(node_exports, {
2124
2189
  autoGenFilterConfigsFromTpl: () => autoGenFilterConfigsFromTpl,
2125
2190
  blockRegistry: () => blockRegistry,
2126
2191
  buildFilterConfigurations: () => buildFilterConfigurations,
2192
+ collectMarkIdsInOrder: () => collectMarkIdsInOrder,
2127
2193
  compareAndGroupBlocks: () => compareAndGroupBlocks,
2128
2194
  deleteVal: () => deleteVal,
2129
2195
  extractAllBlocksFromTpl: () => extractAllBlocksFromTpl,
@@ -2789,6 +2855,31 @@ var isTplAnnotationEnabled = (tpl) => {
2789
2855
  return blockRegistry.getAnnotationEnabledBlocks(allBlocks).length > 0;
2790
2856
  };
2791
2857
 
2858
+ // src/utils/collectMarkIdsInOrder.ts
2859
+ var collectMarkIdsInOrder = (editorState) => {
2860
+ const ordered = [];
2861
+ const seen = /* @__PURE__ */ new Set();
2862
+ const walk = (node) => {
2863
+ if (Array.isArray(node)) {
2864
+ for (const n of node) walk(n);
2865
+ return;
2866
+ }
2867
+ if (node && typeof node === "object") {
2868
+ if (node.type === "mark" && Array.isArray(node.ids)) {
2869
+ for (const id of node.ids) {
2870
+ if (!seen.has(id)) {
2871
+ seen.add(id);
2872
+ ordered.push(id);
2873
+ }
2874
+ }
2875
+ }
2876
+ for (const key in node) walk(node[key]);
2877
+ }
2878
+ };
2879
+ walk(editorState);
2880
+ return ordered;
2881
+ };
2882
+
2792
2883
  // src/utils/getRollupPossibilities.ts
2793
2884
  var MAX_DEPTH_ROLLUP_POSSIBILITIES = 10;
2794
2885
  function getRollupPossibilities({
@@ -4772,6 +4863,7 @@ var import_GET_GLOBAL_BULLMQ_CONFIG = __toESM(require_GET_GLOBAL_BULLMQ_CONFIG()
4772
4863
  autoGenFilterConfigsFromTpl,
4773
4864
  blockRegistry,
4774
4865
  buildFilterConfigurations,
4866
+ collectMarkIdsInOrder,
4775
4867
  compareAndGroupBlocks,
4776
4868
  deleteVal,
4777
4869
  extractAllBlocksFromTpl,
package/dist/node.mjs CHANGED
@@ -252,6 +252,15 @@ var init_GLOBAL_BULLMQ_CONFIG = __esm({
252
252
  }
253
253
  },
254
254
  AI_AUTO_ANNOTATE_QUEUE: {
255
+ // PARENT queue in the per-doc Flow. One job per doc; child jobs (one
256
+ // per chunk) live on AI_AUTO_ANNOTATE_CHUNK_QUEUE. BullMQ Flow fires
257
+ // the parent only after all children settle. Parent job's worker
258
+ // collects children's suggestions, runs ONE doc-level inductive batch
259
+ // dedup, applies merged annotations to editor state, writes the doc.
260
+ //
261
+ // The progress tracker aggregator (calculateSegByAutoAnnotateIdJobs in
262
+ // okf-sub) filters by this queue's id, so parents = 1 job per doc
263
+ // matches the existing FE progress counting semantics 1:1.
255
264
  id: "ai-auto-annotate-queue",
256
265
  queueConfig: {
257
266
  defaultJobOptions: {
@@ -270,14 +279,70 @@ var init_GLOBAL_BULLMQ_CONFIG = __esm({
270
279
  }
271
280
  },
272
281
  workerConfig: {
273
- // Parallel-safe: createTag/createSubTheme catch E11000 on the unique tagId
274
- // index and re-fetch the existing doc, so concurrent jobs proposing the
275
- // same tag converge to one. See ai/dualAgentAnnotation/tools/createTaxonomyItem.js.
276
- // Starting at 10; real ceiling is the LLM provider's rate limit.
277
- concurrency: 15,
282
+ // Parallel-safe across docs: per-doc isolation on annotations.tags
283
+ // rollup (each parent processes a different doc); tenant-level Redis
284
+ // lock in resolveInductiveBatch serializes inductive dedup across
285
+ // concurrent parents; createTag/createSubTheme catch E11000 on the
286
+ // unique tagId index. See ai/dualAgentAnnotation/tools/createTaxonomyItem.js
287
+ // + ai/dualAgentAnnotation/tools/resolveInductiveBatch.js.
288
+ concurrency: 5,
278
289
  lockDuration: 3e5,
279
- // 5 minutes lock duration since annotation can be slow
280
- maxStalledCount: 3
290
+ // 5 min generous ceiling so heartbeat stutters don't trip stalled detection
291
+ // With attempts:1 a stalled job has no retry left anyway, but keeping
292
+ // stalled-count low ensures BullMQ doesn't mis-pickup a job whose
293
+ // worker is just CPU-busy.
294
+ maxStalledCount: 1
295
+ }
296
+ },
297
+ AI_AUTO_ANNOTATE_CHUNK_QUEUE: {
298
+ // CHILDREN queue in the per-doc Flow. One job per (doc, field, chunk).
299
+ // Each job calls okf-be /internal/getChunkSuggestions for its one chunk
300
+ // — a small fast call well under App Engine's 60s ceiling regardless
301
+ // of how large the source doc is. Failure of a single chunk does NOT
302
+ // kill the parent (children opt in via failParentOnFailure: false) —
303
+ // the parent's worker handles partial-success aggregation, mirroring
304
+ // the Promise.allSettled semantic at the BullMQ level.
305
+ //
306
+ // The progress tracker IGNORES this queue (the aggregator filters on
307
+ // AI_AUTO_ANNOTATE_QUEUE.id), so chunk granularity is available in
308
+ // job state for any future drill-in UI without disrupting today's
309
+ // doc-level progress UI.
310
+ id: "ai-auto-annotate-chunk-queue",
311
+ queueConfig: {
312
+ defaultJobOptions: {
313
+ // One try, no retries. A retry would re-fire the dual-agent LLM
314
+ // chain (annotator + moderator + attribute classifier) for the
315
+ // same chunk — expensive, and if the first try hit an OpenAI
316
+ // 429/timeout the retry will likely hit the same condition.
317
+ // Failed chunks surface to the parent via getFailedChildrenValues
318
+ // and become a partial-success on the field (the rest still apply).
319
+ attempts: 1,
320
+ backoff: {
321
+ type: "exponential",
322
+ delay: 5e3
323
+ },
324
+ removeOnComplete: 100,
325
+ // chunks fan out wider; keep a few more
326
+ removeOnFail: 300
327
+ },
328
+ streams: {
329
+ events: {
330
+ maxLen: 10
331
+ }
332
+ }
333
+ },
334
+ workerConfig: {
335
+ // OpenAI gpt-4.1-mini TPM ceiling is 10M tokens/min. Each chunk
336
+ // does ~4 LLM calls in series totalling ~22K tokens.
337
+ // 5 chunks in flight × 4 calls/chunk × 60s / 15s-per-call
338
+ // ≈ 80 calls/min × 6.5K tokens
339
+ // ≈ 520K tokens/min sustained → ~5% of TPM ceiling.
340
+ // Comfortable headroom for variance (long-tail chunks, bigger
341
+ // taxonomies, mixed-tenant batches).
342
+ concurrency: 5,
343
+ lockDuration: 18e4,
344
+ // 3 min — a single chunk's dual-agent run fits well under
345
+ maxStalledCount: 1
281
346
  }
282
347
  },
283
348
  ANNOS_ELASTIC_SYNC_QUEUE: {
@@ -2719,6 +2784,31 @@ var isTplAnnotationEnabled = (tpl) => {
2719
2784
  return blockRegistry.getAnnotationEnabledBlocks(allBlocks).length > 0;
2720
2785
  };
2721
2786
 
2787
+ // src/utils/collectMarkIdsInOrder.ts
2788
+ var collectMarkIdsInOrder = (editorState) => {
2789
+ const ordered = [];
2790
+ const seen = /* @__PURE__ */ new Set();
2791
+ const walk = (node) => {
2792
+ if (Array.isArray(node)) {
2793
+ for (const n of node) walk(n);
2794
+ return;
2795
+ }
2796
+ if (node && typeof node === "object") {
2797
+ if (node.type === "mark" && Array.isArray(node.ids)) {
2798
+ for (const id of node.ids) {
2799
+ if (!seen.has(id)) {
2800
+ seen.add(id);
2801
+ ordered.push(id);
2802
+ }
2803
+ }
2804
+ }
2805
+ for (const key in node) walk(node[key]);
2806
+ }
2807
+ };
2808
+ walk(editorState);
2809
+ return ordered;
2810
+ };
2811
+
2722
2812
  // src/utils/getRollupPossibilities.ts
2723
2813
  var MAX_DEPTH_ROLLUP_POSSIBILITIES = 10;
2724
2814
  function getRollupPossibilities({
@@ -4717,6 +4807,7 @@ export {
4717
4807
  autoGenFilterConfigsFromTpl,
4718
4808
  blockRegistry,
4719
4809
  buildFilterConfigurations,
4810
+ collectMarkIdsInOrder,
4720
4811
  compareAndGroupBlocks,
4721
4812
  deleteVal,
4722
4813
  extractAllBlocksFromTpl,
@@ -222,6 +222,29 @@ declare const _recursExtractBlocks: ({ data, cb, sectionStack, blockPathPrefix }
222
222
  */
223
223
  declare const isTplAnnotationEnabled: (tpl: any) => boolean;
224
224
 
225
+ /**
226
+ * Collect annotation (mark-node) ids from a serialized Lexical editorState tree,
227
+ * in document reading order, deduped on FIRST occurrence.
228
+ *
229
+ * Lexical stores annotation highlights as MarkNodes: `{ type: "mark", ids: [...],
230
+ * children: [...] }`. Overlapping annotations split the text into contiguous
231
+ * segments, each a mark whose `ids` lists every annotation covering that segment —
232
+ * so a single annotation can appear across multiple marks, and a single mark can
233
+ * carry multiple ids. A depth-first walk visits segments left-to-right (document
234
+ * order); taking each id's first appearance yields the position where that
235
+ * annotation's highlight first starts. Two annotations that start at the exact
236
+ * same character share their first segment, so their relative order falls to that
237
+ * segment's `ids` array order — an inherent tie with no positional answer.
238
+ *
239
+ * Pass the editorState root (the `{ root: { children } }` tree). It walks generic
240
+ * JSON, so any subtree works too — but never pass an object that also nests
241
+ * unrelated mark-bearing states (e.g. a Lexical value's sibling `annoData`, whose
242
+ * per-anno `fragment` mini-states would inject out-of-order marks).
243
+ *
244
+ * Callers that only need the unordered SET of ids can wrap the result in `new Set(...)`.
245
+ */
246
+ declare const collectMarkIdsInOrder: (editorState: any) => string[];
247
+
225
248
  /**
226
249
  * Calculates all possible rollup relationships for a tag type
227
250
  *
@@ -597,7 +620,7 @@ declare namespace BASE_BULLMQ_CONFIG {
597
620
  }
598
621
  export { workerConfig_7 as workerConfig };
599
622
  }
600
- namespace ANNOS_ELASTIC_SYNC_QUEUE {
623
+ namespace AI_AUTO_ANNOTATE_CHUNK_QUEUE {
601
624
  let id_8: string;
602
625
  export { id_8 as id };
603
626
  export namespace queueConfig_8 {
@@ -637,7 +660,7 @@ declare namespace BASE_BULLMQ_CONFIG {
637
660
  }
638
661
  export { workerConfig_8 as workerConfig };
639
662
  }
640
- namespace CHUNKS_ELASTIC_SYNC_QUEUE {
663
+ namespace ANNOS_ELASTIC_SYNC_QUEUE {
641
664
  let id_9: string;
642
665
  export { id_9 as id };
643
666
  export namespace queueConfig_9 {
@@ -677,7 +700,7 @@ declare namespace BASE_BULLMQ_CONFIG {
677
700
  }
678
701
  export { workerConfig_9 as workerConfig };
679
702
  }
680
- namespace USERS_ELASTIC_SYNC_QUEUE {
703
+ namespace CHUNKS_ELASTIC_SYNC_QUEUE {
681
704
  let id_10: string;
682
705
  export { id_10 as id };
683
706
  export namespace queueConfig_10 {
@@ -717,7 +740,7 @@ declare namespace BASE_BULLMQ_CONFIG {
717
740
  }
718
741
  export { workerConfig_10 as workerConfig };
719
742
  }
720
- namespace CONTENT_ELASTIC_SYNC_QUEUE {
743
+ namespace USERS_ELASTIC_SYNC_QUEUE {
721
744
  let id_11: string;
722
745
  export { id_11 as id };
723
746
  export namespace queueConfig_11 {
@@ -757,7 +780,7 @@ declare namespace BASE_BULLMQ_CONFIG {
757
780
  }
758
781
  export { workerConfig_11 as workerConfig };
759
782
  }
760
- namespace SARVAM_TRANSCRIPTION_QUEUE {
783
+ namespace CONTENT_ELASTIC_SYNC_QUEUE {
761
784
  let id_12: string;
762
785
  export { id_12 as id };
763
786
  export namespace queueConfig_12 {
@@ -797,7 +820,7 @@ declare namespace BASE_BULLMQ_CONFIG {
797
820
  }
798
821
  export { workerConfig_12 as workerConfig };
799
822
  }
800
- namespace INTERCOM_CONVERSATIONS_QUEUE {
823
+ namespace SARVAM_TRANSCRIPTION_QUEUE {
801
824
  let id_13: string;
802
825
  export { id_13 as id };
803
826
  export namespace queueConfig_13 {
@@ -837,7 +860,7 @@ declare namespace BASE_BULLMQ_CONFIG {
837
860
  }
838
861
  export { workerConfig_13 as workerConfig };
839
862
  }
840
- namespace TAG_SYNC_PLAN_QUEUE {
863
+ namespace INTERCOM_CONVERSATIONS_QUEUE {
841
864
  let id_14: string;
842
865
  export { id_14 as id };
843
866
  export namespace queueConfig_14 {
@@ -877,7 +900,7 @@ declare namespace BASE_BULLMQ_CONFIG {
877
900
  }
878
901
  export { workerConfig_14 as workerConfig };
879
902
  }
880
- namespace TAG_SYNC_BATCH_QUEUE {
903
+ namespace TAG_SYNC_PLAN_QUEUE {
881
904
  let id_15: string;
882
905
  export { id_15 as id };
883
906
  export namespace queueConfig_15 {
@@ -917,11 +940,13 @@ declare namespace BASE_BULLMQ_CONFIG {
917
940
  }
918
941
  export { workerConfig_15 as workerConfig };
919
942
  }
920
- namespace SCHEDULED_EXTERNAL_SYNC_QUEUE {
943
+ namespace TAG_SYNC_BATCH_QUEUE {
921
944
  let id_16: string;
922
945
  export { id_16 as id };
923
946
  export namespace queueConfig_16 {
924
947
  export namespace defaultJobOptions_16 {
948
+ let attempts_16: number;
949
+ export { attempts_16 as attempts };
925
950
  export namespace backoff_16 {
926
951
  let type_16: string;
927
952
  export { type_16 as type };
@@ -929,8 +954,6 @@ declare namespace BASE_BULLMQ_CONFIG {
929
954
  export { delay_16 as delay };
930
955
  }
931
956
  export { backoff_16 as backoff };
932
- let attempts_16: number;
933
- export { attempts_16 as attempts };
934
957
  let removeOnComplete_16: number;
935
958
  export { removeOnComplete_16 as removeOnComplete };
936
959
  let removeOnFail_16: number;
@@ -957,13 +980,11 @@ declare namespace BASE_BULLMQ_CONFIG {
957
980
  }
958
981
  export { workerConfig_16 as workerConfig };
959
982
  }
960
- namespace REINDEX_QUEUE {
983
+ namespace SCHEDULED_EXTERNAL_SYNC_QUEUE {
961
984
  let id_17: string;
962
985
  export { id_17 as id };
963
986
  export namespace queueConfig_17 {
964
987
  export namespace defaultJobOptions_17 {
965
- let attempts_17: number;
966
- export { attempts_17 as attempts };
967
988
  export namespace backoff_17 {
968
989
  let type_17: string;
969
990
  export { type_17 as type };
@@ -971,8 +992,8 @@ declare namespace BASE_BULLMQ_CONFIG {
971
992
  export { delay_17 as delay };
972
993
  }
973
994
  export { backoff_17 as backoff };
974
- let delay_18: number;
975
- export { delay_18 as delay };
995
+ let attempts_17: number;
996
+ export { attempts_17 as attempts };
976
997
  let removeOnComplete_17: number;
977
998
  export { removeOnComplete_17 as removeOnComplete };
978
999
  let removeOnFail_17: number;
@@ -999,6 +1020,48 @@ declare namespace BASE_BULLMQ_CONFIG {
999
1020
  }
1000
1021
  export { workerConfig_17 as workerConfig };
1001
1022
  }
1023
+ namespace REINDEX_QUEUE {
1024
+ let id_18: string;
1025
+ export { id_18 as id };
1026
+ export namespace queueConfig_18 {
1027
+ export namespace defaultJobOptions_18 {
1028
+ let attempts_18: number;
1029
+ export { attempts_18 as attempts };
1030
+ export namespace backoff_18 {
1031
+ let type_18: string;
1032
+ export { type_18 as type };
1033
+ let delay_18: number;
1034
+ export { delay_18 as delay };
1035
+ }
1036
+ export { backoff_18 as backoff };
1037
+ let delay_19: number;
1038
+ export { delay_19 as delay };
1039
+ let removeOnComplete_18: number;
1040
+ export { removeOnComplete_18 as removeOnComplete };
1041
+ let removeOnFail_18: number;
1042
+ export { removeOnFail_18 as removeOnFail };
1043
+ }
1044
+ export { defaultJobOptions_18 as defaultJobOptions };
1045
+ export namespace streams_18 {
1046
+ export namespace events_18 {
1047
+ let maxLen_18: number;
1048
+ export { maxLen_18 as maxLen };
1049
+ }
1050
+ export { events_18 as events };
1051
+ }
1052
+ export { streams_18 as streams };
1053
+ }
1054
+ export { queueConfig_18 as queueConfig };
1055
+ export namespace workerConfig_18 {
1056
+ let concurrency_18: number;
1057
+ export { concurrency_18 as concurrency };
1058
+ let lockDuration_18: number;
1059
+ export { lockDuration_18 as lockDuration };
1060
+ let maxStalledCount_18: number;
1061
+ export { maxStalledCount_18 as maxStalledCount };
1062
+ }
1063
+ export { workerConfig_18 as workerConfig };
1064
+ }
1002
1065
  }
1003
1066
 
1004
1067
  interface PlatformContextContentItem {
@@ -1937,4 +2000,4 @@ declare class BlockRegistry {
1937
2000
  /** Singleton instance — the one registry shared across the app. */
1938
2001
  declare const blockRegistry: BlockRegistry;
1939
2002
 
1940
- export { BASE_BULLMQ_CONFIG, type BlockCapabilities, type BlockDef, BlockRegistry, CHUNKING_PRESETS, ELASTIC_MAPPING_PRESETS, FILTER_IDS, MONGO_SCHEMA_PRESETS, TEMP_removeDuplicateFilters, UI_CONTENT, _self_managed_buildAnnoHierarchyConfig, _self_managed_buildDocHierarchyConfig, _self_managed_getFixedAnnoRollupBlocks, _self_managed_getFixedAnnoTagBlock, autoGenFilterConfigsFromTpl, blockRegistry, buildFilterConfigurations, compareAndGroupBlocks, deleteVal, extractAllBlocksFromTpl, extractAndOrganizeBlocks, genCleanCamelCaseId, genTagId, generateFilterKey, getAnnoFilterBucketKey, getFilterKeyForBlock, getPlatformContextContent, getRollupPossibilities, getRoutePathToContentTypeLanding, getRoutePathToEditContent, getRoutePathToModerateContent, getRoutePathToMyContent, getRoutePathToPublishedContent, getRoutePathToReviewDashboard, getRoutePathToTCI, getRoutePathToTagCategoryLanding, getVal, isTplAnnotationEnabled, mergeAnnoDataIntoAnnotationsTags, parseSpecialConfigSyntax, plainTextToLexical, processAuthorAndCommonFilters, _recursExtractBlocks as recursivelyExtractBlocks, segrigateDocs, setVal, toArray };
2003
+ export { BASE_BULLMQ_CONFIG, type BlockCapabilities, type BlockDef, BlockRegistry, CHUNKING_PRESETS, ELASTIC_MAPPING_PRESETS, FILTER_IDS, MONGO_SCHEMA_PRESETS, TEMP_removeDuplicateFilters, UI_CONTENT, _self_managed_buildAnnoHierarchyConfig, _self_managed_buildDocHierarchyConfig, _self_managed_getFixedAnnoRollupBlocks, _self_managed_getFixedAnnoTagBlock, autoGenFilterConfigsFromTpl, blockRegistry, buildFilterConfigurations, collectMarkIdsInOrder, compareAndGroupBlocks, deleteVal, extractAllBlocksFromTpl, extractAndOrganizeBlocks, genCleanCamelCaseId, genTagId, generateFilterKey, getAnnoFilterBucketKey, getFilterKeyForBlock, getPlatformContextContent, getRollupPossibilities, getRoutePathToContentTypeLanding, getRoutePathToEditContent, getRoutePathToModerateContent, getRoutePathToMyContent, getRoutePathToPublishedContent, getRoutePathToReviewDashboard, getRoutePathToTCI, getRoutePathToTagCategoryLanding, getVal, isTplAnnotationEnabled, mergeAnnoDataIntoAnnotationsTags, parseSpecialConfigSyntax, plainTextToLexical, processAuthorAndCommonFilters, _recursExtractBlocks as recursivelyExtractBlocks, segrigateDocs, setVal, toArray };