@huanban/rulego-editor-core 1.4.1 → 2.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.
Files changed (157) hide show
  1. package/README.md +20 -8
  2. package/dist/ai/ai-chat-options.d.ts +12 -0
  3. package/dist/api/AIAssistantAPI.d.ts +29 -0
  4. package/dist/api/AIManager.d.ts +7 -1
  5. package/dist/api/ApiProvider.d.ts +17 -4
  6. package/dist/api/DebugSocketClient.d.ts +2 -0
  7. package/dist/api/GlobalConfigAPI.d.ts +35 -0
  8. package/dist/api/IoTPointTemplateAPI.d.ts +32 -0
  9. package/dist/api/MarketplaceAPI.d.ts +39 -0
  10. package/dist/api/RuleChainAPI.d.ts +23 -4
  11. package/dist/api/RuleChainVersionsAPI.d.ts +28 -0
  12. package/dist/api/SkillsAPI.d.ts +31 -0
  13. package/dist/api/UserAPI.d.ts +39 -0
  14. package/dist/api/extended-api-shared.d.ts +25 -0
  15. package/dist/api/index.d.ts +19 -2
  16. package/dist/api/public-api.test-d.d.ts +87 -0
  17. package/dist/api/response-utils.d.ts +1 -0
  18. package/dist/api/types.d.ts +86 -14
  19. package/dist/chunks/editor-core-api-BQiYFuIO.js +1157 -0
  20. package/dist/chunks/editor-core-canvas-nodes-BE9eN51s.js +6921 -0
  21. package/dist/chunks/editor-core-code-editor-DFm5Owtv.js +660 -0
  22. package/dist/chunks/{editor-core-default-components-BjF65lar.js → editor-core-default-components-BsNP8ma1.js} +98 -98
  23. package/dist/chunks/editor-core-dialogs-D9YHvzys.js +12009 -0
  24. package/dist/chunks/{editor-core-locales-i6o28vm2.js → editor-core-locales-CsqTh7Wh.js} +1723 -11
  25. package/dist/chunks/{editor-core-node-patches-BJTT3TuX.js → editor-core-node-patches-Dbi8XYxu.js} +633 -184
  26. package/dist/chunks/{editor-core-node-views-BOaPVdmN.js → editor-core-node-views-C8FQYC3E.js} +39 -29
  27. package/dist/chunks/editor-core-property-drawers-Bqmp9B_J.js +9562 -0
  28. package/dist/chunks/editor-core-settings-DcGCJSc7.js +4161 -0
  29. package/dist/chunks/editor-core-standalone-C7pzm8ZB.js +10013 -0
  30. package/dist/chunks/{editor-core-styles-C1TbLgCK.js → editor-core-styles-CwjFPfAo.js} +1203 -507
  31. package/dist/chunks/vendor-highlight-acC2fLd8.js +5868 -0
  32. package/dist/chunks/vendor-logicflow-core-runtime-DpsWXOGl.js +4 -0
  33. package/dist/chunks/vendor-logicflow-shared-C_kIdBKO.js +4 -0
  34. package/dist/core/ActionRegistry.d.ts +4 -2
  35. package/dist/core/DataAdapter.d.ts +17 -1
  36. package/dist/core/DialogProvider.d.ts +33 -0
  37. package/dist/core/EditorCore.d.ts +16 -3
  38. package/dist/core/FieldCapabilityRegistry.d.ts +4 -1
  39. package/dist/core/FieldChangeRegistry.d.ts +3 -1
  40. package/dist/core/I18nManager.d.ts +1 -1
  41. package/dist/core/IdentityProvider.d.ts +32 -0
  42. package/dist/core/OptionSourceRegistry.d.ts +4 -1
  43. package/dist/core/PropertyControlRegistry.d.ts +29 -0
  44. package/dist/core/ThemeManager.d.ts +7 -0
  45. package/dist/core/anchored-popover.d.ts +16 -0
  46. package/dist/core/assistant-dsl.d.ts +18 -0
  47. package/dist/core/business-log-config.d.ts +18 -0
  48. package/dist/core/clean-snapshot.d.ts +14 -0
  49. package/dist/core/component-localization.d.ts +17 -0
  50. package/dist/core/component-palette.d.ts +3 -0
  51. package/dist/core/connection-status.d.ts +11 -0
  52. package/dist/core/dialog-styles.d.ts +1 -0
  53. package/dist/core/editor-capabilities.d.ts +82 -1
  54. package/dist/core/editor-edge-anchors.d.ts +16 -0
  55. package/dist/core/endpoint-protocol.d.ts +15 -0
  56. package/dist/core/expression-preview.d.ts +6 -0
  57. package/dist/core/field-protocol.d.ts +19 -4
  58. package/dist/core/global-config.d.ts +47 -0
  59. package/dist/core/global-search.d.ts +31 -0
  60. package/dist/core/group-protocol.d.ts +56 -0
  61. package/dist/core/identity-provider-default.d.ts +32 -0
  62. package/dist/core/index.d.ts +31 -5
  63. package/dist/core/keymap.d.ts +10 -0
  64. package/dist/core/payload-kv.d.ts +7 -0
  65. package/dist/core/rule-chain-versions.d.ts +143 -0
  66. package/dist/core/run-analysis.d.ts +126 -0
  67. package/dist/core/runtime-field-dictionary.d.ts +3 -0
  68. package/dist/core/save-conflict.d.ts +1 -0
  69. package/dist/core/server-status.d.ts +1 -0
  70. package/dist/core/toolbar-icons.d.ts +1 -1
  71. package/dist/core/variable-completion.d.ts +13 -0
  72. package/dist/core/websocket-auth.d.ts +2 -0
  73. package/dist/defaults/analysis-locales.d.ts +241 -0
  74. package/dist/defaults/component-locale-categories.d.ts +14 -0
  75. package/dist/defaults/component-locale-data.d.ts +4 -0
  76. package/dist/defaults/component-locale-en-US.d.ts +10 -0
  77. package/dist/defaults/component-locale-summaries.d.ts +15 -0
  78. package/dist/defaults/component-locale-zh-CN.d.ts +10 -0
  79. package/dist/defaults/editor-shell-locales.d.ts +290 -0
  80. package/dist/defaults/example-chain.d.ts +2 -0
  81. package/dist/defaults/field-interaction-locales.d.ts +19 -0
  82. package/dist/defaults/global-config-locales.d.ts +166 -0
  83. package/dist/defaults/official-component-fallbacks.d.ts +2 -1
  84. package/dist/defaults/point-template-locales.d.ts +64 -0
  85. package/dist/index.cjs +2897 -2115
  86. package/dist/index.d.ts +33 -10
  87. package/dist/index.esm.js +1184 -809
  88. package/dist/index.umd.js +2874 -2092
  89. package/dist/nodes/UnknownNodeModel.d.ts +12 -1
  90. package/dist/standalone/HuanbanRulegoEditor.d.ts +145 -13
  91. package/dist/standalone/auth-fetch.d.ts +1 -0
  92. package/dist/standalone/auth-ui-defaults.d.ts +15 -0
  93. package/dist/standalone/code-editor.d.ts +7 -5
  94. package/dist/standalone/connection-status-binding.d.ts +3 -2
  95. package/dist/standalone/custom-nodes.d.ts +13 -0
  96. package/dist/standalone/drawer-locale.d.ts +12 -0
  97. package/dist/standalone/drawer-unsaved-guard.d.ts +6 -1
  98. package/dist/standalone/dynamic-field-browse.d.ts +25 -0
  99. package/dist/standalone/edge-label-quick-editor.d.ts +2 -1
  100. package/dist/standalone/editor-actions.d.ts +1 -0
  101. package/dist/standalone/editor-canvas-anchors.d.ts +19 -0
  102. package/dist/standalone/editor-canvas-shortcuts.d.ts +1 -0
  103. package/dist/standalone/editor-chain-info.d.ts +1 -0
  104. package/dist/standalone/editor-debug-data.d.ts +18 -0
  105. package/dist/standalone/editor-debug-ws.d.ts +2 -0
  106. package/dist/standalone/editor-delete.d.ts +5 -3
  107. package/dist/standalone/editor-dialog-provider.d.ts +3 -0
  108. package/dist/standalone/editor-dialogs.d.ts +25 -2
  109. package/dist/standalone/editor-global-config.d.ts +44 -0
  110. package/dist/standalone/editor-group-interactions.d.ts +1 -0
  111. package/dist/standalone/editor-host-region-styles.d.ts +1 -0
  112. package/dist/standalone/editor-host-regions.d.ts +53 -0
  113. package/dist/standalone/editor-login.d.ts +15 -0
  114. package/dist/standalone/editor-overlays.d.ts +5 -0
  115. package/dist/standalone/editor-property-drawers.d.ts +3 -1
  116. package/dist/standalone/editor-run-analysis.d.ts +81 -0
  117. package/dist/standalone/editor-run-compare.d.ts +20 -0
  118. package/dist/standalone/editor-run-waterfall.d.ts +11 -0
  119. package/dist/standalone/editor-toast.d.ts +1 -1
  120. package/dist/standalone/editor-toolbar-presentation.d.ts +12 -0
  121. package/dist/standalone/editor-toolbar.d.ts +5 -1
  122. package/dist/standalone/editor-ui-configuration.d.ts +55 -0
  123. package/dist/standalone/editor-ui-settings.d.ts +26 -0
  124. package/dist/standalone/editor-user-menu.d.ts +8 -0
  125. package/dist/standalone/editor-version-history.d.ts +82 -0
  126. package/dist/standalone/editor-workspace-shell.d.ts +47 -0
  127. package/dist/standalone/editor-workspace-styles.d.ts +1 -0
  128. package/dist/standalone/field-expression-preview.d.ts +12 -0
  129. package/dist/standalone/group-node.d.ts +19 -3
  130. package/dist/standalone/icon-utils.d.ts +7 -0
  131. package/dist/standalone/index.d.ts +17 -5
  132. package/dist/standalone/keyboard-events.d.ts +3 -0
  133. package/dist/standalone/multi-select-popover.d.ts +16 -0
  134. package/dist/standalone/node-copy.d.ts +1 -0
  135. package/dist/standalone/node-definitions.d.ts +4 -0
  136. package/dist/standalone/node-renderer-utils.d.ts +21 -0
  137. package/dist/standalone/node-theme.d.ts +2 -1
  138. package/dist/standalone/point-template-actions.d.ts +43 -0
  139. package/dist/standalone/property-field-draft.d.ts +5 -0
  140. package/dist/standalone/question-list-editor.d.ts +35 -0
  141. package/dist/standalone/shared-node-manager.d.ts +14 -0
  142. package/dist/standalone/single-select-popover.d.ts +6 -0
  143. package/dist/standalone/theme-scope.d.ts +15 -0
  144. package/dist/standalone/themes.d.ts +8 -0
  145. package/dist/standalone/variable-completion-dropdown.d.ts +18 -0
  146. package/dist/types/component.d.ts +24 -1
  147. package/dist/types/editor.d.ts +41 -0
  148. package/dist/utils/relation-utils.d.ts +19 -1
  149. package/dist/version.d.ts +2 -2
  150. package/package.json +3 -3
  151. package/vite-chunks.mjs +66 -0
  152. package/dist/chunks/editor-core-code-editor-CRki2wA_.js +0 -512
  153. package/dist/chunks/editor-core-dialogs-BMWb0WRN.js +0 -17228
  154. package/dist/chunks/editor-core-property-drawers-BPh-jj1b.js +0 -7998
  155. package/dist/chunks/editor-core-standalone-CJDytHO9.js +0 -11269
  156. package/dist/chunks/vendor-logicflow-core-runtime-Cp6IBEjB.js +0 -217
  157. package/dist/chunks/vendor-logicflow-shared-C7YynLDn.js +0 -4
@@ -0,0 +1,15 @@
1
+ export interface EndpointBindingSnapshot {
2
+ key: string;
3
+ path: unknown;
4
+ targets: string[];
5
+ }
6
+ interface RouterTarget {
7
+ prefix: string;
8
+ targets: string[];
9
+ implicit: boolean;
10
+ }
11
+ export declare function parseLocalRouterTarget(path: unknown, chainId: string, firstNodeId?: string): RouterTarget | undefined;
12
+ export declare function snapshotEndpointBindings(endpoint: any, chainId: string, firstNodeId: string | undefined, nodeIds: Set<string>): EndpointBindingSnapshot[];
13
+ export declare function endpointRouterMatchesConnection(endpoint: any, router: any, connection: any): boolean;
14
+ export declare function reconcileEndpointBindings(endpoint: any, chainId: string, connections: any[], snapshot?: EndpointBindingSnapshot[], firstNodeId?: string): void;
15
+ export {};
@@ -0,0 +1,6 @@
1
+ import { type RuntimeFieldMessage } from './runtime-field-dictionary';
2
+ export interface ExpressionPreviewResult {
3
+ text: string;
4
+ partial: boolean;
5
+ }
6
+ export declare function previewTemplate(value: unknown, message?: RuntimeFieldMessage | null): ExpressionPreviewResult | null;
@@ -1,4 +1,5 @@
1
- import type { ComponentDefinition, ComponentField, FieldDependency } from '../types/component';
1
+ import type { ComponentDefinition, ComponentField, ComponentFieldGroup, FieldDependency } from '../types/component';
2
+ import type { FieldChangeRegistry, FieldChangeResult } from './FieldChangeRegistry';
2
3
  export interface ResolveComponentFieldsContext {
3
4
  configuration?: Record<string, unknown>;
4
5
  getFieldsByType?: (type: string) => ComponentField[] | undefined;
@@ -13,20 +14,34 @@ export interface FieldValidationError {
13
14
  field: string;
14
15
  message: string;
15
16
  }
17
+ export type FieldDependencyInput = FieldDependency;
18
+ export interface FieldNumericBounds {
19
+ min?: number;
20
+ max?: number;
21
+ }
16
22
  export declare function getMapValueMode(field: Pick<ComponentField, 'component' | 'capabilities'> & Record<string, unknown>): MapValueMode;
17
23
  export declare function formatMapEntryValue(value: unknown, mode?: MapValueMode): string;
18
24
  export declare function parseMapEntryValue(value: string, mode?: MapValueMode): unknown;
19
25
  export declare function getFieldAttachmentTarget(attachTo: ComponentField['attachTo']): string | undefined;
20
26
  export declare function normalizeComponentField(field: ComponentField): ComponentField;
27
+ export declare function resolveFieldPlaceholder(field: ComponentField): string;
28
+ export declare function getFieldNumericBounds(field: ComponentField): FieldNumericBounds;
29
+ export declare function resolveComponentFieldGroups(component: ComponentDefinition): ComponentFieldGroup[];
21
30
  export declare function getFieldPathValue(source: unknown, path: string): unknown;
22
- export declare function validateFieldValue(field: ComponentField, value: unknown): string[];
23
- export declare function validateComponentFields(fields: ComponentField[] | undefined, configuration: Record<string, unknown>): FieldValidationError[];
24
- export declare function evaluateFieldDependency(dependency: FieldDependency, configuration: Record<string, unknown>): boolean;
31
+ export type FieldValidationTranslator = (key: string, params?: Record<string, string>) => string;
32
+ export declare function fieldValidationText(key: string, fallback: string, t?: FieldValidationTranslator, params?: Record<string, string | number>): string;
33
+ export declare function validateFieldValue(field: ComponentField, value: unknown, t?: FieldValidationTranslator): string[];
34
+ export declare function validateComponentFields(fields: ComponentField[] | undefined, configuration: Record<string, unknown>, t?: FieldValidationTranslator): FieldValidationError[];
35
+ export declare function evaluateFieldDependency(dependency: FieldDependencyInput, configuration: Record<string, unknown>): boolean;
25
36
  export declare function isFieldDependencySatisfied(field: ComponentField, configuration: Record<string, unknown>): boolean;
26
37
  export declare function resolveComponentFields(component: ComponentDefinition, context?: ResolveComponentFieldsContext): ComponentField[];
27
38
  export declare function getVisibleComponentFields(fields: ComponentField[], configuration: Record<string, unknown>): ComponentField[];
28
39
  export declare function buildFieldAttachments(fields: ComponentField[]): Map<string, FieldAttachmentEntry[]>;
29
40
  export declare function parseUnknownConfiguration(text: string): Record<string, unknown>;
30
41
  export declare function cloneConfiguration(configuration: Record<string, unknown> | undefined): Record<string, unknown>;
42
+ export declare function formatJsonTextFields(configuration: Record<string, unknown>, fields: ComponentField[]): Record<string, unknown>;
43
+ export declare function parseJsonTextFields(configuration: Record<string, unknown>, fields: ComponentField[]): Record<string, unknown>;
44
+ export declare function redisCmdOutputTo(value: unknown, configuration: Readonly<Record<string, unknown>>): FieldChangeResult | undefined;
45
+ export declare function registerBuiltinFieldChangeHandlers(registry: Pick<FieldChangeRegistry, 'register'>): void;
31
46
  export declare function sanitizeConfigurationByFields(configuration: Record<string, unknown> | undefined, fields: ComponentField[] | undefined): Record<string, unknown>;
32
47
  export declare function buildDefaultConfiguration(component: ComponentDefinition, getFieldsByType?: (type: string) => ComponentField[] | undefined): Record<string, unknown>;
@@ -0,0 +1,47 @@
1
+ export declare const GLOBAL_CONFIG_MASK = "******";
2
+ export type GlobalConfigValues = Record<string, unknown>;
3
+ export type GlobalConfigPatch = Record<string, string | null>;
4
+ export interface GlobalConfigRow {
5
+ key: string;
6
+ value: string;
7
+ masked: boolean;
8
+ overridden: boolean | null;
9
+ }
10
+ export interface GlobalConfigReloadResult {
11
+ reloadedChains: string[];
12
+ reloadedNodes: string[];
13
+ failedChains: Record<string, string>;
14
+ failedNodes: Record<string, string>;
15
+ }
16
+ export interface GlobalConfigFetcher {
17
+ getGlobalConfig(signal?: AbortSignal): Promise<GlobalConfigValues>;
18
+ getGlobalOverrides(signal?: AbortSignal): Promise<GlobalConfigValues>;
19
+ updateGlobalConfig(patch: GlobalConfigPatch, signal?: AbortSignal): Promise<GlobalConfigReloadResult>;
20
+ revertGlobalConfigKey(key: string, signal?: AbortSignal): Promise<GlobalConfigReloadResult>;
21
+ captureContext?(): () => boolean;
22
+ }
23
+ export type GlobalConfigErrorCode = 'keyRequired' | 'valueRequired' | 'maskedPlaceholder' | 'duplicateKey' | 'invalidResponse' | 'missingApiBase' | 'contextChanged';
24
+ export declare class GlobalConfigError extends Error {
25
+ readonly code: GlobalConfigErrorCode;
26
+ constructor(code: GlobalConfigErrorCode);
27
+ }
28
+ export declare function isSensitiveGlobalConfigKey(key: string): boolean;
29
+ export declare function normalizeGlobalConfigValues(value: unknown): GlobalConfigValues;
30
+ export declare function createGlobalConfigRows(config: GlobalConfigValues, overrides: GlobalConfigValues | null): GlobalConfigRow[];
31
+ export declare function createGlobalConfigPatch(key: string, value: string, options?: {
32
+ masked?: boolean;
33
+ existingKeys?: Iterable<string>;
34
+ }): GlobalConfigPatch | null;
35
+ export declare function normalizeGlobalConfigReload(value: unknown): GlobalConfigReloadResult;
36
+ export interface NodeBusinessLogConfig {
37
+ before?: string;
38
+ after?: string;
39
+ }
40
+ export interface ChainBusinessLogSettings {
41
+ handler: string;
42
+ chainEnd: boolean;
43
+ }
44
+ export declare function readNodeBusinessLog(model: Record<string, unknown>): Required<NodeBusinessLogConfig>;
45
+ export declare function withNodeBusinessLog(model: Record<string, unknown>, before: string, after: string): Record<string, unknown>;
46
+ export declare function readChainBusinessLog(configuration: Record<string, unknown>): ChainBusinessLogSettings;
47
+ export declare function withChainBusinessLog(configuration: Record<string, unknown>, handler: string, chainEnd: boolean): Record<string, unknown>;
@@ -0,0 +1,31 @@
1
+ export interface GlobalSearchResult {
2
+ chainId: string;
3
+ chainName: string;
4
+ nodeId: string;
5
+ nodeName: string;
6
+ nodeType: string;
7
+ matchField: 'name' | 'type' | 'configuration';
8
+ matchValue: string;
9
+ matchContext?: string;
10
+ }
11
+ export interface GlobalSearchProvider {
12
+ search(query: string, options?: {
13
+ maxResults?: number;
14
+ }): Promise<GlobalSearchResult[]>;
15
+ }
16
+ interface SearchableChain {
17
+ id: string;
18
+ name: string;
19
+ data: {
20
+ metadata?: {
21
+ nodes?: Array<{
22
+ id?: string;
23
+ type?: string;
24
+ name?: string;
25
+ configuration?: Record<string, unknown>;
26
+ }>;
27
+ };
28
+ };
29
+ }
30
+ export declare function createLocalGlobalSearch(getChains: () => SearchableChain[]): GlobalSearchProvider;
31
+ export {};
@@ -0,0 +1,56 @@
1
+ export declare const GROUP_NODE_TYPES: string[];
2
+ export declare const LOOP_GROUP_TYPES: string[];
3
+ export interface GroupProtocolNode {
4
+ id: string;
5
+ type?: string;
6
+ x?: number;
7
+ y?: number;
8
+ children?: unknown;
9
+ properties?: Record<string, any>;
10
+ }
11
+ export interface GroupProtocolGraph {
12
+ nodes: GroupProtocolNode[];
13
+ edges?: Array<{
14
+ id: string;
15
+ sourceNodeId: string;
16
+ targetNodeId: string;
17
+ }>;
18
+ }
19
+ export declare function positiveDimension(...values: unknown[]): number | undefined;
20
+ export declare function groupChildIds(value: unknown): string[];
21
+ export declare function getExpandedGroupLayout(node: GroupProtocolNode, runtime?: any): {
22
+ layoutX: number;
23
+ layoutY: number;
24
+ layoutW: number;
25
+ layoutH: number;
26
+ isCollapsed: boolean;
27
+ };
28
+ export declare function isLoopGroup(node: GroupProtocolNode | undefined): boolean;
29
+ export declare function localLoopTarget(value: unknown): string | undefined;
30
+ export declare function getGroupOwnership(nodes: GroupProtocolNode[]): Map<string, string>;
31
+ export declare function getGroupAncestors(nodeId: string, ownership: Map<string, string>): string[];
32
+ export interface GroupBoundaryIssue {
33
+ rule: 'group-own-container-edge' | 'group-cross-boundary';
34
+ sourceNodeId: string;
35
+ targetNodeId: string;
36
+ sourceGroups: string[];
37
+ targetGroups: string[];
38
+ }
39
+ export declare function inspectGroupBoundary(sourceNodeId: string, targetNodeId: string, ownership: Map<string, string>): GroupBoundaryIssue | null;
40
+ export interface LoopEntryState {
41
+ groupId: string;
42
+ value: unknown;
43
+ targetId?: string;
44
+ status: 'not-loop' | 'unset' | 'external' | 'missing' | 'outside-group' | 'member';
45
+ }
46
+ export declare function getLoopEntryState(graph: GroupProtocolGraph, groupId: string): LoopEntryState;
47
+ export interface GraphDeletionImpact {
48
+ nodeIds: string[];
49
+ edgeIds: string[];
50
+ loopEntryGroupIds: string[];
51
+ requiresConfirmation: true;
52
+ }
53
+ export declare function getGraphDeletionImpact(graph: GroupProtocolGraph, selection: {
54
+ nodeIds?: string[];
55
+ edgeIds?: string[];
56
+ }): GraphDeletionImpact;
@@ -0,0 +1,32 @@
1
+ import type { AuthChangeCallback, AuthErrorDetails, IdentityProvider, LoginCredentials, LoginResult, UserIdentity } from './IdentityProvider';
2
+ export interface DefaultIdentityProviderOptions {
3
+ apiBase?: string;
4
+ customFetch?: (url: string, init?: RequestInit) => Promise<Response>;
5
+ tokenKey?: string;
6
+ tokenFallbackKey?: string;
7
+ userKey?: string;
8
+ onAuthRequired?: (details: AuthErrorDetails) => void;
9
+ }
10
+ export declare class DefaultIdentityProvider implements IdentityProvider {
11
+ private readonly options;
12
+ private readonly listeners;
13
+ private cachedUser;
14
+ private contextGeneration;
15
+ constructor(options?: DefaultIdentityProviderOptions);
16
+ updateContext(options: Pick<DefaultIdentityProviderOptions, 'apiBase' | 'customFetch' | 'onAuthRequired'>): void;
17
+ cancelPendingLogin(): void;
18
+ getToken(): string | null;
19
+ clearToken(): void;
20
+ setToken(token: string): void;
21
+ getCurrentUser(): UserIdentity | null;
22
+ isAuthenticated(): boolean;
23
+ login(credentials: LoginCredentials): Promise<LoginResult>;
24
+ logout(): Promise<void>;
25
+ onAuthChange(callback: AuthChangeCallback): () => void;
26
+ handleAuthError(details: AuthErrorDetails): Promise<boolean>;
27
+ private fetchCurrentUser;
28
+ private readStoredUser;
29
+ private storeUser;
30
+ private notifyListeners;
31
+ }
32
+ export declare function createDefaultIdentityProvider(options?: DefaultIdentityProviderOptions): DefaultIdentityProvider;
@@ -1,6 +1,8 @@
1
1
  export { StateStore } from './StateStore';
2
2
  export { EventBus } from './EventBus';
3
3
  export { DEFAULT_RUNTIME_FIELD_MAX_DEPTH, DEFAULT_RUNTIME_FIELD_MAX_PATHS, DEFAULT_RUNTIME_FIELD_SAMPLE_LENGTH, RuntimeFieldDictionary, extractRuntimeFieldPaths, mergeRuntimeFieldCompletions, } from './runtime-field-dictionary';
4
+ export { previewTemplate } from './expression-preview';
5
+ export type { ExpressionPreviewResult } from './expression-preview';
4
6
  export type { RuntimeFieldCompletionItem, RuntimeFieldConnection, RuntimeFieldDictionaryListener, RuntimeFieldDictionaryOptions, RuntimeFieldEvent, RuntimeFieldMessage, RuntimeFieldPath, RuntimeFieldSlot, RuntimeNodeFieldEntry, } from './runtime-field-dictionary';
5
7
  export { DataAdapter } from './DataAdapter';
6
8
  export type { LFNodeData, LFEdgeData, LFGraphData, LFPoint } from './DataAdapter';
@@ -12,7 +14,12 @@ export { ValidationEngine } from './ValidationEngine';
12
14
  export type { ValidationError, ValidationResult, ValidationRule, ValidationContext, } from './ValidationEngine';
13
15
  export { ThemeManager, THEME_LIGHT, THEME_DARK, THEME_BLUE } from './ThemeManager';
14
16
  export type { ThemeVariables, ThemeDefinition } from './ThemeManager';
15
- export { I18nManager, i18nText } from './I18nManager';
17
+ export { I18nManager, i18nText, normalizeLocale } from './I18nManager';
18
+ export { PropertyControlRegistry } from './PropertyControlRegistry';
19
+ export type { PropertyControlRenderer, PropertyControlInstance, PropertyControlMountContext } from './PropertyControlRegistry';
20
+ export { localizeComponentDefinition, localizeComponentFields, localizeComponentGroups, normalizeComponentLocaleMessages, applyComponentLocaleMetadata } from './component-localization';
21
+ export { extractAssistantRuleChain, extractRuleChainFromToolCalls, hasDestructiveRuleChainChanges } from './assistant-dsl';
22
+ export type { AssistantRuleChain } from './assistant-dsl';
16
23
  export type { LocaleMessages, TranslationSource } from './I18nManager';
17
24
  export { EditorCore } from './EditorCore';
18
25
  export { getEditorToolbarIconSvg, isEditorToolbarIconName, renderEditorToolbarIcon } from './toolbar-icons';
@@ -36,16 +43,24 @@ export type { OptionSourceContext, OptionSourceResolveContext, OptionSourceResol
36
43
  export { FieldChangeHandlerNotFoundError, FieldChangeRegistry, getFieldChangeHandlerName, } from './FieldChangeRegistry';
37
44
  export type { FieldChangeContext, FieldChangeExecutionResult, FieldChangeExecutionStatus, FieldChangeHandler, FieldChangeResolveContext, FieldChangeResult, } from './FieldChangeRegistry';
38
45
  export { buildFieldAttachments, buildDefaultConfiguration, cloneConfiguration, evaluateFieldDependency, formatMapEntryValue, getFieldAttachmentTarget, getFieldPathValue, getMapValueMode, getVisibleComponentFields, isFieldDependencySatisfied, parseUnknownConfiguration, parseMapEntryValue, resolveComponentFields, sanitizeConfigurationByFields, validateComponentFields, validateFieldValue, } from './field-protocol';
39
- export type { FieldAttachmentEntry, FieldValidationError, MapValueMode, ResolveComponentFieldsContext } from './field-protocol';
46
+ export type { FieldAttachmentEntry, FieldValidationError, FieldValidationTranslator, MapValueMode, ResolveComponentFieldsContext } from './field-protocol';
40
47
  export { alignGraphNodes, cloneGraphSelection, insertGraphNodeOnEdge, reserveUniqueGraphElementId, distributeGraphNodes, selectConnectedNodeIds, snapGraphNodesToGrid, } from './graph-operations';
41
48
  export type { AlignMode, CloneGraphSelectionOptions, ClonedGraphSelection, DistributeMode, InsertGraphNodeOnEdgeOptions, InsertGraphNodeOnEdgeResult, } from './graph-operations';
42
49
  export { DiagnosticService } from './DiagnosticService';
43
50
  export { groupDiagnosticsByElement, validateTopology } from './topology-rules';
44
51
  export type { DiagnosticItem, TopologyContext } from './topology-rules';
45
- export { buildComponentPalette, normalizeComponentCategory, DEFAULT_COMPONENT_CATEGORY_ORDER } from './component-palette';
52
+ export { buildComponentPalette, normalizeComponentCategory, DEFAULT_COMPONENT_CATEGORY_ORDER, hasDeclaredSubgroups, SUBGROUPED_COMPONENT_CATEGORIES } from './component-palette';
46
53
  export type { ComponentPaletteBuildOptions, ComponentPaletteGroup, ComponentPaletteSubgroup } from './component-palette';
47
54
  export { ComponentDocService } from './ComponentDocService';
48
55
  export type { ComponentDoc, ComponentDocMeta, ComponentDocProvider } from './ComponentDocService';
56
+ export { createDefaultDialogProvider } from './DialogProvider';
57
+ export type { DialogProvider, ConfirmOptions, PromptOptions, AlertOptions, DefaultDialogProviderOptions } from './DialogProvider';
58
+ export { cleanSnapshot, cleanSnapshotString, sameCleanSnapshot, getVolatileKeys, createDirtySuppression, } from './clean-snapshot';
59
+ export type { DirtySuppressionOptions, DirtySuppression, } from './clean-snapshot';
60
+ export { createVariableCompletionSource } from './variable-completion';
61
+ export type { VariableCompletionItem, VariableCompletionSource, } from './variable-completion';
62
+ export type { NodeLogTemplate, ChainLogConfig, BusinessLogAPI } from './business-log-config';
63
+ export type { ToolCallResult } from './assistant-dsl';
49
64
  export { buildExplorerTree, expandedExplorerKeys, explorerAncestorKeys, findExplorerNode, normalizeExplorerExpandedKeys, EXPLORER_SECTION_ROOT, EXPLORER_SECTION_SUB, } from './explorer-tree';
50
65
  export type { ExplorerTreeNode, ExplorerTreeNodeKind, ExplorerTreeLabels, ExplorerTreeOptions } from './explorer-tree';
51
66
  export { parseExcelTable, serializeExcelTable } from './table-spreadsheet';
@@ -67,8 +82,8 @@ export { ConnectionStatusController, ConnectionStatusStore, normalizeConnectionS
67
82
  export type { ConnectionStatusControllerOptions, ConnectionStatusMap, ConnectionStatusPhase, ConnectionStatusProvider, ConnectionStatusSemanticKind, ConnectionStatusState, ConnectionStatusTranslator, ConnectionStatusView, NodeConnectionState, NodeConnectionStatus, } from './connection-status';
68
83
  export { isEditorNodeRunTarget } from './hover-tools';
69
84
  export type { EditorHoverToolPosition, EditorHoverToolTarget, EditorNodeRunTarget, EditorNodeHoverAction, EditorEdgeHoverAction, } from './hover-tools';
70
- export { resolveEditorCapabilities, resolveCapabilities, CAPABILITY_BASE, CAPABILITY_PROFILES, } from './editor-capabilities';
71
- export type { EditorMode, EditorUiCapabilities, EditorCapabilities, EditorCapabilitiesOverride, EditorCapabilityInput, } from './editor-capabilities';
85
+ export { resolveEditorCapabilities, mergeEditorCapabilities, mergeEditorToolbarOptions, resolveCapabilities, CAPABILITY_BASE, CAPABILITY_PROFILES, } from './editor-capabilities';
86
+ export type { EditorMode, EditorUiCapabilities, EditorCapabilities, EditorCapabilitiesOverride, EditorCapabilityInput, EditorToolbarOptions, EditorToolbarRegion, EditorToolbarRegionOptions, EditorToolbarEntry, EditorToolbarButtonPresentation, EditorHeaderOptions, } from './editor-capabilities';
72
87
  export { autoLayout, needsAutoLayout } from './AutoLayout';
73
88
  export type { AutoLayoutOptions } from './AutoLayout';
74
89
  export { calculateVirtualWindow, DEFAULT_VIRTUAL_WINDOW_ITEM_HEIGHT, DEFAULT_VIRTUAL_WINDOW_VIEWPORT_HEIGHT, DEFAULT_VIRTUAL_WINDOW_OVERSCAN, DEFAULT_VIRTUAL_WINDOW_THRESHOLD, } from './virtual-window';
@@ -85,4 +100,15 @@ export { RuleChainValidator } from './RuleChainValidator';
85
100
  export type { ValidationIssue, ValidationResult as RuleChainValidationResult, IssueSeverity, } from './RuleChainValidator';
86
101
  export { EDITOR_OVERLAY_LAYERS, EDITOR_OVERLAY_LAYER_CSS_VARIABLES, EDITOR_OVERLAY_LAYER_CSS_TEXT, } from './overlay-layers';
87
102
  export type { EditorOverlayLayerName } from './overlay-layers';
103
+ export { bindAnchoredPopover } from './anchored-popover';
104
+ export type { AnchoredPopoverOptions, AnchoredPopoverBinding } from './anchored-popover';
88
105
  export { RUNTIME_LIMITS, RuntimeLimitError, assertGraphWithinLimits, assertComponentsWithinLimits, assertTextWithinBytes, truncateText, assertObjectDepth, } from './runtime-limits';
106
+ export type { IdentityProvider, UserIdentity, LoginCredentials, LoginResult, AuthErrorDetails, AuthChangeCallback, } from './IdentityProvider';
107
+ export { createDefaultIdentityProvider, DefaultIdentityProvider } from './identity-provider-default';
108
+ export type { DefaultIdentityProviderOptions } from './identity-provider-default';
109
+ export { DEFAULT_KEYMAP, mergeKeymap, findKeyBinding, formatKeyBinding, } from './keymap';
110
+ export type { KeyBinding } from './keymap';
111
+ export { createLocalGlobalSearch } from './global-search';
112
+ export type { GlobalSearchResult, GlobalSearchProvider, } from './global-search';
113
+ export { parsePayloadToKvRows, serializeKvRowsToJson, isValidPayloadJson, } from './payload-kv';
114
+ export type { PayloadKvRow } from './payload-kv';
@@ -0,0 +1,10 @@
1
+ export interface KeyBinding {
2
+ key: string;
3
+ action: string;
4
+ scope?: 'canvas' | 'document' | 'editor';
5
+ when?: string;
6
+ }
7
+ export declare const DEFAULT_KEYMAP: readonly KeyBinding[];
8
+ export declare function mergeKeymap(base: readonly KeyBinding[], overrides: readonly KeyBinding[]): KeyBinding[];
9
+ export declare function findKeyBinding(keymap: readonly KeyBinding[], key: string, scope: string): KeyBinding | undefined;
10
+ export declare function formatKeyBinding(binding: KeyBinding): string;
@@ -0,0 +1,7 @@
1
+ export interface PayloadKvRow {
2
+ key: string;
3
+ value: string;
4
+ }
5
+ export declare function parsePayloadToKvRows(json: string): PayloadKvRow[] | null;
6
+ export declare function serializeKvRowsToJson(rows: PayloadKvRow[]): string;
7
+ export declare function isValidPayloadJson(json: string): boolean;
@@ -0,0 +1,143 @@
1
+ import type { RuleChainData } from '../types/rule-chain';
2
+ export interface RuleChainVersion {
3
+ id: string;
4
+ seq?: number;
5
+ ts?: number | string;
6
+ source?: string;
7
+ nodeCount?: number;
8
+ dslSize?: number;
9
+ [key: string]: unknown;
10
+ }
11
+ export interface RuleChainVersionDetail extends RuleChainVersion {
12
+ dsl: RuleChainData;
13
+ }
14
+ export interface RuleChainVersionPage {
15
+ items: RuleChainVersion[];
16
+ total: number | null;
17
+ page: number;
18
+ pageSize: number;
19
+ }
20
+ export interface RuleChainVersionsFetcher {
21
+ getRuleVersions(chainId: string, page: number, size: number, signal?: AbortSignal): Promise<unknown>;
22
+ getRuleVersion(chainId: string, versionId: string, signal?: AbortSignal): Promise<unknown>;
23
+ rollbackRuleVersion(chainId: string, versionId: string, signal?: AbortSignal): Promise<unknown>;
24
+ getContent(chainId: string, signal?: AbortSignal): Promise<unknown>;
25
+ }
26
+ export type VersionErrorCode = 'invalid-response' | 'pagination-stalled' | 'confirmation-required' | 'draft-changed' | 'readonly';
27
+ export declare class RuleChainVersionsError extends Error {
28
+ readonly code: VersionErrorCode;
29
+ constructor(code: VersionErrorCode, message: string);
30
+ }
31
+ export declare function normalizeRuleChainVersion(value: unknown): RuleChainVersion;
32
+ export declare function normalizeRuleChainVersionPage(raw: unknown, page?: number, size?: number): RuleChainVersionPage;
33
+ export declare function parseVersionRuleChain(raw: unknown, chainId?: string): RuleChainData;
34
+ export declare function normalizeRuleChainVersionDetail(raw: unknown, chainId: string, versionId: string): RuleChainVersionDetail;
35
+ export type AnalysisDiffKind = 'added' | 'removed' | 'changed';
36
+ export interface JsonPathDiff {
37
+ path: string;
38
+ kind: AnalysisDiffKind;
39
+ before: unknown;
40
+ after: unknown;
41
+ a?: string;
42
+ b?: string;
43
+ }
44
+ export declare function stableAnalysisJson(value: unknown): string;
45
+ export declare function diffJsonPaths(before: unknown, after: unknown, prefix?: string): JsonPathDiff[];
46
+ export interface ChainNodeDiff {
47
+ id: string;
48
+ key: string;
49
+ label: string;
50
+ type: string;
51
+ kind: AnalysisDiffKind;
52
+ fields: string[];
53
+ configPaths: JsonPathDiff[];
54
+ changes: JsonPathDiff[];
55
+ }
56
+ export interface ChainEdgeDiff {
57
+ key: string;
58
+ from: string;
59
+ to: string;
60
+ label: string;
61
+ kind: AnalysisDiffKind;
62
+ changes: JsonPathDiff[];
63
+ }
64
+ export interface ChainVersionDiff {
65
+ nodes: ChainNodeDiff[];
66
+ edges: ChainEdgeDiff[];
67
+ chain: JsonPathDiff[];
68
+ summary: {
69
+ nodeAdded: number;
70
+ nodeRemoved: number;
71
+ nodeChanged: number;
72
+ edgeAdded: number;
73
+ edgeRemoved: number;
74
+ edgeChanged: number;
75
+ identical: boolean;
76
+ };
77
+ }
78
+ export declare function diffChains(older: unknown, newer: unknown): ChainVersionDiff;
79
+ export declare function awaitVersionRequest<T>(operation: () => T | PromiseLike<T>, signal: AbortSignal): Promise<T>;
80
+ export type VersionHistoryPhase = 'idle' | 'loading' | 'loading-more' | 'detail' | 'comparing' | 'confirming' | 'rolling-back' | 'refreshing';
81
+ export interface VersionRollbackResult {
82
+ chainId: string;
83
+ version: RuleChainVersion;
84
+ response: unknown;
85
+ content: RuleChainData;
86
+ versions: RuleChainVersionPage;
87
+ }
88
+ export interface VersionRollbackConfirmation {
89
+ kind: 'rollback' | 'discard-dirty';
90
+ chainId: string;
91
+ version: RuleChainVersion;
92
+ signal: AbortSignal;
93
+ }
94
+ export interface RuleChainVersionsState {
95
+ chainId: string;
96
+ phase: VersionHistoryPhase;
97
+ items: readonly RuleChainVersion[];
98
+ total: number | null;
99
+ page: number;
100
+ pageSize: number;
101
+ hasMore: boolean;
102
+ showDrafts: boolean;
103
+ selection: readonly string[];
104
+ detail: RuleChainVersionDetail | null;
105
+ comparison: {
106
+ older: RuleChainVersion;
107
+ newer: RuleChainVersion;
108
+ diff: ChainVersionDiff;
109
+ } | null;
110
+ error: {
111
+ operation: VersionHistoryPhase;
112
+ cause: unknown;
113
+ committed: boolean;
114
+ } | null;
115
+ pendingRollback: boolean;
116
+ lastRollback: VersionRollbackResult | null;
117
+ }
118
+ export interface RuleChainVersionsControllerOptions {
119
+ fetcher: RuleChainVersionsFetcher;
120
+ chainId?: string;
121
+ pageSize?: number;
122
+ isDirty: () => boolean;
123
+ canRollback?: () => boolean;
124
+ getDraftRevision?: () => unknown;
125
+ confirm: (request: VersionRollbackConfirmation) => boolean | Promise<boolean>;
126
+ onRolledBack?: (result: VersionRollbackResult, signal: AbortSignal) => void | Promise<void>;
127
+ }
128
+ export interface RuleChainVersionsController {
129
+ getState(): Readonly<RuleChainVersionsState>;
130
+ subscribe(listener: (state: Readonly<RuleChainVersionsState>) => void): () => void;
131
+ setChain(chainId: string): Promise<boolean>;
132
+ reload(): Promise<boolean>;
133
+ loadMore(): Promise<boolean>;
134
+ setShowDrafts(value: boolean): void;
135
+ select(versionId: string, selected: boolean): void;
136
+ inspect(versionId: string): Promise<boolean>;
137
+ compareSelected(): Promise<boolean>;
138
+ rollback(versionId: string): Promise<boolean>;
139
+ retryReadback(): Promise<boolean>;
140
+ cancel(): void;
141
+ destroy(): void;
142
+ }
143
+ export declare function createRuleChainVersionsController(options: RuleChainVersionsControllerOptions): RuleChainVersionsController;
@@ -0,0 +1,126 @@
1
+ import { type JsonPathDiff } from './rule-chain-versions';
2
+ export interface RunNodeLog {
3
+ nodeId?: string;
4
+ inMsg?: unknown;
5
+ outMsg?: unknown;
6
+ startTs?: number | string | null;
7
+ endTs?: number | string | null;
8
+ err?: unknown;
9
+ relationType?: string;
10
+ [key: string]: unknown;
11
+ }
12
+ export interface RunAnalysisRecord {
13
+ id?: string;
14
+ chainId?: string;
15
+ level?: string;
16
+ logs?: readonly RunNodeLog[];
17
+ success?: boolean;
18
+ durationMs?: number;
19
+ errorMsg?: string;
20
+ msgType?: string;
21
+ msgData?: unknown;
22
+ startTs?: number | string | null;
23
+ [key: string]: unknown;
24
+ }
25
+ export interface RunLogOccurrence {
26
+ key: string;
27
+ nodeId: string;
28
+ occurrence: number;
29
+ index: number;
30
+ log: RunNodeLog;
31
+ }
32
+ export declare function getRunNodeTiming(log: RunNodeLog): {
33
+ startTs: number | null;
34
+ endTs: number | null;
35
+ durationMs: number | null;
36
+ invalid: boolean;
37
+ };
38
+ export declare function runLogOccurrences(logs?: readonly RunNodeLog[]): RunLogOccurrence[];
39
+ export interface RunWaterfallRow extends RunLogOccurrence {
40
+ label: string;
41
+ startTs: number;
42
+ endTs: number | null;
43
+ offsetMs: number;
44
+ durationMs: number | null;
45
+ observedMs: number;
46
+ unfinished: boolean;
47
+ invalidTiming: boolean;
48
+ err: string;
49
+ isSlowest: boolean;
50
+ left: number;
51
+ width: number;
52
+ }
53
+ export interface RunWaterfall {
54
+ rows: RunWaterfallRow[];
55
+ startTs: number | null;
56
+ spanMs: number;
57
+ scaleMs: number;
58
+ omittedCount: number;
59
+ slowest: RunWaterfallRow | null;
60
+ ticks: {
61
+ pct: number;
62
+ offsetMs: number;
63
+ }[];
64
+ }
65
+ export declare function buildRunWaterfall(logs?: readonly RunNodeLog[], nodeNames?: Readonly<Record<string, string>>, options?: {
66
+ scaleMs?: number;
67
+ observedUntil?: number;
68
+ }): RunWaterfall;
69
+ export declare function normalizeRunMessage(message: unknown): unknown;
70
+ export declare function runPairKey(record: RunAnalysisRecord | null | undefined): string;
71
+ export declare function nodeMsgDiff(a?: RunNodeLog | null, b?: RunNodeLog | null): {
72
+ inDiff: JsonPathDiff[];
73
+ outDiff: JsonPathDiff[];
74
+ };
75
+ export type RunComparisonStatus = 'same' | 'diverge' | 'error' | 'only-a' | 'only-b' | 'unknown';
76
+ export interface RunComparisonRow {
77
+ key: string;
78
+ nodeId: string;
79
+ occurrence: number;
80
+ status: RunComparisonStatus;
81
+ downstream: boolean;
82
+ orderChanged: boolean;
83
+ aDur: number | null;
84
+ bDur: number | null;
85
+ aErr: string;
86
+ bErr: string;
87
+ aRel: string;
88
+ bRel: string;
89
+ a?: RunNodeLog;
90
+ b?: RunNodeLog;
91
+ }
92
+ export interface RunComparison {
93
+ level: 'detail' | 'mixed' | 'summary';
94
+ pair: {
95
+ same: boolean | null;
96
+ confidence: 'input' | 'summary';
97
+ keyA: string;
98
+ keyB: string;
99
+ };
100
+ chain: {
101
+ successA: boolean | null;
102
+ successB: boolean | null;
103
+ successDiff: boolean;
104
+ errA: string;
105
+ errB: string;
106
+ durationA: number | null;
107
+ durationB: number | null;
108
+ msgTypeA: string;
109
+ msgTypeB: string;
110
+ outDiff: JsonPathDiff[];
111
+ };
112
+ timeline: RunComparisonRow[];
113
+ firstDivergence: {
114
+ key: string;
115
+ nodeId: string;
116
+ } | null;
117
+ counts: {
118
+ same: number;
119
+ diverge: number;
120
+ error: number;
121
+ onlyA: number;
122
+ onlyB: number;
123
+ unknown: number;
124
+ };
125
+ }
126
+ export declare function diffRuns(eventA: RunAnalysisRecord, eventB: RunAnalysisRecord): RunComparison;
@@ -34,6 +34,7 @@ export interface RuntimeFieldCompletionItem {
34
34
  export interface RuntimeFieldSlot {
35
35
  paths: RuntimeFieldPath[];
36
36
  ts: number;
37
+ msg?: RuntimeFieldMessage;
37
38
  }
38
39
  export interface RuntimeNodeFieldEntry {
39
40
  in?: RuntimeFieldSlot;
@@ -45,6 +46,7 @@ export interface RuntimeFieldDictionaryOptions {
45
46
  sampleLength?: number;
46
47
  }
47
48
  export type RuntimeFieldDictionaryListener = () => void;
49
+ export declare function isSensitiveRuntimeFieldName(name: string): boolean;
48
50
  export declare function extractRuntimeFieldPaths(message: RuntimeFieldMessage | null | undefined, options?: RuntimeFieldDictionaryOptions): RuntimeFieldPath[];
49
51
  export declare class RuntimeFieldDictionary {
50
52
  private readonly options;
@@ -60,6 +62,7 @@ export declare class RuntimeFieldDictionary {
60
62
  ingest(event: RuntimeFieldEvent | null | undefined, fallbackChainId?: unknown): boolean;
61
63
  getNodePaths(nodeId: unknown): RuntimeFieldPath[];
62
64
  getUpstreamPaths(nodeId: unknown, connections: RuntimeFieldConnection[] | undefined): RuntimeFieldPath[];
65
+ getUpstreamMessage(nodeId: unknown, connections?: RuntimeFieldConnection[]): RuntimeFieldMessage | null;
63
66
  clear(): void;
64
67
  subscribe(listener: RuntimeFieldDictionaryListener): () => void;
65
68
  destroy(): void;
@@ -1,4 +1,5 @@
1
1
  import type { RuleChainData } from '../types/rule-chain';
2
+ export declare function isCompleteRuleChainSnapshot(value: unknown): value is RuleChainData;
2
3
  export declare function normalizeRuleChainSaveSnapshot(data: unknown): unknown;
3
4
  export declare function createRuleChainSaveFingerprint(data: unknown): string;
4
5
  export declare function hasRuleChainSaveConflict(remote: unknown, baseline: RuleChainData | unknown): boolean;
@@ -27,6 +27,7 @@ export declare class ServerStatusStore {
27
27
  subscribe(listener: (state: Readonly<ServerStatusState>, previousState: Readonly<ServerStatusState>) => void): () => void;
28
28
  setServerUrl(baseUrl: string, wsUrl?: string): void;
29
29
  setServerStatus(status: ServerStatus, details?: Partial<ServerStatusState>): void;
30
+ markApiSuccess(): void;
30
31
  recordHttpStatus(statusCode: number, message?: string): ServerStatus;
31
32
  recordWebSocketStatus(eventStatus: ServerWsEventStatus, closeCode?: number | null, message?: string): ServerStatus;
32
33
  setReconnectAttempt(attempt: number): void;