@lokvis/runtime 0.2.2 → 0.4.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 (125) hide show
  1. package/dist/asset-store.d.ts +13 -0
  2. package/dist/asset-store.d.ts.map +1 -1
  3. package/dist/asset-store.js +15 -2
  4. package/dist/asset-store.js.map +1 -1
  5. package/dist/batch-processor.d.ts +32 -161
  6. package/dist/batch-processor.d.ts.map +1 -1
  7. package/dist/batch-processor.js +107 -333
  8. package/dist/batch-processor.js.map +1 -1
  9. package/dist/batch-progress.d.ts +94 -0
  10. package/dist/batch-progress.d.ts.map +1 -0
  11. package/dist/batch-progress.js +128 -0
  12. package/dist/batch-progress.js.map +1 -0
  13. package/dist/batch-scheduler.d.ts +70 -0
  14. package/dist/batch-scheduler.d.ts.map +1 -0
  15. package/dist/batch-scheduler.js +147 -0
  16. package/dist/batch-scheduler.js.map +1 -0
  17. package/dist/browser-detect.d.ts +115 -0
  18. package/dist/browser-detect.d.ts.map +1 -0
  19. package/dist/browser-detect.js +160 -0
  20. package/dist/browser-detect.js.map +1 -0
  21. package/dist/concurrency-controller.d.ts +31 -0
  22. package/dist/concurrency-controller.d.ts.map +1 -0
  23. package/dist/concurrency-controller.js +33 -0
  24. package/dist/concurrency-controller.js.map +1 -0
  25. package/dist/errors.d.ts +51 -0
  26. package/dist/errors.d.ts.map +1 -0
  27. package/dist/errors.js +74 -0
  28. package/dist/errors.js.map +1 -0
  29. package/dist/executor.d.ts +9 -0
  30. package/dist/executor.d.ts.map +1 -1
  31. package/dist/executor.js +87 -48
  32. package/dist/executor.js.map +1 -1
  33. package/dist/history.d.ts.map +1 -1
  34. package/dist/history.js +3 -2
  35. package/dist/history.js.map +1 -1
  36. package/dist/idb-asset-store.d.ts.map +1 -1
  37. package/dist/idb-asset-store.js +6 -1
  38. package/dist/idb-asset-store.js.map +1 -1
  39. package/dist/index.d.ts +17 -15
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +20 -15
  42. package/dist/index.js.map +1 -1
  43. package/dist/managers/asset-manager.d.ts +114 -0
  44. package/dist/managers/asset-manager.d.ts.map +1 -0
  45. package/dist/managers/asset-manager.js +238 -0
  46. package/dist/managers/asset-manager.js.map +1 -0
  47. package/dist/managers/history-manager.d.ts +100 -0
  48. package/dist/managers/history-manager.d.ts.map +1 -0
  49. package/dist/managers/history-manager.js +296 -0
  50. package/dist/managers/history-manager.js.map +1 -0
  51. package/dist/managers/mcp-manifest-builder.d.ts +18 -0
  52. package/dist/managers/mcp-manifest-builder.d.ts.map +1 -0
  53. package/dist/managers/mcp-manifest-builder.js +99 -0
  54. package/dist/managers/mcp-manifest-builder.js.map +1 -0
  55. package/dist/managers/quota-manager.d.ts +42 -0
  56. package/dist/managers/quota-manager.d.ts.map +1 -0
  57. package/dist/managers/quota-manager.js +126 -0
  58. package/dist/managers/quota-manager.js.map +1 -0
  59. package/dist/managers/workflow-coordinator.d.ts +62 -0
  60. package/dist/managers/workflow-coordinator.d.ts.map +1 -0
  61. package/dist/managers/workflow-coordinator.js +125 -0
  62. package/dist/managers/workflow-coordinator.js.map +1 -0
  63. package/dist/opfs-asset-store.d.ts.map +1 -1
  64. package/dist/opfs-asset-store.js +12 -2
  65. package/dist/opfs-asset-store.js.map +1 -1
  66. package/dist/plugin-context.d.ts +35 -0
  67. package/dist/plugin-context.d.ts.map +1 -0
  68. package/dist/plugin-context.js +62 -0
  69. package/dist/plugin-context.js.map +1 -0
  70. package/dist/plugin-permissions.d.ts +99 -0
  71. package/dist/plugin-permissions.d.ts.map +1 -0
  72. package/dist/plugin-permissions.js +205 -0
  73. package/dist/plugin-permissions.js.map +1 -0
  74. package/dist/runtime-impl.d.ts +116 -0
  75. package/dist/runtime-impl.d.ts.map +1 -0
  76. package/dist/runtime-impl.js +270 -0
  77. package/dist/runtime-impl.js.map +1 -0
  78. package/dist/runtime.d.ts +10 -233
  79. package/dist/runtime.d.ts.map +1 -1
  80. package/dist/runtime.js +12 -978
  81. package/dist/runtime.js.map +1 -1
  82. package/dist/test-utils/fakes.d.ts +35 -0
  83. package/dist/test-utils/fakes.d.ts.map +1 -0
  84. package/dist/test-utils/fakes.js +60 -0
  85. package/dist/test-utils/fakes.js.map +1 -0
  86. package/dist/types.d.ts +113 -1
  87. package/dist/types.d.ts.map +1 -1
  88. package/dist/worker-host.d.ts.map +1 -1
  89. package/dist/worker-host.js +32 -9
  90. package/dist/worker-host.js.map +1 -1
  91. package/dist/worker-protocol.d.ts +30 -0
  92. package/dist/worker-protocol.d.ts.map +1 -1
  93. package/dist/worker-protocol.js +24 -0
  94. package/dist/worker-protocol.js.map +1 -1
  95. package/package.json +2 -2
  96. package/src/asset-store.ts +32 -2
  97. package/src/batch-processor.ts +133 -510
  98. package/src/batch-progress.ts +228 -0
  99. package/src/batch-scheduler.ts +209 -0
  100. package/src/browser-detect.ts +221 -0
  101. package/src/concurrency-controller.ts +52 -0
  102. package/src/errors.ts +82 -0
  103. package/src/executor.ts +106 -55
  104. package/src/history.ts +3 -2
  105. package/src/idb-asset-store.ts +7 -1
  106. package/src/index.ts +50 -15
  107. package/src/managers/asset-manager.ts +259 -0
  108. package/src/managers/history-manager.ts +327 -0
  109. package/src/managers/mcp-manifest-builder.ts +108 -0
  110. package/src/managers/quota-manager.ts +149 -0
  111. package/src/managers/workflow-coordinator.ts +158 -0
  112. package/src/opfs-asset-store.ts +16 -2
  113. package/src/plugin-context.ts +87 -0
  114. package/src/plugin-permissions.ts +228 -0
  115. package/src/runtime-impl.ts +298 -0
  116. package/src/runtime.ts +16 -1116
  117. package/src/test-utils/fakes.ts +72 -0
  118. package/src/types.ts +116 -0
  119. package/src/worker-host.ts +35 -7
  120. package/src/worker-protocol.ts +47 -0
  121. package/dist/workflow-builder.d.ts +0 -124
  122. package/dist/workflow-builder.d.ts.map +0 -1
  123. package/dist/workflow-builder.js +0 -240
  124. package/dist/workflow-builder.js.map +0 -1
  125. package/src/workflow-builder.ts +0 -303
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokvis/runtime",
3
- "version": "0.2.2",
3
+ "version": "0.4.1",
4
4
  "description": "Lokvis Runtime - Browser-local workflow execution engine",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -26,7 +26,7 @@
26
26
  "dependencies": {
27
27
  "dexie": "^4.0.10",
28
28
  "mitt": "^3.0.1",
29
- "@lokvis/schema": "0.2.2"
29
+ "@lokvis/schema": "0.4.1"
30
30
  },
31
31
  "devDependencies": {
32
32
  "fake-indexeddb": "^6.0.0",
@@ -11,6 +11,7 @@
11
11
  import type { Asset, AssetId, AssetMetadata, AssetSource, BlobHandle } from '@lokvis/schema';
12
12
  import { createOpfsAssetStore, isOpfsSupported } from './opfs-asset-store.js';
13
13
  import { createIdbAssetStore, isIdbSupported } from './idb-asset-store.js';
14
+ import { AssetBlobNotFoundError } from './errors.js';
14
15
 
15
16
  /** Asset 存储接口 */
16
17
  export interface AssetStore {
@@ -26,6 +27,19 @@ export interface AssetStore {
26
27
  list(): Promise<Asset[]>;
27
28
  /** 创建新 Asset(内部用,由 Capability 产出) */
28
29
  create(blob: Blob, metadata: AssetMetadata, type: Asset['type']): Promise<Asset>;
30
+ /**
31
+ * 释放底层资源(W21.6)。
32
+ *
33
+ * - Memory store:清空 Map(数据不可恢复)
34
+ * - OPFS store:清空内存 Map + 关闭 Dexie 连接(OPFS 文件不删除,
35
+ * 下次创建 store 时从 IndexedDB metadata 预加载恢复)
36
+ * - IDB store:关闭 Dexie 连接(IDB 数据不删除)
37
+ *
38
+ * 幂等:重复调用为 no-op。
39
+ * 注:关闭后的 store 调用 import/get/getBlob 等方法行为未定义,
40
+ * 调用方应仅在不再使用该 store 时调用 dispose。
41
+ */
42
+ dispose?(): Promise<void>;
29
43
  }
30
44
 
31
45
  /** 生成唯一 ID */
@@ -96,6 +110,11 @@ interface RichMetadata {
96
110
  *
97
111
  * 所有提取均 try/catch:失败时返回空对象,不阻断 import。
98
112
  * Node.js / 测试环境可能无 createImageBitmap / document,自然降级为空。
113
+ *
114
+ * TD-3.9 长期方案:catch 不再静默吞错,console.warn 记录异常(区分"无元数据"
115
+ * 与"提取异常")。asset-store 位于 Runtime 层,无 ctx.log 上下文(不像
116
+ * plugin/capability 走 ExecutionContext / MetadataReaderContext),与
117
+ * opfs-asset-store.ts 的错误日志策略一致(见 L155/L170/L183/L205/L258)。
99
118
  */
100
119
  async function extractRichMetadata(
101
120
  blob: Blob,
@@ -111,7 +130,12 @@ async function extractRichMetadata(
111
130
  default:
112
131
  return {};
113
132
  }
114
- } catch {
133
+ } catch (err) {
134
+ // TD-3.9:区分"无元数据"(default 分支返回 {},无日志)与"提取异常"(此处 warn)
135
+ console.warn(
136
+ `[lokvis:asset-store] extractRichMetadata failed for ${type} blob (${blob.size} bytes):`,
137
+ err
138
+ );
115
139
  return {};
116
140
  }
117
141
  }
@@ -254,7 +278,7 @@ export function createMemoryAssetStore(): AssetStore {
254
278
  async getBlob(handle) {
255
279
  const id = parseBlobPath(handle.path, MEMORY_PATH_PREFIX);
256
280
  const blob = blobs.get(id);
257
- if (!blob) throw new Error(`Blob not found for path: ${handle.path}`);
281
+ if (!blob) throw new AssetBlobNotFoundError(`Blob not found for path: ${handle.path}`);
258
282
  return blob;
259
283
  },
260
284
 
@@ -274,6 +298,12 @@ export function createMemoryAssetStore(): AssetStore {
274
298
  assets.set(id, asset);
275
299
  return asset;
276
300
  },
301
+
302
+ // W21.6: 清空内存 Map,释放 Blob 引用(数据不可恢复)
303
+ async dispose() {
304
+ assets.clear();
305
+ blobs.clear();
306
+ },
277
307
  };
278
308
  }
279
309