@roarpeng/graphflow 1.9.16 → 1.12.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 (90) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/README.md +9 -8
  3. package/README.zh.md +3 -2
  4. package/dist/config/resolve.d.ts +13 -1
  5. package/dist/config/resolve.d.ts.map +1 -1
  6. package/dist/config/resolve.js +29 -3
  7. package/dist/config/resolve.js.map +1 -1
  8. package/dist/config/workspace-root.d.ts +6 -0
  9. package/dist/config/workspace-root.d.ts.map +1 -1
  10. package/dist/config/workspace-root.js +3 -2
  11. package/dist/config/workspace-root.js.map +1 -1
  12. package/dist/graph/graphify-file-client.d.ts +49 -0
  13. package/dist/graph/graphify-file-client.d.ts.map +1 -1
  14. package/dist/graph/graphify-file-client.js +113 -15
  15. package/dist/graph/graphify-file-client.js.map +1 -1
  16. package/dist/graph/knowledge-extraction.d.ts +43 -0
  17. package/dist/graph/knowledge-extraction.d.ts.map +1 -0
  18. package/dist/graph/knowledge-extraction.js +274 -0
  19. package/dist/graph/knowledge-extraction.js.map +1 -0
  20. package/dist/graph/token-savings.d.ts +39 -0
  21. package/dist/graph/token-savings.d.ts.map +1 -1
  22. package/dist/graph/token-savings.js +138 -0
  23. package/dist/graph/token-savings.js.map +1 -1
  24. package/dist/learning/canary-gate.d.ts +5 -1
  25. package/dist/learning/canary-gate.d.ts.map +1 -1
  26. package/dist/learning/canary-gate.js +5 -2
  27. package/dist/learning/canary-gate.js.map +1 -1
  28. package/dist/learning/episodic-memory.d.ts.map +1 -1
  29. package/dist/learning/episodic-memory.js +19 -3
  30. package/dist/learning/episodic-memory.js.map +1 -1
  31. package/dist/learning/skill-admission.d.ts +55 -10
  32. package/dist/learning/skill-admission.d.ts.map +1 -1
  33. package/dist/learning/skill-admission.js +177 -35
  34. package/dist/learning/skill-admission.js.map +1 -1
  35. package/dist/learning/skill-flywheel.d.ts +24 -6
  36. package/dist/learning/skill-flywheel.d.ts.map +1 -1
  37. package/dist/learning/skill-flywheel.js +99 -19
  38. package/dist/learning/skill-flywheel.js.map +1 -1
  39. package/dist/learning/skill-markdown.d.ts +12 -0
  40. package/dist/learning/skill-markdown.d.ts.map +1 -0
  41. package/dist/learning/skill-markdown.js +226 -0
  42. package/dist/learning/skill-markdown.js.map +1 -0
  43. package/dist/learning/skill-store.d.ts.map +1 -1
  44. package/dist/learning/skill-store.js +23 -4
  45. package/dist/learning/skill-store.js.map +1 -1
  46. package/dist/learning/skill-types.d.ts +10 -0
  47. package/dist/learning/skill-types.d.ts.map +1 -1
  48. package/dist/learning/skill-types.js.map +1 -1
  49. package/dist/learning/workflow-skill.d.ts +2 -0
  50. package/dist/learning/workflow-skill.d.ts.map +1 -1
  51. package/dist/learning/workflow-skill.js +15 -0
  52. package/dist/learning/workflow-skill.js.map +1 -1
  53. package/dist/surfaces/cli/index.js +69 -0
  54. package/dist/surfaces/cli/index.js.map +1 -1
  55. package/dist/surfaces/cli/output.d.ts.map +1 -1
  56. package/dist/surfaces/cli/output.js +3 -0
  57. package/dist/surfaces/cli/output.js.map +1 -1
  58. package/dist/surfaces/cli/runtime/dialogue.js +3 -3
  59. package/dist/surfaces/cli/runtime/dialogue.js.map +1 -1
  60. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
  61. package/dist/surfaces/cli/runtime/graph.js +14 -10
  62. package/dist/surfaces/cli/runtime/graph.js.map +1 -1
  63. package/dist/surfaces/cli/runtime/knowledge.d.ts +37 -0
  64. package/dist/surfaces/cli/runtime/knowledge.d.ts.map +1 -0
  65. package/dist/surfaces/cli/runtime/knowledge.js +162 -0
  66. package/dist/surfaces/cli/runtime/knowledge.js.map +1 -0
  67. package/dist/surfaces/cli/runtime/routing.js +3 -3
  68. package/dist/surfaces/cli/runtime/routing.js.map +1 -1
  69. package/dist/surfaces/cli/runtime/types.d.ts +6 -0
  70. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
  71. package/dist/surfaces/cli/runtime.d.ts +1 -0
  72. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  73. package/dist/surfaces/cli/runtime.js +5 -1
  74. package/dist/surfaces/cli/runtime.js.map +1 -1
  75. package/dist/surfaces/mcp/server.d.ts +24 -0
  76. package/dist/surfaces/mcp/server.d.ts.map +1 -1
  77. package/dist/surfaces/mcp/server.js +265 -1
  78. package/dist/surfaces/mcp/server.js.map +1 -1
  79. package/dist/surfaces/mcp/tool-definitions.d.ts +1 -0
  80. package/dist/surfaces/mcp/tool-definitions.d.ts.map +1 -1
  81. package/dist/surfaces/mcp/tool-definitions.js +9 -1
  82. package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
  83. package/dist/surfaces/mcp/tool-handlers.d.ts +4 -1
  84. package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
  85. package/dist/surfaces/mcp/tool-handlers.js +69 -19
  86. package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
  87. package/dsh/client.js +431 -0
  88. package/dsh/plugin.mjs +766 -40
  89. package/package.json +12 -3
  90. package/plugin.json +1 -1
@@ -0,0 +1,43 @@
1
+ import type { GraphEdge, GraphNode } from "../core/types.js";
2
+ export interface KnowledgeTurnRecord {
3
+ turnId: string;
4
+ query: string;
5
+ reply: string;
6
+ }
7
+ export interface KnowledgeDocumentInput {
8
+ text?: string;
9
+ turns?: KnowledgeTurnRecord[];
10
+ }
11
+ export type KnowledgeExtractionInput = string | KnowledgeTurnRecord | KnowledgeDocumentInput;
12
+ export interface KnowledgeEvidence {
13
+ /** Offset within the containing document field, query, or reply. */
14
+ start: number;
15
+ end: number;
16
+ field?: "text" | "query" | "reply";
17
+ sourceTurnId?: string;
18
+ }
19
+ export interface KnowledgeGraphNodeMetadata {
20
+ domain: "doc";
21
+ kind: "concept" | "requirement";
22
+ confidence: number;
23
+ evidence: KnowledgeEvidence[];
24
+ sourceIds?: string[];
25
+ sourceTurnIds?: string[];
26
+ cue?: string;
27
+ }
28
+ export interface KnowledgeGraphFragment {
29
+ nodes: GraphNode[];
30
+ edges: GraphEdge[];
31
+ }
32
+ export interface KnowledgeExtractionOptions {
33
+ /** Existing graph source ID, normally `file:<relative-path>`. */
34
+ sourceNodeId?: string;
35
+ }
36
+ /**
37
+ * Extract deterministic Concept/Requirement fragments from dialogue or document text.
38
+ * No network access or model inference is involved.
39
+ */
40
+ export declare function extractEngineeringKnowledgeGraphFragment(input: KnowledgeExtractionInput, options?: KnowledgeExtractionOptions): KnowledgeGraphFragment;
41
+ /** Descriptive alias preferred by integrations that treat this as a graph adapter. */
42
+ export declare const extractKnowledgeGraphFragment: typeof extractEngineeringKnowledgeGraphFragment;
43
+ //# sourceMappingURL=knowledge-extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-extraction.d.ts","sourceRoot":"","sources":["../../src/graph/knowledge-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AAE7F,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA8QD;;;GAGG;AACH,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,wBAAwB,EAC/B,OAAO,GAAE,0BAA+B,GACvC,sBAAsB,CAwCxB;AAED,sFAAsF;AACtF,eAAO,MAAM,6BAA6B,iDAA2C,CAAC"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractKnowledgeGraphFragment = void 0;
4
+ exports.extractEngineeringKnowledgeGraphFragment = extractEngineeringKnowledgeGraphFragment;
5
+ const REQUIREMENT_CUES = [
6
+ { cue: "must", pattern: /\bmust(?:\s+not)?\b/i, confidence: 0.94 },
7
+ { cue: "shall", pattern: /\bshall(?:\s+not)?\b/i, confidence: 0.95 },
8
+ { cue: "required to", pattern: /\b(?:is\s+|are\s+)?required\s+to\b/i, confidence: 0.88 },
9
+ { cue: "needs to", pattern: /\bneeds?\s+to\b/i, confidence: 0.84 },
10
+ { cue: "should", pattern: /\bshould(?:\s+not)?\b/i, confidence: 0.82 },
11
+ { cue: "必须", pattern: /必须/, confidence: 0.94 },
12
+ { cue: "需要", pattern: /需要/, confidence: 0.86 },
13
+ { cue: "应当", pattern: /应当|应当不/, confidence: 0.86 },
14
+ { cue: "应该", pattern: /应该/, confidence: 0.8 },
15
+ { cue: "不得", pattern: /不得|不能/, confidence: 0.92 },
16
+ ];
17
+ const TECHNICAL_HEADS = [
18
+ "api", "architecture", "cache", "client", "contract", "database", "design",
19
+ "engine", "extractor", "graph", "index", "indexer", "interface", "kernel",
20
+ "module", "parser", "pipeline", "protocol", "queue", "schema", "service",
21
+ "storage", "store", "system", "transport", "workflow",
22
+ ];
23
+ const ENGLISH_STOP_WORDS = new Set([
24
+ "a", "all", "an", "and", "are", "as", "at", "be", "been", "but", "by",
25
+ "can", "could", "do", "does", "for", "from", "had", "has", "have", "how",
26
+ "i", "if", "in", "into", "is", "it", "its", "may", "might", "must", "need",
27
+ "needs", "not", "of", "on", "or", "our", "shall", "should", "so", "that",
28
+ "the", "their", "them", "then", "there", "these", "they", "this", "to",
29
+ "too", "was", "we", "were", "what", "when", "where", "which", "while",
30
+ "who", "why", "will", "with", "would", "you", "your",
31
+ ]);
32
+ const CONCEPT_SUFFIXES = [
33
+ "系统", "模块", "接口", "服务", "协议", "缓存", "队列", "架构", "引擎",
34
+ "调度器", "数据库", "工作流", "管道", "图谱", "提取器", "设计",
35
+ ];
36
+ function stableHash(value) {
37
+ let hash = 0x811c9dc5;
38
+ for (let index = 0; index < value.length; index += 1) {
39
+ hash ^= value.charCodeAt(index);
40
+ hash = Math.imul(hash, 0x01000193) >>> 0;
41
+ }
42
+ return hash.toString(36);
43
+ }
44
+ function nodeId(kind, value) {
45
+ const normalized = value.toLowerCase().replace(/\s+/g, " ").trim();
46
+ const asciiSlug = normalized
47
+ .replace(/[^a-z0-9]+/g, "-")
48
+ .replace(/^-+|-+$/g, "")
49
+ .slice(0, 56)
50
+ .replace(/^-+|-+$/g, "");
51
+ const digest = stableHash(`${kind}:${normalized}`);
52
+ return `${kind}:${asciiSlug ? `${asciiSlug}-` : ""}${digest}`;
53
+ }
54
+ function normalizeCandidate(candidate) {
55
+ return candidate.replace(/[`'".,;:!?()\[\]{}<>]+$/g, "").replace(/^[`'"(\[{<]+/g, "").trim();
56
+ }
57
+ function isTechnicalCandidate(candidate) {
58
+ const value = normalizeCandidate(candidate);
59
+ if (!value)
60
+ return false;
61
+ if (/[\u4e00-\u9fff]/.test(value)) {
62
+ return CONCEPT_SUFFIXES.some((suffix) => value.endsWith(suffix));
63
+ }
64
+ const hasCodeShape = /[/_]|_|-/.test(value) ||
65
+ /^[A-Z][a-z0-9]+(?:[A-Z][a-z0-9]+)+/.test(value) ||
66
+ /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Z][A-Za-z0-9_]*)+$/.test(value);
67
+ const words = value.toLowerCase().split(/[\s/-]+/).filter(Boolean);
68
+ const hasDottedIdentifier = /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)+$/.test(value);
69
+ if (hasDottedIdentifier) {
70
+ return true;
71
+ }
72
+ if (words.some((word) => ENGLISH_STOP_WORDS.has(word))) {
73
+ // A stop word is acceptable inside an explicit code identifier, but not in prose phrases.
74
+ if (!hasCodeShape || /\s/.test(value.trim()))
75
+ return false;
76
+ }
77
+ return TECHNICAL_HEADS.includes(words.at(-1) ?? "");
78
+ }
79
+ function extractConceptsFromSegment(segment) {
80
+ const found = new Map();
81
+ const add = (raw, localStart, localEnd, confidence) => {
82
+ const name = normalizeCandidate(raw);
83
+ if (name.length < 2 || name.length > 100 || !isTechnicalCandidate(name))
84
+ return;
85
+ const previous = found.get(name.toLowerCase());
86
+ if (!previous || previous.confidence < confidence) {
87
+ found.set(name.toLowerCase(), {
88
+ name,
89
+ start: segment.start + localStart,
90
+ end: segment.start + localEnd,
91
+ confidence,
92
+ });
93
+ }
94
+ };
95
+ const patterns = [
96
+ { pattern: /`([^`\n]{2,100})`/g, confidence: 0.96 },
97
+ { pattern: /\b[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)+\b/g, confidence: 0.95 },
98
+ { pattern: /\b[A-Za-z][\w.-]*(?:\/[\w.-]+)+\b/g, confidence: 0.94 },
99
+ { pattern: /\b[a-z]+(?:[A-Z][a-zA-Z0-9]*)+\b|\b[A-Z][a-z0-9]+(?:[A-Z][a-z0-9]+)+\b/g, confidence: 0.94 },
100
+ { pattern: /\b[A-Za-z][A-Za-z0-9_-]*(?:_[A-Za-z0-9_-]+)+\b/g, confidence: 0.93 },
101
+ {
102
+ pattern: new RegExp(`\\b(?:[A-Za-z][A-Za-z0-9-]*(?:\\s+[A-Za-z][A-Za-z0-9-]*){0,3}\\s+(?:${TECHNICAL_HEADS.join("|")}))\\b`, "gi"),
103
+ confidence: 0.82,
104
+ },
105
+ {
106
+ pattern: new RegExp(`[\\u4e00-\\u9fff]{2,16}(?:${CONCEPT_SUFFIXES.join("|")})`, "g"),
107
+ confidence: 0.84,
108
+ },
109
+ ];
110
+ for (const { pattern, confidence } of patterns) {
111
+ pattern.lastIndex = 0;
112
+ let match;
113
+ while ((match = pattern.exec(segment.text)) !== null) {
114
+ const raw = match[1] ?? match[0];
115
+ const index = match.index + match[0].indexOf(raw);
116
+ add(raw, index, index + raw.length, confidence);
117
+ if (match.index === pattern.lastIndex)
118
+ pattern.lastIndex += 1;
119
+ }
120
+ }
121
+ return [...found.values()].sort((left, right) => left.start - right.start);
122
+ }
123
+ function* segments(text, offset = 0) {
124
+ let start = 0;
125
+ for (let index = 0; index < text.length; index += 1) {
126
+ const char = text[index];
127
+ const next = text.at(index + 1);
128
+ const boundary = char !== undefined &&
129
+ ".?!;。!?;".includes(char) &&
130
+ (next === undefined || /\s/.exec(next) !== null);
131
+ const isNewline = char === "\n";
132
+ if (!boundary && !isNewline && index < text.length - 1)
133
+ continue;
134
+ const raw = text.slice(start, isNewline ? index : index + 1);
135
+ const cleaned = raw.trim();
136
+ if (cleaned.length > 2) {
137
+ const relativeStart = raw.indexOf(cleaned);
138
+ yield {
139
+ text: cleaned,
140
+ start: offset + start + (relativeStart >= 0 ? relativeStart : 0),
141
+ };
142
+ }
143
+ start = index + 1;
144
+ }
145
+ }
146
+ function matchRequirementCue(text) {
147
+ let best;
148
+ for (const item of REQUIREMENT_CUES) {
149
+ if (item.pattern.test(text) && (best?.confidence ?? 0) < item.confidence) {
150
+ best = { cue: item.cue, confidence: item.confidence };
151
+ }
152
+ }
153
+ return best;
154
+ }
155
+ function pushEvidence(target, evidence) {
156
+ if (!target.some((item) => item.start === evidence.start &&
157
+ item.end === evidence.end &&
158
+ item.field === evidence.field &&
159
+ item.sourceTurnId === evidence.sourceTurnId)) {
160
+ target.push(evidence);
161
+ }
162
+ }
163
+ function processField(text, field, sourceTurnId, nodesByKind) {
164
+ if (!nodesByKind)
165
+ return;
166
+ for (const segment of segments(text)) {
167
+ const cue = matchRequirementCue(segment.text);
168
+ const concepts = extractConceptsFromSegment(segment);
169
+ if (cue) {
170
+ const id = nodeId("requirement", segment.text.slice(0, 500));
171
+ const existing = nodesByKind.requirement.get(id);
172
+ const evidence = {
173
+ start: segment.start,
174
+ end: segment.start + segment.text.length,
175
+ ...(field ? { field } : {}),
176
+ ...(sourceTurnId ? { sourceTurnId } : {}),
177
+ };
178
+ if (existing) {
179
+ const metadata = existing.metadata;
180
+ pushEvidence(metadata.evidence, evidence);
181
+ metadata.confidence = Math.max(metadata.confidence, cue.confidence + (concepts.length ? 0.03 : 0));
182
+ if (metadata.confidence === cue.confidence) {
183
+ metadata.cue = cue.cue;
184
+ }
185
+ }
186
+ else {
187
+ nodesByKind.requirement.set(id, {
188
+ id,
189
+ type: "Requirement",
190
+ content: segment.text.slice(0, 500),
191
+ metadata: {
192
+ domain: "doc",
193
+ kind: "requirement",
194
+ confidence: Math.min(0.98, cue.confidence + (concepts.length ? 0.03 : 0)),
195
+ cue: cue.cue,
196
+ evidence: [evidence],
197
+ },
198
+ });
199
+ }
200
+ }
201
+ for (const concept of concepts) {
202
+ const id = nodeId("concept", concept.name);
203
+ const existing = nodesByKind.concept.get(id);
204
+ const evidence = {
205
+ start: concept.start,
206
+ end: concept.end,
207
+ ...(field ? { field } : {}),
208
+ ...(sourceTurnId ? { sourceTurnId } : {}),
209
+ };
210
+ if (existing) {
211
+ const metadata = existing.metadata;
212
+ pushEvidence(metadata.evidence, evidence);
213
+ metadata.confidence = Math.max(metadata.confidence, concept.confidence);
214
+ }
215
+ else {
216
+ nodesByKind.concept.set(id, {
217
+ id,
218
+ type: "Concept",
219
+ content: concept.name,
220
+ metadata: {
221
+ domain: "doc",
222
+ kind: "concept",
223
+ confidence: concept.confidence,
224
+ evidence: [evidence],
225
+ },
226
+ });
227
+ }
228
+ }
229
+ }
230
+ }
231
+ /**
232
+ * Extract deterministic Concept/Requirement fragments from dialogue or document text.
233
+ * No network access or model inference is involved.
234
+ */
235
+ function extractEngineeringKnowledgeGraphFragment(input, options = {}) {
236
+ const document = typeof input === "string"
237
+ ? { text: input }
238
+ : "turnId" in input
239
+ ? { turns: [input] }
240
+ : input;
241
+ const concepts = new Map();
242
+ const requirements = new Map();
243
+ const maps = { concept: concepts, requirement: requirements };
244
+ processField(document.text ?? "", "text", undefined, maps);
245
+ for (const turn of document.turns ?? []) {
246
+ const turnId = turn.turnId.trim();
247
+ processField(turn.query ?? "", "query", turnId || undefined, maps);
248
+ processField(turn.reply ?? "", "reply", turnId || undefined, maps);
249
+ }
250
+ const nodes = [...requirements.values(), ...concepts.values()];
251
+ const sourceIds = new Set(options.sourceNodeId ? [options.sourceNodeId] : []);
252
+ const edges = new Map();
253
+ for (const node of nodes) {
254
+ const metadata = node.metadata;
255
+ const turnIds = metadata.evidence
256
+ .map((item) => item.sourceTurnId)
257
+ .filter((item) => Boolean(item));
258
+ if (turnIds.length > 0)
259
+ metadata.sourceTurnIds = [...new Set(turnIds)];
260
+ for (const sourceId of sourceIds) {
261
+ edges.set(`${node.id}\u0000${sourceId}`, {
262
+ from: node.id,
263
+ to: sourceId,
264
+ relation: "derived_from",
265
+ });
266
+ }
267
+ if (sourceIds.size > 0)
268
+ metadata.sourceIds = [...sourceIds];
269
+ }
270
+ return { nodes, edges: [...edges.values()] };
271
+ }
272
+ /** Descriptive alias preferred by integrations that treat this as a graph adapter. */
273
+ exports.extractKnowledgeGraphFragment = extractEngineeringKnowledgeGraphFragment;
274
+ //# sourceMappingURL=knowledge-extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-extraction.js","sourceRoot":"","sources":["../../src/graph/knowledge-extraction.ts"],"names":[],"mappings":"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"}
@@ -62,4 +62,43 @@ export declare function resetSavingsStats(config: GraphFlowConfig): {
62
62
  path: string;
63
63
  reset: boolean;
64
64
  };
65
+ export interface ContextFidelityRecordInput {
66
+ timestamp?: string;
67
+ query?: string;
68
+ expectedAnchorIds: string[];
69
+ returnedAnchorIds: string[];
70
+ /** Anchor id to the authoritative/source body that should have been packaged. */
71
+ expectedBodies?: Record<string, string>;
72
+ /** Anchor id to the body actually placed into the context package. */
73
+ packagedBodies?: Record<string, string>;
74
+ source?: "preview_context" | "run" | "evaluation";
75
+ }
76
+ export interface ContextFidelityRecord extends Required<Pick<ContextFidelityRecordInput, "timestamp" | "query" | "expectedAnchorIds" | "returnedAnchorIds">> {
77
+ expectedBodies?: Record<string, string>;
78
+ packagedBodies?: Record<string, string>;
79
+ anchorRecallAtK: number;
80
+ missingAnchorIds: string[];
81
+ /** Normalized LCS similarity over supplied bodies; undefined when no pair is measurable. */
82
+ bodyCoverage?: number;
83
+ source: NonNullable<ContextFidelityRecordInput["source"]>;
84
+ }
85
+ export interface ContextFidelityStats {
86
+ sampleCount: number;
87
+ averageAnchorRecallPercent: number;
88
+ averageBodyCoveragePercent: number;
89
+ totalExpectedAnchors: number;
90
+ totalReturnedAnchors: number;
91
+ totalMissingAnchors: number;
92
+ bodyCoverageSampleCount: number;
93
+ firstRecordAt: string | null;
94
+ lastRecordAt: string | null;
95
+ recentRecords: ContextFidelityRecord[];
96
+ }
97
+ export declare function recordContextFidelity(config: GraphFlowConfig, input: ContextFidelityRecordInput): ContextFidelityRecord;
98
+ export declare function listContextFidelityRecords(config: GraphFlowConfig): ContextFidelityRecord[];
99
+ export declare function getContextFidelityStats(config: GraphFlowConfig): ContextFidelityStats;
100
+ export declare function resetContextFidelityStats(config: GraphFlowConfig): {
101
+ path: string;
102
+ reset: boolean;
103
+ };
65
104
  //# sourceMappingURL=token-savings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-savings.d.ts","sourceRoot":"","sources":["../../src/graph/token-savings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,yBAAyB,8DACuB,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,GAAG,KAAK,CAAC;IAClC,iFAAiF;IACjF,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,aAAa,EAAE,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAuDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAyBlF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAErE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAkB3F"}
1
+ {"version":3,"file":"token-savings.d.ts","sourceRoot":"","sources":["../../src/graph/token-savings.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,10 @@ exports.explainSavings = explainSavings;
5
5
  exports.recordSavings = recordSavings;
6
6
  exports.getSavingsStats = getSavingsStats;
7
7
  exports.resetSavingsStats = resetSavingsStats;
8
+ exports.recordContextFidelity = recordContextFidelity;
9
+ exports.listContextFidelityRecords = listContextFidelityRecords;
10
+ exports.getContextFidelityStats = getContextFidelityStats;
11
+ exports.resetContextFidelityStats = resetContextFidelityStats;
8
12
  const node_fs_1 = require("node:fs");
9
13
  const node_path_1 = require("node:path");
10
14
  /**
@@ -140,4 +144,138 @@ function resetSavingsStats(config) {
140
144
  saveStats(statsPath, empty);
141
145
  return { path: statsPath, reset: true };
142
146
  }
147
+ function normalizeText(value) {
148
+ return value.replace(/\s+/g, " ").trim();
149
+ }
150
+ /**
151
+ * Longest-common-subsequence similarity. Unlike equality or a byte-length
152
+ * ratio, this measures how much of the normalized source survives while
153
+ * allowing reordering-free edits and never rewards unrelated padding.
154
+ */
155
+ function calculateBodyCoverage(expected, packaged) {
156
+ const left = normalizeText(expected);
157
+ const right = normalizeText(packaged);
158
+ if (!left)
159
+ return !right ? 1 : 0;
160
+ if (!right)
161
+ return 0;
162
+ let previous = new Array(right.length + 1).fill(0);
163
+ let current = new Array(right.length + 1).fill(0);
164
+ for (let i = 1; i <= left.length; i += 1) {
165
+ for (let j = 1; j <= right.length; j += 1) {
166
+ current[j] = left[i - 1] === right[j - 1]
167
+ ? previous[j - 1] + 1
168
+ : Math.max(previous[j], current[j - 1]);
169
+ }
170
+ previous = current;
171
+ current = new Array(right.length + 1).fill(0);
172
+ }
173
+ return previous[right.length] / left.length;
174
+ }
175
+ function emptyContextFidelityStats() {
176
+ return {
177
+ sampleCount: 0,
178
+ averageAnchorRecallPercent: 0,
179
+ averageBodyCoveragePercent: 0,
180
+ totalExpectedAnchors: 0,
181
+ totalReturnedAnchors: 0,
182
+ totalMissingAnchors: 0,
183
+ bodyCoverageSampleCount: 0,
184
+ firstRecordAt: null,
185
+ lastRecordAt: null,
186
+ recentRecords: [],
187
+ };
188
+ }
189
+ function resolveFidelityPath(config) {
190
+ const root = config.graphPolicy.workspaceRoot ?? process.cwd();
191
+ return (0, node_path_1.join)(root, "graphflow-out", "context-fidelity.json");
192
+ }
193
+ function loadContextFidelityStats(fidelityPath) {
194
+ if (!(0, node_fs_1.existsSync)(fidelityPath))
195
+ return emptyContextFidelityStats();
196
+ try {
197
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(fidelityPath, "utf8"));
198
+ if (!Array.isArray(parsed.recentRecords))
199
+ return emptyContextFidelityStats();
200
+ return { ...emptyContextFidelityStats(), ...parsed, recentRecords: parsed.recentRecords };
201
+ }
202
+ catch {
203
+ return emptyContextFidelityStats();
204
+ }
205
+ }
206
+ function saveContextFidelityStats(fidelityPath, stats) {
207
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(fidelityPath), { recursive: true });
208
+ (0, node_fs_1.writeFileSync)(fidelityPath, JSON.stringify(stats, null, 2), "utf8");
209
+ }
210
+ function normalizeAnchorIds(values) {
211
+ return [...new Set(values.filter((value) => value.trim().length > 0))];
212
+ }
213
+ function recordContextFidelity(config, input) {
214
+ const expectedAnchorIds = normalizeAnchorIds(input.expectedAnchorIds);
215
+ const returnedAnchorIds = normalizeAnchorIds(input.returnedAnchorIds);
216
+ const returnedSet = new Set(returnedAnchorIds);
217
+ const missingAnchorIds = expectedAnchorIds.filter((id) => !returnedSet.has(id));
218
+ const anchorRecallAtK = expectedAnchorIds.length === 0
219
+ ? 1
220
+ : (expectedAnchorIds.length - missingAnchorIds.length) / expectedAnchorIds.length;
221
+ let bodyCoverageSum = 0;
222
+ let bodyCoverageCount = 0;
223
+ const expectedBodies = input.expectedBodies ?? {};
224
+ const packagedBodies = input.packagedBodies ?? {};
225
+ for (const [anchorId, expectedBody] of Object.entries(expectedBodies)) {
226
+ const packagedBody = packagedBodies[anchorId];
227
+ if (typeof packagedBody !== "string")
228
+ continue;
229
+ bodyCoverageSum += calculateBodyCoverage(expectedBody, packagedBody);
230
+ bodyCoverageCount += 1;
231
+ }
232
+ const stored = {
233
+ timestamp: input.timestamp ?? new Date().toISOString(),
234
+ query: input.query ?? "",
235
+ expectedAnchorIds,
236
+ returnedAnchorIds,
237
+ ...(input.expectedBodies ? { expectedBodies } : {}),
238
+ ...(input.packagedBodies ? { packagedBodies } : {}),
239
+ anchorRecallAtK,
240
+ missingAnchorIds,
241
+ ...(bodyCoverageCount > 0 ? { bodyCoverage: bodyCoverageSum / bodyCoverageCount } : {}),
242
+ source: input.source ?? "evaluation",
243
+ };
244
+ const fidelityPath = resolveFidelityPath(config);
245
+ const stats = loadContextFidelityStats(fidelityPath);
246
+ const nextRecallTotal = stats.averageAnchorRecallPercent * stats.sampleCount + anchorRecallAtK * 100;
247
+ const nextCoverageTotal = stats.averageBodyCoveragePercent * stats.bodyCoverageSampleCount +
248
+ (stored.bodyCoverage ?? 0) * 100;
249
+ const nextSampleCount = stats.sampleCount + 1;
250
+ const nextCoverageSampleCount = stats.bodyCoverageSampleCount + (bodyCoverageCount > 0 ? 1 : 0);
251
+ stats.sampleCount = nextSampleCount;
252
+ stats.averageAnchorRecallPercent = Math.round(nextRecallTotal / nextSampleCount);
253
+ stats.bodyCoverageSampleCount = nextCoverageSampleCount;
254
+ stats.averageBodyCoveragePercent =
255
+ nextCoverageSampleCount === 0 ? 0 : Math.round(nextCoverageTotal / nextCoverageSampleCount);
256
+ stats.totalExpectedAnchors += expectedAnchorIds.length;
257
+ stats.totalReturnedAnchors += returnedAnchorIds.length;
258
+ stats.totalMissingAnchors += missingAnchorIds.length;
259
+ stats.firstRecordAt = stats.firstRecordAt ?? stored.timestamp;
260
+ stats.lastRecordAt = stored.timestamp;
261
+ stats.recentRecords.unshift(stored);
262
+ if (stats.recentRecords.length > MAX_RECENT_RECORDS) {
263
+ stats.recentRecords = stats.recentRecords.slice(0, MAX_RECENT_RECORDS);
264
+ }
265
+ saveContextFidelityStats(fidelityPath, stats);
266
+ return stored;
267
+ }
268
+ function listContextFidelityRecords(config) {
269
+ return loadContextFidelityStats(resolveFidelityPath(config)).recentRecords;
270
+ }
271
+ function getContextFidelityStats(config) {
272
+ return loadContextFidelityStats(resolveFidelityPath(config));
273
+ }
274
+ function resetContextFidelityStats(config) {
275
+ const fidelityPath = resolveFidelityPath(config);
276
+ if (!(0, node_fs_1.existsSync)(fidelityPath))
277
+ return { path: fidelityPath, reset: false };
278
+ saveContextFidelityStats(fidelityPath, emptyContextFidelityStats());
279
+ return { path: fidelityPath, reset: true };
280
+ }
143
281
  //# sourceMappingURL=token-savings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-savings.js","sourceRoot":"","sources":["../../src/graph/token-savings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-savings.js","sourceRoot":"","sources":["../../src/graph/token-savings.ts"],"names":[],"mappings":"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"}
@@ -25,13 +25,17 @@ export interface GateSkillPromotionOptions {
25
25
  localSuccesses: number;
26
26
  validated?: boolean;
27
27
  minLocalSuccesses?: number;
28
+ /** 绑定且 outcome=pass 的去重 episode 数(真实成功证据链,透传准入门)。 */
29
+ successCount?: number;
28
30
  /** When set, proven is held at correctable unless the held-out admission gate passes. */
29
31
  skillName?: string;
30
32
  }
31
33
  /**
32
34
  * Gate proven promotion for external skills and the held-out admission gate.
33
35
  * Other classes pass through. Proven is held at correctable until canaryPassed
34
- * and (when skillName is provided) admitSkillToProven.
36
+ * and (when skillName is provided) admitSkillToProven. Real success evidence
37
+ * (successCount >= threshold) bypasses the golden-overlap veto inside the
38
+ * admission gate — see skill-admission.
35
39
  */
36
40
  export declare function gateSkillPromotion(options: GateSkillPromotionOptions): SkillOutcomeKind;
37
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"canary-gate.d.ts","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG1E,iFAAiF;AACjF,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,wBAAgB,qBAAqB,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG,OAAO,CAG3E;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAS7D;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,gBAAgB,CAmBvF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,KAAK,CAEnD"}
1
+ {"version":3,"file":"canary-gate.d.ts","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG1E,iFAAiF;AACjF,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,wBAAgB,qBAAqB,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG,OAAO,CAG3E;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAS7D;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,gBAAgB,CAqBvF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,KAAK,CAEnD"}
@@ -33,7 +33,9 @@ function canaryPassed(input) {
33
33
  /**
34
34
  * Gate proven promotion for external skills and the held-out admission gate.
35
35
  * Other classes pass through. Proven is held at correctable until canaryPassed
36
- * and (when skillName is provided) admitSkillToProven.
36
+ * and (when skillName is provided) admitSkillToProven. Real success evidence
37
+ * (successCount >= threshold) bypasses the golden-overlap veto inside the
38
+ * admission gate — see skill-admission.
37
39
  */
38
40
  function gateSkillPromotion(options) {
39
41
  if (options.outcomeKind !== "proven") {
@@ -50,7 +52,8 @@ function gateSkillPromotion(options) {
50
52
  if (!canaryPassed(check)) {
51
53
  return "correctable";
52
54
  }
53
- if (options.skillName && !(0, skill_admission_js_1.admitSkillToProven)(options.skillName).ok) {
55
+ const admitOptions = options.successCount !== undefined ? { successCount: options.successCount } : undefined;
56
+ if (options.skillName && !(0, skill_admission_js_1.admitSkillToProven)(options.skillName, admitOptions).ok) {
54
57
  return "correctable";
55
58
  }
56
59
  return "proven";
@@ -1 +1 @@
1
- {"version":3,"file":"canary-gate.js","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAQH,sDAGC;AAYD,oCASC;AAiBD,gDAmBC;AAMD,kEAEC;AAzED,6DAA0D;AAE1D,iFAAiF;AACpE,QAAA,8BAA8B,GAAG,CAAC,CAAC;AAEhD,SAAgB,qBAAqB,CAAC,UAA4B;IAChE,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,OAAO,CAAC;IAC7C,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC;AAClD,CAAC;AAWD,mFAAmF;AACnF,SAAgB,YAAY,CAAC,KAAuB;IAClD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,IAAI,sCAA8B,CAAC;IACvE,OAAO,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC;AACtC,CAAC;AAYD;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,OAAkC;IACnE,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,WAAW,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAqB;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAA,uCAAkB,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QACnE,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,2BAA2B;IACzC,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"canary-gate.js","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAQH,sDAGC;AAYD,oCASC;AAqBD,gDAqBC;AAMD,kEAEC;AA/ED,6DAA0D;AAE1D,iFAAiF;AACpE,QAAA,8BAA8B,GAAG,CAAC,CAAC;AAEhD,SAAgB,qBAAqB,CAAC,UAA4B;IAChE,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,OAAO,CAAC;IAC7C,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC;AAClD,CAAC;AAWD,mFAAmF;AACnF,SAAgB,YAAY,CAAC,KAAuB;IAClD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,IAAI,sCAA8B,CAAC;IACvE,OAAO,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC;AACtC,CAAC;AAcD;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,OAAkC;IACnE,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,WAAW,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAqB;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAA,uCAAkB,EAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;QACjF,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,2BAA2B;IACzC,OAAO,KAAK,CAAC;AACf,CAAC"}