@ryanstark24/sfgraph-core 1.1.6 → 1.2.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 (195) hide show
  1. package/dist/analyze/__tests__/find-nodes.test.d.ts +2 -0
  2. package/dist/analyze/__tests__/find-nodes.test.d.ts.map +1 -0
  3. package/dist/analyze/__tests__/find-nodes.test.js +129 -0
  4. package/dist/analyze/__tests__/find-nodes.test.js.map +1 -0
  5. package/dist/analyze/__tests__/findings.test.d.ts +2 -0
  6. package/dist/analyze/__tests__/findings.test.d.ts.map +1 -0
  7. package/dist/analyze/__tests__/findings.test.js +90 -0
  8. package/dist/analyze/__tests__/findings.test.js.map +1 -0
  9. package/dist/analyze/find-nodes.d.ts +38 -0
  10. package/dist/analyze/find-nodes.d.ts.map +1 -0
  11. package/dist/analyze/find-nodes.js +51 -0
  12. package/dist/analyze/find-nodes.js.map +1 -0
  13. package/dist/analyze/findings.d.ts +86 -0
  14. package/dist/analyze/findings.d.ts.map +1 -0
  15. package/dist/analyze/findings.js +143 -0
  16. package/dist/analyze/findings.js.map +1 -0
  17. package/dist/analyze/index.d.ts +2 -0
  18. package/dist/analyze/index.d.ts.map +1 -1
  19. package/dist/analyze/index.js +2 -0
  20. package/dist/analyze/index.js.map +1 -1
  21. package/dist/analyze/test-coverage.d.ts +0 -2
  22. package/dist/analyze/test-coverage.d.ts.map +1 -1
  23. package/dist/analyze/test-coverage.js +0 -10
  24. package/dist/analyze/test-coverage.js.map +1 -1
  25. package/dist/domain/edge-fact.d.ts +25 -0
  26. package/dist/domain/edge-fact.d.ts.map +1 -1
  27. package/dist/domain/rel-types.d.ts +4 -0
  28. package/dist/domain/rel-types.d.ts.map +1 -1
  29. package/dist/domain/rel-types.js +7 -0
  30. package/dist/domain/rel-types.js.map +1 -1
  31. package/dist/embedding/__tests__/embed.test.d.ts +2 -0
  32. package/dist/embedding/__tests__/embed.test.d.ts.map +1 -0
  33. package/dist/embedding/__tests__/embed.test.js +72 -0
  34. package/dist/embedding/__tests__/embed.test.js.map +1 -0
  35. package/dist/extractors/live-org/__tests__/liveness.test.d.ts +2 -0
  36. package/dist/extractors/live-org/__tests__/liveness.test.d.ts.map +1 -0
  37. package/dist/extractors/live-org/__tests__/liveness.test.js +148 -0
  38. package/dist/extractors/live-org/__tests__/liveness.test.js.map +1 -0
  39. package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts +2 -0
  40. package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts.map +1 -0
  41. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js +174 -0
  42. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js.map +1 -0
  43. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts +2 -0
  44. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts.map +1 -0
  45. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js +75 -0
  46. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js.map +1 -0
  47. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts +2 -0
  48. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts.map +1 -0
  49. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js +135 -0
  50. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js.map +1 -0
  51. package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts +2 -0
  52. package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts.map +1 -0
  53. package/dist/extractors/live-org/__tests__/soql-rebatch.test.js +118 -0
  54. package/dist/extractors/live-org/__tests__/soql-rebatch.test.js.map +1 -0
  55. package/dist/extractors/live-org/__tests__/vlocity-runner.test.js +27 -0
  56. package/dist/extractors/live-org/__tests__/vlocity-runner.test.js.map +1 -1
  57. package/dist/extractors/live-org/bulk-retrieve.d.ts +7 -0
  58. package/dist/extractors/live-org/bulk-retrieve.d.ts.map +1 -1
  59. package/dist/extractors/live-org/bulk-retrieve.js +10 -1
  60. package/dist/extractors/live-org/bulk-retrieve.js.map +1 -1
  61. package/dist/extractors/live-org/extractors/mcd-baseline.d.ts +60 -0
  62. package/dist/extractors/live-org/extractors/mcd-baseline.d.ts.map +1 -0
  63. package/dist/extractors/live-org/extractors/mcd-baseline.js +120 -0
  64. package/dist/extractors/live-org/extractors/mcd-baseline.js.map +1 -0
  65. package/dist/extractors/live-org/extractors/omnistudio-retrieve.d.ts +23 -0
  66. package/dist/extractors/live-org/extractors/omnistudio-retrieve.d.ts.map +1 -0
  67. package/dist/extractors/live-org/extractors/omnistudio-retrieve.js +172 -0
  68. package/dist/extractors/live-org/extractors/omnistudio-retrieve.js.map +1 -0
  69. package/dist/extractors/live-org/rate-limit.d.ts +57 -0
  70. package/dist/extractors/live-org/rate-limit.d.ts.map +1 -1
  71. package/dist/extractors/live-org/rate-limit.js +93 -8
  72. package/dist/extractors/live-org/rate-limit.js.map +1 -1
  73. package/dist/extractors/live-org/vlocity/runner.d.ts +1 -1
  74. package/dist/extractors/live-org/vlocity/runner.d.ts.map +1 -1
  75. package/dist/extractors/live-org/vlocity/runner.js +20 -9
  76. package/dist/extractors/live-org/vlocity/runner.js.map +1 -1
  77. package/dist/index.d.ts +1 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +1 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/ingest/__tests__/multi-org-orchestrator.test.js +3 -0
  82. package/dist/ingest/__tests__/multi-org-orchestrator.test.js.map +1 -1
  83. package/dist/ingest/live-ingest.d.ts +70 -1
  84. package/dist/ingest/live-ingest.d.ts.map +1 -1
  85. package/dist/ingest/live-ingest.js +109 -7
  86. package/dist/ingest/live-ingest.js.map +1 -1
  87. package/dist/parsers/__tests__/edge-provenance.test.d.ts +2 -0
  88. package/dist/parsers/__tests__/edge-provenance.test.d.ts.map +1 -0
  89. package/dist/parsers/__tests__/edge-provenance.test.js +44 -0
  90. package/dist/parsers/__tests__/edge-provenance.test.js.map +1 -0
  91. package/dist/parsers/__tests__/lwc-bindings.test.js +72 -0
  92. package/dist/parsers/__tests__/lwc-bindings.test.js.map +1 -1
  93. package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts +2 -0
  94. package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts.map +1 -0
  95. package/dist/parsers/__tests__/mcd-gap-fills.test.js +75 -0
  96. package/dist/parsers/__tests__/mcd-gap-fills.test.js.map +1 -0
  97. package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts +2 -0
  98. package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts.map +1 -0
  99. package/dist/parsers/__tests__/omnistudio-overlap.test.js +163 -0
  100. package/dist/parsers/__tests__/omnistudio-overlap.test.js.map +1 -0
  101. package/dist/parsers/__tests__/omnistudio.golden.test.js +51 -3
  102. package/dist/parsers/__tests__/omnistudio.golden.test.js.map +1 -1
  103. package/dist/parsers/__tests__/reflection-walker.test.d.ts +2 -0
  104. package/dist/parsers/__tests__/reflection-walker.test.d.ts.map +1 -0
  105. package/dist/parsers/__tests__/reflection-walker.test.js +162 -0
  106. package/dist/parsers/__tests__/reflection-walker.test.js.map +1 -0
  107. package/dist/parsers/__tests__/vlocity.golden.test.js +106 -5
  108. package/dist/parsers/__tests__/vlocity.golden.test.js.map +1 -1
  109. package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts +2 -0
  110. package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts.map +1 -0
  111. package/dist/parsers/apex/__tests__/is-test-attribute.test.js +54 -0
  112. package/dist/parsers/apex/__tests__/is-test-attribute.test.js.map +1 -0
  113. package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts +2 -0
  114. package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts.map +1 -0
  115. package/dist/parsers/apex/__tests__/regex-arg-count.test.js +82 -0
  116. package/dist/parsers/apex/__tests__/regex-arg-count.test.js.map +1 -0
  117. package/dist/parsers/apex/class.d.ts.map +1 -1
  118. package/dist/parsers/apex/class.js +103 -5
  119. package/dist/parsers/apex/class.js.map +1 -1
  120. package/dist/parsers/common.d.ts +4 -1
  121. package/dist/parsers/common.d.ts.map +1 -1
  122. package/dist/parsers/common.js +15 -2
  123. package/dist/parsers/common.js.map +1 -1
  124. package/dist/parsers/contract.d.ts +0 -2
  125. package/dist/parsers/contract.d.ts.map +1 -1
  126. package/dist/parsers/contract.js +0 -7
  127. package/dist/parsers/contract.js.map +1 -1
  128. package/dist/parsers/generic/reflection-walker.d.ts +90 -0
  129. package/dist/parsers/generic/reflection-walker.d.ts.map +1 -0
  130. package/dist/parsers/generic/reflection-walker.js +195 -0
  131. package/dist/parsers/generic/reflection-walker.js.map +1 -0
  132. package/dist/parsers/lwc/html-visitor.d.ts.map +1 -1
  133. package/dist/parsers/lwc/html-visitor.js +81 -3
  134. package/dist/parsers/lwc/html-visitor.js.map +1 -1
  135. package/dist/parsers/object/object.d.ts.map +1 -1
  136. package/dist/parsers/object/object.js +34 -0
  137. package/dist/parsers/object/object.js.map +1 -1
  138. package/dist/parsers/omnistudio/integration-procedure.d.ts.map +1 -1
  139. package/dist/parsers/omnistudio/integration-procedure.js +6 -3
  140. package/dist/parsers/omnistudio/integration-procedure.js.map +1 -1
  141. package/dist/parsers/omnistudio/overlap-detector.d.ts +50 -0
  142. package/dist/parsers/omnistudio/overlap-detector.d.ts.map +1 -0
  143. package/dist/parsers/omnistudio/overlap-detector.js +129 -0
  144. package/dist/parsers/omnistudio/overlap-detector.js.map +1 -0
  145. package/dist/parsers/omnistudio/process.d.ts.map +1 -1
  146. package/dist/parsers/omnistudio/process.js +17 -4
  147. package/dist/parsers/omnistudio/process.js.map +1 -1
  148. package/dist/parsers/omnistudio/ui-card.d.ts.map +1 -1
  149. package/dist/parsers/omnistudio/ui-card.js +6 -3
  150. package/dist/parsers/omnistudio/ui-card.js.map +1 -1
  151. package/dist/parsers/vlocity/common.d.ts +1 -2
  152. package/dist/parsers/vlocity/common.d.ts.map +1 -1
  153. package/dist/parsers/vlocity/common.js +0 -3
  154. package/dist/parsers/vlocity/common.js.map +1 -1
  155. package/dist/parsers/vlocity/integration-procedure.d.ts.map +1 -1
  156. package/dist/parsers/vlocity/integration-procedure.js +19 -3
  157. package/dist/parsers/vlocity/integration-procedure.js.map +1 -1
  158. package/dist/parsers/vlocity/omni-script.d.ts.map +1 -1
  159. package/dist/parsers/vlocity/omni-script.js +5 -2
  160. package/dist/parsers/vlocity/omni-script.js.map +1 -1
  161. package/dist/parsers/vlocity/vlocity-card.d.ts.map +1 -1
  162. package/dist/parsers/vlocity/vlocity-card.js +5 -2
  163. package/dist/parsers/vlocity/vlocity-card.js.map +1 -1
  164. package/dist/render/__tests__/sarif.test.d.ts +2 -0
  165. package/dist/render/__tests__/sarif.test.d.ts.map +1 -0
  166. package/dist/render/__tests__/sarif.test.js +129 -0
  167. package/dist/render/__tests__/sarif.test.js.map +1 -0
  168. package/dist/render/sarif.d.ts +94 -0
  169. package/dist/render/sarif.d.ts.map +1 -0
  170. package/dist/render/sarif.js +133 -0
  171. package/dist/render/sarif.js.map +1 -0
  172. package/dist/storage/__tests__/analysis-tables-migration.test.js +1 -1
  173. package/dist/storage/__tests__/migrations.test.js +4 -4
  174. package/dist/storage/__tests__/rename-stability.test.d.ts +2 -0
  175. package/dist/storage/__tests__/rename-stability.test.d.ts.map +1 -0
  176. package/dist/storage/__tests__/rename-stability.test.js +135 -0
  177. package/dist/storage/__tests__/rename-stability.test.js.map +1 -0
  178. package/dist/storage/index.d.ts +1 -0
  179. package/dist/storage/index.d.ts.map +1 -1
  180. package/dist/storage/index.js +1 -0
  181. package/dist/storage/index.js.map +1 -1
  182. package/dist/storage/interfaces.d.ts +3 -0
  183. package/dist/storage/interfaces.d.ts.map +1 -1
  184. package/dist/storage/sqlite/graph-store.d.ts +6 -0
  185. package/dist/storage/sqlite/graph-store.d.ts.map +1 -1
  186. package/dist/storage/sqlite/graph-store.js +8 -0
  187. package/dist/storage/sqlite/graph-store.js.map +1 -1
  188. package/dist/storage/sqlite/migrations.d.ts.map +1 -1
  189. package/dist/storage/sqlite/migrations.js +19 -0
  190. package/dist/storage/sqlite/migrations.js.map +1 -1
  191. package/dist/storage/sqlite/rename-stability.d.ts +94 -0
  192. package/dist/storage/sqlite/rename-stability.d.ts.map +1 -0
  193. package/dist/storage/sqlite/rename-stability.js +96 -0
  194. package/dist/storage/sqlite/rename-stability.js.map +1 -0
  195. package/package.json +4 -1
@@ -0,0 +1,120 @@
1
+ import { asOrgId } from "@ryanstark24/sfgraph-shared";
2
+ import { REL_TYPES } from "../../../domain/index.js";
3
+ import { makeEdge, stripNs } from "../../../parsers/common.js";
4
+ import { scheduleQuery, soqlWithTimeout } from "../rate-limit.js";
5
+ /**
6
+ * Fast-path baseline coverage for long-tail metadata via the Tooling
7
+ * `MetadataComponentDependency` SObject (MCD). The platform pre-computes
8
+ * dependency edges for ~50 component types; sfgraph hand-rolls parsers for
9
+ * ~20 of them. For the rest (Layouts, FieldSets, EmailTemplates, Tabs,
10
+ * Groups, Queues to start) MCD is the path of least resistance — one
11
+ * Tooling SOQL per type-direction, zero parser code, edges immediately
12
+ * available.
13
+ *
14
+ * Coexistence with parsed edges: every MCD-sourced edge uses relType
15
+ * `REFERENCES` with `attributes.source: 'mcd'`. Real parsers emit more
16
+ * specific relTypes (READS_FIELD, INVOKES_FLOW, etc.) which live in
17
+ * different edge tables — so parsed and MCD edges coexist rather than
18
+ * compete. Consumers wanting MCD-only coverage filter on the source
19
+ * attribute; consumers wanting "all known dependencies" union both.
20
+ *
21
+ * Known caveats (from Pitfalls research):
22
+ * - MCD enforces a 2,000-row hard cap per query with no OFFSET — we
23
+ * paginate via `MetadataComponentId > '<lastId>'` ordered ascending.
24
+ * - MCD has async-refresh lag (minutes between metadata change and MCD
25
+ * reflecting it). Three documented gap classes (lookup-field → object,
26
+ * picklist → GlobalValueSet, dependent-picklist → controlling-field)
27
+ * are missing entirely; those are W2-04's job, not this baseline.
28
+ * - Some types (e.g. CustomLabels) show no rows on certain orgs even
29
+ * when usage exists — this is a platform issue, surfaced as zero
30
+ * edges rather than an error.
31
+ */
32
+ /** Long-tail metadata types covered by the baseline. Each gets one query
33
+ * in each direction (component-as-source, component-as-target) so any
34
+ * edge involving a long-tail type lands in the graph. */
35
+ export const MCD_LONG_TAIL_TYPES = [
36
+ "Layout",
37
+ "FieldSet",
38
+ "EmailTemplate",
39
+ "CustomTab",
40
+ "Group",
41
+ "Queue",
42
+ ];
43
+ function qname(type, name, ns, ctxNs) {
44
+ const stripped = stripNs(name, ns ?? ctxNs);
45
+ return `${type}:${stripped}`;
46
+ }
47
+ async function fetchPaginated(conn, baseWhereClause, label, pageSize, maxPages, onError) {
48
+ const rows = [];
49
+ let lastId = "";
50
+ for (let page = 0; page < maxPages; page += 1) {
51
+ const idFilter = lastId ? ` AND Id > '${lastId.replace(/'/g, "\\'")}'` : "";
52
+ const soql = "SELECT Id, MetadataComponentId, MetadataComponentType, MetadataComponentName, MetadataComponentNamespace, " +
53
+ "RefMetadataComponentId, RefMetadataComponentType, RefMetadataComponentName, RefMetadataComponentNamespace " +
54
+ `FROM MetadataComponentDependency WHERE ${baseWhereClause}${idFilter} ` +
55
+ `ORDER BY Id ASC LIMIT ${pageSize}`;
56
+ let res = null;
57
+ try {
58
+ res = (await scheduleQuery(() => soqlWithTimeout(conn.tooling.query(soql), label)));
59
+ }
60
+ catch (e) {
61
+ onError?.(label, e);
62
+ break;
63
+ }
64
+ const page_rows = res?.records ?? [];
65
+ if (page_rows.length === 0)
66
+ break;
67
+ rows.push(...page_rows);
68
+ if (page_rows.length < pageSize)
69
+ break; // last page
70
+ const tail = page_rows[page_rows.length - 1];
71
+ if (!tail || tail.Id === lastId)
72
+ break; // defensive: no progress
73
+ lastId = tail.Id;
74
+ }
75
+ return rows;
76
+ }
77
+ export async function runMcdBaseline(conn, opts) {
78
+ const orgId = typeof opts.orgId === "string" ? asOrgId(opts.orgId) : opts.orgId;
79
+ const types = opts.types ?? MCD_LONG_TAIL_TYPES;
80
+ const pageSize = opts.pageSize ?? 2000;
81
+ const maxPages = opts.maxPagesPerDirection ?? 50;
82
+ const ctxNs = opts.ctx.namespace ?? null;
83
+ const edges = [];
84
+ const byType = {};
85
+ // Dedupe across the two query directions — when both A and B are long-tail
86
+ // types and A→B exists, both queries surface it; we want to emit one edge.
87
+ const seen = new Set();
88
+ for (const type of types) {
89
+ byType[type] = { asSource: 0, asTarget: 0 };
90
+ // Direction 1: component-as-source ("what does this Layout reference?")
91
+ const asSourceRows = await fetchPaginated(conn, `MetadataComponentType = '${type}'`, `mcd-baseline:${type}:as-source`, pageSize, maxPages, opts.onError);
92
+ byType[type].asSource = asSourceRows.length;
93
+ // Direction 2: component-as-target ("what references this Layout?")
94
+ const asTargetRows = await fetchPaginated(conn, `RefMetadataComponentType = '${type}'`, `mcd-baseline:${type}:as-target`, pageSize, maxPages, opts.onError);
95
+ byType[type].asTarget = asTargetRows.length;
96
+ for (const row of [...asSourceRows, ...asTargetRows]) {
97
+ const src = qname(row.MetadataComponentType, row.MetadataComponentName, row.MetadataComponentNamespace ?? null, ctxNs);
98
+ const dst = qname(row.RefMetadataComponentType, row.RefMetadataComponentName, row.RefMetadataComponentNamespace ?? null, ctxNs);
99
+ const key = `${src}|${dst}`;
100
+ if (seen.has(key))
101
+ continue;
102
+ seen.add(key);
103
+ // `isDynamicReference` heuristic (W2-04 will deepen this) — when an
104
+ // MCD row's MetadataComponentId equals MetadataComponentName, the
105
+ // platform recorded a literal Id reference (e.g. `'003xxx...'` in
106
+ // Apex source) rather than a name-resolved one. Flag the edge so
107
+ // consumers can distinguish.
108
+ const dynamic = row.MetadataComponentId === row.MetadataComponentName ||
109
+ row.RefMetadataComponentId === row.RefMetadataComponentName;
110
+ edges.push(makeEdge(opts.ctx, src, REL_TYPES.REFERENCES, dst, {
111
+ source: "mcd",
112
+ mcdSrcType: row.MetadataComponentType,
113
+ mcdDstType: row.RefMetadataComponentType,
114
+ ...(dynamic ? { dynamic: true } : {}),
115
+ }));
116
+ }
117
+ }
118
+ return { edges, byType };
119
+ }
120
+ //# sourceMappingURL=mcd-baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcd-baseline.js","sourceRoot":"","sources":["../../../../src/extractors/live-org/extractors/mcd-baseline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { RawMember } from "../../interfaces/metadata-source.js";
2
+ export interface OmnistudioRetrieveOpts {
3
+ /** Org API version, e.g. "60.0". Used in retrieve request envelope. */
4
+ apiVersion: string;
5
+ /** Called on per-type or per-zip failure. Mirrors the W1-01 onError
6
+ * contract used by the Vlocity runner. */
7
+ onError?: (label: string, err: Error) => void;
8
+ }
9
+ interface SfLimitInfo {
10
+ current: number;
11
+ limit: number;
12
+ }
13
+ /** Decide whether to skip a retrieve based on current quota utilisation.
14
+ * Conservative: when in doubt (no limit info available) we proceed. */
15
+ export declare function shouldSkipForQuota(limit: SfLimitInfo | null): boolean;
16
+ /**
17
+ * Async iterator yielding XML envelopes for OmniStudio-on-Core types via
18
+ * Metadata API `retrieve()`. Falls back silently (yields nothing) on
19
+ * orgs without the capability or when quota would be exhausted.
20
+ */
21
+ export declare function iterOmnistudioRetrieve(conn: any, orgId: string, opts: OmnistudioRetrieveOpts): AsyncIterable<RawMember>;
22
+ export {};
23
+ //# sourceMappingURL=omnistudio-retrieve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omnistudio-retrieve.d.ts","sourceRoot":"","sources":["../../../../src/extractors/live-org/extractors/omnistudio-retrieve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAoDrE,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB;+CAC2C;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/C;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAgBD;wEACwE;AACxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAGrE;AA4CD;;;;GAIG;AACH,wBAAuB,sBAAsB,CAC3C,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,sBAAsB,GAC3B,aAAa,CAAC,SAAS,CAAC,CAwE1B"}
@@ -0,0 +1,172 @@
1
+ import { Buffer } from "node:buffer";
2
+ import JSZip from "jszip";
3
+ import { METADATA_CATEGORY } from "../../../domain/index.js";
4
+ import { withTimeout } from "../rate-limit.js";
5
+ /**
6
+ * OmniStudio-on-Core retrieval via Metadata API `retrieve()` rather than
7
+ * SOQL on the standard SObjects. SOQL gives you `OmniProcess.PropertySet`
8
+ * and `OmniProcessElement.PropertySet` as JSON blobs — useful, but the
9
+ * platform omits design-time XML constructs that only the Metadata API
10
+ * envelope carries (conditional branches inside IPs, layout config on
11
+ * UI cards, embedded server-script references on DataTransforms).
12
+ *
13
+ * This extractor runs **alongside** the SOQL path rather than replacing
14
+ * it: SOQL has lower latency for "what processes exist + their element
15
+ * graph"; retrieve() has higher fidelity for "what does this process
16
+ * actually do." Parsers can choose which input to consume per use case.
17
+ *
18
+ * Constraints, all from W2-02's research:
19
+ * - Metadata API has a documented org-wide quota of 10,000 retrieve
20
+ * calls per 24h. We track the response's `Sforce-Limit-Info` header
21
+ * when available and bail out at 90% utilisation rather than blow
22
+ * the budget on a single ingest.
23
+ * - retrieve() is async — call returns a locator with an async process
24
+ * ID; we poll via `checkRetrieveStatus`. jsforce's
25
+ * `RetrieveResultLocator.complete()` wraps the polling loop.
26
+ * - `package.xml` can list up to 5,000 components per call. Our types
27
+ * are wildcards (`<members>*</members>`), which DOES count against
28
+ * the cap if the org has 5k+ of any one type — chunk by listing
29
+ * first and slicing.
30
+ *
31
+ * Capability-gated by `caps.omnistudioOncore`; the caller (bulk-retrieve)
32
+ * additionally gates on the opt-in `enableOmnistudioRetrieve` flag from
33
+ * LiveIngestOpts.
34
+ */
35
+ /** OmniStudio-on-Core Metadata API type names. These differ from the
36
+ * Vlocity DataPack type vocabulary — the cross-flavor resolver and
37
+ * overlap detector understand both. */
38
+ const RETRIEVE_TYPES = ["OmniUiCard", "OmniIntegrationProcedure", "OmniDataTransform"];
39
+ /** Polling cadence for `retrieve()` job status. Salesforce typically
40
+ * finishes within 5-15s for small types; aggressive polling burns
41
+ * rate-limit headroom for no value. */
42
+ const POLL_INTERVAL_MS = 3_000;
43
+ /** Hard ceiling on per-retrieve wall time. Large orgs (5k+ components
44
+ * of a single type) legitimately take 60-90s; the bisection / quota
45
+ * guard handles the catastrophic case. */
46
+ const RETRIEVE_TIMEOUT_MS = 180_000;
47
+ /** Conservative quota utilisation threshold. When usage exceeds this
48
+ * fraction of the daily 10k limit, skip remaining retrieves and
49
+ * surface a warning. Leaves headroom for downstream operations. */
50
+ const QUOTA_SKIP_THRESHOLD = 0.9;
51
+ /** Parse the `Sforce-Limit-Info` header which Salesforce attaches to most
52
+ * REST/SOAP responses: `api-usage=12345/15000`. Returns null if absent
53
+ * or malformed — caller assumes "enough quota" in that case rather
54
+ * than refusing to proceed. */
55
+ function parseLimitInfo(header) {
56
+ if (!header)
57
+ return null;
58
+ const m = header.match(/api-usage=(\d+)\/(\d+)/);
59
+ if (!m)
60
+ return null;
61
+ const current = Number.parseInt(m[1] ?? "", 10);
62
+ const limit = Number.parseInt(m[2] ?? "", 10);
63
+ if (!Number.isFinite(current) || !Number.isFinite(limit) || limit <= 0)
64
+ return null;
65
+ return { current, limit };
66
+ }
67
+ /** Decide whether to skip a retrieve based on current quota utilisation.
68
+ * Conservative: when in doubt (no limit info available) we proceed. */
69
+ export function shouldSkipForQuota(limit) {
70
+ if (!limit)
71
+ return false;
72
+ return limit.current / limit.limit >= QUOTA_SKIP_THRESHOLD;
73
+ }
74
+ /** Yield one RawMember per file extracted from the retrieve zip. The
75
+ * `category` is set to OMNI_PROCESS uniformly — the parser layer
76
+ * discriminates on the file path / XML root element. */
77
+ async function* yieldFromZip(zipBase64, orgId, type) {
78
+ const buf = Buffer.from(zipBase64, "base64");
79
+ const zip = await JSZip.loadAsync(buf);
80
+ for (const [path, file] of Object.entries(zip.files)) {
81
+ if (file.dir)
82
+ continue;
83
+ // Skip the manifest file — it's metadata about the retrieve, not a
84
+ // component definition. Path looks like `unpackaged/package.xml`.
85
+ if (path.endsWith("/package.xml") || path === "package.xml")
86
+ continue;
87
+ // Each file is `unpackaged/<typeFolder>/<name>.<ext>`. The parsed
88
+ // name is just the file basename without extension.
89
+ const segments = path.split("/");
90
+ const filename = segments[segments.length - 1] ?? path;
91
+ const memberName = filename.replace(/\.[^.]+$/, "");
92
+ const content = await file.async("string");
93
+ yield {
94
+ ref: {
95
+ category: METADATA_CATEGORY.OMNI_PROCESS,
96
+ memberType: type,
97
+ memberName,
98
+ lastModifiedAt: "",
99
+ sourceUri: `sf://${orgId}/${type}/${memberName}.xml`,
100
+ namespace: null,
101
+ },
102
+ content,
103
+ };
104
+ }
105
+ }
106
+ /**
107
+ * Async iterator yielding XML envelopes for OmniStudio-on-Core types via
108
+ * Metadata API `retrieve()`. Falls back silently (yields nothing) on
109
+ * orgs without the capability or when quota would be exhausted.
110
+ */
111
+ export async function* iterOmnistudioRetrieve(conn, orgId, opts) {
112
+ // Check quota up-front (single call to limits endpoint via REST). If the
113
+ // helper isn't available we proceed and let per-call failures surface.
114
+ let limit = null;
115
+ try {
116
+ const limitInfo = conn._sforceLimitInfo;
117
+ limit = parseLimitInfo(limitInfo);
118
+ }
119
+ catch {
120
+ // jsforce holds the most-recent limit header on the conn after any
121
+ // call; if no calls have happened yet, we have no signal and proceed.
122
+ }
123
+ if (shouldSkipForQuota(limit)) {
124
+ opts.onError?.("omnistudio-retrieve:quota-guard", new Error(`metadata API quota at ${limit?.current}/${limit?.limit} (>=${QUOTA_SKIP_THRESHOLD * 100}%) — skipping retrieve()`));
125
+ return;
126
+ }
127
+ for (const type of RETRIEVE_TYPES) {
128
+ const label = `omnistudio-retrieve:${type}`;
129
+ try {
130
+ const request = {
131
+ apiVersion: opts.apiVersion,
132
+ unpackaged: {
133
+ types: [{ name: type, members: ["*"] }],
134
+ version: opts.apiVersion,
135
+ },
136
+ };
137
+ const locator = conn.metadata.retrieve(request);
138
+ const result = (await withTimeout(locator.complete({ details: false }), RETRIEVE_TIMEOUT_MS, label));
139
+ if (result.status && result.status !== "Succeeded") {
140
+ opts.onError?.(label, new Error(`retrieve() status=${result.status} ${result.errorMessage ?? ""}`));
141
+ continue;
142
+ }
143
+ if (!result.zipFile) {
144
+ opts.onError?.(label, new Error("retrieve() returned no zipFile"));
145
+ continue;
146
+ }
147
+ for await (const member of yieldFromZip(result.zipFile, orgId, type)) {
148
+ yield member;
149
+ }
150
+ // Re-check quota between types — a single retrieve can return
151
+ // thousands of components and shift utilisation significantly.
152
+ const nextLimit = (() => {
153
+ try {
154
+ return parseLimitInfo(conn._sforceLimitInfo);
155
+ }
156
+ catch {
157
+ return null;
158
+ }
159
+ })();
160
+ if (shouldSkipForQuota(nextLimit)) {
161
+ opts.onError?.("omnistudio-retrieve:quota-guard", new Error(`metadata API quota crossed ${QUOTA_SKIP_THRESHOLD * 100}% after ${type} — skipping remaining types`));
162
+ return;
163
+ }
164
+ }
165
+ catch (e) {
166
+ opts.onError?.(label, e);
167
+ // continue to next type — one type failing (e.g. permission gap on
168
+ // OmniUiCard) shouldn't disable retrieval of the other two.
169
+ }
170
+ }
171
+ }
172
+ //# sourceMappingURL=omnistudio-retrieve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omnistudio-retrieve.js","sourceRoot":"","sources":["../../../../src/extractors/live-org/extractors/omnistudio-retrieve.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,20 @@ export declare const METADATA_DESCRIBE_TIMEOUT_MS = 60000;
36
36
  * callers don't drift; centralizes the label format so failures are
37
37
  * greppable. */
38
38
  export declare function soqlWithTimeout<T>(p: Promise<T>, label: string, ms?: number): Promise<T>;
39
+ /**
40
+ * Maximum items per `metadata.read` Salesforce SOAP call. The platform docs
41
+ * cap this at 10 — passing more makes jsforce either error or silently
42
+ * truncate depending on version. Most callers already hand-chunk at 10
43
+ * (see extractors/generic-metadata, flow, integration); this constant
44
+ * centralises that value and lets readMetadataBatchAdaptive enforce it
45
+ * defensively for callers that don't.
46
+ *
47
+ * NOTE: The Salesforce Composite REST API allows 25 subrequests per call,
48
+ * but that's a different API (REST, not SOAP Metadata) which sfgraph does
49
+ * not currently use. Don't conflate the two — bumping this to 25 against
50
+ * the Metadata SOAP path is silently broken on real orgs.
51
+ */
52
+ export declare const METADATA_READ_BATCH_SIZE: number;
39
53
  export declare function readMetadataBatchAdaptive<TItem extends {
40
54
  fullName: string;
41
55
  }>(conn: {
@@ -113,6 +127,49 @@ export declare function scheduleData<T>(fn: () => Promise<T>): Promise<T>;
113
127
  * Returns the concurrency caps actually applied (after merging defaults +
114
128
  * env vars + overrides), so callers can log what the user got.
115
129
  */
130
+ export interface SoqlRebatchOpts<TRecord> {
131
+ /** Quoted, comma-joined ID list. The caller has already escaped each id. */
132
+ ids: string[];
133
+ /** SOQL template containing `${IDS}` exactly once — replaced with the
134
+ * quoted, comma-joined list at execution time. */
135
+ template: string;
136
+ /** Greppable label for timeouts + warning messages. */
137
+ label: string;
138
+ /** Maximum IDs per request before the helper pre-splits. Default 300 —
139
+ * conservative below the documented SOQL `IN()` 4000 cap but above the
140
+ * 200 most extractors hand-chunked at. */
141
+ rebatchAt?: number;
142
+ /** Maximum recursive split depth before giving up on a slice. Default 6 —
143
+ * enough to cover (300 × 2^6 = 19200) IDs in a single starting batch. */
144
+ maxDepth?: number;
145
+ /**
146
+ * Pool to schedule each individual SOQL call through. Defaults to the
147
+ * Tooling pool; pass `scheduleQuery`/`scheduleData` for non-Tooling
148
+ * paths. The helper does NOT pick a pool based on the SOQL itself —
149
+ * staying explicit avoids "this call went to the wrong pool, why is
150
+ * Tooling starved" surprises.
151
+ */
152
+ scheduler?: <T>(fn: () => Promise<T>) => Promise<T>;
153
+ /** Per-call timeout label override. Defaults to SOQL_TIMEOUT_MS. */
154
+ timeoutMs?: number;
155
+ /** Function that runs the actual SOQL on the right API surface
156
+ * (`conn.tooling.query` or `conn.query`). Returning a value with a
157
+ * `records` array is required. */
158
+ runner: (soql: string) => Promise<{
159
+ records?: TRecord[];
160
+ }>;
161
+ }
162
+ /** Detect errors that should trigger a smaller-batch retry rather than
163
+ * failing the whole call. Tries the canonical jsforce error shape first
164
+ * (`statusCode` / `errorCode`) then falls back to message matching. */
165
+ export declare function isRebatchableSoqlError(err: unknown): boolean;
166
+ /**
167
+ * Execute `template` against `ids`, splitting the ID set on a rebatchable
168
+ * error or when it exceeds `rebatchAt`. Returns the merged record set.
169
+ * Throws only on non-rebatchable errors (the caller's existing failSoft /
170
+ * onError plumbing handles those).
171
+ */
172
+ export declare function runSoqlInRebatchable<TRecord>(opts: SoqlRebatchOpts<TRecord>): Promise<TRecord[]>;
116
173
  export declare function configureDefaultPools(overrides?: PoolConcurrencyOverrides): Promise<{
117
174
  tooling: number;
118
175
  metadata: number;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/extractors/live-org/rate-limit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/extractors/live-org/rate-limit.ts"],"names":[],"mappings":"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"}
@@ -68,9 +68,39 @@ const MAX_BISECT_DEPTH = (() => {
68
68
  const env = Number.parseInt(process.env.SFGRAPH_BISECT_MAX_DEPTH ?? "", 10);
69
69
  return Number.isFinite(env) && env > 0 ? env : 6;
70
70
  })();
71
+ /**
72
+ * Maximum items per `metadata.read` Salesforce SOAP call. The platform docs
73
+ * cap this at 10 — passing more makes jsforce either error or silently
74
+ * truncate depending on version. Most callers already hand-chunk at 10
75
+ * (see extractors/generic-metadata, flow, integration); this constant
76
+ * centralises that value and lets readMetadataBatchAdaptive enforce it
77
+ * defensively for callers that don't.
78
+ *
79
+ * NOTE: The Salesforce Composite REST API allows 25 subrequests per call,
80
+ * but that's a different API (REST, not SOAP Metadata) which sfgraph does
81
+ * not currently use. Don't conflate the two — bumping this to 25 against
82
+ * the Metadata SOAP path is silently broken on real orgs.
83
+ */
84
+ export const METADATA_READ_BATCH_SIZE = (() => {
85
+ const env = Number.parseInt(process.env.SFGRAPH_METADATA_READ_CHUNK_SIZE ?? "", 10);
86
+ return Number.isFinite(env) && env > 0 && env <= 10 ? env : 10;
87
+ })();
71
88
  export async function readMetadataBatchAdaptive(conn, type, items, depth = 0) {
72
89
  if (items.length === 0)
73
90
  return [];
91
+ // Pre-chunk to the platform's per-call ceiling before doing anything else.
92
+ // When the caller passes >10 items, run them as independent scheduled
93
+ // calls (the Bottleneck metadata pool bounds concurrency); on failure
94
+ // only the failing sub-chunk bisects, so an oversized happy-path batch
95
+ // doesn't drag healthy peers into the bisection cascade.
96
+ if (depth === 0 && items.length > METADATA_READ_BATCH_SIZE) {
97
+ const chunks = [];
98
+ for (let i = 0; i < items.length; i += METADATA_READ_BATCH_SIZE) {
99
+ chunks.push(items.slice(i, i + METADATA_READ_BATCH_SIZE));
100
+ }
101
+ const partials = await Promise.all(chunks.map((c) => readMetadataBatchAdaptive(conn, type, c, 0)));
102
+ return partials.flat();
103
+ }
74
104
  try {
75
105
  const raw = await scheduleMetadata(() => withTimeout(conn.metadata.read(type, items.map((i) => i.fullName)), METADATA_READ_TIMEOUT_MS, `metadata.read ${type}`));
76
106
  const arr = Array.isArray(raw) ? raw : raw ? [raw] : [];
@@ -256,16 +286,71 @@ export function scheduleMetadata(fn) {
256
286
  export function scheduleData(fn) {
257
287
  return defaultPools.scheduleData(fn);
258
288
  }
289
+ /** Detect errors that should trigger a smaller-batch retry rather than
290
+ * failing the whole call. Tries the canonical jsforce error shape first
291
+ * (`statusCode` / `errorCode`) then falls back to message matching. */
292
+ export function isRebatchableSoqlError(err) {
293
+ const e = err;
294
+ if (e?.statusCode === 414 || e?.statusCode === 431)
295
+ return true;
296
+ if (e?.errorCode === "URI_TOO_LONG" || e?.errorCode === "REQUEST_HEADER_FIELDS_TOO_LARGE") {
297
+ return true;
298
+ }
299
+ const msg = (e?.message ?? String(err)).toLowerCase();
300
+ if (msg.includes("uri too long") || msg.includes("414"))
301
+ return true;
302
+ if (msg.includes("request header fields too large") || msg.includes("431"))
303
+ return true;
304
+ if (msg.includes("malformed_query") && msg.includes("characters"))
305
+ return true;
306
+ return false;
307
+ }
259
308
  /**
260
- * Mutate the *default* (process-level) pools' concurrency caps at runtime.
261
- * Used by the CLI when `--tooling-pool` / `--metadata-pool` / `--data-pool`
262
- * flags are passed — by the time those flags are parsed, the singletons have
263
- * already been instantiated, so we can't influence them through the
264
- * constructor. Bottleneck supports live updates via `updateSettings`.
265
- *
266
- * Returns the concurrency caps actually applied (after merging defaults +
267
- * env vars + overrides), so callers can log what the user got.
309
+ * Execute `template` against `ids`, splitting the ID set on a rebatchable
310
+ * error or when it exceeds `rebatchAt`. Returns the merged record set.
311
+ * Throws only on non-rebatchable errors (the caller's existing failSoft /
312
+ * onError plumbing handles those).
268
313
  */
314
+ export async function runSoqlInRebatchable(opts) {
315
+ const rebatchAt = opts.rebatchAt ?? 300;
316
+ const maxDepth = opts.maxDepth ?? 6;
317
+ const scheduler = opts.scheduler ?? scheduleQuery;
318
+ const timeoutMs = opts.timeoutMs ?? SOQL_TIMEOUT_MS;
319
+ if (opts.ids.length === 0)
320
+ return [];
321
+ if (!opts.template.includes("${IDS}")) {
322
+ throw new Error(`runSoqlInRebatchable(${opts.label}): template must contain \`\${IDS}\` placeholder`);
323
+ }
324
+ const runSlice = async (slice, depth) => {
325
+ const idList = slice.join(",");
326
+ const soql = opts.template.replace("${IDS}", idList);
327
+ try {
328
+ const res = await scheduler(() => withTimeout(opts.runner(soql), timeoutMs, `soql ${opts.label}`));
329
+ return res?.records ?? [];
330
+ }
331
+ catch (e) {
332
+ if (slice.length === 1 || depth >= maxDepth)
333
+ throw e;
334
+ if (!isRebatchableSoqlError(e))
335
+ throw e;
336
+ // Halve and recurse.
337
+ const mid = Math.ceil(slice.length / 2);
338
+ const [left, right] = await Promise.all([
339
+ runSlice(slice.slice(0, mid), depth + 1),
340
+ runSlice(slice.slice(mid), depth + 1),
341
+ ]);
342
+ return [...left, ...right];
343
+ }
344
+ };
345
+ // Pre-chunk to rebatchAt. Each chunk runs through the scheduler
346
+ // independently so the pool's concurrency cap controls fan-out.
347
+ const chunks = [];
348
+ for (let i = 0; i < opts.ids.length; i += rebatchAt) {
349
+ chunks.push(opts.ids.slice(i, i + rebatchAt));
350
+ }
351
+ const results = await Promise.all(chunks.map((c) => runSlice(c, 0)));
352
+ return results.flat();
353
+ }
269
354
  export async function configureDefaultPools(overrides = {}) {
270
355
  const env = envOverrides();
271
356
  const tooling = overrides.tooling ?? env.tooling ?? DEFAULT_POOL_CONCURRENCY.tooling;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/extractors/live-org/rate-limit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/extractors/live-org/rate-limit.ts"],"names":[],"mappings":"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"}
@@ -17,5 +17,5 @@ export declare function loadVlocityRegistry(): Record<string, VlocityTypeDef>;
17
17
  * emit zero edges, so Vlocity nodes exist in the graph but have no
18
18
  * relationships.
19
19
  */
20
- export declare function iterVlocityRecords(conn: any, caps: OrgCapabilities, orgId: string): AsyncIterable<RawMember>;
20
+ export declare function iterVlocityRecords(conn: any, caps: OrgCapabilities, orgId: string, onError?: (label: string, err: Error) => void): AsyncIterable<RawMember>;
21
21
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/extractors/live-org/vlocity/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,WAAW,cAAc;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAYD,mEAAmE;AACnE,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgBpE;AAgKD;;;;;;;;;GASG;AACH,wBAAuB,kBAAkB,CACvC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,GACZ,aAAa,CAAC,SAAS,CAAC,CA6F1B"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/extractors/live-org/vlocity/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,WAAW,cAAc;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAYD,mEAAmE;AACnE,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgBpE;AAwKD;;;;;;;;;GASG;AACH,wBAAuB,kBAAkB,CACvC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI,GAC5C,aAAa,CAAC,SAAS,CAAC,CAkG1B"}