@yiyi_zhang/reactflow-ui 1.1.0 → 1.2.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/AiWorkflowIDE.d.ts +21 -0
- package/dist/WorkflowIDE.d.ts +21 -0
- package/dist/actions/fromDefinitions.d.ts +70 -0
- package/dist/actions/registry.d.ts +1 -0
- package/dist/actions/types.d.ts +26 -0
- package/dist/ai.d.ts +9 -0
- package/dist/components/AiNative/AiCommandCenter.d.ts +4 -0
- package/dist/components/business/ActionPickerModal.d.ts +25 -0
- package/dist/components/business/DataPillInput.d.ts +2 -0
- package/dist/components/business/DecisionBranchCard.d.ts +2 -0
- package/dist/components/business/ForkJoinCard.d.ts +2 -0
- package/dist/components/business/LibraryVersionBadge.d.ts +29 -0
- package/dist/components/business/LoopDoWhileCard.d.ts +2 -0
- package/dist/components/business/NestedControlStep.d.ts +22 -0
- package/dist/components/business/StepFlowEditor.d.ts +9 -0
- package/dist/components/business/StepListEditor.d.ts +29 -0
- package/dist/index.d.ts +7 -1
- package/dist/library/catalog.d.ts +93 -0
- package/dist/library/conductorProvider.d.ts +41 -0
- package/dist/library/diff.d.ts +62 -0
- package/dist/library/index.d.ts +16 -0
- package/dist/library/level.d.ts +6 -0
- package/dist/library/naming.d.ts +28 -0
- package/dist/library/projections.d.ts +53 -0
- package/dist/library/types.d.ts +58 -0
- package/dist/library/useLibraryCatalog.d.ts +9 -0
- package/dist/library/version.d.ts +17 -0
- package/dist/library/versionStatus.d.ts +44 -0
- package/dist/product-launch.html +3 -3
- package/dist/reactflow-ui-ai.es.js +14322 -8462
- package/dist/reactflow-ui.css +1 -1
- package/dist/reactflow-ui.es.js +9405 -8280
- package/dist/reactflow-ui.umd.js +28 -25
- package/dist/sample-workflows/library-capabilities-demo.json +66 -0
- package/dist/services/ai/agentRunner.d.ts +11 -0
- package/dist/services/ai/schemaRegistry.d.ts +7 -1
- package/dist/services/ai/systemPrompt.d.ts +11 -0
- package/dist/services/ai/toolExecutor.d.ts +12 -0
- package/dist/services/ai/workflowSynthesizer.d.ts +28 -3
- package/dist/stepmodel/compile.d.ts +6 -0
- package/dist/stepmodel/decompile.d.ts +5 -0
- package/dist/stepmodel/factory.d.ts +8 -0
- package/dist/stepmodel/types.d.ts +3 -0
- package/dist/store/ideStoresContext.d.ts +3 -0
- package/dist/store/workflowStore.d.ts +1 -0
- package/dist/types/conductor.d.ts +13 -8
- package/dist/types/workflow.d.ts +9 -0
- package/dist/types/workflowLibrary.d.ts +2 -0
- package/dist/utils/taskTypeMeta.d.ts +3 -3
- package/package.json +1 -1
- package/dist/components/AiNative/BusinessCanvas.d.ts +0 -15
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { WorkflowLevel } from '../types/workflowLibrary';
|
|
2
|
+
/**
|
|
3
|
+
* 治理平台的流程命名规范:`类型-层级-业务域-产品-功能`,以 `-` 分隔。
|
|
4
|
+
* - 类型:std(通用)/ proxy(代理)/ tmp(临时,自动清理)/ custom(自定义)
|
|
5
|
+
* - 层级:L1 / L2 / L3
|
|
6
|
+
* - 业务域:来自全局可调整的列表(由服务端提供,这里不写死,只当字符串处理)
|
|
7
|
+
* - 产品:自由名称(内部不含 `-`)
|
|
8
|
+
* - 功能:第 4 个 `-` 之后的全部内容(自身可含 `-`)
|
|
9
|
+
*/
|
|
10
|
+
export type WorkflowNameType = 'std' | 'proxy' | 'tmp' | 'custom';
|
|
11
|
+
export interface ParsedWorkflowName {
|
|
12
|
+
type: WorkflowNameType;
|
|
13
|
+
level: WorkflowLevel;
|
|
14
|
+
domain: string;
|
|
15
|
+
product: string;
|
|
16
|
+
func: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const WORKFLOW_NAME_TYPES: readonly WorkflowNameType[];
|
|
19
|
+
/**
|
|
20
|
+
* 解析流程名称。段数不足 5、类型或层级不合法时返回 null(不抛错)。
|
|
21
|
+
* 业务域 / 产品 / 功能只做切分,不在此校验是否为空或是否在白名单内(见 validateWorkflowName)。
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseWorkflowName(name: string): ParsedWorkflowName | null;
|
|
24
|
+
/**
|
|
25
|
+
* 校验流程名称,返回中文错误列表(空数组 = 合法)。
|
|
26
|
+
* 仅当提供 allowedDomains 时才校验业务域是否在列表内。
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateWorkflowName(name: string, allowedDomains?: string[]): string[];
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ActionDefinition } from '../actions/types';
|
|
2
|
+
import { type ActionExtension } from '../actions/fromDefinitions';
|
|
3
|
+
import type { SchemaDef } from '../types/conductor';
|
|
4
|
+
import type { WorkflowLevel, WorkflowLibraryItem } from '../types/workflowLibrary';
|
|
5
|
+
import type { TaskSchema } from '../services/ai/schemaRegistry';
|
|
6
|
+
import type { LibraryCatalog, LibraryEntry } from './catalog';
|
|
7
|
+
import type { LibraryExtension } from './types';
|
|
8
|
+
/** LibraryExtension → ActionExtension(extension.action 中的显式设置优先) */
|
|
9
|
+
export declare function toActionExtension(ext?: LibraryExtension): ActionExtension;
|
|
10
|
+
/**
|
|
11
|
+
* 目录 → 动作。只投影 Provider 提供的条目(静态 workflowLibrary 条目只有摘要,没有入参定义,
|
|
12
|
+
* 不进入业务模式动作库,以保持原有 `actions` 行为不变)。
|
|
13
|
+
* 已下线条目仍会生成动作(已引用的步骤需要照常显示与编译),但带 `deprecated` 标记,选择器会隐藏。
|
|
14
|
+
*/
|
|
15
|
+
export declare function toActions(catalog: LibraryCatalog): ActionDefinition[];
|
|
16
|
+
/** JSON Schema(Conductor SchemaDef)→ { 字段名: 类型串 };`enum` 输出为 `a|b`。无可解析的 properties 返回 undefined */
|
|
17
|
+
export declare function schemaToTypeStrings(schema?: SchemaDef): Record<string, string> | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* 目录 → 任务 Schema。
|
|
20
|
+
* - 有 inputSchema / outputSchema 时展开 properties;没有时退回 inputKeys / 工作流入参名 / outputKeys / outputParameters 的 key
|
|
21
|
+
* - 同名条目 Provider 优先于静态 `taskSchemas`;静态 Schema 在前,保持原有顺序
|
|
22
|
+
* - 已下线条目不输出(避免 AI 继续引用)
|
|
23
|
+
*/
|
|
24
|
+
export declare function toTaskSchemas(catalog: LibraryCatalog): TaskSchema[];
|
|
25
|
+
/**
|
|
26
|
+
* 目录 → 旧版 WorkflowLibraryItem。
|
|
27
|
+
* - 未标注层级的条目按 L1 处理(调用规则最保守:只能被同层及更高层引用)
|
|
28
|
+
* - `version` 为字符串以兼容旧类型:静态条目保持原样,Provider 条目输出整数版本(即步骤将固定的版本)
|
|
29
|
+
* - 已下线条目不输出
|
|
30
|
+
*/
|
|
31
|
+
export declare function toLibraryItems(catalog: LibraryCatalog): WorkflowLibraryItem[];
|
|
32
|
+
/** 目录条目 → 旧版 WorkflowLibraryItem(规则同 toLibraryItems;也用于服务端检索命中的转换) */
|
|
33
|
+
export declare function entriesToLibraryItems(entries: LibraryEntry[]): WorkflowLibraryItem[];
|
|
34
|
+
/**
|
|
35
|
+
* 动作选择器可见性过滤:
|
|
36
|
+
* - 已下线动作隐藏(已引用的步骤仍可通过 registry 正常显示与编译)
|
|
37
|
+
* - 提供 currentLevel 时,隐藏违反分层调用规则的流程库动作(L1 不显示 L2/L3,L2 不显示 L3);未提供则不按层级过滤
|
|
38
|
+
*/
|
|
39
|
+
export declare function filterPickableActions(actions: ActionDefinition[], opts?: {
|
|
40
|
+
currentLevel?: WorkflowLevel;
|
|
41
|
+
}): ActionDefinition[];
|
|
42
|
+
/** 没有业务域的流程库动作所属分组 */
|
|
43
|
+
export declare const OTHER_DOMAIN = "\u5176\u4ED6";
|
|
44
|
+
/**
|
|
45
|
+
* 动作所属的业务域分组:有 domain 取 domain;流程库动作(kind = workflow)无 domain 归入「其他」;
|
|
46
|
+
* 其余(内置 / 非流程库)返回 null,继续按原有分类分组。
|
|
47
|
+
*/
|
|
48
|
+
export declare function libraryDomainOf(action: ActionDefinition): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* 收集动作中出现的业务域,按首次出现的顺序排列(顺序即目录顺序,不重新排序),「其他」固定最后。
|
|
51
|
+
* 没有任何动作带 domain 时返回空数组(选择器据此保持旧的分类分组)。
|
|
52
|
+
*/
|
|
53
|
+
export declare function collectLibraryDomains(actions: ActionDefinition[]): string[];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { WorkflowDef } from '../types/conductor';
|
|
2
|
+
import type { WorkflowLevel } from '../types/workflowLibrary';
|
|
3
|
+
import type { ActionExtension, RegisteredTaskDef } from '../actions/fromDefinitions';
|
|
4
|
+
/**
|
|
5
|
+
* 流程库数据源(LibraryProvider)公共类型。
|
|
6
|
+
* 设计见 docs/design/流程库数据源-LibraryProvider设计.md。
|
|
7
|
+
*
|
|
8
|
+
* 原则:来源可换,数据只有一份(LibraryCatalog),消费方只读投影(projections)。
|
|
9
|
+
*/
|
|
10
|
+
/** Conductor 标准之外的补充字段(层级、分类、图标等由宿主决定来源) */
|
|
11
|
+
export interface LibraryExtension {
|
|
12
|
+
level?: WorkflowLevel;
|
|
13
|
+
category?: string;
|
|
14
|
+
/** 业务域展示名(如「通知协助」)。取值来自服务端的全局可调整列表,不在组件库内写死;缺省时尝试从流程名称解析 */
|
|
15
|
+
domain?: string;
|
|
16
|
+
icon?: string;
|
|
17
|
+
tags?: string[];
|
|
18
|
+
displayName?: string;
|
|
19
|
+
/** 已下线 / 不建议新引用(等价于 LibraryWorkflowRecord.deprecated,便于由 resolveExtension 一并给出) */
|
|
20
|
+
deprecated?: boolean;
|
|
21
|
+
/** 透传到 ActionExtension(字段级覆盖等) */
|
|
22
|
+
action?: ActionExtension;
|
|
23
|
+
}
|
|
24
|
+
export interface LibraryWorkflowRecord {
|
|
25
|
+
/** Conductor 标准 WorkflowDef(含 version: number) */
|
|
26
|
+
def: WorkflowDef;
|
|
27
|
+
extension?: LibraryExtension;
|
|
28
|
+
/** 宿主侧可读版本号(如 "1.2.0"),仅展示用 */
|
|
29
|
+
versionLabel?: string;
|
|
30
|
+
/** 已下线 / 不建议新引用 */
|
|
31
|
+
deprecated?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface LibraryTaskRecord {
|
|
34
|
+
/** Conductor 标准 TaskDef */
|
|
35
|
+
def: RegisteredTaskDef;
|
|
36
|
+
extension?: LibraryExtension;
|
|
37
|
+
}
|
|
38
|
+
export interface LibraryListResult {
|
|
39
|
+
/** 每个 name 只需最新版本;可只含摘要(tasks 可为空) */
|
|
40
|
+
workflows: LibraryWorkflowRecord[];
|
|
41
|
+
tasks?: LibraryTaskRecord[];
|
|
42
|
+
}
|
|
43
|
+
export interface LibrarySearchOptions {
|
|
44
|
+
level?: WorkflowLevel;
|
|
45
|
+
/** 按业务域过滤(与 LibraryExtension.domain 同一取值) */
|
|
46
|
+
domain?: string;
|
|
47
|
+
limit?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface LibraryProvider {
|
|
50
|
+
/** 列出目录(每个流程的最新发布版本) */
|
|
51
|
+
list(signal?: AbortSignal): Promise<LibraryListResult>;
|
|
52
|
+
/** 取指定版本的完整定义;version 缺省为最新。找不到返回 null(不抛错) */
|
|
53
|
+
get(name: string, version?: number, signal?: AbortSignal): Promise<LibraryWorkflowRecord | null>;
|
|
54
|
+
/** 可选:服务端检索,大目录时由 AI 工具与选择器使用 */
|
|
55
|
+
search?(query: string, opts?: LibrarySearchOptions, signal?: AbortSignal): Promise<LibraryWorkflowRecord[]>;
|
|
56
|
+
}
|
|
57
|
+
/** 目录加载状态 */
|
|
58
|
+
export type LibraryLoadStatus = 'idle' | 'loading' | 'ready' | 'error';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LibraryCatalog, type LibraryCatalogSnapshot } from './catalog';
|
|
2
|
+
import type { LibraryProvider } from './types';
|
|
3
|
+
/** 订阅目录状态(catalog 为空时返回恒定的 idle 快照)。目录数据变化时返回新的快照引用。 */
|
|
4
|
+
export declare function useLibraryCatalogSnapshot(catalog: LibraryCatalog | undefined): LibraryCatalogSnapshot;
|
|
5
|
+
/**
|
|
6
|
+
* 让目录跟随 provider:provider 引用变化时重新加载;卸载 / 更换时 abort 进行中的请求。
|
|
7
|
+
* 每个 IDE 实例自己持有 catalog,这里只负责驱动它。
|
|
8
|
+
*/
|
|
9
|
+
export declare function useLibraryCatalogLoader(catalog: LibraryCatalog, provider: LibraryProvider | undefined): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 版本号规范化:统一为整数(Conductor 的版本就是整数)。
|
|
3
|
+
*
|
|
4
|
+
* | 输入 | 结果 |
|
|
5
|
+
* |---|---|
|
|
6
|
+
* | 整数 | 原样 |
|
|
7
|
+
* | 静态 "3" | 3,label "3" |
|
|
8
|
+
* | 静态 "1.2.0" 等 | 取 parseInt 主版本号,label 保留原串,warn = true |
|
|
9
|
+
*/
|
|
10
|
+
export interface NormalizedVersion {
|
|
11
|
+
version: number;
|
|
12
|
+
/** 原始可读版本串(仅当输入是字符串,或无法原样用作整数时保留) */
|
|
13
|
+
label?: string;
|
|
14
|
+
/** 是否发生了有损转换(调用方据此告警一次) */
|
|
15
|
+
lossy: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function normalizeVersion(input: number | string | undefined | null): NormalizedVersion;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { LibraryLoadStatus } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 流程库能力徽标的状态(纯函数,便于单测)。
|
|
4
|
+
*
|
|
5
|
+
* | 场景 | 状态 |
|
|
6
|
+
* |---|---|
|
|
7
|
+
* | 步骤未记录版本 | unpinned:沿用原定义,不显示任何提示 |
|
|
8
|
+
* | 库中有更高版本 | upgradable:「⬆ 有新版本 vN」,由用户确认差异后手动升级 |
|
|
9
|
+
* | 固定版本在库中不存在 / 已下线 | unavailable:「⚠ 版本不可用」,保持原样编译,不自动改版本 |
|
|
10
|
+
* | 目录加载中 / 加载失败 | pinned:不显示新版本提示,不影响编辑与编译 |
|
|
11
|
+
*/
|
|
12
|
+
export type LibraryBadgeState = {
|
|
13
|
+
kind: 'unpinned';
|
|
14
|
+
} | {
|
|
15
|
+
kind: 'pinned';
|
|
16
|
+
pinned: number;
|
|
17
|
+
} | {
|
|
18
|
+
kind: 'upgradable';
|
|
19
|
+
pinned: number;
|
|
20
|
+
latest: number;
|
|
21
|
+
} | {
|
|
22
|
+
kind: 'unavailable';
|
|
23
|
+
pinned: number;
|
|
24
|
+
reason: 'deprecated' | 'removed' | 'missing-version';
|
|
25
|
+
};
|
|
26
|
+
export interface LibraryBadgeInputs {
|
|
27
|
+
/** 步骤上记录的固定版本 */
|
|
28
|
+
pinned: number | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* 目录加载状态。`undefined` 表示没有流程库目录参与(仅有 `actions` prop),
|
|
31
|
+
* 此时沿用旧行为:只按动作上记录的最新版本提示升级,不判断「版本不可用」。
|
|
32
|
+
*/
|
|
33
|
+
catalogStatus: LibraryLoadStatus | undefined;
|
|
34
|
+
/** 库中(或动作上记录的)当前最新版本;不存在时为 undefined */
|
|
35
|
+
latest: {
|
|
36
|
+
version: number;
|
|
37
|
+
deprecated: boolean;
|
|
38
|
+
} | undefined;
|
|
39
|
+
/** 固定版本是否仍存在于库中(异步检查结果;undefined = 未知,按存在处理) */
|
|
40
|
+
pinnedExists: boolean | undefined;
|
|
41
|
+
}
|
|
42
|
+
export declare function resolveLibraryBadgeState(input: LibraryBadgeInputs): LibraryBadgeState;
|
|
43
|
+
/** 「版本不可用」的原因说明(用于徽标 tooltip) */
|
|
44
|
+
export declare function describeUnavailable(name: string, pinned: number, reason: 'deprecated' | 'removed' | 'missing-version'): string;
|
package/dist/product-launch.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<link rel="icon" type="image/svg+xml" href="
|
|
6
|
+
<link rel="icon" type="image/svg+xml" href="./logo.svg" />
|
|
7
7
|
<title>[Product Launch] Conductor Workflow IDE v1.0 GA · 让工作流编排与联调从 4.5 小时缩短至 12 分钟</title>
|
|
8
8
|
<style>
|
|
9
9
|
/* ==========================================================================
|
|
@@ -738,7 +738,7 @@
|
|
|
738
738
|
<!-- Sticky Launch Bar -->
|
|
739
739
|
<header class="launch-nav">
|
|
740
740
|
<div class="nav-left">
|
|
741
|
-
<a href="
|
|
741
|
+
<a href="./" class="brand-logo">
|
|
742
742
|
<svg width="26" height="26" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" style="flex-shrink:0;">
|
|
743
743
|
<defs>
|
|
744
744
|
<linearGradient id="nav-bg" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse">
|
|
@@ -772,7 +772,7 @@
|
|
|
772
772
|
<span style="color:var(--text-muted);">@yiyi_zhang/reactflow-ui · 下一代 AI 原生工作流编排与本地确定性沙箱 IDE</span>
|
|
773
773
|
</div>
|
|
774
774
|
<div class="nav-right">
|
|
775
|
-
<a href="
|
|
775
|
+
<a href="./app" class="ghost-btn">🎮 进入在线交互演练场</a>
|
|
776
776
|
<button class="cta-btn" onclick="document.getElementById('quickstart').scrollIntoView({behavior:'smooth'})">
|
|
777
777
|
30 秒极速接入 →
|
|
778
778
|
</button>
|