@roarpeng/graphflow 1.3.3 → 1.4.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 (193) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +93 -111
  3. package/dist/agents/insight.d.ts +1 -1
  4. package/dist/agents/insight.d.ts.map +1 -1
  5. package/dist/agents/insight.js +1 -1
  6. package/dist/agents/insight.js.map +1 -1
  7. package/dist/agents/validator.js +1 -1
  8. package/dist/agents/validator.js.map +1 -1
  9. package/dist/config/defaults.d.ts.map +1 -1
  10. package/dist/config/defaults.js +3 -17
  11. package/dist/config/defaults.js.map +1 -1
  12. package/dist/config/discover-workspace.d.ts +10 -0
  13. package/dist/config/discover-workspace.d.ts.map +1 -1
  14. package/dist/config/discover-workspace.js +77 -1
  15. package/dist/config/discover-workspace.js.map +1 -1
  16. package/dist/config/embedding-factory.d.ts.map +1 -1
  17. package/dist/config/embedding-factory.js +4 -5
  18. package/dist/config/embedding-factory.js.map +1 -1
  19. package/dist/config/llm-availability.d.ts.map +1 -1
  20. package/dist/config/llm-availability.js +0 -8
  21. package/dist/config/llm-availability.js.map +1 -1
  22. package/dist/config/loader.d.ts.map +1 -1
  23. package/dist/config/loader.js +4 -75
  24. package/dist/config/loader.js.map +1 -1
  25. package/dist/config/merge.d.ts.map +1 -1
  26. package/dist/config/merge.js +0 -40
  27. package/dist/config/merge.js.map +1 -1
  28. package/dist/config/schema.d.ts +5 -43
  29. package/dist/config/schema.d.ts.map +1 -1
  30. package/dist/config/workspace-root.d.ts.map +1 -1
  31. package/dist/config/workspace-root.js +11 -1
  32. package/dist/config/workspace-root.js.map +1 -1
  33. package/dist/core/agent-delegation.d.ts +1 -1
  34. package/dist/core/agent-delegation.d.ts.map +1 -1
  35. package/dist/core/orchestrator-context.d.ts.map +1 -1
  36. package/dist/core/orchestrator-context.js +12 -5
  37. package/dist/core/orchestrator-context.js.map +1 -1
  38. package/dist/core/orchestrator.js +8 -2
  39. package/dist/core/orchestrator.js.map +1 -1
  40. package/dist/core/triage.js +2 -2
  41. package/dist/core/triage.js.map +1 -1
  42. package/dist/core/types.d.ts +1 -1
  43. package/dist/core/types.d.ts.map +1 -1
  44. package/dist/graph/context-slicer-types.d.ts +13 -16
  45. package/dist/graph/context-slicer-types.d.ts.map +1 -1
  46. package/dist/graph/context-slicer-types.js.map +1 -1
  47. package/dist/graph/context-slicer.d.ts +4 -5
  48. package/dist/graph/context-slicer.d.ts.map +1 -1
  49. package/dist/graph/context-slicer.js +14 -28
  50. package/dist/graph/context-slicer.js.map +1 -1
  51. package/dist/graph/file-indexer-walker.d.ts.map +1 -1
  52. package/dist/graph/file-indexer-walker.js +9 -6
  53. package/dist/graph/file-indexer-walker.js.map +1 -1
  54. package/dist/graph/file-indexer.d.ts.map +1 -1
  55. package/dist/graph/file-indexer.js +19 -0
  56. package/dist/graph/file-indexer.js.map +1 -1
  57. package/dist/graph/file-watcher.d.ts.map +1 -1
  58. package/dist/graph/file-watcher.js +2 -1
  59. package/dist/graph/file-watcher.js.map +1 -1
  60. package/dist/hooks/post-run-sync.d.ts +1 -1
  61. package/dist/hooks/post-run-sync.d.ts.map +1 -1
  62. package/dist/hooks/post-run-sync.js +3 -14
  63. package/dist/hooks/post-run-sync.js.map +1 -1
  64. package/dist/index.d.ts +2 -4
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +5 -7
  67. package/dist/index.js.map +1 -1
  68. package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
  69. package/dist/integrations/agent-mcp-installer.js +6 -17
  70. package/dist/integrations/agent-mcp-installer.js.map +1 -1
  71. package/dist/learning/embeddings.d.ts +0 -1
  72. package/dist/learning/embeddings.d.ts.map +1 -1
  73. package/dist/learning/embeddings.js +0 -15
  74. package/dist/learning/embeddings.js.map +1 -1
  75. package/dist/learning/episodic-memory.d.ts +1 -1
  76. package/dist/learning/episodic-memory.d.ts.map +1 -1
  77. package/dist/learning/episodic-memory.js +38 -1
  78. package/dist/learning/episodic-memory.js.map +1 -1
  79. package/dist/learning/hnsw-index.d.ts +23 -4
  80. package/dist/learning/hnsw-index.d.ts.map +1 -1
  81. package/dist/learning/hnsw-index.js +78 -4
  82. package/dist/learning/hnsw-index.js.map +1 -1
  83. package/dist/learning/nightly-trainer.d.ts +0 -2
  84. package/dist/learning/nightly-trainer.d.ts.map +1 -1
  85. package/dist/learning/nightly-trainer.js +10 -18
  86. package/dist/learning/nightly-trainer.js.map +1 -1
  87. package/dist/learning/skill-flywheel.d.ts +2 -3
  88. package/dist/learning/skill-flywheel.d.ts.map +1 -1
  89. package/dist/learning/skill-flywheel.js +23 -84
  90. package/dist/learning/skill-flywheel.js.map +1 -1
  91. package/dist/learning/skill-store.d.ts +1 -3
  92. package/dist/learning/skill-store.d.ts.map +1 -1
  93. package/dist/learning/skill-store.js +0 -36
  94. package/dist/learning/skill-store.js.map +1 -1
  95. package/dist/learning/skill-types.d.ts +0 -13
  96. package/dist/learning/skill-types.d.ts.map +1 -1
  97. package/dist/learning/skill-types.js.map +1 -1
  98. package/dist/routing/model-router.d.ts +1 -1
  99. package/dist/routing/model-router.d.ts.map +1 -1
  100. package/dist/routing/model-router.js +1 -52
  101. package/dist/routing/model-router.js.map +1 -1
  102. package/dist/routing/provider-executor.d.ts.map +1 -1
  103. package/dist/routing/provider-executor.js +0 -48
  104. package/dist/routing/provider-executor.js.map +1 -1
  105. package/dist/routing/provider-health.d.ts.map +1 -1
  106. package/dist/routing/provider-health.js +2 -12
  107. package/dist/routing/provider-health.js.map +1 -1
  108. package/dist/surfaces/cli/index.js +19 -77
  109. package/dist/surfaces/cli/index.js.map +1 -1
  110. package/dist/surfaces/cli/init.d.ts +2 -25
  111. package/dist/surfaces/cli/init.d.ts.map +1 -1
  112. package/dist/surfaces/cli/init.js +57 -312
  113. package/dist/surfaces/cli/init.js.map +1 -1
  114. package/dist/surfaces/cli/output.d.ts.map +1 -1
  115. package/dist/surfaces/cli/output.js +1 -3
  116. package/dist/surfaces/cli/output.js.map +1 -1
  117. package/dist/surfaces/cli/runtime/env.d.ts +0 -5
  118. package/dist/surfaces/cli/runtime/env.d.ts.map +1 -1
  119. package/dist/surfaces/cli/runtime/env.js +0 -115
  120. package/dist/surfaces/cli/runtime/env.js.map +1 -1
  121. package/dist/surfaces/cli/runtime/facade.d.ts +10 -17
  122. package/dist/surfaces/cli/runtime/facade.d.ts.map +1 -1
  123. package/dist/surfaces/cli/runtime/facade.js +5 -5
  124. package/dist/surfaces/cli/runtime/facade.js.map +1 -1
  125. package/dist/surfaces/cli/runtime/graph.d.ts +11 -21
  126. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
  127. package/dist/surfaces/cli/runtime/graph.js +31 -261
  128. package/dist/surfaces/cli/runtime/graph.js.map +1 -1
  129. package/dist/surfaces/cli/runtime/learning.d.ts +6 -0
  130. package/dist/surfaces/cli/runtime/learning.d.ts.map +1 -0
  131. package/dist/surfaces/cli/runtime/learning.js +28 -0
  132. package/dist/surfaces/cli/runtime/learning.js.map +1 -0
  133. package/dist/surfaces/cli/runtime/routing.d.ts +1 -3
  134. package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
  135. package/dist/surfaces/cli/runtime/routing.js +12 -36
  136. package/dist/surfaces/cli/runtime/routing.js.map +1 -1
  137. package/dist/surfaces/cli/runtime/settings.d.ts.map +1 -1
  138. package/dist/surfaces/cli/runtime/settings.js +11 -117
  139. package/dist/surfaces/cli/runtime/settings.js.map +1 -1
  140. package/dist/surfaces/cli/runtime/types.d.ts +11 -35
  141. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
  142. package/dist/surfaces/cli/runtime.d.ts +4 -4
  143. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  144. package/dist/surfaces/cli/runtime.js +5 -12
  145. package/dist/surfaces/cli/runtime.js.map +1 -1
  146. package/dist/surfaces/mcp/server.d.ts +4 -4
  147. package/dist/surfaces/mcp/server.d.ts.map +1 -1
  148. package/dist/surfaces/mcp/server.js +18 -21
  149. package/dist/surfaces/mcp/server.js.map +1 -1
  150. package/dist/surfaces/mcp/tool-definitions.d.ts.map +1 -1
  151. package/dist/surfaces/mcp/tool-definitions.js +0 -42
  152. package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
  153. package/dist/surfaces/mcp/tool-handlers.d.ts +1 -4
  154. package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
  155. package/dist/surfaces/mcp/tool-handlers.js +1 -64
  156. package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
  157. package/dist/utils/safe-fs.d.ts +6 -0
  158. package/dist/utils/safe-fs.d.ts.map +1 -0
  159. package/dist/utils/safe-fs.js +37 -0
  160. package/dist/utils/safe-fs.js.map +1 -0
  161. package/package.json +3 -5
  162. package/dist/graph/compression-model.d.ts +0 -52
  163. package/dist/graph/compression-model.d.ts.map +0 -1
  164. package/dist/graph/compression-model.js +0 -125
  165. package/dist/graph/compression-model.js.map +0 -1
  166. package/dist/graph/semantic-compression.d.ts +0 -65
  167. package/dist/graph/semantic-compression.d.ts.map +0 -1
  168. package/dist/graph/semantic-compression.js +0 -173
  169. package/dist/graph/semantic-compression.js.map +0 -1
  170. package/dist/graph/semantic-enricher.d.ts +0 -17
  171. package/dist/graph/semantic-enricher.d.ts.map +0 -1
  172. package/dist/graph/semantic-enricher.js +0 -97
  173. package/dist/graph/semantic-enricher.js.map +0 -1
  174. package/dist/learning/canary-gate.d.ts +0 -6
  175. package/dist/learning/canary-gate.d.ts.map +0 -1
  176. package/dist/learning/canary-gate.js +0 -13
  177. package/dist/learning/canary-gate.js.map +0 -1
  178. package/dist/learning/local-embedding.d.ts +0 -3
  179. package/dist/learning/local-embedding.d.ts.map +0 -1
  180. package/dist/learning/local-embedding.js +0 -37
  181. package/dist/learning/local-embedding.js.map +0 -1
  182. package/dist/learning/skill-evolution.d.ts +0 -16
  183. package/dist/learning/skill-evolution.d.ts.map +0 -1
  184. package/dist/learning/skill-evolution.js +0 -154
  185. package/dist/learning/skill-evolution.js.map +0 -1
  186. package/dist/learning/vector-store.d.ts +0 -20
  187. package/dist/learning/vector-store.d.ts.map +0 -1
  188. package/dist/learning/vector-store.js +0 -77
  189. package/dist/learning/vector-store.js.map +0 -1
  190. package/dist/routing/provider-adapters/openbmb.d.ts +0 -16
  191. package/dist/routing/provider-adapters/openbmb.d.ts.map +0 -1
  192. package/dist/routing/provider-adapters/openbmb.js +0 -368
  193. package/dist/routing/provider-adapters/openbmb.js.map +0 -1
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_EMBEDDED_MODEL_URL = exports.DEFAULT_EMBEDDED_MODEL = void 0;
4
- exports.isPlaceholderResponse = isPlaceholderResponse;
5
- exports.resolveCompressionModel = resolveCompressionModel;
6
- exports.ensureEmbeddedCompressionModel = ensureEmbeddedCompressionModel;
7
- exports.describeCompressionBackend = describeCompressionBackend;
8
- const node_fs_1 = require("node:fs");
9
- const logger_1 = require("../utils/logger");
10
- const model_router_1 = require("../routing/model-router");
11
- const provider_executor_1 = require("../routing/provider-executor");
12
- /**
13
- * Detects provider fallback placeholders like "[openai:gpt-4.1-mini] <prompt>".
14
- * These are returned by adapters when no real model is reachable; they must
15
- * never be written into the compressed context.
16
- */
17
- function isPlaceholderResponse(text) {
18
- return /^\[(openai|anthropic|bailian|doubao|openbmb):[^\]]+\]/i.test(text.trim());
19
- }
20
- /**
21
- * Resolves the compression model based on config, auto-downloading the embedded
22
- * model if needed. Returns a handle with a unified generate() method.
23
- */
24
- async function resolveCompressionModel(config, configPath) {
25
- const selection = (0, model_router_1.resolveModelForRole)("compressor", configPath);
26
- const isEmbedded = selection.provider === "openbmb";
27
- const timeoutMs = config.graphPolicy.compression?.timeoutMs;
28
- // Probe availability: external providers need an API key, embedded needs a model file.
29
- let available = true;
30
- if (isEmbedded) {
31
- const autoDownload = config.graphPolicy.compression?.autoDownloadEmbedded !== false;
32
- if (autoDownload) {
33
- try {
34
- await ensureEmbeddedCompressionModel(config, configPath);
35
- }
36
- catch (error) {
37
- logger_1.logger.warn({ error }, "Embedded model auto-download failed; compression will degrade to graph-only");
38
- }
39
- }
40
- const modelPath = process.env.GRAPHFLOW_OPENBMB_MODEL_PATH;
41
- available = Boolean(modelPath && (0, node_fs_1.existsSync)(modelPath));
42
- }
43
- else {
44
- const providerConfig = config.providers[selection.provider];
45
- const apiKey = providerConfig?.apiKey;
46
- // Unresolved "${ENV}" placeholders or missing keys mean no reachable model.
47
- available = Boolean(apiKey && !/^\$\{.*\}$/.test(apiKey.trim()) && apiKey.trim().length > 0);
48
- }
49
- if (!available) {
50
- logger_1.logger.info({ provider: selection.provider, model: selection.model }, "No usable compression model; semantic compression will be skipped (graph-structure compression still active)");
51
- }
52
- return {
53
- provider: selection.provider,
54
- model: selection.model,
55
- isEmbedded,
56
- available,
57
- async generate(prompt, maxTokens) {
58
- const previousMax = process.env.GRAPHFLOW_OPENBMB_MAX_TOKENS;
59
- const previousTimeout = process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS;
60
- if (maxTokens !== undefined) {
61
- process.env.GRAPHFLOW_OPENBMB_MAX_TOKENS = String(maxTokens);
62
- }
63
- if (timeoutMs !== undefined) {
64
- process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS = String(timeoutMs);
65
- }
66
- try {
67
- const result = await (0, provider_executor_1.executeRolePrompt)("compressor", prompt, selection);
68
- // Guard: never let a provider placeholder leak into compressed context.
69
- if (isPlaceholderResponse(result)) {
70
- throw new Error(`Compression model unavailable (${selection.provider}/${selection.model})`);
71
- }
72
- return result;
73
- }
74
- finally {
75
- restoreEnv("GRAPHFLOW_OPENBMB_MAX_TOKENS", previousMax);
76
- restoreEnv("GRAPHFLOW_PROVIDER_TIMEOUT_MS", previousTimeout);
77
- }
78
- },
79
- };
80
- }
81
- function restoreEnv(key, previous) {
82
- if (previous === undefined) {
83
- delete process.env[key];
84
- }
85
- else {
86
- process.env[key] = previous;
87
- }
88
- }
89
- /** Default embedded model: MiniCPM-1B Q4_K_M GGUF (~650MB). */
90
- exports.DEFAULT_EMBEDDED_MODEL = "minicpm-1b";
91
- exports.DEFAULT_EMBEDDED_MODEL_URL = "https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16-llama-format-gguf/resolve/main/ggml-model-Q4_K_M.gguf";
92
- /**
93
- * Ensures the embedded compression model is downloaded. Reuses the existing
94
- * robust downloader (resumable, sha256-verified, file-locked) from the CLI
95
- * runtime. Returns the resolved model path.
96
- */
97
- async function ensureEmbeddedCompressionModel(config, configPath) {
98
- const { downloadOpenBmbModel } = await import("../surfaces/cli/runtime/graph.js");
99
- const customPath = config.graphPolicy.compression?.embeddedModelPath;
100
- // Provide a default URL if user hasn't configured one via env.
101
- if (!process.env.GRAPHFLOW_MINICPM_MODEL_URL) {
102
- process.env.GRAPHFLOW_MINICPM_MODEL_URL = exports.DEFAULT_EMBEDDED_MODEL_URL;
103
- }
104
- const result = await downloadOpenBmbModel(configPath, {
105
- model: exports.DEFAULT_EMBEDDED_MODEL,
106
- ...(customPath ? { targetPath: customPath } : {}),
107
- });
108
- // Point the embedded runtime at the downloaded model.
109
- process.env.GRAPHFLOW_OPENBMB_MODEL_PATH = result.targetPath;
110
- return result.targetPath;
111
- }
112
- /**
113
- * Reports which compression backend is active, for diagnostics/UI.
114
- */
115
- function describeCompressionBackend(config, _configPath) {
116
- const backend = config.graphPolicy.compression?.backend ?? "inherit";
117
- const selection = (0, model_router_1.resolveCompressorSelection)(config);
118
- return {
119
- backend,
120
- provider: selection.provider,
121
- model: selection.model,
122
- embedded: selection.provider === "openbmb",
123
- };
124
- }
125
- //# sourceMappingURL=compression-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compression-model.js","sourceRoot":"","sources":["../../src/graph/compression-model.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- import type { GraphNode } from "../core/types";
2
- import { type EmbeddingProvider } from "../learning/embeddings";
3
- import { type OpenBmbRuntimeOptions } from "../routing/provider-adapters/openbmb";
4
- import type { CompressionModelHandle } from "./compression-model";
5
- /**
6
- * Semantic compression via minicpm-1b: cluster similar nodes and generate
7
- * unified summaries, or condense verbose content into dense descriptions.
8
- *
9
- * This is the "Layer 1" compression that leverages the local LLM after graph-
10
- * structure pruning has already reduced the candidate set.
11
- */
12
- export interface ClusteringOptions {
13
- embeddingProvider?: EmbeddingProvider;
14
- similarityThreshold?: number;
15
- maxClusterSize?: number;
16
- }
17
- export interface NodeCluster {
18
- representative: GraphNode;
19
- members: GraphNode[];
20
- avgSimilarity: number;
21
- }
22
- /**
23
- * Clusters nodes by embedding similarity. Nodes within a cluster can be
24
- * merged into a single summary line to save tokens.
25
- */
26
- export declare function clusterSimilarNodes(nodes: GraphNode[], options?: ClusteringOptions): Promise<NodeCluster[]>;
27
- export interface SummarizerOptions extends OpenBmbRuntimeOptions {
28
- maxSummaryTokens?: number;
29
- /** Preferred: unified compression model handle (auto-selects external/embedded). */
30
- modelHandle?: CompressionModelHandle;
31
- }
32
- /**
33
- * Generates a unified summary for a cluster of similar nodes.
34
- * Uses the provided compression model handle (external or embedded) if given,
35
- * otherwise falls back to direct embedded openbmb invocation.
36
- * Example: 3 overloaded `login()` variants → "login function with 3 signatures".
37
- */
38
- export declare function summarizeCluster(cluster: NodeCluster, options?: SummarizerOptions): Promise<string>;
39
- export interface DensifierOptions extends OpenBmbRuntimeOptions {
40
- maxOutputTokens?: number;
41
- minInputTokens?: number;
42
- /** Preferred: unified compression model handle (auto-selects external/embedded). */
43
- modelHandle?: CompressionModelHandle;
44
- }
45
- /**
46
- * Rewrites verbose node content into dense summaries.
47
- * Uses the provided compression model handle if given, otherwise falls back to
48
- * direct embedded openbmb invocation. Only applies to nodes exceeding minInputTokens.
49
- */
50
- export declare function densifyNodeContent(node: GraphNode, options?: DensifierOptions): Promise<string>;
51
- /**
52
- * High-level pipeline: cluster similar nodes, summarize each cluster, and
53
- * densify remaining verbose nodes. Returns compressed node set.
54
- *
55
- * When a compression model handle is provided, summarization/densification
56
- * route through it (external economy tier or embedded minicpm); otherwise they
57
- * fall back to direct embedded openbmb invocation.
58
- */
59
- export declare function applySemanticCompression(nodes: GraphNode[], options?: {
60
- clusteringOptions?: ClusteringOptions;
61
- summarizerOptions?: SummarizerOptions;
62
- densifierOptions?: DensifierOptions;
63
- modelHandle?: CompressionModelHandle;
64
- }): Promise<GraphNode[]>;
65
- //# sourceMappingURL=semantic-compression.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-compression.d.ts","sourceRoot":"","sources":["../../src/graph/semantic-compression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAsC,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;;;;GAMG;AAEH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,SAAS,CAAC;IAC1B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,WAAW,EAAE,CAAC,CA6CxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,GACA,OAAO,CAAC,SAAS,EAAE,CAAC,CA6CtB"}
@@ -1,173 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clusterSimilarNodes = clusterSimilarNodes;
4
- exports.summarizeCluster = summarizeCluster;
5
- exports.densifyNodeContent = densifyNodeContent;
6
- exports.applySemanticCompression = applySemanticCompression;
7
- const embeddings_1 = require("../learning/embeddings");
8
- const openbmb_1 = require("../routing/provider-adapters/openbmb");
9
- /**
10
- * Clusters nodes by embedding similarity. Nodes within a cluster can be
11
- * merged into a single summary line to save tokens.
12
- */
13
- async function clusterSimilarNodes(nodes, options) {
14
- const threshold = options?.similarityThreshold ?? 0.75;
15
- const maxSize = options?.maxClusterSize ?? 5;
16
- // Ensure all nodes have embeddings.
17
- const withEmbedding = nodes.filter((n) => (0, embeddings_1.extractEmbedding)(n) !== null);
18
- if (withEmbedding.length === 0)
19
- return [];
20
- const clusters = [];
21
- const assigned = new Set();
22
- for (const candidate of withEmbedding) {
23
- if (assigned.has(candidate.id))
24
- continue;
25
- const cluster = [candidate];
26
- assigned.add(candidate.id);
27
- const candidateEmb = (0, embeddings_1.extractEmbedding)(candidate);
28
- let simSum = 0;
29
- for (const other of withEmbedding) {
30
- if (assigned.has(other.id))
31
- continue;
32
- if (cluster.length >= maxSize)
33
- break;
34
- const otherEmb = (0, embeddings_1.extractEmbedding)(other);
35
- if (!otherEmb)
36
- continue;
37
- const sim = (0, embeddings_1.cosineSimilarity)(candidateEmb, otherEmb);
38
- if (sim >= threshold) {
39
- cluster.push(other);
40
- assigned.add(other.id);
41
- simSum += sim;
42
- }
43
- }
44
- // Only create cluster if we found similar nodes (cluster size > 1).
45
- if (cluster.length > 1) {
46
- clusters.push({
47
- representative: candidate,
48
- members: cluster,
49
- avgSimilarity: simSum / (cluster.length - 1),
50
- });
51
- }
52
- }
53
- return clusters;
54
- }
55
- /**
56
- * Generates a unified summary for a cluster of similar nodes.
57
- * Uses the provided compression model handle (external or embedded) if given,
58
- * otherwise falls back to direct embedded openbmb invocation.
59
- * Example: 3 overloaded `login()` variants → "login function with 3 signatures".
60
- */
61
- async function summarizeCluster(cluster, options) {
62
- const memberContents = cluster.members.map((m) => m.content).slice(0, 5);
63
- const prompt = [
64
- "你是代码摘要生成器。多个相似的代码片段需要合并为一句统一描述。",
65
- "要求:",
66
- "1. 用一句话概括它们的共同功能(20字以内)",
67
- "2. 如果是重载/变体,说明有几个版本",
68
- "3. 不要逐个列举,只给出统一摘要",
69
- "",
70
- "代码片段:",
71
- ...memberContents.map((c, i) => `${i + 1}. ${c}`),
72
- "",
73
- "统一摘要:",
74
- ].join("\n");
75
- const maxTokens = options?.maxSummaryTokens ?? 64;
76
- try {
77
- const result = options?.modelHandle
78
- ? await options.modelHandle.generate(prompt, maxTokens)
79
- : await (0, openbmb_1.openbmbGenerateText)({ prompt, model: options?.modelPath ?? "minicpm-1b" }, { ...options, maxTokens });
80
- return result.trim().replace(/^统一摘要[::]?\s*/i, "");
81
- }
82
- catch {
83
- // Degrade gracefully: if no model is available, keep the representative's original content.
84
- return cluster.representative.content;
85
- }
86
- }
87
- /**
88
- * Rewrites verbose node content into dense summaries.
89
- * Uses the provided compression model handle if given, otherwise falls back to
90
- * direct embedded openbmb invocation. Only applies to nodes exceeding minInputTokens.
91
- */
92
- async function densifyNodeContent(node, options) {
93
- const content = node.content;
94
- const minInput = options?.minInputTokens ?? 150;
95
- const estimatedTokens = Math.ceil(content.length / 4);
96
- if (estimatedTokens < minInput) {
97
- // Already concise.
98
- return content;
99
- }
100
- const prompt = [
101
- "你是代码压缩专家。将以下代码签名/内容改写为极简版(保留核心信息,去掉冗余)。",
102
- "要求:",
103
- "1. 保留函数名、参数、返回类型",
104
- "2. 去掉注释、装饰器、冗长描述",
105
- "3. 输出格式:function_name(params) -> return_type | 核心功能",
106
- "",
107
- `原内容:\n${content.slice(0, 600)}`,
108
- "",
109
- "压缩版:",
110
- ].join("\n");
111
- const maxTokens = options?.maxOutputTokens ?? 80;
112
- try {
113
- const result = options?.modelHandle
114
- ? await options.modelHandle.generate(prompt, maxTokens)
115
- : await (0, openbmb_1.openbmbGenerateText)({ prompt, model: options?.modelPath ?? "minicpm-1b" }, { ...options, maxTokens });
116
- return result.trim().replace(/^压缩版[::]?\s*/i, "");
117
- }
118
- catch {
119
- // Degrade gracefully: if no model is available, keep the original content.
120
- return content;
121
- }
122
- }
123
- /**
124
- * High-level pipeline: cluster similar nodes, summarize each cluster, and
125
- * densify remaining verbose nodes. Returns compressed node set.
126
- *
127
- * When a compression model handle is provided, summarization/densification
128
- * route through it (external economy tier or embedded minicpm); otherwise they
129
- * fall back to direct embedded openbmb invocation.
130
- */
131
- async function applySemanticCompression(nodes, options) {
132
- const clusters = await clusterSimilarNodes(nodes, options?.clusteringOptions);
133
- const clusterIds = new Set(clusters.flatMap((c) => c.members.map((m) => m.id)));
134
- const summarizerOptions = {
135
- ...options?.summarizerOptions,
136
- ...(options?.modelHandle ? { modelHandle: options.modelHandle } : {}),
137
- };
138
- const densifierOptions = {
139
- ...options?.densifierOptions,
140
- ...(options?.modelHandle ? { modelHandle: options.modelHandle } : {}),
141
- };
142
- const compressed = [];
143
- // Replace each cluster with a single summarized node.
144
- for (const cluster of clusters) {
145
- const summary = await summarizeCluster(cluster, summarizerOptions);
146
- compressed.push({
147
- ...cluster.representative,
148
- content: summary,
149
- metadata: {
150
- ...cluster.representative.metadata,
151
- compressed: true,
152
- clusterSize: cluster.members.length,
153
- originalIds: cluster.members.map((m) => m.id),
154
- },
155
- });
156
- }
157
- // Densify non-clustered nodes if verbose.
158
- for (const node of nodes) {
159
- if (clusterIds.has(node.id))
160
- continue;
161
- const dense = await densifyNodeContent(node, densifierOptions);
162
- compressed.push({
163
- ...node,
164
- content: dense,
165
- metadata: {
166
- ...node.metadata,
167
- ...(dense !== node.content ? { densified: true } : {}),
168
- },
169
- });
170
- }
171
- return compressed;
172
- }
173
- //# sourceMappingURL=semantic-compression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-compression.js","sourceRoot":"","sources":["../../src/graph/semantic-compression.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { GraphClient } from "./client-factory";
2
- export interface EnricherOptions {
3
- batchSize?: number;
4
- sleepMs?: number;
5
- /** Explicit model override; when omitted, routing uses semanticEnrichment/economy tier config. */
6
- model?: string;
7
- /** @deprecated Use `model` instead. */
8
- openbmbModel?: string;
9
- timeoutMs?: number;
10
- }
11
- /**
12
- * 后台静默富化图谱节点语义
13
- */
14
- export declare function enrichGraphSemanticsSilent(client: GraphClient, options?: EnricherOptions): Promise<{
15
- enrichedCount: number;
16
- }>;
17
- //# sourceMappingURL=semantic-enricher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-enricher.d.ts","sourceRoot":"","sources":["../../src/graph/semantic-enricher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CA8FpC"}
@@ -1,97 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enrichGraphSemanticsSilent = enrichGraphSemanticsSilent;
4
- const logger_1 = require("../utils/logger");
5
- const provider_executor_1 = require("../routing/provider-executor");
6
- const model_router_1 = require("../routing/model-router");
7
- /**
8
- * 后台静默富化图谱节点语义
9
- */
10
- async function enrichGraphSemanticsSilent(client, options) {
11
- if (!client.readSnapshot || typeof client.readSnapshot !== "function") {
12
- return { enrichedCount: 0 };
13
- }
14
- const batchSize = options?.batchSize ?? 5;
15
- const sleepMs = options?.sleepMs ?? 0;
16
- const modelOverride = options?.model ?? options?.openbmbModel;
17
- const timeoutMs = options?.timeoutMs;
18
- // 1. 读取当前图谱快照
19
- const snapshot = await client.readSnapshot();
20
- // 2. 筛选出缺乏自然语言摘要说明的 Symbol 节点
21
- const pendingNodes = snapshot.nodes.filter((node) => {
22
- if (node.type !== "Symbol")
23
- return false;
24
- const summary = node.metadata?.summary;
25
- return typeof summary !== "string" || summary.trim().length === 0;
26
- });
27
- if (pendingNodes.length === 0) {
28
- return { enrichedCount: 0 };
29
- }
30
- // 3. 小批量增量提取并分析
31
- const batch = pendingNodes.slice(0, batchSize);
32
- const updatedNodes = [];
33
- for (const node of batch) {
34
- const codeSignature = node.content; // 原有的代码签名行
35
- const fileSource = node.metadata?.file ?? "unknown";
36
- const prompt = [
37
- "你是一个卓越的代码语义分析器。",
38
- "请用一句话极其精炼地总结以下代码片段或函数签名的核心功能,限 20 字以内(使用中文)。",
39
- "绝不要输出任何解释、标点或引言,直接给出核心功能总结。",
40
- `代码签名: ${safeQuote(codeSignature)}`,
41
- `所在文件: ${fileSource}`,
42
- "功能总结:"
43
- ].join("\n");
44
- try {
45
- const selection = (0, model_router_1.resolveModelForRole)("enricher");
46
- if (modelOverride?.trim()) {
47
- selection.model = modelOverride.trim();
48
- }
49
- const previousTimeout = process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS;
50
- if (timeoutMs !== undefined) {
51
- process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS = String(timeoutMs);
52
- }
53
- let rawSummary = "";
54
- try {
55
- rawSummary = await (0, provider_executor_1.executeRolePrompt)("enricher", prompt, selection);
56
- }
57
- finally {
58
- if (timeoutMs !== undefined) {
59
- if (previousTimeout === undefined) {
60
- delete process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS;
61
- }
62
- else {
63
- process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS = previousTimeout;
64
- }
65
- }
66
- }
67
- const summary = rawSummary.trim().replace(/^功能总结[::]?\s*/, "");
68
- // 5. 写入 metadata 存储
69
- updatedNodes.push({
70
- ...node,
71
- metadata: {
72
- ...node.metadata,
73
- summary: summary || "无描述",
74
- enrichedAt: Date.now()
75
- }
76
- });
77
- // 批次内微休眠,保护系统 IO 性能
78
- if (sleepMs > 0) {
79
- await new Promise((resolve) => setTimeout(resolve, sleepMs));
80
- }
81
- }
82
- catch (error) {
83
- logger_1.logger.error({ error }, "Caught error");
84
- // 异常保护,如果小模型离线或限流,跳过当前节点,保证后台线程绝对健壮
85
- continue;
86
- }
87
- }
88
- // 6. 增量写回图谱数据库 (SQLite 或 File 自动增量更新)
89
- if (updatedNodes.length > 0) {
90
- await client.upsertNodes(updatedNodes);
91
- }
92
- return { enrichedCount: updatedNodes.length };
93
- }
94
- function safeQuote(value) {
95
- return "```\n" + value.replace(/```/g, "''").slice(0, 800) + "\n```";
96
- }
97
- //# sourceMappingURL=semantic-enricher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-enricher.js","sourceRoot":"","sources":["../../src/graph/semantic-enricher.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export interface CanaryDecision {
2
- allowNewPolicy: boolean;
3
- reason: string;
4
- }
5
- export declare function evaluateCanary(trafficPercent: number, firstPassRateDelta: number, tokenDelta: number): CanaryDecision;
6
- //# sourceMappingURL=canary-gate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canary-gate.d.ts","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,GACjB,cAAc,CAUhB"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.evaluateCanary = evaluateCanary;
4
- function evaluateCanary(trafficPercent, firstPassRateDelta, tokenDelta) {
5
- if (trafficPercent <= 0) {
6
- return { allowNewPolicy: false, reason: "Canary traffic is disabled." };
7
- }
8
- if (firstPassRateDelta < 0 || tokenDelta > 0) {
9
- return { allowNewPolicy: false, reason: "Metrics regressed, rollback required." };
10
- }
11
- return { allowNewPolicy: true, reason: "Metrics passed canary gate." };
12
- }
13
- //# sourceMappingURL=canary-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canary-gate.js","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":";;AAKA,wCAcC;AAdD,SAAgB,cAAc,CAC5B,cAAsB,EACtB,kBAA0B,EAC1B,UAAkB;IAElB,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC1E,CAAC;IAED,IAAI,kBAAkB,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACpF,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;AACzE,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { EmbeddingProvider } from "./embeddings.js";
2
- export declare function createLocalEmbeddingProvider(modelName?: string): EmbeddingProvider;
3
- //# sourceMappingURL=local-embedding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-embedding.d.ts","sourceRoot":"","sources":["../../src/learning/local-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,wBAAgB,4BAA4B,CAC1C,SAAS,GAAE,MAAkC,GAC5C,iBAAiB,CAwCnB"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLocalEmbeddingProvider = createLocalEmbeddingProvider;
4
- function createLocalEmbeddingProvider(modelName = "Xenova/bge-base-zh-v1.5") {
5
- let pipelinePromise = null;
6
- // 预热标记:确保本地模型的懒加载管线只触发一次
7
- let warmupStarted = false;
8
- return {
9
- async embed(text) {
10
- if (!pipelinePromise) {
11
- pipelinePromise = (async () => {
12
- const { pipeline } = await import("@xenova/transformers");
13
- const extractor = await pipeline("feature-extraction", modelName);
14
- return extractor;
15
- })();
16
- }
17
- const extractor = await pipelinePromise;
18
- const output = await extractor(text, { pooling: "mean", normalize: true });
19
- return Array.from(output.data);
20
- },
21
- // 预热:用 dummy 文本 "warmup" 触发一次推理,提前完成模型权重加载与管线初始化,
22
- // 避免首个真实请求承担冷启动延迟。幂等:仅触发一次实际加载。
23
- async warmup() {
24
- if (warmupStarted) {
25
- // 等待已在进行的加载完成即可
26
- if (pipelinePromise) {
27
- await pipelinePromise.catch(() => undefined);
28
- }
29
- return;
30
- }
31
- warmupStarted = true;
32
- // embed 内部会初始化 pipelinePromise 并执行一次推理
33
- await this.embed("warmup").catch(() => undefined);
34
- },
35
- };
36
- }
37
- //# sourceMappingURL=local-embedding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-embedding.js","sourceRoot":"","sources":["../../src/learning/local-embedding.ts"],"names":[],"mappings":";;AAEA,oEA0CC;AA1CD,SAAgB,4BAA4B,CAC1C,YAAoB,yBAAyB;IAE7C,IAAI,eAAe,GAER,IAAI,CAAC;IAEhB,yBAAyB;IACzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAY;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;oBAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;oBAC1D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;oBAClE,OAAO,SAGkC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,kDAAkD;QAClD,gCAAgC;QAChC,KAAK,CAAC,MAAM;YACV,IAAI,aAAa,EAAE,CAAC;gBAClB,gBAAgB;gBAChB,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO;YACT,CAAC;YACD,aAAa,GAAG,IAAI,CAAC;YACrB,uCAAuC;YACvC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { GraphNode } from "../core/types";
2
- import type { GraphClient } from "../graph/client-factory";
3
- import type { CompositeSkillState, EvolutionarySkillNode } from "./skill-types";
4
- /**
5
- * 调遣 MiniCPM-1B 模拟人类进行跨技能融会贯通与概念演进
6
- */
7
- export declare function evolveCompositeSkillLlm(_client: GraphClient, n1: string, n2: string, previousComposite: CompositeSkillState | null): Promise<GraphNode | null>;
8
- export declare function getTripleAtomNames(skills: string[]): [string, string, string] | undefined;
9
- export declare function buildTripleFusionNode(names: [string, string, string], now: number): GraphNode | undefined;
10
- export declare function cleanJsonString(raw: string, n1: string, n2: string): string;
11
- /**
12
- * 更新合成技能的 canary 验证状态
13
- * 当 canaryUses >= 3 时评估通过率决定 verified 或 demoted
14
- */
15
- export declare function updateSkillCanary(client: GraphClient, skillId: string, outcome: 'pass' | 'fail'): Promise<EvolutionarySkillNode | undefined>;
16
- //# sourceMappingURL=skill-evolution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-evolution.d.ts","sourceRoot":"","sources":["../../src/learning/skill-evolution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGhF;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,iBAAiB,EAAE,mBAAmB,GAAG,IAAI,GAC5C,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAwD3B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAUzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAuBzG;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA+B5C"}