@ai_mind/ade-plugin-sdk 0.2.0 → 0.2.1
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/README.md +22 -5
- package/package.json +32 -8
- package/types/ade-types.d.ts +37 -0
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ main 和 renderer 是两个独立实例。它们不共享变量、服务注册
|
|
|
82
82
|
### 2.3 当前边界
|
|
83
83
|
|
|
84
84
|
- 功能区域是 ADE 布局中的 React 区域。注册区域不会创建 Git worktree。
|
|
85
|
-
-
|
|
85
|
+
- 插件区域与核心区域使用同一布局。用户可以移动插件区域。`registerView` 不能替换核心编辑器或聊天组件。
|
|
86
86
|
- UI 上下文只提供项目、worktree 和当前文件的路径。它不提供编辑器实例、未保存正文或选区。
|
|
87
87
|
- 读取文件得到磁盘内容。统计未保存草稿需要以后提供的编辑器扩展 API。
|
|
88
88
|
- API 添加项目或创建 worktree,不会自动切换界面的当前选择。
|
|
@@ -417,14 +417,31 @@ renderer 和 main 都可以 `registerCommand`。main 上下文没有 `executeCom
|
|
|
417
417
|
| `title` | 中文区域标题 |
|
|
418
418
|
| `component` | React 组件,接收 `PluginComponentProps` |
|
|
419
419
|
| `defaultVisible` | 初始可见状态;用户之后可以修改 |
|
|
420
|
-
| `defaultSize` |
|
|
421
|
-
| `minSize` / `maxSize` |
|
|
422
|
-
| `order` |
|
|
420
|
+
| `defaultSize` | 首次放置时参考的相对大小;不会覆盖用户保存的大小 |
|
|
421
|
+
| `minSize` / `maxSize` | 旧单行布局的尺寸字段;继续接受,但 ADE 0.47 起不作为停靠布局的硬限制 |
|
|
422
|
+
| `order` | 首次新增插件区域时的排列顺序,数值越小越靠前;不会重排已有区域 |
|
|
423
423
|
|
|
424
|
-
宿主为区域 ID 加上插件命名空间。不同插件可以使用相同局部 ID
|
|
424
|
+
宿主为区域 ID 加上插件命名空间。不同插件可以使用相同局部 ID。请保持区域 `id` 不变。用户保存的位置与这个 ID 关联。
|
|
425
425
|
|
|
426
426
|
view 没有 `when` 字段。需要空状态时,在组件中检查上下文。用户通过「视图」菜单控制区域可见性。
|
|
427
427
|
|
|
428
|
+
**ADE 0.47 起的区域布局:**项目、worktree、目录、编辑、对话、Aone 看板和插件区域使用同一停靠布局。项目与 worktree 是两个独立区域。用户可以调整每个区域的位置、顺序和大小。插件无需增加布局接口。按 SDK 0.2 开发的区域可以直接使用这个布局。
|
|
429
|
+
|
|
430
|
+
| 用户操作 | 操作方法 |
|
|
431
|
+
| --- | --- |
|
|
432
|
+
| 移动并分屏 | 拖拽区域标签到目标区域的左侧、右侧、上方或下方,确认预览后松开 |
|
|
433
|
+
| 合并为标签页 | 拖拽区域标签到目标区域的中间或标签栏 |
|
|
434
|
+
| 调整标签顺序 | 在同一标签栏中拖拽标签到所需位置 |
|
|
435
|
+
| 调整大小 | 拖拽区域之间的分隔线 |
|
|
436
|
+
| 隐藏或显示区域 | 点击区域标签的隐藏按钮,或使用标题栏「视图」菜单 |
|
|
437
|
+
| 恢复默认布局 | 打开「视图 → 恢复默认布局」,恢复区域的位置、顺序和大小;保留显示开关 |
|
|
438
|
+
|
|
439
|
+
ADE 自动保存分屏结构、标签顺序和区域大小。重新打开 ADE 后恢复布局。布局在全 ADE 共用,切换项目或 worktree 不会切换布局。停用插件时,ADE 保留区域的位置记录。重新启用插件后,区域恢复到保存的位置。
|
|
440
|
+
|
|
441
|
+
`defaultSize` 和 `order` 只用于首次放置。更新配置、重新安装插件或修改这些声明,不会强制重排用户已有的区域。`minSize` 和 `maxSize` 保留给旧客户端使用。新停靠布局允许用户自由调整大小,不把这些旧百分比作为限制。当前不提供浮动区域或独立窗口。
|
|
442
|
+
|
|
443
|
+
不要假定插件区域始终在右侧。让组件适应不同的宽度和高度。内容过长时,在区域内提供滚动。区域移动、标签切换和最大化不应触发新的业务任务。用户隐藏区域或停用插件时,组件可能卸载。持久业务数据按第 7 节保存。资源按第 9 节清理。
|
|
444
|
+
|
|
428
445
|
### 6.2 注册内置 slot
|
|
429
446
|
|
|
430
447
|
`ctx.registerSlot(name, registration)` 在指定位置追加组件。
|
package/package.json
CHANGED
|
@@ -1,23 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai_mind/ade-plugin-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "ADE 可信插件 SDK、类型与 React 插件构建工具",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "sepmini",
|
|
7
|
-
"engines": {
|
|
8
|
-
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=18"
|
|
9
|
+
},
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public",
|
|
12
|
+
"registry": "https://registry.npmjs.org/"
|
|
13
|
+
},
|
|
9
14
|
"type": "module",
|
|
10
15
|
"main": "./index.mjs",
|
|
11
16
|
"types": "./index.d.ts",
|
|
12
|
-
"exports": {
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./index.d.ts",
|
|
20
|
+
"default": "./index.mjs"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"bin": {
|
|
24
|
+
"ade-plugin-build": "./cli/build.mjs"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"index.mjs",
|
|
28
|
+
"index.d.ts",
|
|
29
|
+
"types",
|
|
30
|
+
"cli",
|
|
31
|
+
"README.md",
|
|
32
|
+
"LICENSE"
|
|
33
|
+
],
|
|
15
34
|
"scripts": {
|
|
16
35
|
"sync:types": "node scripts/sync-types.mjs",
|
|
17
36
|
"release:preflight": "node scripts/release-preflight.mjs",
|
|
18
37
|
"release:dry-run": "node scripts/release-preflight.mjs --dry-run",
|
|
19
38
|
"prepublishOnly": "node scripts/release-preflight.mjs"
|
|
20
39
|
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"esbuild": "^0.25.0"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"react": "^19.0.0",
|
|
45
|
+
"react-dom": "^19.0.0"
|
|
46
|
+
}
|
|
23
47
|
}
|
package/types/ade-types.d.ts
CHANGED
|
@@ -486,6 +486,41 @@ export interface AppSettings {
|
|
|
486
486
|
editor: EditorSettings;
|
|
487
487
|
agents: AgentSettings;
|
|
488
488
|
}
|
|
489
|
+
/** 可持久化的区域布局;只保存位置、比例和标签,不保存插件业务参数。 */
|
|
490
|
+
export interface AdeDockPanel {
|
|
491
|
+
id: string;
|
|
492
|
+
contentComponent: 'area';
|
|
493
|
+
renderer: 'always';
|
|
494
|
+
title?: string;
|
|
495
|
+
}
|
|
496
|
+
export interface AdeDockGroup {
|
|
497
|
+
id: string;
|
|
498
|
+
views: string[];
|
|
499
|
+
activeView?: string;
|
|
500
|
+
}
|
|
501
|
+
export type AdeDockNode = {
|
|
502
|
+
type: 'leaf';
|
|
503
|
+
data: AdeDockGroup;
|
|
504
|
+
size?: number;
|
|
505
|
+
} | {
|
|
506
|
+
type: 'branch';
|
|
507
|
+
data: AdeDockNode[];
|
|
508
|
+
size?: number;
|
|
509
|
+
};
|
|
510
|
+
export interface AdeDockLayout {
|
|
511
|
+
grid: {
|
|
512
|
+
root: AdeDockNode;
|
|
513
|
+
width: number;
|
|
514
|
+
height: number;
|
|
515
|
+
orientation: 'HORIZONTAL' | 'VERTICAL';
|
|
516
|
+
};
|
|
517
|
+
panels: Record<string, AdeDockPanel>;
|
|
518
|
+
activeGroup?: string;
|
|
519
|
+
}
|
|
520
|
+
export interface AdeWorkspaceLayout {
|
|
521
|
+
version: 1;
|
|
522
|
+
dock: AdeDockLayout;
|
|
523
|
+
}
|
|
489
524
|
/** 应用状态(原 state.json + localStorage ade-areas 的统一归宿) */
|
|
490
525
|
export interface AdeState {
|
|
491
526
|
projects: Project[];
|
|
@@ -493,6 +528,8 @@ export interface AdeState {
|
|
|
493
528
|
worktreeTabs: Record<string, WorktreeTabState>;
|
|
494
529
|
/** 插件功能区域的显示状态,以插件 ID 和区域 ID 组合为 key。 */
|
|
495
530
|
pluginAreasVisible?: Record<string, boolean>;
|
|
531
|
+
/** 完整布局保留隐藏及暂不可用的区域;null 表示使用默认布局。 */
|
|
532
|
+
workspaceLayout?: AdeWorkspaceLayout | null;
|
|
496
533
|
}
|
|
497
534
|
/** ~/.ade/settings.json 的完整结构 */
|
|
498
535
|
export interface AdeSettingsFile {
|