@world-engines/project-host 0.1.0-alpha.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.
Files changed (218) hide show
  1. package/LICENSE +46 -0
  2. package/assets/gui/WELogo-title.svg +11 -0
  3. package/assets/gui/app.js +1326 -0
  4. package/assets/gui/index.html +118 -0
  5. package/assets/gui/local-preview-asset-urls.js +61 -0
  6. package/assets/gui/local-preview-bridge.js +393 -0
  7. package/assets/gui/spatial-template-panel.js +233 -0
  8. package/assets/gui/styles.css +115 -0
  9. package/assets/gui/terrain-render.js +120 -0
  10. package/assets/gui/workspace-status.css +17 -0
  11. package/assets/gui/workspace-status.js +255 -0
  12. package/assets/gui/world-map-globe.js +187 -0
  13. package/assets/gui/world-map-worker.js +62 -0
  14. package/assets/gui/world-map.css +30 -0
  15. package/assets/gui/world-map.js +2466 -0
  16. package/dist/account-model-proxy.d.ts +21 -0
  17. package/dist/account-model-proxy.js +470 -0
  18. package/dist/authoring-browser-runtime.d.ts +7 -0
  19. package/dist/authoring-browser-runtime.js +110 -0
  20. package/dist/authoring-ingestion.d.ts +38 -0
  21. package/dist/authoring-ingestion.js +410 -0
  22. package/dist/authoring-model-connection.d.ts +166 -0
  23. package/dist/authoring-model-connection.js +757 -0
  24. package/dist/chinese-lexical.d.ts +152 -0
  25. package/dist/chinese-lexical.js +555 -0
  26. package/dist/chromium-preview-browser-driver.d.ts +43 -0
  27. package/dist/chromium-preview-browser-driver.js +575 -0
  28. package/dist/cli/download.d.ts +12 -0
  29. package/dist/cli/download.js +50 -0
  30. package/dist/cli/dump.d.ts +32 -0
  31. package/dist/cli/dump.js +91 -0
  32. package/dist/cli/ingest.d.ts +49 -0
  33. package/dist/cli/ingest.js +225 -0
  34. package/dist/cli/review.d.ts +10 -0
  35. package/dist/cli/review.js +44 -0
  36. package/dist/cli/upload.d.ts +57 -0
  37. package/dist/cli/upload.js +112 -0
  38. package/dist/cli-command.d.ts +60 -0
  39. package/dist/cli-command.js +613 -0
  40. package/dist/cli.d.ts +2 -0
  41. package/dist/cli.js +182 -0
  42. package/dist/desktop-authoring-runtime.d.ts +88 -0
  43. package/dist/desktop-authoring-runtime.js +1602 -0
  44. package/dist/desktop-sidecar.d.ts +11 -0
  45. package/dist/desktop-sidecar.js +143 -0
  46. package/dist/document-dump.d.ts +113 -0
  47. package/dist/document-dump.js +431 -0
  48. package/dist/document-graph-extractor.d.ts +125 -0
  49. package/dist/document-graph-extractor.js +588 -0
  50. package/dist/document-ingestion-journal.d.ts +68 -0
  51. package/dist/document-ingestion-journal.js +471 -0
  52. package/dist/document-ingestion.d.ts +183 -0
  53. package/dist/document-ingestion.js +976 -0
  54. package/dist/document-query-path-proof.d.ts +30 -0
  55. package/dist/document-query-path-proof.js +34 -0
  56. package/dist/document-query-path-renderer.d.ts +50 -0
  57. package/dist/document-query-path-renderer.js +75 -0
  58. package/dist/document-query-proof-paths.d.ts +22 -0
  59. package/dist/document-query-proof-paths.js +71 -0
  60. package/dist/document-query.d.ts +97 -0
  61. package/dist/document-query.js +1106 -0
  62. package/dist/document-relation-role.d.ts +14 -0
  63. package/dist/document-relation-role.js +86 -0
  64. package/dist/document-source.d.ts +107 -0
  65. package/dist/document-source.js +255 -0
  66. package/dist/embedding-cache.d.ts +35 -0
  67. package/dist/embedding-cache.js +317 -0
  68. package/dist/frozen-review-local-pipeline.d.ts +88 -0
  69. package/dist/frozen-review-local-pipeline.js +609 -0
  70. package/dist/frozen-review-source-capture.d.ts +15 -0
  71. package/dist/frozen-review-source-capture.js +551 -0
  72. package/dist/frozen-review-wasm-encryptor.d.ts +16 -0
  73. package/dist/frozen-review-wasm-encryptor.js +72 -0
  74. package/dist/frozen-review.d.ts +131 -0
  75. package/dist/frozen-review.js +802 -0
  76. package/dist/graph-traversal.d.ts +23 -0
  77. package/dist/graph-traversal.js +100 -0
  78. package/dist/gui/graph-layout-worker.js +1 -0
  79. package/dist/gui/graph-layout.wasm +0 -0
  80. package/dist/gui/graph.css +1 -0
  81. package/dist/gui/graph.js +76 -0
  82. package/dist/gui/plane-generation.js +112 -0
  83. package/dist/gui/plane-generator.js +310 -0
  84. package/dist/gui/plane-generator_bg.wasm +0 -0
  85. package/dist/gui/procedural-city.js +595 -0
  86. package/dist/gui/road-generation.js +129 -0
  87. package/dist/gui/road-parcels.js +1584 -0
  88. package/dist/gui/score.css +1 -0
  89. package/dist/gui/score.js +54 -0
  90. package/dist/gui/spatial-runtime.js +1231 -0
  91. package/dist/gui/spatial-templates.js +200 -0
  92. package/dist/gui/trigger.css +1 -0
  93. package/dist/gui/trigger.js +142 -0
  94. package/dist/harness-callback-transport.d.ts +17 -0
  95. package/dist/harness-callback-transport.js +128 -0
  96. package/dist/harness-document-ingestion.d.ts +77 -0
  97. package/dist/harness-document-ingestion.js +343 -0
  98. package/dist/index.d.ts +43 -0
  99. package/dist/index.js +43 -0
  100. package/dist/ingestion-source-reconciliation.d.ts +88 -0
  101. package/dist/ingestion-source-reconciliation.js +253 -0
  102. package/dist/ladybug-runtime.d.ts +117 -0
  103. package/dist/ladybug-runtime.js +886 -0
  104. package/dist/local-account-embedding.d.ts +34 -0
  105. package/dist/local-account-embedding.js +294 -0
  106. package/dist/local-gallery.d.ts +35 -0
  107. package/dist/local-gallery.js +227 -0
  108. package/dist/local-gui-auth.d.ts +96 -0
  109. package/dist/local-gui-auth.js +703 -0
  110. package/dist/local-gui-contract.d.ts +53 -0
  111. package/dist/local-gui-contract.js +5 -0
  112. package/dist/local-gui-image-assets.d.ts +17 -0
  113. package/dist/local-gui-image-assets.js +96 -0
  114. package/dist/local-gui-preview-client.d.ts +3 -0
  115. package/dist/local-gui-preview-client.js +111 -0
  116. package/dist/local-gui-score.d.ts +72 -0
  117. package/dist/local-gui-score.js +184 -0
  118. package/dist/local-gui-server.d.ts +10 -0
  119. package/dist/local-gui-server.js +987 -0
  120. package/dist/local-gui-version.d.ts +17 -0
  121. package/dist/local-gui-version.js +147 -0
  122. package/dist/local-gui-workspace.d.ts +14 -0
  123. package/dist/local-gui-workspace.js +171 -0
  124. package/dist/local-model-settings.d.ts +28 -0
  125. package/dist/local-model-settings.js +124 -0
  126. package/dist/local-preview-assets.d.ts +28 -0
  127. package/dist/local-preview-assets.js +124 -0
  128. package/dist/local-preview-bound-resources.d.ts +12 -0
  129. package/dist/local-preview-bound-resources.js +80 -0
  130. package/dist/local-preview-message-store.d.ts +63 -0
  131. package/dist/local-preview-message-store.js +214 -0
  132. package/dist/local-preview-player-read-models.d.ts +47 -0
  133. package/dist/local-preview-player-read-models.js +90 -0
  134. package/dist/local-preview-projections.d.ts +61 -0
  135. package/dist/local-preview-projections.js +117 -0
  136. package/dist/local-preview-runtime.d.ts +105 -0
  137. package/dist/local-preview-runtime.js +553 -0
  138. package/dist/local-preview-session.d.ts +73 -0
  139. package/dist/local-preview-session.js +395 -0
  140. package/dist/local-preview-source.d.ts +40 -0
  141. package/dist/local-preview-source.js +192 -0
  142. package/dist/local-preview-view-events.d.ts +101 -0
  143. package/dist/local-preview-view-events.js +179 -0
  144. package/dist/local-preview-view-state-sqlite.d.ts +24 -0
  145. package/dist/local-preview-view-state-sqlite.js +263 -0
  146. package/dist/local-preview-view-state.d.ts +93 -0
  147. package/dist/local-preview-view-state.js +108 -0
  148. package/dist/local-preview-vite-config.d.ts +6 -0
  149. package/dist/local-preview-vite-config.js +122 -0
  150. package/dist/local-preview-world-effects.d.ts +9 -0
  151. package/dist/local-preview-world-effects.js +55 -0
  152. package/dist/local-preview-worldline-store.d.ts +47 -0
  153. package/dist/local-preview-worldline-store.js +282 -0
  154. package/dist/local-preview-worldlines.d.ts +95 -0
  155. package/dist/local-preview-worldlines.js +136 -0
  156. package/dist/mcp-async-dispatcher.d.ts +3 -0
  157. package/dist/mcp-async-dispatcher.js +129 -0
  158. package/dist/mcp-line-queue.d.ts +14 -0
  159. package/dist/mcp-line-queue.js +184 -0
  160. package/dist/mcp-pipe-internal.d.ts +6 -0
  161. package/dist/mcp-pipe-internal.js +151 -0
  162. package/dist/mcp-pipe-response.d.ts +14 -0
  163. package/dist/mcp-pipe-response.js +50 -0
  164. package/dist/mcp-stdio-response.d.ts +12 -0
  165. package/dist/mcp-stdio-response.js +27 -0
  166. package/dist/mcp.d.ts +27 -0
  167. package/dist/mcp.js +194 -0
  168. package/dist/prepared-embedding-cache.d.ts +38 -0
  169. package/dist/prepared-embedding-cache.js +238 -0
  170. package/dist/preview-browser-adapter.d.ts +53 -0
  171. package/dist/preview-browser-adapter.js +171 -0
  172. package/dist/preview-runtime.d.ts +67 -0
  173. package/dist/preview-runtime.js +460 -0
  174. package/dist/project-auth-transport.d.ts +27 -0
  175. package/dist/project-auth-transport.js +121 -0
  176. package/dist/project-auth.d.ts +51 -0
  177. package/dist/project-auth.js +108 -0
  178. package/dist/project-git-capture-recovery.d.ts +16 -0
  179. package/dist/project-git-capture-recovery.js +347 -0
  180. package/dist/project-git-cli.d.ts +5 -0
  181. package/dist/project-git-cli.js +40 -0
  182. package/dist/project-git-scenario-source.d.ts +10 -0
  183. package/dist/project-git-scenario-source.js +240 -0
  184. package/dist/project-git-view-source.d.ts +13 -0
  185. package/dist/project-git-view-source.js +134 -0
  186. package/dist/project-git.d.ts +97 -0
  187. package/dist/project-git.js +656 -0
  188. package/dist/project-host.d.ts +59 -0
  189. package/dist/project-host.js +471 -0
  190. package/dist/project-writer-lease.d.ts +18 -0
  191. package/dist/project-writer-lease.js +430 -0
  192. package/dist/public-error.d.ts +7 -0
  193. package/dist/public-error.js +61 -0
  194. package/dist/retrieval-benchmark.d.ts +46 -0
  195. package/dist/retrieval-benchmark.js +58 -0
  196. package/dist/safe-project-path.d.ts +8 -0
  197. package/dist/safe-project-path.js +93 -0
  198. package/dist/scenario-writer.d.ts +32 -0
  199. package/dist/scenario-writer.js +191 -0
  200. package/dist/transfer/download.d.ts +159 -0
  201. package/dist/transfer/download.js +598 -0
  202. package/dist/transfer/transport.d.ts +26 -0
  203. package/dist/transfer/transport.js +1 -0
  204. package/dist/transfer/upload.d.ts +162 -0
  205. package/dist/transfer/upload.js +354 -0
  206. package/dist/transfer-types.d.ts +95 -0
  207. package/dist/transfer-types.js +1 -0
  208. package/dist/transfer.d.ts +18 -0
  209. package/dist/transfer.js +273 -0
  210. package/dist/trigger-runtime.d.ts +121 -0
  211. package/dist/trigger-runtime.js +153 -0
  212. package/dist/vendor/wasm-core/asset-hashes.json +5 -0
  213. package/dist/vendor/wasm-core/wasm_core.d.ts +490 -0
  214. package/dist/vendor/wasm-core/wasm_core.js +1 -0
  215. package/dist/vendor/wasm-core/wasm_core_bg.wasm +0 -0
  216. package/dist/view-watcher.d.ts +9 -0
  217. package/dist/view-watcher.js +34 -0
  218. package/package.json +110 -0
@@ -0,0 +1,23 @@
1
+ export interface GraphTraversalEdge {
2
+ readonly src: string;
3
+ readonly dst: string;
4
+ readonly kind: string;
5
+ }
6
+ export interface GraphTraversalPath<Edge extends GraphTraversalEdge = GraphTraversalEdge> {
7
+ readonly nodeIds: readonly string[];
8
+ readonly edges: readonly Edge[];
9
+ }
10
+ export interface GraphTraversalResult<Edge extends GraphTraversalEdge = GraphTraversalEdge> {
11
+ readonly paths: readonly GraphTraversalPath<Edge>[];
12
+ readonly truncated: boolean;
13
+ }
14
+ /**
15
+ * 从任意命中锚点向路径两端扩展;逐层保留覆盖不同 seed/node/physical edge 的候选,
16
+ * 防止高出度节点的一跳旁支耗尽多跳桥接预算。函数不解释 predicate 或 qualifiers。
17
+ */
18
+ export declare function enumerateDiverseGraphPaths<Edge extends GraphTraversalEdge>(options: Readonly<{
19
+ edges: readonly Edge[];
20
+ seeds: ReadonlySet<string>;
21
+ maximumDepth: number;
22
+ limit: number;
23
+ }>): GraphTraversalResult<Edge>;
@@ -0,0 +1,100 @@
1
+ function physicalEdgeKey(edge) {
2
+ return JSON.stringify([edge.src, edge.dst, edge.kind]);
3
+ }
4
+ function canonicalPathKey(path) {
5
+ const forward = JSON.stringify([path.nodeIds, path.edges.map(physicalEdgeKey)]);
6
+ const reverse = JSON.stringify([[...path.nodeIds].reverse(), [...path.edges].reverse().map(physicalEdgeKey)]);
7
+ return forward < reverse ? forward : reverse;
8
+ }
9
+ /**
10
+ * 从任意命中锚点向路径两端扩展;逐层保留覆盖不同 seed/node/physical edge 的候选,
11
+ * 防止高出度节点的一跳旁支耗尽多跳桥接预算。函数不解释 predicate 或 qualifiers。
12
+ */
13
+ export function enumerateDiverseGraphPaths(options) {
14
+ const adjacency = new Map();
15
+ for (const edge of options.edges)
16
+ for (const id of new Set([edge.src, edge.dst])) {
17
+ adjacency.set(id, [...(adjacency.get(id) ?? []), edge]);
18
+ }
19
+ const diverse = (paths) => {
20
+ const selected = [];
21
+ const coveredSeeds = new Set();
22
+ const coveredNodes = new Set();
23
+ const coveredEdges = new Set();
24
+ const remaining = new Set(paths);
25
+ while (selected.length < options.limit && remaining.size > 0) {
26
+ let best;
27
+ let bestScore = [];
28
+ for (const path of remaining) {
29
+ const score = [
30
+ path.nodeIds.filter((id) => options.seeds.has(id) && !coveredSeeds.has(id)).length,
31
+ path.nodeIds.filter((id) => !coveredNodes.has(id)).length,
32
+ path.edges.filter((edge) => !coveredEdges.has(physicalEdgeKey(edge))).length,
33
+ path.edges.length,
34
+ ];
35
+ const difference = score.findIndex((value, index) => value !== bestScore[index]);
36
+ if (best === undefined || (difference >= 0 && score[difference] > bestScore[difference])) {
37
+ best = path;
38
+ bestScore = score;
39
+ }
40
+ }
41
+ if (best === undefined)
42
+ break;
43
+ remaining.delete(best);
44
+ selected.push(best);
45
+ for (const id of best.nodeIds) {
46
+ coveredNodes.add(id);
47
+ if (options.seeds.has(id))
48
+ coveredSeeds.add(id);
49
+ }
50
+ for (const edge of best.edges)
51
+ coveredEdges.add(physicalEdgeKey(edge));
52
+ }
53
+ return selected;
54
+ };
55
+ let frontier = [...options.seeds].map((id) => ({ nodeIds: [id], edges: [] }));
56
+ const levels = [];
57
+ let truncated = false;
58
+ for (let depth = 1; depth <= options.maximumDepth && frontier.length > 0; depth += 1) {
59
+ const expanded = new Map();
60
+ for (const path of frontier)
61
+ for (const prepend of [false, true]) {
62
+ const end = prepend ? path.nodeIds[0] : path.nodeIds.at(-1);
63
+ for (const edge of adjacency.get(end) ?? []) {
64
+ const next = edge.src === end ? edge.dst : edge.src;
65
+ if (path.nodeIds.includes(next))
66
+ continue;
67
+ const candidate = prepend
68
+ ? { nodeIds: [next, ...path.nodeIds], edges: [edge, ...path.edges] }
69
+ : { nodeIds: [...path.nodeIds, next], edges: [...path.edges, edge] };
70
+ const key = canonicalPathKey(candidate);
71
+ if (!expanded.has(key))
72
+ expanded.set(key, candidate);
73
+ }
74
+ }
75
+ if (expanded.size > options.limit)
76
+ truncated = true;
77
+ frontier = diverse([...expanded.values()]);
78
+ levels.push(frontier);
79
+ }
80
+ const paths = [];
81
+ for (let index = 0; paths.length < options.limit; index += 1) {
82
+ let added = false;
83
+ for (const level of levels) {
84
+ const path = level[index];
85
+ if (path === undefined)
86
+ continue;
87
+ if (paths.length >= options.limit) {
88
+ truncated = true;
89
+ break;
90
+ }
91
+ paths.push(path);
92
+ added = true;
93
+ }
94
+ if (!added)
95
+ break;
96
+ }
97
+ if (levels.reduce((sum, level) => sum + level.length, 0) > paths.length)
98
+ truncated = true;
99
+ return Object.freeze({ paths: Object.freeze(paths), truncated });
100
+ }
@@ -0,0 +1 @@
1
+ var I=n=>{let e=[],o=new Map,s=new Float64Array(n.nodes.length*3);n.nodes.forEach((t,c)=>{if(t.id.length===0||o.has(t.id))throw new TypeError(`\u56FE\u5E03\u5C40\u8282\u70B9 id \u5FC5\u987B\u975E\u7A7A\u4E14\u552F\u4E00: ${t.id}`);if(!Number.isFinite(t.x)||!Number.isFinite(t.y))throw new TypeError(`\u56FE\u5E03\u5C40\u8282\u70B9\u5750\u6807\u5FC5\u987B\u662F\u6709\u9650\u6570: ${t.id}`);if(!Number.isFinite(t.radius)||t.radius<=0)throw new TypeError(`\u56FE\u5E03\u5C40\u8282\u70B9\u534A\u5F84\u5FC5\u987B\u662F\u6B63\u6709\u9650\u6570: ${t.id}`);e.push(t.id),o.set(t.id,c);let f=c*3;s[f]=t.x,s[f+1]=t.y,s[f+2]=t.radius});let i=new Uint32Array(n.edges.length*2);n.edges.forEach((t,c)=>{let f=o.get(t.from),u=o.get(t.to);if(f===void 0||u===void 0)throw new TypeError(`\u56FE\u5E03\u5C40\u5173\u7CFB\u5F15\u7528\u4E86\u672A\u77E5\u8282\u70B9: ${t.from} -> ${t.to}`);i[c*2]=f,i[c*2+1]=u});let a=-1;if(n.fixedNodeId!==void 0&&(a=o.get(n.fixedNodeId)??-1,a<0))throw new TypeError(`\u56FE\u5E03\u5C40 fixedNodeId \u5F15\u7528\u4E86\u672A\u77E5\u8282\u70B9: ${n.fixedNodeId}`);return{nodeIds:e,nodes:s,edges:i,fixedIndex:a}},_=(n,e)=>{if(e.length!==n.length*2)throw new Error("WASM \u56FE\u5E03\u5C40\u8FD4\u56DE\u7684 position \u957F\u5EA6\u4E0D\u5339\u914D");let o={};return n.forEach((s,i)=>{let a=e[i*2],t=e[i*2+1];if(a===void 0||t===void 0||!Number.isFinite(a)||!Number.isFinite(t))throw new Error(`WASM \u56FE\u5E03\u5C40\u8FD4\u56DE\u4E86\u975E\u6CD5\u5750\u6807: ${s}`);o[s]={x:a,y:t}}),o};var F=1464158028,k=1,p=24,h=24,S=8,M=4294967295,W=n=>{let e=n;if(!(e.memory instanceof WebAssembly.Memory)||typeof e.graph_layout_alloc!="function"||typeof e.graph_layout_dealloc!="function"||typeof e.graph_layout_solve!="function")throw new Error("\u56FE\u5E03\u5C40 WASM \u5BFC\u51FA\u4E0D\u5B8C\u6574");return e},m=class{#e;constructor(e){this.#e=W(e)}solvePacked(e){let o=e.nodes.length/3,s=e.edges.length/2;if(!Number.isInteger(o)||!Number.isInteger(s))throw new TypeError("\u56FE\u5E03\u5C40 packed request \u957F\u5EA6\u975E\u6CD5");if(o===0)return new Float64Array;let i=p+o*h+s*S,a=this.#e.graph_layout_alloc(i);if(a===0)throw new Error("\u56FE\u5E03\u5C40 WASM \u5185\u5B58\u5206\u914D\u5931\u8D25");try{let t=new DataView(this.#e.memory.buffer,a,i);t.setUint32(0,F,!0),t.setUint32(4,k,!0),t.setUint32(8,o,!0),t.setUint32(12,s,!0),t.setUint32(16,e.fixedIndex<0?M:e.fixedIndex,!0),t.setUint32(20,0,!0);for(let r=0;r<o;r+=1){let d=r*3,g=p+r*h;t.setFloat64(g,e.nodes[d],!0),t.setFloat64(g+8,e.nodes[d+1],!0),t.setFloat64(g+16,e.nodes[d+2],!0)}let c=p+o*h;for(let r=0;r<e.edges.length;r+=1)t.setUint32(c+r*4,e.edges[r],!0);let f=this.#e.graph_layout_solve(a,i);if(f!==0)throw new Error(`\u56FE\u5E03\u5C40 WASM \u6C42\u89E3\u5931\u8D25\uFF0C\u72B6\u6001\u7801 ${f}`);let u=new DataView(this.#e.memory.buffer,a,i),y=new Float64Array(o*2);for(let r=0;r<o;r+=1){let d=p+r*h;y[r*2]=u.getFloat64(d,!0),y[r*2+1]=u.getFloat64(d+8,!0)}return y}finally{this.#e.graph_layout_dealloc(a,i)}}solve(e){let o=I(e);return _(o.nodeIds,this.solvePacked(o))}},v=async n=>{let e=await WebAssembly.instantiate(n,{}),o=e instanceof WebAssembly.Instance?e:e.instance;return new m(o.exports)},A=async()=>{let n=new URL("./graph-layout.wasm",import.meta.url),e=await fetch(n);if(!e.ok)throw new Error(`\u65E0\u6CD5\u52A0\u8F7D\u56FE\u5E03\u5C40 WASM (${e.status})`);return v(await e.arrayBuffer())};var x=self,N,l=0,w,E=!1,b=()=>{E||(E=!0,setTimeout(()=>{L()},0))},L=async()=>{E=!1;let n=w;if(w=void 0,n!==void 0)try{N??=A();let e=await N;if(n.generation!==l){b();return}let o={nodeIds:[],nodes:new Float64Array(n.nodes),edges:new Uint32Array(n.edges),fixedIndex:n.fixedIndex},s=e.solvePacked(o);if(n.generation===l){let i={kind:"result",generation:n.generation,positions:s.buffer};x.postMessage(i,[s.buffer])}}catch(e){if(n.generation===l){let o={kind:"error",generation:n.generation,message:e instanceof Error?e.message:String(e)};x.postMessage(o)}}finally{w!==void 0&&b()}};x.onmessage=n=>{let e=n.data;e.kind!=="solve"||!Number.isSafeInteger(e.generation)||(l=Math.max(l,e.generation),w=e,b())};
Binary file
@@ -0,0 +1 @@
1
+ .react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}:root{--we-graph-bg: #161516;--we-graph-accent: #32d551;--we-graph-text: #e7e7e7;--we-graph-muted: #8c8c8c;--we-graph-line: #707070;--we-graph-line-soft: #454545;--we-graph-panel: #202020;--we-graph-danger: #ff453a;--we-graph-pending: #64d2ff;--we-graph-search: #ffd60a}.shared-graph-canvas{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:28rem;overflow:hidden;color:var(--we-graph-text);background:var(--we-graph-bg)}.shared-graph-canvas__toolbar{position:absolute;inset-block-start:.75rem;inset-inline:.75rem;z-index:5;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none;color:var(--we-graph-muted);font:500 .6875rem/1.25 system-ui,sans-serif}.shared-graph-canvas__error{position:absolute;inset-block-start:2.25rem;inset-inline-start:50%;z-index:8;max-width:min(32rem,calc(100% - 2rem));padding:.4rem .65rem;border:1px solid var(--we-graph-danger);border-radius:.4rem;background:var(--we-graph-bg);color:var(--we-graph-danger);font:500 .75rem/1.3 system-ui,sans-serif;transform:translate(-50%);pointer-events:none}.shared-graph-context-menu{position:fixed;z-index:40;display:grid;width:11.5rem;padding:.35rem;border:1px solid var(--we-graph-line-soft);border-radius:.45rem;background:var(--we-graph-panel);box-shadow:0 .5rem 1.4rem #00000061}.shared-graph-context-menu button{min-height:2.125rem;padding:.35rem .6rem;border:0;border-radius:.3rem;background:transparent;color:var(--we-graph-text);font:500 .75rem/1.25 system-ui,sans-serif;text-align:start;cursor:pointer}.shared-graph-context-menu button:hover,.shared-graph-context-menu button:focus-visible{outline:0;background:color-mix(in srgb,var(--we-graph-accent) 16%,transparent);color:var(--we-graph-accent)}.shared-graph-context-menu button.is-danger{color:var(--we-graph-danger)}.shared-graph-canvas__flow,.shared-graph-canvas__flow .react-flow{width:100%;height:100%;min-height:inherit;background:var(--we-graph-bg)}.shared-graph-canvas__flow .react-flow__background-pattern.dots{fill:var(--we-graph-line-soft)}.shared-graph-mask-defs{position:absolute;width:0;height:0;pointer-events:none}.shared-graph-defs{position:absolute;width:0;height:0}.shared-graph-defs marker path{stroke:var(--we-graph-line);stroke-width:1;stroke-linecap:round;stroke-linejoin:round}.shared-graph-group{position:relative;width:100%;height:100%;box-sizing:border-box;border:1px solid color-mix(in srgb,var(--we-graph-group-color, var(--we-graph-line)) 66%,transparent);border-radius:.35rem;background:color-mix(in srgb,var(--we-graph-group-color, var(--we-graph-line)) 14%,transparent);color:color-mix(in srgb,var(--we-graph-group-color, var(--we-graph-text)) 60%,var(--we-graph-text));cursor:grab;transition:background-color .1s ease,border-color .12s ease,box-shadow .12s ease}.shared-graph-group:hover{background:color-mix(in srgb,var(--we-graph-group-color, var(--we-graph-line)) 20%,transparent)}.shared-graph-group.is-selected{border-color:var(--we-graph-accent);background:color-mix(in srgb,var(--we-graph-group-color, var(--we-graph-line)) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--we-graph-accent) 38%,transparent)}.shared-graph-group.is-drop-target{border-color:var(--we-graph-group-color, var(--we-graph-accent));background:color-mix(in srgb,var(--we-graph-group-color, var(--we-graph-accent)) 38%,transparent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--we-graph-group-color, var(--we-graph-accent)) 62%,transparent)}.shared-graph-group.is-draft{border-style:dashed;pointer-events:none}.shared-graph-group.is-blocked{border-color:var(--we-graph-danger);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--we-graph-danger) 38%,transparent)}.shared-graph-group__label{position:absolute;inset-block-start:.3rem;inset-inline-start:.4rem;max-width:calc(100% - .8rem);overflow:hidden;font:600 calc(11px * var(--we-graph-inverse-zoom, 1))/1.2 system-ui,sans-serif;text-overflow:ellipsis;white-space:nowrap;cursor:text;pointer-events:auto}.shared-graph-group__name-input{position:absolute;inset-block-start:.2rem;inset-inline-start:.3rem;z-index:3;width:calc(100% - .6rem);min-width:0;box-sizing:border-box;padding:.1rem .2rem;border:1px solid var(--we-graph-accent);border-radius:.2rem;outline:0;background:var(--we-graph-bg);color:var(--we-graph-text);font:600 calc(11px * var(--we-graph-inverse-zoom, 1))/1.2 system-ui,sans-serif}.shared-graph-group__resize{position:absolute;z-index:2;display:block}.shared-graph-group__resize--top,.shared-graph-group__resize--bottom{inset-inline:.75rem;height:10px;cursor:ns-resize}.shared-graph-group__resize--top{inset-block-start:-5px}.shared-graph-group__resize--bottom{inset-block-end:-5px}.shared-graph-group__resize--left,.shared-graph-group__resize--right{inset-block:.75rem;width:10px;cursor:ew-resize}.shared-graph-group__resize--left{inset-inline-start:-5px}.shared-graph-group__resize--right{inset-inline-end:-5px}.shared-graph-node{position:relative;display:flex;align-items:center;justify-content:center;width:var(--we-graph-node-size, 48px);height:var(--we-graph-node-size, 48px);padding:0;border:0;outline:0;background:transparent;cursor:grab}.shared-graph-node:active{cursor:grabbing}.shared-graph-node:focus-visible .shared-graph-node__circle{outline:1px solid var(--we-graph-accent);outline-offset:4px}.shared-graph-node__circle{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;box-sizing:border-box;border:1px solid color-mix(in srgb,var(--we-graph-accent) 68%,var(--we-graph-line));border-radius:50%;background:transparent;color:var(--we-graph-accent);transition:border-color .14s ease,color .14s ease,opacity .14s ease}.shared-graph-node:hover .shared-graph-node__circle,.shared-graph-node.is-adjacent .shared-graph-node__circle{border-color:color-mix(in srgb,var(--we-graph-accent) 72%,var(--we-graph-line));color:var(--we-graph-accent)}.shared-graph-node.is-selected .shared-graph-node__circle{border-color:var(--we-graph-accent);background:var(--we-graph-accent);color:var(--we-graph-bg)}.shared-graph-node.is-search-match:not(.is-selected) .shared-graph-node__circle,.shared-graph-node.is-highlighted:not(.is-selected) .shared-graph-node__circle{border-color:var(--we-graph-accent);background:transparent;color:var(--we-graph-accent)}.shared-graph-node.is-muted:not(.is-search-match):not(.is-highlighted):not(.is-pending){opacity:.74}.shared-graph-node.is-pending:not(.is-selected) .shared-graph-node__circle{border-color:var(--we-graph-pending);border-style:dashed;color:var(--we-graph-pending)}.shared-graph-node.is-disabled{opacity:.38;cursor:not-allowed}.shared-graph-node.is-remote-highlighted{opacity:1}.shared-graph-node.is-remote-highlighted .shared-graph-node__circle{border-color:#0a84ff;background:#0a84ffdb;color:var(--we-graph-bg);box-shadow:0 0 0 2px #0a84ff73;animation:we-graph-remote-pulse 1.35s ease-in-out infinite}@keyframes we-graph-remote-pulse{0%,to{background:#0a84ff94;box-shadow:0 0 0 2px #0a84ff66}50%{background:#0a84fff0;box-shadow:0 0 0 5px #0a84ff24}}@media (prefers-reduced-motion: reduce){.shared-graph-node.is-remote-highlighted .shared-graph-node__circle{animation:none;background:#0a84ff;box-shadow:0 0 0 3px #0a84ff6b}}.shared-graph-node--vec-ready:not(.is-selected):not(.is-remote-highlighted) .shared-graph-node__circle{border-color:var(--we-graph-accent);color:var(--we-graph-accent)}.shared-graph-node__glyph{width:clamp(29px,calc(var(--we-graph-node-size, 48px) * .6),43px);height:clamp(29px,calc(var(--we-graph-node-size, 48px) * .6),43px);overflow:visible;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.shared-graph-node__label{position:absolute;inset-block-start:calc(100% + 5px);inset-inline-start:50%;max-width:calc(10rem * var(--we-graph-inverse-zoom, 1));overflow:hidden;color:var(--we-graph-text);font-family:system-ui,sans-serif;font-size:clamp(calc(12px * var(--we-graph-inverse-zoom, 1)),calc(var(--we-graph-node-size, 48px) * .22),calc(16px * var(--we-graph-inverse-zoom, 1)));font-weight:500;line-height:1.2;text-align:center;text-overflow:ellipsis;white-space:nowrap;opacity:1;transition:opacity .12s ease;transform:translate(-50%);pointer-events:none;user-select:none}.shared-graph-canvas[data-we-graph-distant=true] .shared-graph-node:not(.is-selected):not(.is-remote-highlighted):not(.is-search-match):not(.is-highlighted) .shared-graph-node__label{opacity:0}.shared-graph-node__handle{position:absolute;inset:calc(50% + .5px) auto auto 50%;width:1px;height:1px;min-width:0;min-height:0;box-sizing:border-box;border:0;border-radius:50%;background:var(--we-graph-bg);opacity:0;pointer-events:none;transform:translate(-50%,-50%);transition:opacity .12s ease}.shared-graph-edge{stroke:var(--we-graph-line);stroke-width:1.5;opacity:.58;cursor:pointer;pointer-events:visibleStroke;transition:opacity .14s ease,stroke .14s ease,stroke-width .14s ease}.shared-graph-edge:hover,.shared-graph-edge.is-emphasized{stroke:var(--we-graph-accent);stroke-width:2.25;opacity:.96}.shared-graph-edge.is-muted{opacity:.52}.shared-graph-edge--pending{stroke:var(--we-graph-pending);stroke-dasharray:4 4}.shared-graph-edge--search{stroke:var(--we-graph-search)}.shared-graph-edge--disabled{stroke:var(--we-graph-danger);stroke-dasharray:3 3;opacity:.3}.shared-graph-edge__label{display:inline-flex;align-items:center;justify-content:center;min-width:calc(18px * var(--we-graph-inverse-zoom, 1));min-height:calc(18px * var(--we-graph-inverse-zoom, 1));max-width:calc(6rem * var(--we-graph-inverse-zoom, 1));padding:calc(1px * var(--we-graph-inverse-zoom, 1)) calc(5px * var(--we-graph-inverse-zoom, 1));border:1px solid var(--we-graph-line-soft);border-radius:999px;background:var(--we-graph-bg);color:var(--we-graph-muted);font-family:system-ui,sans-serif;font-size:clamp(calc(12px * var(--we-graph-inverse-zoom, 1)),.75rem,calc(16px * var(--we-graph-inverse-zoom, 1)));font-weight:600;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.shared-graph-edge__label:hover:not(:disabled),.shared-graph-edge__label:focus-visible{border-color:var(--we-graph-accent);color:var(--we-graph-accent)}.shared-graph-edge__label:disabled{pointer-events:none}.shared-graph-edge__label.is-emphasized{z-index:1002;border-color:var(--we-graph-accent);color:var(--we-graph-text)}.shared-graph-relation-drag{position:fixed;inset:0;z-index:20;width:100vw;height:100vh;overflow:visible;pointer-events:none}.shared-graph-relation-drag path{stroke:var(--we-graph-accent);stroke-width:1.75;stroke-linecap:round;stroke-dasharray:4 4}.shared-graph-controls{position:absolute;inset-inline-start:.75rem;inset-block-end:.75rem;z-index:6;display:grid;grid-template-columns:repeat(5,2rem);border:1px solid var(--we-graph-line-soft);border-radius:.5rem;overflow:hidden;background:var(--we-graph-panel)}.shared-graph-controls button{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:0;border-inline-end:1px solid var(--we-graph-line-soft);background:transparent;color:var(--we-graph-muted);cursor:pointer}.shared-graph-controls button:last-child{border-inline-end:0}.shared-graph-controls button:hover:not(:disabled),.shared-graph-controls button:focus-visible{color:var(--we-graph-accent)}.shared-graph-controls button:disabled{opacity:.28;cursor:not-allowed}.shared-graph-controls svg{width:1.125rem;height:1.125rem;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}