@modelprofile.com/flexharness 3.7.0 → 4.0.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.
@@ -104,6 +104,8 @@ export interface IFlexSessionActivity {
104
104
  export interface IFlexSession {
105
105
  scopeId: string;
106
106
  sessionId: string;
107
+ sessionGenerationId?: string;
108
+ sessionGenerationSequence?: number;
107
109
  title?: string;
108
110
  createdAt: string;
109
111
  updatedAt: string;
@@ -325,6 +327,8 @@ export interface IFlexResourceToolProviderResolver<TScope> {
325
327
  }
326
328
  export interface IFlexSessionTombstone {
327
329
  sessionId: string;
330
+ sessionGenerationId?: string;
331
+ sessionGenerationSequence?: number;
328
332
  deletedAt: string;
329
333
  rootSessionId?: string;
330
334
  depth?: number;
@@ -353,7 +357,14 @@ export interface IFlexProjectionSnapshotV1 {
353
357
  stagedTerminals: IFlexTerminalProjection[];
354
358
  }
355
359
  export type TFlexReversionSegmentStatus = 'capturing' | 'completed' | 'failed' | 'cancelled';
356
- export interface IFlexReversionSegment {
360
+ export type TFlexReversionProtocolVersion = 1 | 2;
361
+ export type TFlexReversionProvenance = 'transcript' | 'workspace';
362
+ export type TFlexReversionDisposition = 'pending' | 'revertible' | 'no-change' | 'nonrevertible';
363
+ export interface IFlexAffectedWorkspace {
364
+ readonly id: string;
365
+ readonly label: string;
366
+ }
367
+ interface IFlexReversionSegmentV2 {
357
368
  runId: string;
358
369
  userMessageId: string;
359
370
  status: TFlexReversionSegmentStatus;
@@ -363,12 +374,22 @@ export interface IFlexReversionSegment {
363
374
  captureId?: string;
364
375
  workspaceReference?: TJsonValue;
365
376
  }
366
- export interface IFlexPendingCaptureReversion {
377
+ export interface IFlexReversionSegment extends IFlexReversionSegmentV2 {
378
+ protocolVersion: TFlexReversionProtocolVersion;
379
+ provenance: TFlexReversionProvenance;
380
+ disposition?: TFlexReversionDisposition;
381
+ affectedWorkspaces?: IFlexAffectedWorkspace[];
382
+ reasonCode?: string;
383
+ }
384
+ interface IFlexPendingCaptureReversionV2 {
367
385
  kind: 'capture';
368
386
  runId: string;
369
387
  captureId: string;
370
388
  state: 'preparing' | 'prepared' | 'finalizing';
371
389
  }
390
+ export interface IFlexPendingCaptureReversion extends IFlexPendingCaptureReversionV2 {
391
+ protocolVersion: TFlexReversionProtocolVersion;
392
+ }
372
393
  export interface IFlexPendingApplyReversion {
373
394
  kind: 'apply';
374
395
  operationId: string;
@@ -378,31 +399,125 @@ export interface IFlexPendingApplyReversion {
378
399
  segmentRunIds: string[];
379
400
  appliedRunIds: string[];
380
401
  }
402
+ type TFlexPendingReversionV2 = IFlexPendingCaptureReversionV2 | IFlexPendingApplyReversion;
381
403
  export type TFlexPendingReversion = IFlexPendingCaptureReversion | IFlexPendingApplyReversion;
382
- export interface IFlexPendingReversionRelease {
404
+ interface IFlexPendingReversionReleaseV2 {
383
405
  runId: string;
384
406
  captureId: string;
385
407
  reference: TJsonValue;
386
408
  }
409
+ export interface IFlexPendingReversionRelease extends IFlexPendingReversionReleaseV2 {
410
+ protocolVersion: TFlexReversionProtocolVersion;
411
+ }
387
412
  export interface IFlexProjectionSnapshotV2 {
388
413
  schemaVersion: 2;
389
414
  revision: number;
390
415
  messages: IFlexMessage[];
391
416
  stagedTerminals: IFlexTerminalProjection[];
417
+ reversionSegments: IFlexReversionSegmentV2[];
418
+ revertCursor: number;
419
+ excludedRunIds: string[];
420
+ pendingReversion?: TFlexPendingReversionV2;
421
+ pendingReversionReleases: IFlexPendingReversionReleaseV2[];
422
+ }
423
+ export interface IFlexProjectionSnapshotV3 {
424
+ schemaVersion: 3;
425
+ revision: number;
426
+ messages: IFlexMessage[];
427
+ stagedTerminals: IFlexTerminalProjection[];
392
428
  reversionSegments: IFlexReversionSegment[];
393
429
  revertCursor: number;
394
430
  excludedRunIds: string[];
395
431
  pendingReversion?: TFlexPendingReversion;
396
432
  pendingReversionReleases: IFlexPendingReversionRelease[];
397
433
  }
398
- export type IFlexProjectionSnapshot = IFlexProjectionSnapshotV1 | IFlexProjectionSnapshotV2;
434
+ export type IFlexProjectionSnapshot = IFlexProjectionSnapshotV1 | IFlexProjectionSnapshotV2 | IFlexProjectionSnapshotV3;
399
435
  export type TFlexProjectionSnapshot = IFlexProjectionSnapshot;
400
- export type IFlexProjectionSnapshotCurrent = IFlexProjectionSnapshotV2;
436
+ export type IFlexProjectionSnapshotCurrent = IFlexProjectionSnapshotV3;
401
437
  export interface IFlexPermissionSnapshot {
402
438
  schemaVersion: 1;
403
439
  revision: number;
404
440
  rememberedPermissionKeys: string[];
405
441
  }
442
+ export declare const FLEX_PROJECT_MANAGEMENT_SCHEMA_VERSION: 1;
443
+ export declare const FLEX_SESSION_GENERATION_ID_MAX_BYTES = 128;
444
+ export declare const FLEX_PROJECT_MANAGEMENT_LIMITS: Readonly<{
445
+ maxGoalBytes: number;
446
+ maxScratchpadBytes: number;
447
+ maxTaskContentBytes: number;
448
+ maxTaskIdBytes: 512;
449
+ maxTasks: 512;
450
+ maxTitleBytes: 2048;
451
+ maxSnapshotBytes: number;
452
+ }>;
453
+ export type TFlexProjectTaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
454
+ export type TFlexProjectTaskPriority = 'high' | 'medium' | 'low';
455
+ export interface IFlexProjectTask {
456
+ id: string;
457
+ content: string;
458
+ status: TFlexProjectTaskStatus;
459
+ priority: TFlexProjectTaskPriority;
460
+ createdAt: string;
461
+ updatedAt: string;
462
+ }
463
+ export interface IFlexProjectManagementSnapshot {
464
+ schemaVersion: 1;
465
+ revision: number;
466
+ sessionGenerationId: string;
467
+ sessionGenerationSequence: number;
468
+ goal?: string;
469
+ scratchpad: string;
470
+ tasks: IFlexProjectTask[];
471
+ }
472
+ export interface IFlexProjectManagementTombstone {
473
+ schemaVersion: 1;
474
+ revision: number;
475
+ sessionGenerationId: string;
476
+ sessionGenerationSequence: number;
477
+ deletedAt: string;
478
+ }
479
+ export type TFlexProjectManagementRecord = IFlexProjectManagementSnapshot | IFlexProjectManagementTombstone;
480
+ export type TFlexProjectManagementWriteActor = 'agent' | 'application';
481
+ export interface IFlexProjectManagementWriteContext {
482
+ actor: TFlexProjectManagementWriteActor;
483
+ runId?: string;
484
+ agent?: string;
485
+ toolCallId?: string;
486
+ }
487
+ export interface IFlexProjectManagementStore {
488
+ load(storageKey: string, sessionId: string): Promise<TFlexProjectManagementRecord | undefined>;
489
+ save(storageKey: string, sessionId: string, snapshot: IFlexProjectManagementSnapshot, expectedRevision: number, writeContext: IFlexProjectManagementWriteContext): Promise<void>;
490
+ tombstoneSession(storageKey: string, sessionId: string, tombstone: IFlexProjectManagementTombstone, expectedRevision: number): Promise<void>;
491
+ purgeNamespace(storageKey: string): Promise<void>;
492
+ }
493
+ export interface IFlexCreateProjectTaskInput {
494
+ id: string;
495
+ content: string;
496
+ status?: TFlexProjectTaskStatus;
497
+ priority?: TFlexProjectTaskPriority;
498
+ }
499
+ export interface IFlexUpdateProjectTaskInput {
500
+ id: string;
501
+ content?: string;
502
+ status?: TFlexProjectTaskStatus;
503
+ priority?: TFlexProjectTaskPriority;
504
+ }
505
+ export interface IFlexProjectStateResult {
506
+ revision: number;
507
+ state: IFlexProjectManagementSnapshot;
508
+ }
509
+ export interface IFlexProjectTaskResult extends IFlexProjectStateResult {
510
+ task: IFlexProjectTask;
511
+ }
512
+ export interface IFlexProjectTasksResult extends IFlexProjectStateResult {
513
+ tasks: IFlexProjectTask[];
514
+ }
515
+ export interface IFlexProjectGoalResult extends IFlexProjectStateResult {
516
+ goal: string | null;
517
+ }
518
+ export interface IFlexProjectScratchpadResult extends IFlexProjectStateResult {
519
+ scratchpad: string;
520
+ }
406
521
  export interface IFlexScopeStore {
407
522
  load(storageKey: string): Promise<IFlexScopeSnapshot | undefined>;
408
523
  save(storageKey: string, snapshot: IFlexScopeSnapshot, expectedRevision: number): Promise<void>;
@@ -431,6 +546,7 @@ export interface IFlexHarnessStores {
431
546
  scopes: IFlexScopeStore;
432
547
  projections: IFlexProjectionStore;
433
548
  permissions: IFlexPermissionStore;
549
+ projectManagement: IFlexProjectManagementStore;
434
550
  agentEvents: IFlexAgentEventStoreProvider;
435
551
  jobs: IFlexToolJobStoreProvider;
436
552
  }
@@ -469,6 +585,10 @@ export declare const FLEX_REVERSION_MAXIMUM_LIMITS: Readonly<{
469
585
  maxPendingReversionReleases: 10000;
470
586
  }>;
471
587
  export declare const FLEX_REVERSION_REFERENCE_MAX_BYTES: number;
588
+ export declare const FLEX_REVERSION_MAX_AFFECTED_WORKSPACES = 64;
589
+ export declare const FLEX_REVERSION_WORKSPACE_ID_MAX_BYTES = 512;
590
+ export declare const FLEX_REVERSION_WORKSPACE_LABEL_MAX_BYTES = 2048;
591
+ export declare const FLEX_REVERSION_REASON_CODE_MAX_BYTES = 128;
472
592
  export interface IFlexTurnReversionBaseContext<TScope> {
473
593
  readonly scopeId: string;
474
594
  readonly scope: TScope;
@@ -501,6 +621,52 @@ export interface IFlexTurnReversionProvider<TScope> {
501
621
  inspectApply(context: IFlexTurnReversionApplyContext<TScope>): Promise<IFlexTurnReversionApplyInspection> | IFlexTurnReversionApplyInspection;
502
622
  release(context: IFlexTurnReversionReleaseContext<TScope>): Promise<void> | void;
503
623
  }
624
+ export interface IFlexTurnReversionRevertibleOutcome {
625
+ readonly disposition: 'revertible';
626
+ readonly reference: TJsonValue;
627
+ readonly affectedWorkspaces: readonly IFlexAffectedWorkspace[];
628
+ }
629
+ export interface IFlexTurnReversionNoChangeOutcome {
630
+ readonly disposition: 'no-change';
631
+ readonly reference: TJsonValue;
632
+ readonly affectedWorkspaces?: readonly [];
633
+ }
634
+ export interface IFlexTurnReversionNonrevertibleOutcome {
635
+ readonly disposition: 'nonrevertible';
636
+ readonly reference: TJsonValue;
637
+ readonly reasonCode: string;
638
+ readonly affectedWorkspaces?: readonly IFlexAffectedWorkspace[];
639
+ }
640
+ export type TFlexTurnReversionFinalizedOutcome = IFlexTurnReversionRevertibleOutcome | IFlexTurnReversionNoChangeOutcome | IFlexTurnReversionNonrevertibleOutcome;
641
+ export type TFlexTurnReversionCaptureInspectionV2 = {
642
+ readonly status: 'missing' | 'prepared' | 'unknown';
643
+ } | {
644
+ readonly status: 'finalized';
645
+ readonly outcome: TFlexTurnReversionFinalizedOutcome;
646
+ };
647
+ export interface IFlexTurnReversionProviderV2<TScope> {
648
+ readonly protocolVersion: 2;
649
+ prepare(context: IFlexTurnReversionBaseContext<TScope>): Promise<void> | void;
650
+ inspectCapture(context: IFlexTurnReversionBaseContext<TScope>): Promise<TFlexTurnReversionCaptureInspectionV2> | TFlexTurnReversionCaptureInspectionV2;
651
+ finalize(context: IFlexTurnReversionBaseContext<TScope>): Promise<TFlexTurnReversionFinalizedOutcome> | TFlexTurnReversionFinalizedOutcome;
652
+ apply(context: IFlexTurnReversionApplyContext<TScope>): Promise<void> | void;
653
+ inspectApply(context: IFlexTurnReversionApplyContext<TScope>): Promise<IFlexTurnReversionApplyInspection> | IFlexTurnReversionApplyInspection;
654
+ release(context: IFlexTurnReversionReleaseContext<TScope>): Promise<void> | void;
655
+ }
656
+ export type TFlexReversionPolicy = 'transcript-optional' | 'workspace-required';
657
+ export type TFlexSessionReversionGroupKind = 'candidate' | 'barrier' | 'no-change';
658
+ export interface IFlexSessionReversionGroup {
659
+ readonly runId: string;
660
+ readonly kind: TFlexSessionReversionGroupKind;
661
+ readonly visibility: 'visible' | 'hidden';
662
+ readonly affectedWorkspaces: readonly IFlexAffectedWorkspace[];
663
+ readonly affectedWorkspacesTruncated: boolean;
664
+ }
665
+ export interface IFlexSessionReversionInfo {
666
+ readonly undoAvailable: boolean;
667
+ readonly redoAvailable: boolean;
668
+ readonly groups: readonly IFlexSessionReversionGroup[];
669
+ }
504
670
  export interface IFlexUndoSessionResult {
505
671
  revertedRunId: string;
506
672
  }
@@ -555,6 +721,15 @@ export interface IFlexSubagentDefinition {
555
721
  system?: string;
556
722
  maxSteps?: number;
557
723
  }
724
+ export interface IFlexProjectManagementBuiltInToolsOptions {
725
+ task?: boolean;
726
+ goal?: boolean;
727
+ scratchpad?: boolean;
728
+ }
729
+ export interface IFlexBuiltInToolsOptions {
730
+ renameSession?: boolean;
731
+ projectManagement?: IFlexProjectManagementBuiltInToolsOptions;
732
+ }
558
733
  export interface IFlexHarnessOptions<TScope> {
559
734
  scopeResolver: IFlexScopeResolver<TScope>;
560
735
  modelResolver: IFlexModelResolver<TScope>;
@@ -567,9 +742,11 @@ export interface IFlexHarnessOptions<TScope> {
567
742
  callbackLimits?: IFlexCallbackLimits;
568
743
  promptQueueLimits?: IFlexPromptQueueLimits;
569
744
  reversionLimits?: IFlexReversionLimits;
570
- turnReversionProvider?: IFlexTurnReversionProvider<TScope>;
745
+ turnReversionProvider?: IFlexTurnReversionProvider<TScope> | IFlexTurnReversionProviderV2<TScope>;
746
+ reversionPolicy?: TFlexReversionPolicy;
571
747
  externalErrorProjector?: TFlexExternalErrorProjector;
572
748
  subagents?: IFlexSubagentDefinition[];
749
+ builtInTools?: IFlexBuiltInToolsOptions;
573
750
  slashCommands?: readonly TFlexSlashCommandRegistration<TScope>[];
574
751
  maxSubagentDepth?: number;
575
752
  maxSubagentCallsPerRun?: number;
@@ -684,3 +861,4 @@ export interface IFlexErrorInfo {
684
861
  }
685
862
  export type TFlexHarnessEvent = IFlexSessionCreatedEvent | IFlexSessionUpdatedEvent | IFlexSessionDeletedEvent | IFlexRunStartedEvent | IFlexMessageChangedEvent | IFlexPartChangedEvent | IFlexPermissionRequestedEvent | IFlexPermissionResolvedEvent | IFlexRunFinishedEvent | IFlexPromptQueueEvent | IFlexSessionHistoryChangedEvent;
686
863
  export type TFlexHarnessEventListener = (event: TFlexHarnessEvent) => void;
864
+ export {};
@@ -1,3 +1,14 @@
1
+ export const FLEX_PROJECT_MANAGEMENT_SCHEMA_VERSION = 1;
2
+ export const FLEX_SESSION_GENERATION_ID_MAX_BYTES = 128;
3
+ export const FLEX_PROJECT_MANAGEMENT_LIMITS = Object.freeze({
4
+ maxGoalBytes: 8 * 1024,
5
+ maxScratchpadBytes: 64 * 1024,
6
+ maxTaskContentBytes: 8 * 1024,
7
+ maxTaskIdBytes: 512,
8
+ maxTasks: 512,
9
+ maxTitleBytes: 2048,
10
+ maxSnapshotBytes: 96 * 1024,
11
+ });
1
12
  export const FLEX_REVERSION_DEFAULT_LIMITS = Object.freeze({
2
13
  maxCompletedTurns: 100,
3
14
  maxSegments: 300,
@@ -11,4 +22,8 @@ export const FLEX_REVERSION_MAXIMUM_LIMITS = Object.freeze({
11
22
  maxPendingReversionReleases: 10_000,
12
23
  });
13
24
  export const FLEX_REVERSION_REFERENCE_MAX_BYTES = 256 * 1024;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOGxCQSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pELGlCQUFpQixFQUFFLEdBQUc7SUFDdEIsV0FBVyxFQUFFLEdBQUc7SUFDaEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QiwyQkFBMkIsRUFBRSxJQUFJO0NBQ2xDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDekQsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixXQUFXLEVBQUUsSUFBSTtJQUNqQixpQkFBaUIsRUFBRSxNQUFNO0lBQ3pCLDJCQUEyQixFQUFFLE1BQU07Q0FDcEMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyJ9
25
+ export const FLEX_REVERSION_MAX_AFFECTED_WORKSPACES = 64;
26
+ export const FLEX_REVERSION_WORKSPACE_ID_MAX_BYTES = 512;
27
+ export const FLEX_REVERSION_WORKSPACE_LABEL_MAX_BYTES = 2048;
28
+ export const FLEX_REVERSION_REASON_CODE_MAX_BYTES = 128;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMGpCQSxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUFVLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsR0FBRyxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUQsWUFBWSxFQUFFLENBQUMsR0FBRyxJQUFJO0lBQ3RCLGtCQUFrQixFQUFFLEVBQUUsR0FBRyxJQUFJO0lBQzdCLG1CQUFtQixFQUFFLENBQUMsR0FBRyxJQUFJO0lBQzdCLGNBQWMsRUFBRSxHQUFHO0lBQ25CLFFBQVEsRUFBRSxHQUFHO0lBQ2IsYUFBYSxFQUFFLElBQUk7SUFDbkIsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLElBQUk7Q0FDNUIsQ0FBQyxDQUFDO0FBeUxILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDekQsaUJBQWlCLEVBQUUsR0FBRztJQUN0QixXQUFXLEVBQUUsR0FBRztJQUNoQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLDJCQUEyQixFQUFFLElBQUk7Q0FDbEMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN6RCxpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGlCQUFpQixFQUFFLE1BQU07SUFDekIsMkJBQTJCLEVBQUUsTUFBTTtDQUNwQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLEVBQUUsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxHQUFHLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUcsSUFBSSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLEdBQUcsQ0FBQyJ9
@@ -1,11 +1,12 @@
1
- import type { IFlexJsonLimits, IFlexPermissionSnapshot, IFlexProjectionSnapshotV1, IFlexProjectionSnapshotV2, IFlexScopeSnapshot, TFlexAgentModelMessage, TJsonValue } from './interfaces.js';
1
+ import type { IFlexJsonLimits, IFlexPermissionSnapshot, IFlexProjectionSnapshotV1, IFlexProjectionSnapshotV2, IFlexProjectionSnapshotV3, IFlexScopeSnapshot, TFlexAgentModelMessage, TJsonValue } from './interfaces.js';
2
2
  export declare function resolveJsonLimits(limits?: IFlexJsonLimits): Required<IFlexJsonLimits>;
3
3
  export declare function normalizeJsonValue(value: unknown, limits?: IFlexJsonLimits): TJsonValue;
4
4
  export declare function assertJsonSerializable(value: unknown, path?: string): void;
5
5
  export declare function assertFlexScopeSnapshot(value: unknown): asserts value is IFlexScopeSnapshot;
6
6
  export declare function assertFlexProjectionSnapshotV1(value: unknown): asserts value is IFlexProjectionSnapshotV1;
7
7
  export declare function assertFlexProjectionSnapshotV2(value: unknown): asserts value is IFlexProjectionSnapshotV2;
8
- export declare function assertFlexProjectionSnapshot(value: unknown): asserts value is IFlexProjectionSnapshotV1 | IFlexProjectionSnapshotV2;
8
+ export declare function assertFlexProjectionSnapshotV3(value: unknown): asserts value is IFlexProjectionSnapshotV3;
9
+ export declare function assertFlexProjectionSnapshot(value: unknown): asserts value is IFlexProjectionSnapshotV1 | IFlexProjectionSnapshotV2 | IFlexProjectionSnapshotV3;
9
10
  export declare function assertFlexPermissionSnapshot(value: unknown): asserts value is IFlexPermissionSnapshot;
10
11
  export declare function cloneSerializable<T>(value: T): T;
11
12
  export declare function deepFreeze<T>(value: T): T;