@lokvis/runtime 0.2.0-beta.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.
Files changed (62) hide show
  1. package/LICENSE +21 -0
  2. package/dist/asset-store.d.ts +5 -2
  3. package/dist/asset-store.d.ts.map +1 -1
  4. package/dist/asset-store.js +93 -3
  5. package/dist/asset-store.js.map +1 -1
  6. package/dist/batch-processor.d.ts +200 -0
  7. package/dist/batch-processor.d.ts.map +1 -0
  8. package/dist/batch-processor.js +505 -0
  9. package/dist/batch-processor.js.map +1 -0
  10. package/dist/degradation.d.ts +109 -0
  11. package/dist/degradation.d.ts.map +1 -0
  12. package/dist/degradation.js +184 -0
  13. package/dist/degradation.js.map +1 -0
  14. package/dist/history-store.d.ts +76 -0
  15. package/dist/history-store.d.ts.map +1 -0
  16. package/dist/history-store.js +109 -0
  17. package/dist/history-store.js.map +1 -0
  18. package/dist/idb-asset-store.js +1 -1
  19. package/dist/idb-asset-store.js.map +1 -1
  20. package/dist/index.d.ts +5 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +5 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/memory-guard.d.ts +109 -0
  25. package/dist/memory-guard.d.ts.map +1 -0
  26. package/dist/memory-guard.js +161 -0
  27. package/dist/memory-guard.js.map +1 -0
  28. package/dist/opfs-asset-store.d.ts +35 -4
  29. package/dist/opfs-asset-store.d.ts.map +1 -1
  30. package/dist/opfs-asset-store.js +94 -10
  31. package/dist/opfs-asset-store.js.map +1 -1
  32. package/dist/runtime.d.ts +130 -6
  33. package/dist/runtime.d.ts.map +1 -1
  34. package/dist/runtime.js +404 -16
  35. package/dist/runtime.js.map +1 -1
  36. package/dist/types.d.ts +106 -1
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/worker-host.d.ts +13 -0
  39. package/dist/worker-host.d.ts.map +1 -1
  40. package/dist/worker-host.js +47 -15
  41. package/dist/worker-host.js.map +1 -1
  42. package/dist/worker-protocol.d.ts +10 -1
  43. package/dist/worker-protocol.d.ts.map +1 -1
  44. package/dist/worker-protocol.js.map +1 -1
  45. package/dist/workflow-builder.d.ts +124 -0
  46. package/dist/workflow-builder.d.ts.map +1 -0
  47. package/dist/workflow-builder.js +240 -0
  48. package/dist/workflow-builder.js.map +1 -0
  49. package/package.json +3 -2
  50. package/src/asset-store.ts +103 -3
  51. package/src/batch-processor.ts +699 -0
  52. package/src/degradation.ts +241 -0
  53. package/src/history-store.ts +159 -0
  54. package/src/idb-asset-store.ts +1 -1
  55. package/src/index.ts +5 -0
  56. package/src/memory-guard.ts +202 -0
  57. package/src/opfs-asset-store.ts +118 -10
  58. package/src/runtime.ts +445 -12
  59. package/src/types.ts +107 -0
  60. package/src/worker-host.ts +56 -16
  61. package/src/worker-protocol.ts +11 -1
  62. package/src/workflow-builder.ts +303 -0
package/dist/runtime.js CHANGED
@@ -8,7 +8,11 @@ import { createEventBus } from './event-bus.js';
8
8
  import { createAssetStore, createMemoryAssetStore, generateId, } from './asset-store.js';
9
9
  import { CapabilityRegistry } from './capability-registry.js';
10
10
  import { WorkflowExecutor } from './executor.js';
11
+ import { MAX_WORKFLOW_STEPS } from './workflow-builder.js';
11
12
  import { HistoryStack } from './history.js';
13
+ import { createHistoryStore, } from './history-store.js';
14
+ import { BatchProcessor } from './batch-processor.js';
15
+ import { MemoryGuard, DEFAULT_MEMORY_BUDGET } from './memory-guard.js';
12
16
  export const RUNTIME_VERSION = '0.1.0';
13
17
  /** 默认历史记录上限 */
14
18
  const DEFAULT_MAX_HISTORY = 10;
@@ -48,13 +52,6 @@ function estimateSourceSize(source) {
48
52
  return source.blob.size;
49
53
  return 0;
50
54
  }
51
- /**
52
- * 用配额校验包裹 AssetStore:import/create 超限抛 QuotaExceededError(W2.9)。
53
- * 内部维护运行中的已用字节数,remove 时回退。
54
- *
55
- * 并发安全:import/create/remove 通过 promise 链串行化,避免 check 与 update
56
- * 之间的 TOCTOU 窗口导致两个并发操作都基于旧 usage 通过校验或回退。
57
- */
58
55
  function wrapAssetStoreWithQuota(inner, quota) {
59
56
  let usage = 0;
60
57
  let initialized = false;
@@ -110,12 +107,23 @@ function wrapAssetStoreWithQuota(inner, quota) {
110
107
  async create(blob, metadata, type) {
111
108
  return runExclusive(async () => {
112
109
  await ensureInit();
113
- assertQuota(blob.size);
110
+ // m8 修复:配额预检与累加使用同一口径(metadata.size),
111
+ // 避免 blob.size 与 metadata.size 漂移导致账面与预检不一致
112
+ assertQuota(metadata.size);
114
113
  const asset = await inner.create(blob, metadata, type);
115
114
  usage += asset.metadata.size;
116
115
  return asset;
117
116
  });
118
117
  },
118
+ /**
119
+ * m6 优化:暴露配额包装器内部维护的 usage(O(1)),
120
+ * 供 runtime.getStorageUsage 优先使用,避免每次 O(n) 全量 listAssets。
121
+ * 下划线前缀表"内部 API",非 AssetStore 接口一部分。
122
+ * 若 ensureInit 未完成,返回 -1 表示"未就绪",调用方 fallback 到 listAssets。
123
+ */
124
+ _getQuotaUsage() {
125
+ return initialized ? usage : -1;
126
+ },
119
127
  };
120
128
  }
121
129
  /** Runtime 实现类 */
@@ -124,19 +132,69 @@ export class LokvisRuntimeImpl {
124
132
  eventBus;
125
133
  config;
126
134
  _status = 'idle';
135
+ /**
136
+ * AssetStore 实例。类型为 QuotaAwareAssetStore —— 由 wrapAssetStoreWithQuota
137
+ * 返回(在构造函数中无条件包裹,即使是注入的 assetStore 也会被包装以提供配额校验)。
138
+ * 保留 _getQuotaUsage 内部 API 供 getStorageUsage O(1) 读取 usage。
139
+ * 注:外部注入的 assetStore 在 wrapAssetStoreWithQuota 中同样被包装,
140
+ * 因此所有路径下 this.assetStore 都是 QuotaAwareAssetStore。
141
+ */
127
142
  assetStore;
128
143
  capabilityRegistry;
129
144
  executor;
145
+ memoryGuard;
146
+ batchProcessor;
130
147
  /**
131
148
  * 每个工作流独立的 HistoryStack。
132
- * 注意:历史栈仅在内存中,刷新页面后丢失(资产可能仍存于 OPFS/IDB,
133
- * 但因元数据/索引未持久化而无法恢复)—— 跨会话恢复属 W3 范畴。
149
+ * W7.2 起,栈快照(entries + cursor)连同 initialInputs / currentOutputs
150
+ * 通过 historyStore 持久化到 IndexedDB,刷新后可恢复。
134
151
  */
135
152
  historyStacks = new Map();
136
153
  /** 记录每个工作流的初始输入 AssetId(undo 回到初始时使用) */
137
154
  initialInputsMap = new Map();
138
155
  /** 记录每个工作流当前的输出 AssetId(undo/redo 后切换"当前") */
139
156
  currentOutputsMap = new Map();
157
+ /**
158
+ * 历史持久化存储(W7.2)。undefined 时退化为仅内存历史(刷新后丢失)。
159
+ * 由 createRuntime 在 enableIndexedDB 时自动创建,或通过 config 注入。
160
+ */
161
+ historyStore;
162
+ /**
163
+ * 加载持久化历史快照期间的守卫标志。
164
+ * restore() 会触发 onChanged → persistHistory,此时跳过写回,
165
+ * 避免把刚读出的数据又重复写入(冗余 IO + 潜在覆盖竞态)。
166
+ */
167
+ isLoadingHistory = false;
168
+ /**
169
+ * 加载期间被 onChanged 标记为"dirty"的工作流 ID 集合(W7.2 review 修复)。
170
+ *
171
+ * 原实现:isLoadingHistory 期间所有 persistHistory 调用直接 return,
172
+ * 若加载期间有其他来源(run / undo / 外部事件)触发 onChanged,
173
+ * 这些变更会被永久丢弃(加载结束后不会重发 persist)。
174
+ *
175
+ * 现策略:加载期间被跳过的 persistHistory 把 workflowId 加入此 Set,
176
+ * loadPersistedHistory 结束后逐个补 persist,确保不丢变更。
177
+ * (restore() 自身触发的 onChanged 也加入,但其内容与刚读出的相同,
178
+ * 补 persist 仅多一次等价写回,幂等无害。)
179
+ */
180
+ dirtyDuringLoad = new Set();
181
+ /**
182
+ * 元数据读取器注册表(W7.3/7.4 长期方案:MetadataReader 依赖反转)。
183
+ *
184
+ * Plugin(plugin-image)通过 PluginContext.registerMetadataReader 注册
185
+ * 查询函数(如 'image.read-exif'),Runtime 持有引用并按名调用。
186
+ * 解决了 readExif(Blob→ExifData)不符合 Engine 层 Blob↔Blob 纯函数约束、
187
+ * 也不符合 CapabilityImplementation Asset[]→Asset[] 契约的问题。
188
+ * UI 经 runtime.readAssetExif 间接调用,不直接依赖 plugin/engine。
189
+ */
190
+ metadataReaders = new Map();
191
+ /**
192
+ * 注册元数据读取器(由 PluginContext.registerMetadataReader 转发)。
193
+ * 下划线前缀表示内部 API,不暴露在 LokvisRuntime 公开接口。
194
+ */
195
+ _registerMetadataReader(name, reader) {
196
+ this.metadataReaders.set(name, reader);
197
+ }
140
198
  constructor(config = {}) {
141
199
  this.config = {
142
200
  enableOpfs: config.enableOpfs ?? true,
@@ -144,11 +202,26 @@ export class LokvisRuntimeImpl {
144
202
  storageQuota: config.storageQuota ?? 1024 * 1024 * 1024, // 1GB
145
203
  enableLog: config.enableLog ?? true,
146
204
  engineStrategy: config.engineStrategy ?? 'first',
205
+ isPro: config.isPro ?? false,
206
+ memoryBudget: config.memoryBudget ?? DEFAULT_MEMORY_BUDGET,
147
207
  };
148
208
  this.eventBus = createEventBus();
149
209
  // 注入或降级到内存 store;随后用配额校验包裹(W2.9)
210
+ // M6 修复:enableOpfs/enableIndexedDB 仅在 createLokvis()/createRuntime
211
+ // 工厂中生效(工厂按 flag 调 createAssetStore 选择 OPFS→IDB→Memory)。
212
+ // 直接 new LokvisRuntimeImpl 且未传 assetStore 时,无法同步等待 createAssetStore,
213
+ // 兜底用 Memory store;若用户显式期望持久化,提示其用 createLokvis()。
214
+ if (!config.assetStore && (this.config.enableOpfs || this.config.enableIndexedDB)) {
215
+ console.warn('[lokvis] LokvisRuntimeImpl constructed without assetStore: ' +
216
+ 'enableOpfs/enableIndexedDB flags are ignored. ' +
217
+ 'Use createLokvis() to respect these flags, or pass an assetStore explicitly.');
218
+ }
150
219
  const rawStore = config.assetStore ?? createMemoryAssetStore();
151
220
  this.assetStore = wrapAssetStoreWithQuota(rawStore, this.config.storageQuota);
221
+ // W7.2 历史持久化:优先用注入的 historyStore;否则在 createRuntime 工厂中
222
+ // 由 createHistoryStore 自动创建并注入。直接 new Impl 时为 undefined,
223
+ // 历史退化为仅内存模式(与 W2 行为一致)。
224
+ this.historyStore = config.historyStore;
152
225
  this.capabilityRegistry = new CapabilityRegistry(this.config.engineStrategy);
153
226
  this.executor = new WorkflowExecutor({
154
227
  assetStore: this.assetStore,
@@ -156,6 +229,20 @@ export class LokvisRuntimeImpl {
156
229
  eventBus: this.eventBus,
157
230
  enableLog: this.config.enableLog,
158
231
  });
232
+ // W3.3 MemoryGuard:追踪中间结果占用,达到 high 阈值时建议 OPFS 溢出。
233
+ // BatchProcessor 据此动态收缩并发槽位(W6.1)。
234
+ this.memoryGuard = new MemoryGuard({
235
+ budget: this.config.memoryBudget,
236
+ assetStore: this.assetStore,
237
+ });
238
+ // W6.1 BatchProcessor:把 W5 playground 的并发/进度/重试逻辑下沉到 runtime。
239
+ // 注入 this(实现 LokvisRuntime 接口),不直接依赖 LokvisRuntimeImpl 避免循环引用。
240
+ this.batchProcessor = new BatchProcessor({
241
+ runtime: this,
242
+ eventBus: this.eventBus,
243
+ isPro: this.config.isPro,
244
+ memoryGuard: this.memoryGuard,
245
+ });
159
246
  // 监听 node:finished 事件,自动 append 到 HistoryStack
160
247
  this.eventBus.on('node:finished', (event) => {
161
248
  this.recordHistoryFromNodeEvent(event);
@@ -164,6 +251,12 @@ export class LokvisRuntimeImpl {
164
251
  get status() {
165
252
  return this._status;
166
253
  }
254
+ get isPro() {
255
+ return this.config.isPro;
256
+ }
257
+ get batch() {
258
+ return this.batchProcessor;
259
+ }
167
260
  // ─── 工作流执行 ──────────────────────────────────────
168
261
  async run(workflow, inputs, options) {
169
262
  this._status = 'running';
@@ -172,7 +265,24 @@ export class LokvisRuntimeImpl {
172
265
  // 在入口处暴露,错误信息精准(如 "Edge from __input__ references a
173
266
  // reserved sentinel id"),而不是被 executor 拓扑排序误判为含糊的 "cycle"。
174
267
  // 三层防御的第 3 层(前两层:executor 防御性校验 + 单元测试覆盖)。
175
- const validation = validateWorkflow(workflow);
268
+ //
269
+ // W10.2/W10.3 增强:
270
+ // - resolveCapability 回调注入 capability 兼容性校验(相邻节点
271
+ // outputTypes 与 inputTypes 必须有交集;输入/输出节点类型与
272
+ // workflow.inputs/outputs.type 兼容)
273
+ // - maxSteps: 5(由 MAX_WORKFLOW_STEPS 常量定义,M1 MVP 约束)
274
+ const validation = validateWorkflow(workflow, {
275
+ maxSteps: MAX_WORKFLOW_STEPS,
276
+ resolveCapability: (name) => {
277
+ const cap = this.capabilityRegistry.get(name);
278
+ if (!cap)
279
+ return undefined;
280
+ return {
281
+ inputTypes: cap.inputTypes,
282
+ outputTypes: cap.outputTypes,
283
+ };
284
+ },
285
+ });
176
286
  if (!validation.success) {
177
287
  this._status = 'error';
178
288
  const error = validation.error.issues
@@ -267,6 +377,13 @@ export class LokvisRuntimeImpl {
267
377
  // 避免对从未运行过的工作流创建空栈:先查 Map,无则直接返回空数组
268
378
  return this.historyStacks.get(workflowId)?.list() ?? [];
269
379
  }
380
+ async getHistoryState(workflowId) {
381
+ const stack = this.historyStacks.get(workflowId);
382
+ if (!stack)
383
+ return { entries: [], cursor: -1 };
384
+ const snap = stack.snapshot();
385
+ return { entries: snap.entries, cursor: snap.cursor };
386
+ }
270
387
  async undo(workflowId) {
271
388
  const stack = this.getOrCreateHistoryStack(workflowId);
272
389
  const result = stack.undo();
@@ -289,6 +406,18 @@ export class LokvisRuntimeImpl {
289
406
  this.currentOutputsMap.set(workflowId, entry.outputs);
290
407
  // history:changed 事件由 stack 的 onChanged 回调统一发射,避免双发
291
408
  }
409
+ async jumpTo(workflowId, index) {
410
+ const stack = this.getOrCreateHistoryStack(workflowId);
411
+ const result = stack.jumpTo(index);
412
+ if (result === undefined)
413
+ return; // 越界或游标未变,无操作
414
+ // 同 undo/redo:更新当前输出
415
+ const newCurrent = result === null
416
+ ? (this.initialInputsMap.get(workflowId) ?? [])
417
+ : result.outputs;
418
+ this.currentOutputsMap.set(workflowId, newCurrent);
419
+ // history:changed 事件由 stack 的 onChanged 回调统一发射
420
+ }
292
421
  // ─── Asset 管理 ──────────────────────────────────────
293
422
  async importAsset(source) {
294
423
  // 修复 review 报告:原实现直接透传 source 给 assetStore.import,
@@ -327,13 +456,49 @@ export class LokvisRuntimeImpl {
327
456
  async exportAsset(id, format) {
328
457
  const asset = await this.getAsset(id);
329
458
  const blob = await this.assetStore.getBlob(asset.blob);
459
+ // OPFS 存储后端用 .bin 扩展名存储,读取时 fileHandle.getFile() 返回的
460
+ // File.type 可能为空字符串或 'application/octet-stream'(浏览器对未知扩展名
461
+ // 的默认兜底 MIME)。这两种情况都会导致 Object URL 的 Content-Type 退化,
462
+ // 下载时文件扩展名变成 .octet-stream。
463
+ // 用 asset metadata 的 mimeType 补全 Blob type(IDB/Memory 后端不受影响)。
464
+ const OPFS_FALLBACK_MIME = 'application/octet-stream';
465
+ const mimeType = !blob.type || blob.type === OPFS_FALLBACK_MIME
466
+ ? asset.metadata.mimeType
467
+ : blob.type;
468
+ // 关键:用 arrayBuffer() 显式读取数据到内存,再构造新 Blob。
469
+ // 不能用 new Blob([blob]) —— 浏览器实现中它可能延迟引用底层 OPFS 文件,
470
+ // WatermarkBatchTool 在 export 后立即 removeAsset 删除 OPFS 文件,
471
+ // 导致后续 downloadBlob 读取悬空引用失败("check internet connection")。
472
+ // arrayBuffer() 立即拉取数据,确保返回的 Blob 完全独立于底层存储。
473
+ const buffer = await blob.arrayBuffer();
474
+ const exported = new Blob([buffer], { type: mimeType });
330
475
  this.eventBus.emit({
331
476
  type: 'export:completed',
332
477
  assetId: id,
333
478
  format: format ?? asset.metadata.format,
334
479
  size: blob.size,
335
480
  });
336
- return blob;
481
+ return exported;
482
+ }
483
+ /**
484
+ * 读取 image 资产的 EXIF 元数据(W7.3/7.4 长期方案:MetadataReader 依赖反转)。
485
+ *
486
+ * Runtime 持有 plugin-image 通过 ctx.registerMetadataReader('image.read-exif', fn)
487
+ * 注册的 reader 引用,按名调用。reader 内部调 readExifFromBlob(exifr)。
488
+ * Plugin 未安装时优雅降级返回 null(不抛错)。
489
+ *
490
+ * 架构决策:readExif 是 Blob→ExifData 查询,不符合 Engine 层 Blob↔Blob 纯函数
491
+ * 约束,也不符合 Capability Asset[]→Asset[] 契约,故走 MetadataReader 机制,
492
+ * 不进 engine-image、不走 Capability execute。
493
+ */
494
+ async readAssetExif(id) {
495
+ const asset = await this.getAsset(id);
496
+ if (asset.type !== 'image')
497
+ return null;
498
+ const reader = this.metadataReaders.get('image.read-exif');
499
+ if (!reader)
500
+ return null; // Plugin 未安装,优雅降级
501
+ return reader(asset);
337
502
  }
338
503
  async removeAsset(id) {
339
504
  await this.assetStore.remove(id);
@@ -342,6 +507,22 @@ export class LokvisRuntimeImpl {
342
507
  async listAssets() {
343
508
  return this.assetStore.list();
344
509
  }
510
+ async getStorageUsage() {
511
+ // m6 优化:优先用配额包装器内部维护的 usage(O(1),import/create/remove
512
+ // 时增量更新),避免每次 O(n) 全量 listAssets 影响 StatusBar 刷新。
513
+ // 包装器未就绪(ensureInit 未完成)返回 -1 时,fallback 到 listAssets
514
+ // 实时计算(source of truth,与 W6.4 富元数据一致)。
515
+ //
516
+ // 类型说明:assetStore 字段类型为 QuotaAwareAssetStore(含 _getQuotaUsage),
517
+ // 由 wrapAssetStoreWithQuota 返回。无需重新断言 —— 类型信息未丢失。
518
+ const cached = this.assetStore._getQuotaUsage();
519
+ if (cached >= 0) {
520
+ return { usage: cached, quota: this.config.storageQuota };
521
+ }
522
+ const all = await this.assetStore.list();
523
+ const usage = all.reduce((sum, a) => sum + a.metadata.size, 0);
524
+ return { usage, quota: this.config.storageQuota };
525
+ }
345
526
  // ─── 能力查询 ────────────────────────────────────────
346
527
  async capabilities() {
347
528
  return this.capabilityRegistry.list();
@@ -398,15 +579,49 @@ export class LokvisRuntimeImpl {
398
579
  ],
399
580
  };
400
581
  }
401
- // ─── 内部 API(供 Plugin SDK 使用) ──────────────────
402
- /** 获取 AssetStore(内部用) */
582
+ // ─── 插件安装 ────────────────────────────────────────
583
+ /**
584
+ * 在本 Runtime 上安装一个插件(实现 LokvisRuntime.installPlugin 接口)。
585
+ *
586
+ * 步骤:
587
+ * 1. 注册能力声明(plugin.config.capabilities → CapabilityRegistry)
588
+ * 2. 构造受限 PluginContext(只暴露受限 Runtime API + 注册器 + 日志)
589
+ * 3. 调用 plugin.install(ctx),让插件注册 CapabilityImplementation
590
+ * 4. 发射 `plugin:loaded` 事件
591
+ *
592
+ * 不吞错:plugin.install 抛出的错误原样上抛,由 SDK 包成 PluginLoadError。
593
+ *
594
+ * 此前 SDK 通过 `instanceof LokvisRuntimeImpl` + `_getAssetStore()` /
595
+ * `_getCapabilityRegistry()` 反向访问内部依赖,现改为公共接口调用,
596
+ * SDK 不再依赖具体实现类。
597
+ */
598
+ async installPlugin(plugin) {
599
+ for (const capability of plugin.config.capabilities) {
600
+ this.capabilityRegistry.registerCapability(capability);
601
+ }
602
+ const ctx = createPluginContext(plugin.config.name, this);
603
+ await plugin.install(ctx);
604
+ this.eventBus.emit({
605
+ type: 'plugin:loaded',
606
+ name: plugin.config.name,
607
+ version: plugin.config.version,
608
+ });
609
+ }
610
+ // ─── 内部 API(供测试使用,SDK 不再调用) ──────────────
611
+ /** 获取 AssetStore(仅测试用,SDK 通过 installPlugin 间接访问) */
403
612
  _getAssetStore() {
404
613
  return this.assetStore;
405
614
  }
406
- /** 获取 CapabilityRegistry(内部用) */
615
+ /** 获取 CapabilityRegistry(仅测试用,SDK 通过 installPlugin 间接访问) */
407
616
  _getCapabilityRegistry() {
408
617
  return this.capabilityRegistry;
409
618
  }
619
+ /**
620
+ * 获取 MemoryGuard(内部用,供集成测试驱动内存压力验证 BatchProcessor 收缩)。
621
+ */
622
+ _getMemoryGuard() {
623
+ return this.memoryGuard;
624
+ }
410
625
  /** 获取工作流当前输出 AssetId(undo/redo 后的"当前"状态,内部用) */
411
626
  _getCurrentOutputs(workflowId) {
412
627
  return this.currentOutputsMap.get(workflowId) ?? [];
@@ -461,6 +676,8 @@ export class LokvisRuntimeImpl {
461
676
  entries,
462
677
  currentIndex,
463
678
  });
679
+ // W7.2:持久化快照到 IndexedDB(加载期间跳过,避免冗余写回)
680
+ void this.persistHistory(wfId);
464
681
  },
465
682
  };
466
683
  stack = new HistoryStack(workflowId, stackConfig);
@@ -500,6 +717,106 @@ export class LokvisRuntimeImpl {
500
717
  // 更新当前输出为该 node 的 outputs
501
718
  this.currentOutputsMap.set(event.workflowId, outputs);
502
719
  }
720
+ // ─── 私有:历史持久化(W7.2) ────────────────────────
721
+ /**
722
+ * 把指定工作流的当前历史状态快照写入 historyStore。
723
+ *
724
+ * 时序修复:currentOutputs 从 stack snapshot 派生(cursor === -1 用
725
+ * initialInputs,否则用 entries[cursor].outputs),而非读 currentOutputsMap。
726
+ * 原因:onChanged 在 undo/redo/jumpTo/run 内部同步触发时,map 尚未更新,
727
+ * 会读到旧值(例如 run 后 append 触发 onChanged,但 currentOutputsMap 在
728
+ * append 返回后才 set)。
729
+ *
730
+ * 竞态安全:多个 fire-and-forget save 的 IDB readwrite 事务由 IndexedDB
731
+ * 引擎按发起顺序串行化(同 object store 不重叠),无需应用层加链。
732
+ *
733
+ * - entries 为空时改为 delete,避免残留空记录(reset/clear 后自然清理)
734
+ * - 加载期间(isLoadingHistory=true)跳过写回,但把 workflowId 加入
735
+ * dirtyDuringLoad,loadPersistedHistory 结束后补 persist(避免丢变更)
736
+ */
737
+ async persistHistory(workflowId) {
738
+ if (!this.historyStore)
739
+ return;
740
+ if (this.isLoadingHistory) {
741
+ this.dirtyDuringLoad.add(workflowId);
742
+ return;
743
+ }
744
+ // fire-and-forget 调用方用 `void this.persistHistory(...)`,故内部必须
745
+ // try/catch,否则 IDB 故障(数据库关闭 / quota exceeded)会变成 unhandled
746
+ // promise rejection。历史持久化是非关键路径,失败只 warn 不抛。
747
+ try {
748
+ const stack = this.historyStacks.get(workflowId);
749
+ // 栈已从内存移除(disposeWorkflow / enforceHistoryStacksLimit 的 reset+delete
750
+ // 后异步到达此处)→ 删除持久化记录,避免孤儿数据跨会话残留
751
+ if (!stack) {
752
+ await this.historyStore.delete(workflowId);
753
+ return;
754
+ }
755
+ const { entries, cursor } = stack.snapshot();
756
+ if (entries.length === 0) {
757
+ await this.historyStore.delete(workflowId);
758
+ return;
759
+ }
760
+ // 从 snapshot 派生 currentOutputs,而非读 currentOutputsMap —— 后者在
761
+ // onChanged 触发时尚未更新(见方法文档注释)
762
+ const initialInputs = this.initialInputsMap.get(workflowId) ?? [];
763
+ const currentOutputs = cursor === -1
764
+ ? initialInputs
765
+ : (entries[cursor]?.outputs ?? initialInputs);
766
+ await this.historyStore.save({
767
+ workflowId,
768
+ entries,
769
+ cursor,
770
+ initialInputs,
771
+ currentOutputs,
772
+ updatedAt: Date.now(),
773
+ });
774
+ }
775
+ catch (err) {
776
+ console.warn(`[lokvis] persistHistory failed for workflow ${workflowId}:`, err);
777
+ }
778
+ }
779
+ /**
780
+ * 从 historyStore 预加载所有持久化的历史快照,恢复到内存。
781
+ *
782
+ * 由 createRuntime 工厂在构造完 impl 后调用一次。加载期间置 isLoadingHistory
783
+ * 守卫,使 restore() 触发的 onChanged → persistHistory 跳过冗余写回;
784
+ * 但被跳过的 workflowId 记入 dirtyDuringLoad,加载结束后补 persist,
785
+ * 避免加载期间其他来源(run / undo / 外部事件)的变更被永久丢弃。
786
+ *
787
+ * 注意:restore 会 emit history:changed 事件,但此时 UI 尚未订阅
788
+ * (runtime-slice.init 在 createRuntime resolve 后才订阅),故无副作用。
789
+ *
790
+ * 非 LokvisRuntime 接口的一部分,仅为 impl 的初始化钩子(工厂调用)。
791
+ */
792
+ async loadPersistedHistory() {
793
+ if (!this.historyStore)
794
+ return;
795
+ let records = [];
796
+ this.isLoadingHistory = true;
797
+ try {
798
+ records = await this.historyStore.loadAll();
799
+ for (const record of records) {
800
+ // 跳过空记录(理论上 save 已删除,双重防御)
801
+ if (record.entries.length === 0)
802
+ continue;
803
+ const stack = this.getOrCreateHistoryStack(record.workflowId);
804
+ stack.restore({ entries: record.entries, cursor: record.cursor });
805
+ this.initialInputsMap.set(record.workflowId, record.initialInputs);
806
+ this.currentOutputsMap.set(record.workflowId, record.currentOutputs);
807
+ }
808
+ }
809
+ finally {
810
+ this.isLoadingHistory = false;
811
+ // 加载期间被跳过的 persist 补发:逐个 await 保证顺序
812
+ // 复制一份避免补 persist 过程中新触发 onChanged → dirtyDuringLoad 死循环
813
+ const pending = [...this.dirtyDuringLoad];
814
+ this.dirtyDuringLoad.clear();
815
+ for (const wfId of pending) {
816
+ await this.persistHistory(wfId);
817
+ }
818
+ }
819
+ }
503
820
  }
504
821
  /**
505
822
  * 创建 Runtime 实例(W2.8 + W2.9)。
@@ -512,7 +829,78 @@ export class LokvisRuntimeImpl {
512
829
  export async function createRuntime(config) {
513
830
  const assetStore = config?.assetStore ??
514
831
  (await createAssetStore({ preferOpfs: config?.enableOpfs ?? true }));
515
- return new LokvisRuntimeImpl({ ...config, assetStore });
832
+ // W7.2:历史持久化 —— 优先用注入的 historyStore;否则在 enableIndexedDB 时
833
+ // 通过 createHistoryStore 自动创建(IDB 不可用时返回 undefined,退化仅内存)
834
+ const historyStore = config?.historyStore ??
835
+ ((config?.enableIndexedDB ?? true)
836
+ ? createHistoryStore(config?.historyStoreOptions)
837
+ : undefined);
838
+ const impl = new LokvisRuntimeImpl({ ...config, assetStore, historyStore });
839
+ // 预加载持久化的历史快照(跨会话恢复 undo/redo 链)
840
+ await impl.loadPersistedHistory();
841
+ return impl;
842
+ }
843
+ /**
844
+ * 构造受限 PluginContext(模块级 helper,供 installPlugin 使用)。
845
+ *
846
+ * Plugin 只看到受限的 Runtime API:
847
+ * - getAsset / importAsset / getAssetBlob / createAsset / listCapabilities
848
+ * - 看不到 React / Redux / Cloud
849
+ *
850
+ * registerMetadataReader 把读取函数转发给 runtime._registerMetadataReader
851
+ * (依赖反转:Plugin 提供实现,Runtime 持有引用)。
852
+ *
853
+ * 错误契约:getAsset 在资产不存在时抛 plain Error,message 以 "Asset not found"
854
+ * 开头。SDK 的 fromLokvisError 据此模式匹配转换为 AssetNotFoundError,
855
+ * 保持 SDK 消费者的错误类型契约不变。
856
+ */
857
+ function createPluginContext(pluginName, runtime) {
858
+ const assetStore = runtime._getAssetStore();
859
+ const capabilityRegistry = runtime._getCapabilityRegistry();
860
+ return {
861
+ runtime: {
862
+ getAsset: async (id) => {
863
+ const asset = await assetStore.get(id);
864
+ if (!asset)
865
+ throw new Error(`Asset not found: ${id}`);
866
+ return asset;
867
+ },
868
+ importAsset: async (file) => {
869
+ // PluginContext.importAsset 接受 File | Blob,统一转为 AssetSource
870
+ if (file instanceof File) {
871
+ const asset = await assetStore.import({ kind: 'file', file });
872
+ return asset.id;
873
+ }
874
+ const asset = await assetStore.import({
875
+ kind: 'blob',
876
+ blob: file,
877
+ name: `blob_${Date.now()}`,
878
+ });
879
+ return asset.id;
880
+ },
881
+ getAssetBlob: (asset) => assetStore.getBlob(asset.blob),
882
+ createAsset: (blob, metadata, type) => assetStore.create(blob, metadata, type),
883
+ listCapabilities: async () => capabilityRegistry.list(),
884
+ },
885
+ eventBus: runtime.eventBus,
886
+ registerCapability: (impl) => capabilityRegistry.registerImplementation(impl),
887
+ registerMetadataReader: (name, reader) => {
888
+ runtime._registerMetadataReader(name, reader);
889
+ },
890
+ registerPanel: (panel) => {
891
+ // Panel 注册由 UI 层处理,这里仅记录日志
892
+ void panel;
893
+ },
894
+ log: (level, message) => {
895
+ const prefix = `[${pluginName}]`;
896
+ if (level === 'error')
897
+ console.error(`${prefix} ${message}`);
898
+ else if (level === 'warn')
899
+ console.warn(`${prefix} ${message}`);
900
+ else
901
+ console.log(`${prefix} ${message}`);
902
+ },
903
+ };
516
904
  }
517
905
  /**
518
906
  * 把 Capability.params(CapabilityParam[])转换为 JSON Schema 对象,
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}