remnote-bridge 0.1.0 → 0.1.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/LICENSE +21 -0
- package/README.md +167 -0
- package/dist/cli/main.js +1 -1
- package/dist/mcp/index.js +1 -1
- package/package.json +11 -3
- package/dist/cli/commands/connect.d.ts +0 -12
- package/dist/cli/commands/disconnect.d.ts +0 -11
- package/dist/cli/commands/edit-rem.d.ts +0 -13
- package/dist/cli/commands/edit-tree.d.ts +0 -14
- package/dist/cli/commands/health.d.ts +0 -12
- package/dist/cli/commands/install-skill.d.ts +0 -6
- package/dist/cli/commands/read-context.d.ts +0 -20
- package/dist/cli/commands/read-globe.d.ts +0 -16
- package/dist/cli/commands/read-rem.d.ts +0 -16
- package/dist/cli/commands/read-tree.d.ts +0 -17
- package/dist/cli/commands/search.d.ts +0 -12
- package/dist/cli/config.d.ts +0 -55
- package/dist/cli/daemon/daemon.d.ts +0 -11
- package/dist/cli/daemon/dev-server.d.ts +0 -26
- package/dist/cli/daemon/pid.d.ts +0 -34
- package/dist/cli/daemon/send-request.d.ts +0 -24
- package/dist/cli/handlers/context-read-handler.d.ts +0 -18
- package/dist/cli/handlers/edit-handler.d.ts +0 -30
- package/dist/cli/handlers/globe-read-handler.d.ts +0 -17
- package/dist/cli/handlers/read-handler.d.ts +0 -16
- package/dist/cli/handlers/rem-cache.d.ts +0 -19
- package/dist/cli/handlers/tree-edit-handler.d.ts +0 -30
- package/dist/cli/handlers/tree-parser.d.ts +0 -95
- package/dist/cli/handlers/tree-read-handler.d.ts +0 -28
- package/dist/cli/main.d.ts +0 -7
- package/dist/cli/protocol.d.ts +0 -39
- package/dist/cli/server/config-server.d.ts +0 -26
- package/dist/cli/server/ws-server.d.ts +0 -68
- package/dist/cli/utils/output.d.ts +0 -11
- package/dist/mcp/daemon-client.d.ts +0 -31
- package/dist/mcp/index.d.ts +0 -7
- package/dist/mcp/instructions.d.ts +0 -1
- package/dist/mcp/resources/edit-tree-guide.d.ts +0 -1
- package/dist/mcp/resources/error-reference.d.ts +0 -1
- package/dist/mcp/resources/outline-format.d.ts +0 -1
- package/dist/mcp/resources/rem-object-fields.d.ts +0 -1
- package/dist/mcp/resources/separator-flashcard.d.ts +0 -1
- package/dist/mcp/tools/edit-tools.d.ts +0 -5
- package/dist/mcp/tools/infra-tools.d.ts +0 -5
- package/dist/mcp/tools/read-tools.d.ts +0 -5
- package/dist/mcp/types.d.ts +0 -12
- package/remnote-plugin/src/test-scripts/AGENTS.md +0 -46
- package/remnote-plugin/src/test-scripts/test-actions.ts +0 -230
- package/remnote-plugin/src/test-scripts/test-powerup-rendering.ts +0 -722
- package/remnote-plugin/src/test-scripts/test-rem-type-mapping.ts +0 -283
- package/remnote-plugin/src/test-scripts/test-richtext-builder.ts +0 -207
- package/remnote-plugin/src/test-scripts/test-richtext-matrix.ts +0 -332
- package/remnote-plugin/src/test-scripts/test-richtext-remaining.ts +0 -245
- package/remnote-plugin/src/test-scripts/test-rw-fields.ts +0 -399
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 纯动作方法 (W) 行为观察测试
|
|
3
|
-
*
|
|
4
|
-
* 测试流程:创建初态 → 暂停(截图初态)→ 执行动作 → 暂停(截图终态)
|
|
5
|
-
* 测试的动作方法:remove / indent / outdent / merge / collapse / expand / addToPortal
|
|
6
|
-
*/
|
|
7
|
-
import type { ReactRNPlugin, PluginRem as Rem } from '@remnote/plugin-sdk';
|
|
8
|
-
|
|
9
|
-
async function delay(ms: number) {
|
|
10
|
-
return new Promise((r) => setTimeout(r, ms));
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export async function runActionTests(plugin: ReactRNPlugin): Promise<void> {
|
|
14
|
-
const alreadyRan = await plugin.storage.getSession('action-test-v1-ran');
|
|
15
|
-
if (alreadyRan) {
|
|
16
|
-
console.log('[ACTION-TEST] 已运行过,跳过');
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
await plugin.storage.setSession('action-test-v1-ran', true);
|
|
20
|
-
|
|
21
|
-
console.log('[ACTION-TEST] ========== 开始纯动作行为观察 ==========');
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
// ── 找到 "mcp 测试" 文档 ──
|
|
25
|
-
const allRem = await plugin.rem.getAll();
|
|
26
|
-
let parentDoc: Rem | undefined;
|
|
27
|
-
for (const r of allRem) {
|
|
28
|
-
const t = r.text ? await plugin.richText.toString(r.text) : '';
|
|
29
|
-
if (t.trim() === 'mcp 测试') { parentDoc = r; break; }
|
|
30
|
-
}
|
|
31
|
-
if (!parentDoc) { console.error('[ACTION-TEST] 找不到 "mcp 测试"'); return; }
|
|
32
|
-
|
|
33
|
-
// ── 状态指示 Rem ──
|
|
34
|
-
const statusRem = await plugin.rem.createRem();
|
|
35
|
-
if (!statusRem) return;
|
|
36
|
-
await statusRem.setParent(parentDoc._id, 0);
|
|
37
|
-
await statusRem.setHighlightColor('Yellow');
|
|
38
|
-
await statusRem.setText(['⏳ 动作测试:正在创建初态...']);
|
|
39
|
-
await delay(300);
|
|
40
|
-
|
|
41
|
-
let pos = 1;
|
|
42
|
-
|
|
43
|
-
// ═══════════════════════════════════════════════════
|
|
44
|
-
// 创建所有初态 Rem
|
|
45
|
-
// ═══════════════════════════════════════════════════
|
|
46
|
-
|
|
47
|
-
// --- 1. remove() 测试 ---
|
|
48
|
-
const removeLabel = await plugin.rem.createRem();
|
|
49
|
-
if (!removeLabel) return;
|
|
50
|
-
await removeLabel.setParent(parentDoc._id, pos++);
|
|
51
|
-
await removeLabel.setText(['── 1. remove() 测试 ──']);
|
|
52
|
-
await delay(200);
|
|
53
|
-
|
|
54
|
-
const removeTarget = await plugin.rem.createRem();
|
|
55
|
-
if (!removeTarget) return;
|
|
56
|
-
await removeTarget.setParent(parentDoc._id, pos++);
|
|
57
|
-
await removeTarget.setHighlightColor('Red');
|
|
58
|
-
await removeTarget.setText(['❌ 这个 Rem 将被 remove() 删除']);
|
|
59
|
-
await delay(200);
|
|
60
|
-
|
|
61
|
-
// --- 2. indent() 测试 ---
|
|
62
|
-
const indentLabel = await plugin.rem.createRem();
|
|
63
|
-
if (!indentLabel) return;
|
|
64
|
-
await indentLabel.setParent(parentDoc._id, pos++);
|
|
65
|
-
await indentLabel.setText(['── 2. indent() 测试 ──']);
|
|
66
|
-
await delay(200);
|
|
67
|
-
|
|
68
|
-
const indentParent = await plugin.rem.createRem();
|
|
69
|
-
if (!indentParent) return;
|
|
70
|
-
await indentParent.setParent(parentDoc._id, pos++);
|
|
71
|
-
await indentParent.setText(['indent 的上方兄弟(将变成父级)']);
|
|
72
|
-
await delay(200);
|
|
73
|
-
|
|
74
|
-
const indentTarget = await plugin.rem.createRem();
|
|
75
|
-
if (!indentTarget) return;
|
|
76
|
-
await indentTarget.setParent(parentDoc._id, pos++);
|
|
77
|
-
await indentTarget.setHighlightColor('Orange');
|
|
78
|
-
await indentTarget.setText(['→ 这个 Rem 将被 indent()(向右缩进)']);
|
|
79
|
-
await delay(200);
|
|
80
|
-
|
|
81
|
-
// --- 3. outdent() 测试 ---
|
|
82
|
-
const outdentLabel = await plugin.rem.createRem();
|
|
83
|
-
if (!outdentLabel) return;
|
|
84
|
-
await outdentLabel.setParent(parentDoc._id, pos++);
|
|
85
|
-
await outdentLabel.setText(['── 3. outdent() 测试 ──']);
|
|
86
|
-
await delay(200);
|
|
87
|
-
|
|
88
|
-
const outdentWrapper = await plugin.rem.createRem();
|
|
89
|
-
if (!outdentWrapper) return;
|
|
90
|
-
await outdentWrapper.setParent(parentDoc._id, pos++);
|
|
91
|
-
await outdentWrapper.setText(['outdent 的当前父级']);
|
|
92
|
-
await delay(200);
|
|
93
|
-
|
|
94
|
-
const outdentTarget = await plugin.rem.createRem();
|
|
95
|
-
if (!outdentTarget) return;
|
|
96
|
-
await outdentTarget.setParent(outdentWrapper._id, 0); // 作为子级
|
|
97
|
-
await outdentTarget.setHighlightColor('Orange');
|
|
98
|
-
await outdentTarget.setText(['← 这个子 Rem 将被 outdent()(向左提升)']);
|
|
99
|
-
await delay(200);
|
|
100
|
-
|
|
101
|
-
// --- 4. merge() 测试 ---
|
|
102
|
-
const mergeLabel = await plugin.rem.createRem();
|
|
103
|
-
if (!mergeLabel) return;
|
|
104
|
-
await mergeLabel.setParent(parentDoc._id, pos++);
|
|
105
|
-
await mergeLabel.setText(['── 4. merge() 测试 ──']);
|
|
106
|
-
await delay(200);
|
|
107
|
-
|
|
108
|
-
const mergeKeep = await plugin.rem.createRem();
|
|
109
|
-
if (!mergeKeep) return;
|
|
110
|
-
await mergeKeep.setParent(parentDoc._id, pos++);
|
|
111
|
-
await mergeKeep.setHighlightColor('Green');
|
|
112
|
-
await mergeKeep.setText(['保留的 Rem(merge 目标)']);
|
|
113
|
-
await delay(200);
|
|
114
|
-
|
|
115
|
-
const mergeDisappear = await plugin.rem.createRem();
|
|
116
|
-
if (!mergeDisappear) return;
|
|
117
|
-
await mergeDisappear.setParent(parentDoc._id, pos++);
|
|
118
|
-
await mergeDisappear.setHighlightColor('Red');
|
|
119
|
-
await mergeDisappear.setText(['将被合并消失的 Rem']);
|
|
120
|
-
await delay(200);
|
|
121
|
-
|
|
122
|
-
// --- 5. collapse() / expand() 测试 ---
|
|
123
|
-
const collapseLabel = await plugin.rem.createRem();
|
|
124
|
-
if (!collapseLabel) return;
|
|
125
|
-
await collapseLabel.setParent(parentDoc._id, pos++);
|
|
126
|
-
await collapseLabel.setText(['── 5. collapse()/expand() 测试 ──']);
|
|
127
|
-
await delay(200);
|
|
128
|
-
|
|
129
|
-
const collapseParent = await plugin.rem.createRem();
|
|
130
|
-
if (!collapseParent) return;
|
|
131
|
-
await collapseParent.setParent(parentDoc._id, pos++);
|
|
132
|
-
await collapseParent.setHighlightColor('Blue');
|
|
133
|
-
await collapseParent.setText(['将被 collapse() 的父 Rem']);
|
|
134
|
-
await delay(200);
|
|
135
|
-
|
|
136
|
-
// 给它创建 3 个子级
|
|
137
|
-
for (let i = 1; i <= 3; i++) {
|
|
138
|
-
const child = await plugin.rem.createRem();
|
|
139
|
-
if (child) {
|
|
140
|
-
await child.setParent(collapseParent._id, i - 1);
|
|
141
|
-
await child.setText([`子级 ${i}(collapse 后应隐藏)`]);
|
|
142
|
-
await delay(150);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// --- 6. addToPortal() 测试 ---
|
|
147
|
-
const portalLabel = await plugin.rem.createRem();
|
|
148
|
-
if (!portalLabel) return;
|
|
149
|
-
await portalLabel.setParent(parentDoc._id, pos++);
|
|
150
|
-
await portalLabel.setText(['── 6. addToPortal() 测试 ──']);
|
|
151
|
-
await delay(200);
|
|
152
|
-
|
|
153
|
-
const portalTarget = await plugin.rem.createRem();
|
|
154
|
-
if (!portalTarget) return;
|
|
155
|
-
await portalTarget.setParent(parentDoc._id, pos++);
|
|
156
|
-
await portalTarget.setHighlightColor('Purple');
|
|
157
|
-
await portalTarget.setText(['将被添加到 Portal 的 Rem']);
|
|
158
|
-
await delay(200);
|
|
159
|
-
|
|
160
|
-
// 创建一个 Portal
|
|
161
|
-
const portal = await plugin.rem.createPortal();
|
|
162
|
-
if (portal) {
|
|
163
|
-
await portal.setParent(parentDoc._id, pos++);
|
|
164
|
-
await delay(200);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// ═══════════════════════════════════════════════════
|
|
168
|
-
// 初态就绪,暂停 15 秒供截图
|
|
169
|
-
// ═══════════════════════════════════════════════════
|
|
170
|
-
await statusRem.setText(['📸 初态就绪!请截图(15 秒后执行动作)']);
|
|
171
|
-
console.log('[ACTION-TEST] ===== 初态就绪,等待 15 秒截图 =====');
|
|
172
|
-
await delay(15000);
|
|
173
|
-
|
|
174
|
-
// ═══════════════════════════════════════════════════
|
|
175
|
-
// 逐个执行动作
|
|
176
|
-
// ═══════════════════════════════════════════════════
|
|
177
|
-
await statusRem.setText(['⚡ 正在执行动作...']);
|
|
178
|
-
|
|
179
|
-
// 1. remove()
|
|
180
|
-
console.log('[ACTION-TEST] 执行 remove()');
|
|
181
|
-
await removeTarget.remove();
|
|
182
|
-
await delay(500);
|
|
183
|
-
|
|
184
|
-
// 2. indent()
|
|
185
|
-
console.log('[ACTION-TEST] 执行 indent()');
|
|
186
|
-
await indentTarget.indent();
|
|
187
|
-
await delay(500);
|
|
188
|
-
|
|
189
|
-
// 3. outdent()
|
|
190
|
-
console.log('[ACTION-TEST] 执行 outdent()');
|
|
191
|
-
await outdentTarget.outdent();
|
|
192
|
-
await delay(500);
|
|
193
|
-
|
|
194
|
-
// 4. merge() — 把 mergeDisappear 合并到 mergeKeep
|
|
195
|
-
console.log('[ACTION-TEST] 执行 merge()');
|
|
196
|
-
await mergeKeep.merge(mergeDisappear._id);
|
|
197
|
-
await delay(500);
|
|
198
|
-
|
|
199
|
-
// 5. collapse()
|
|
200
|
-
console.log('[ACTION-TEST] 执行 collapse()');
|
|
201
|
-
await collapseParent.collapse();
|
|
202
|
-
await delay(500);
|
|
203
|
-
|
|
204
|
-
// 6. addToPortal()
|
|
205
|
-
if (portal) {
|
|
206
|
-
console.log('[ACTION-TEST] 执行 addToPortal()');
|
|
207
|
-
await portalTarget.addToPortal(portal);
|
|
208
|
-
await delay(500);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// ═══════════════════════════════════════════════════
|
|
212
|
-
// 动作执行完毕,暂停供截图
|
|
213
|
-
// ═══════════════════════════════════════════════════
|
|
214
|
-
await statusRem.setText(['📸 全部动作已执行!请截图观察终态']);
|
|
215
|
-
await statusRem.setHighlightColor('Green');
|
|
216
|
-
console.log('[ACTION-TEST] ===== 全部动作已执行,请截图终态 =====');
|
|
217
|
-
|
|
218
|
-
// 20 秒后执行 expand() 让 collapse 的效果能对比
|
|
219
|
-
await delay(20000);
|
|
220
|
-
console.log('[ACTION-TEST] 执行 expand()(恢复折叠)');
|
|
221
|
-
const refetchCollapse = await plugin.rem.findOne(collapseParent._id);
|
|
222
|
-
if (refetchCollapse) {
|
|
223
|
-
await refetchCollapse.expand();
|
|
224
|
-
}
|
|
225
|
-
await statusRem.setText(['📸 expand() 已执行,子级应重新可见']);
|
|
226
|
-
|
|
227
|
-
} catch (err) {
|
|
228
|
-
console.error('[ACTION-TEST] 出错:', err);
|
|
229
|
-
}
|
|
230
|
-
}
|