@yiyi_zhang/reactflow-ui 1.2.0 → 1.3.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 (49) hide show
  1. package/dist/AiWorkflowIDE.d.ts +7 -0
  2. package/dist/WorkflowIDE.d.ts +9 -0
  3. package/dist/ai.d.ts +16 -0
  4. package/dist/components/business/StepFlowEditor.d.ts +6 -0
  5. package/dist/components/import/ApiImportDialog.d.ts +27 -0
  6. package/dist/components/onboarding/ModalShell.d.ts +15 -0
  7. package/dist/components/onboarding/OnboardingController.d.ts +67 -0
  8. package/dist/components/onboarding/OnboardingGuideCard.d.ts +10 -0
  9. package/dist/components/onboarding/OnboardingWizard.d.ts +42 -0
  10. package/dist/components/onboarding/PromotionPanel.d.ts +20 -0
  11. package/dist/components/onboarding/WorkflowNameBuilder.d.ts +19 -0
  12. package/dist/components/onboarding/index.d.ts +8 -0
  13. package/dist/components/onboarding/styles.d.ts +11 -0
  14. package/dist/components/onboarding/useOnboardingData.d.ts +17 -0
  15. package/dist/components/template/TemplateGallery.d.ts +2 -0
  16. package/dist/components/template/TemplateSetupWizard.d.ts +2 -0
  17. package/dist/import/buildAction.d.ts +23 -0
  18. package/dist/import/common.d.ts +17 -0
  19. package/dist/import/curl.d.ts +12 -0
  20. package/dist/import/detect.d.ts +9 -0
  21. package/dist/import/index.d.ts +10 -0
  22. package/dist/import/insert.d.ts +16 -0
  23. package/dist/import/openapi.d.ts +9 -0
  24. package/dist/import/postman.d.ts +9 -0
  25. package/dist/import/schema.d.ts +15 -0
  26. package/dist/import/sensitive.d.ts +18 -0
  27. package/dist/import/types.d.ts +62 -0
  28. package/dist/import/util.d.ts +23 -0
  29. package/dist/index.d.ts +16 -0
  30. package/dist/onboarding/index.d.ts +6 -0
  31. package/dist/onboarding/naming.d.ts +41 -0
  32. package/dist/onboarding/poll.d.ts +39 -0
  33. package/dist/onboarding/wizardState.d.ts +44 -0
  34. package/dist/providers/WorkflowIdeProvider.d.ts +23 -0
  35. package/dist/providers/resolve.d.ts +20 -0
  36. package/dist/providers/types.d.ts +65 -0
  37. package/dist/reactflow-ui-ai.es.js +11657 -9031
  38. package/dist/reactflow-ui.es.js +10254 -7554
  39. package/dist/reactflow-ui.umd.js +40 -28
  40. package/dist/sample-imports/cmdb-openapi3.json +334 -0
  41. package/dist/sample-imports/cmdb-postman.json +100 -0
  42. package/dist/sample-imports/ticket-swagger2.json +231 -0
  43. package/dist/store/sandboxRunObserver.d.ts +19 -0
  44. package/dist/telemetry/buffer.d.ts +37 -0
  45. package/dist/telemetry/once.d.ts +11 -0
  46. package/dist/telemetry/track.d.ts +17 -0
  47. package/dist/telemetry/types.d.ts +24 -0
  48. package/dist/telemetry/useTelemetry.d.ts +22 -0
  49. package/package.json +1 -1
@@ -0,0 +1,41 @@
1
+ import type { WorkflowDef } from '../types/conductor';
2
+ import type { WorkflowLevel } from '../types/workflowLibrary';
3
+ import type { WorkflowNameType } from '../library/naming';
4
+ /**
5
+ * 自助接入的命名辅助:纯函数,不依赖 React,可直接单测。
6
+ * 命名规范:`类型-层级-业务域-产品-功能`(见 src/library/naming.ts)。
7
+ */
8
+ /** 申请上线时可选的目标类型 */
9
+ export type PromotionTargetType = 'custom' | 'std';
10
+ /** 五段式名称的各段 */
11
+ export interface WorkflowNameParts {
12
+ type: WorkflowNameType;
13
+ level: WorkflowLevel;
14
+ domain: string;
15
+ product: string;
16
+ func: string;
17
+ }
18
+ /** 拼出完整流程名称。业务域 / 产品段会被去掉 `-`;功能段保持原样(仅去首尾空白,允许含 `-`) */
19
+ export declare function buildWorkflowName(parts: WorkflowNameParts): string;
20
+ /** 校验各段拼出的名称(空段会得到「xx不能为空」类错误),业务域白名单可选 */
21
+ export declare function validateNameParts(parts: WorkflowNameParts, allowedDomains?: string[]): string[];
22
+ /**
23
+ * 由用户输入的功能说明建议「功能」段:
24
+ * - 含中文:保持原样,仅去掉 `-`(避免破坏分段),空白折叠为 `_`;
25
+ * - 纯 ASCII:转小写 snake_case(驼峰拆词,连字符 / 空格 / 其他符号折叠为 `_`)。
26
+ */
27
+ export declare function suggestFuncSlug(text: string): string;
28
+ /**
29
+ * 申请上线后的正式名称:把类型段(第一段)替换为目标类型。
30
+ * 名称不符合五段规范时返回 null。
31
+ */
32
+ export declare function promotionTargetName(tmpName: string, targetType: PromotionTargetType): string | null;
33
+ /** 当前流程名称是否是可申请上线的临时流程(类型段为 tmp) */
34
+ export declare function isPromotableName(name: string | undefined | null): boolean;
35
+ export interface SkeletonInput {
36
+ name: string;
37
+ description?: string;
38
+ ownerEmail?: string;
39
+ }
40
+ /** 向导生成的骨架定义:version 1 / schemaVersion 2,空任务 */
41
+ export declare function buildSkeletonWorkflow(input: SkeletonInput): WorkflowDef;
@@ -0,0 +1,39 @@
1
+ import type { OnboardingProvider, PromotionStatus } from '../providers/types';
2
+ /** 上线申请轮询:初始间隔、封顶间隔(毫秒) */
3
+ export declare const POLL_BASE_MS = 2000;
4
+ export declare const POLL_MAX_MS = 30000;
5
+ /** 第 attempt 次(从 0 开始)等待的时长:指数退避 2s → 4s → 8s … 封顶 30s */
6
+ export declare function nextPollDelay(attempt: number): number;
7
+ export type PromotionState = PromotionStatus['state'];
8
+ /** 终态:不会再变化,轮询据此停止 */
9
+ export declare function isTerminalPromotionState(state: PromotionState): boolean;
10
+ export interface TimelineItem {
11
+ state: PromotionState;
12
+ label: string;
13
+ /** done 已完成 / current 进行中 / pending 未到 / failed 被驳回 */
14
+ status: 'done' | 'current' | 'pending' | 'failed';
15
+ }
16
+ export declare function promotionStateLabel(state: PromotionState): string;
17
+ /**
18
+ * 进度时间线。正常路径:已提交 → 审批中 → 审批通过 → 已同步到生产;
19
+ * 被驳回时第三项替换为「已驳回」(failed),之后不再展示「已同步」。
20
+ */
21
+ export declare function buildPromotionTimeline(state: PromotionState | null): TimelineItem[];
22
+ export declare function isAbortError(e: unknown): boolean;
23
+ /** 可被 AbortSignal 打断的等待 */
24
+ export declare function abortableSleep(ms: number, signal?: AbortSignal): Promise<void>;
25
+ export interface PollOptions {
26
+ provider: Pick<OnboardingProvider, 'getPromotion'>;
27
+ requestId: string;
28
+ signal?: AbortSignal;
29
+ /** 每次拿到状态时回调(含终态) */
30
+ onUpdate?: (status: PromotionStatus) => void;
31
+ /** 注入等待函数(测试用),默认 abortableSleep */
32
+ sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
33
+ }
34
+ /**
35
+ * 轮询上线申请直到终态(APPROVED / REJECTED / SYNCED):先立即查一次,之后按 nextPollDelay 退避。
36
+ * APPROVED 视为终态(审批已有结论),轮询随之停止。
37
+ * 请求失败直接抛出(由界面显示「重试」);signal 中止时抛 AbortError。
38
+ */
39
+ export declare function pollPromotion(opts: PollOptions): Promise<PromotionStatus>;
@@ -0,0 +1,44 @@
1
+ import type { WorkflowLevel } from '../types/workflowLibrary';
2
+ import type { ProductInfo } from '../providers/types';
3
+ import type { WorkflowNameType } from '../library/naming';
4
+ import type { WorkflowNameParts } from './naming';
5
+ /** 向导步骤:产品 → 命名 → 起点 */
6
+ export type WizardStep = 'product' | 'naming' | 'start';
7
+ export declare const WIZARD_STEPS: readonly WizardStep[];
8
+ export declare const WIZARD_STEP_LABEL: Record<WizardStep, string>;
9
+ export type StartSource = 'blank' | 'template' | 'import';
10
+ export interface WizardDraft {
11
+ /** existing:选择已有产品;new:登记新产品(仅试用环境) */
12
+ productMode: 'existing' | 'new';
13
+ productName: string;
14
+ domain: string;
15
+ systemCode: string;
16
+ type: WorkflowNameType;
17
+ level: WorkflowLevel;
18
+ func: string;
19
+ description: string;
20
+ source: StartSource;
21
+ }
22
+ export interface WizardContextLite {
23
+ trial: boolean;
24
+ products: ProductInfo[];
25
+ }
26
+ /** 初始草稿:有产品时默认选第一个;没有产品时(试用环境)进入登记模式 */
27
+ export declare function createInitialDraft(ctx: WizardContextLite, level?: WorkflowLevel): WizardDraft;
28
+ /** 产品名规则:非空、不含 `-` 与空白(会破坏五段切分) */
29
+ export declare function validateProductName(name: string): string | null;
30
+ /** 第 1 步的校验错误(null = 可继续) */
31
+ export declare function productStepError(draft: WizardDraft, ctx: WizardContextLite, domains: string[]): string | null;
32
+ /** 草稿 → 五段名称 */
33
+ export declare function draftToNameParts(draft: WizardDraft, trial: boolean): WorkflowNameParts;
34
+ /** 第 2 步的校验错误列表 */
35
+ export declare function namingStepErrors(draft: WizardDraft, trial: boolean, domains: string[]): string[];
36
+ /** 当前步骤是否允许进入下一步 */
37
+ export declare function canAdvance(step: WizardStep, draft: WizardDraft, ctx: WizardContextLite, domains: string[]): boolean;
38
+ export declare function nextStep(step: WizardStep): WizardStep;
39
+ export declare function prevStep(step: WizardStep): WizardStep;
40
+ /** 可选的起点:未提供对应回调时隐藏该选项(空白始终可用) */
41
+ export declare function availableSources(opts: {
42
+ hasTemplate: boolean;
43
+ hasImport: boolean;
44
+ }): StartSource[];
@@ -0,0 +1,23 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { IdeProviders } from './types';
3
+ export interface WorkflowIdeProviderProps {
4
+ providers: IdeProviders;
5
+ children: ReactNode;
6
+ }
7
+ /**
8
+ * 统一注册扩展点:宿主配置一次,其下所有 `WorkflowIDE` / `AiWorkflowIDE` 共用。
9
+ * `providers` 对象每次渲染重新创建也没关系——只有某个 provider 引用变化时才会通知下游。
10
+ *
11
+ * ```tsx
12
+ * <WorkflowIdeProvider providers={{ library, telemetry }}>
13
+ * <WorkflowIDE … />
14
+ * </WorkflowIdeProvider>
15
+ * ```
16
+ */
17
+ export declare function WorkflowIdeProvider({ providers, children }: WorkflowIdeProviderProps): import("react/jsx-runtime").JSX.Element;
18
+ /** 读取外层 `WorkflowIdeProvider` 提供的扩展点;没有外层时返回空对象(不抛错) */
19
+ export declare function useIdeProviders(): IdeProviders;
20
+ /**
21
+ * IDE 内部使用:合并「专用 prop > 组件 providers prop > 外层 Provider」,结果按字段引用稳定。
22
+ */
23
+ export declare function useResolvedProviders(componentProviders: IdeProviders | undefined, override?: Partial<IdeProviders>): IdeProviders;
@@ -0,0 +1,20 @@
1
+ import type { IdeProviders } from './types';
2
+ /** 各层来源,按优先级从高到低排列 */
3
+ export interface ProviderSources {
4
+ /** 组件上的专用 prop(如 `libraryProvider`),优先级最高 */
5
+ override?: Partial<IdeProviders>;
6
+ /** 组件的 `providers` prop */
7
+ component?: Partial<IdeProviders>;
8
+ /** 外层 `WorkflowIdeProvider` */
9
+ context?: Partial<IdeProviders>;
10
+ }
11
+ /**
12
+ * 按字段解析:专用 prop > 组件 `providers` prop > 外层 `WorkflowIdeProvider` > 无。
13
+ * 某一层的字段为 undefined 时才落到下一层(不是整个对象覆盖)。纯函数,每次返回新对象。
14
+ */
15
+ export declare function resolveProviders(sources?: ProviderSources): IdeProviders;
16
+ /**
17
+ * 稳定化:各字段引用都与 prev 相同时返回 prev 本身。
18
+ * 宿主每次渲染新建 `providers` 对象、但 provider 实例不变时,下游拿到的仍是同一个对象,不会触发目录重载。
19
+ */
20
+ export declare function stabilizeProviders(prev: IdeProviders | undefined, next: IdeProviders): IdeProviders;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * 扩展点注册:统一的 Provider 集合与自助接入(Onboarding)契约。
3
+ * 设计见 docs/design/v1.3.0-自助接入设计.md 第 2、3.2 节。
4
+ */
5
+ import type { LibraryProvider } from '../library/types';
6
+ import type { TelemetrySink } from '../telemetry/types';
7
+ export interface OnboardingContext {
8
+ env: 'TEST' | 'PROD';
9
+ user: {
10
+ id: string;
11
+ name: string;
12
+ };
13
+ /** 当前环境是否开放自助试用(生产为 false) */
14
+ trialEnabled: boolean;
15
+ }
16
+ export interface ProductInfo {
17
+ name: string;
18
+ domain: string;
19
+ status: 'PENDING' | 'ACTIVE';
20
+ role: 'OWNER' | 'MEMBER';
21
+ }
22
+ export type StartTrialResult = {
23
+ status: 'ok';
24
+ product: ProductInfo;
25
+ } | {
26
+ status: 'conflict';
27
+ owners: {
28
+ id: string;
29
+ name: string;
30
+ }[];
31
+ };
32
+ export interface PromotionStatus {
33
+ requestId: string;
34
+ state: 'SUBMITTED' | 'REVIEWING' | 'APPROVED' | 'REJECTED' | 'SYNCED';
35
+ targetName?: string;
36
+ comment?: string;
37
+ updatedAt: string;
38
+ }
39
+ export interface OnboardingProvider {
40
+ getContext(signal?: AbortSignal): Promise<OnboardingContext>;
41
+ listDomains(signal?: AbortSignal): Promise<string[]>;
42
+ listMyProducts(signal?: AbortSignal): Promise<ProductInfo[]>;
43
+ startTrial(input: {
44
+ productName: string;
45
+ domain: string;
46
+ systemCode?: string;
47
+ }): Promise<StartTrialResult>;
48
+ requestPromotion(input: {
49
+ workflowName: string;
50
+ version: number;
51
+ targetType: 'custom' | 'std';
52
+ }): Promise<{
53
+ requestId: string;
54
+ }>;
55
+ getPromotion(requestId: string, signal?: AbortSignal): Promise<PromotionStatus>;
56
+ }
57
+ /** 宿主配置一次、页面内所有 IDE 共用的扩展点集合 */
58
+ export interface IdeProviders {
59
+ /** 流程库数据源(1.2.0 已有) */
60
+ library?: LibraryProvider;
61
+ /** 自助接入(1.3.0;B1 仅定义契约,界面在 B2) */
62
+ onboarding?: OnboardingProvider;
63
+ /** 接入埋点(1.3.0) */
64
+ telemetry?: TelemetrySink;
65
+ }