@ryanstark24/sfgraph-core 1.2.0 → 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 (265) hide show
  1. package/dist/analyze/__tests__/audit-graph.test.js +79 -0
  2. package/dist/analyze/__tests__/audit-graph.test.js.map +1 -1
  3. package/dist/analyze/__tests__/edge-filters.test.d.ts +2 -0
  4. package/dist/analyze/__tests__/edge-filters.test.d.ts.map +1 -0
  5. package/dist/analyze/__tests__/edge-filters.test.js +66 -0
  6. package/dist/analyze/__tests__/edge-filters.test.js.map +1 -0
  7. package/dist/analyze/__tests__/findings.test.js +19 -9
  8. package/dist/analyze/__tests__/findings.test.js.map +1 -1
  9. package/dist/analyze/__tests__/governor-risks-detection.test.js +90 -0
  10. package/dist/analyze/__tests__/governor-risks-detection.test.js.map +1 -1
  11. package/dist/analyze/__tests__/security-fls-filter.test.d.ts +2 -0
  12. package/dist/analyze/__tests__/security-fls-filter.test.d.ts.map +1 -0
  13. package/dist/analyze/__tests__/security-fls-filter.test.js +23 -0
  14. package/dist/analyze/__tests__/security-fls-filter.test.js.map +1 -0
  15. package/dist/analyze/audit-graph.d.ts +26 -2
  16. package/dist/analyze/audit-graph.d.ts.map +1 -1
  17. package/dist/analyze/audit-graph.js +52 -5
  18. package/dist/analyze/audit-graph.js.map +1 -1
  19. package/dist/analyze/dependencies.d.ts +2 -2
  20. package/dist/analyze/dependencies.d.ts.map +1 -1
  21. package/dist/analyze/dependencies.js +9 -3
  22. package/dist/analyze/dependencies.js.map +1 -1
  23. package/dist/analyze/dependents.d.ts +6 -1
  24. package/dist/analyze/dependents.d.ts.map +1 -1
  25. package/dist/analyze/dependents.js +12 -2
  26. package/dist/analyze/dependents.js.map +1 -1
  27. package/dist/analyze/edge-filters.d.ts +37 -0
  28. package/dist/analyze/edge-filters.d.ts.map +1 -0
  29. package/dist/analyze/edge-filters.js +51 -0
  30. package/dist/analyze/edge-filters.js.map +1 -0
  31. package/dist/analyze/find-nodes.d.ts.map +1 -1
  32. package/dist/analyze/find-nodes.js.map +1 -1
  33. package/dist/analyze/findings.d.ts +1 -1
  34. package/dist/analyze/findings.d.ts.map +1 -1
  35. package/dist/analyze/findings.js +1 -3
  36. package/dist/analyze/findings.js.map +1 -1
  37. package/dist/analyze/populate.d.ts.map +1 -1
  38. package/dist/analyze/populate.js +55 -10
  39. package/dist/analyze/populate.js.map +1 -1
  40. package/dist/analyze/security.d.ts +15 -0
  41. package/dist/analyze/security.d.ts.map +1 -1
  42. package/dist/analyze/security.js +59 -3
  43. package/dist/analyze/security.js.map +1 -1
  44. package/dist/analyze/wip-impact.d.ts.map +1 -1
  45. package/dist/analyze/wip-impact.js +12 -2
  46. package/dist/analyze/wip-impact.js.map +1 -1
  47. package/dist/domain/metadata-category.d.ts +1 -0
  48. package/dist/domain/metadata-category.d.ts.map +1 -1
  49. package/dist/domain/metadata-category.js +1 -0
  50. package/dist/domain/metadata-category.js.map +1 -1
  51. package/dist/embedding/embed.d.ts.map +1 -1
  52. package/dist/embedding/embed.js +14 -1
  53. package/dist/embedding/embed.js.map +1 -1
  54. package/dist/extractors/interfaces/metadata-source.d.ts +11 -0
  55. package/dist/extractors/interfaces/metadata-source.d.ts.map +1 -1
  56. package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js.map +1 -1
  57. package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts +2 -0
  58. package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts.map +1 -0
  59. package/dist/extractors/live-org/__tests__/custom-settings.test.js +79 -0
  60. package/dist/extractors/live-org/__tests__/custom-settings.test.js.map +1 -0
  61. package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js +70 -8
  62. package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js.map +1 -1
  63. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js +9 -6
  64. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js.map +1 -1
  65. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js +1 -1
  66. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js.map +1 -1
  67. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js +1 -1
  68. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js.map +1 -1
  69. package/dist/extractors/live-org/__tests__/pools.test.js +4 -1
  70. package/dist/extractors/live-org/__tests__/pools.test.js.map +1 -1
  71. package/dist/extractors/live-org/__tests__/rate-limit.test.js +1 -6
  72. package/dist/extractors/live-org/__tests__/rate-limit.test.js.map +1 -1
  73. package/dist/extractors/live-org/__tests__/soql-rebatch.test.js.map +1 -1
  74. package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts +2 -0
  75. package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts.map +1 -0
  76. package/dist/extractors/live-org/__tests__/stop-waiting.test.js +243 -0
  77. package/dist/extractors/live-org/__tests__/stop-waiting.test.js.map +1 -0
  78. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts +2 -0
  79. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts.map +1 -0
  80. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js +40 -0
  81. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js.map +1 -0
  82. package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts +2 -0
  83. package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts.map +1 -0
  84. package/dist/extractors/live-org/__tests__/wedge-isolation.test.js +270 -0
  85. package/dist/extractors/live-org/__tests__/wedge-isolation.test.js.map +1 -0
  86. package/dist/extractors/live-org/bulk-retrieve.d.ts +169 -0
  87. package/dist/extractors/live-org/bulk-retrieve.d.ts.map +1 -1
  88. package/dist/extractors/live-org/bulk-retrieve.js +499 -70
  89. package/dist/extractors/live-org/bulk-retrieve.js.map +1 -1
  90. package/dist/extractors/live-org/capabilities.d.ts.map +1 -1
  91. package/dist/extractors/live-org/capabilities.js.map +1 -1
  92. package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts +2 -0
  93. package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts.map +1 -0
  94. package/dist/extractors/live-org/extractors/__tests__/apex.test.js +73 -0
  95. package/dist/extractors/live-org/extractors/__tests__/apex.test.js.map +1 -0
  96. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts +2 -0
  97. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts.map +1 -0
  98. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js +183 -0
  99. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js.map +1 -0
  100. package/dist/extractors/live-org/extractors/apex.d.ts.map +1 -1
  101. package/dist/extractors/live-org/extractors/apex.js +76 -51
  102. package/dist/extractors/live-org/extractors/apex.js.map +1 -1
  103. package/dist/extractors/live-org/extractors/custom-settings.d.ts +3 -0
  104. package/dist/extractors/live-org/extractors/custom-settings.d.ts.map +1 -0
  105. package/dist/extractors/live-org/extractors/custom-settings.js +66 -0
  106. package/dist/extractors/live-org/extractors/custom-settings.js.map +1 -0
  107. package/dist/extractors/live-org/extractors/flow.d.ts.map +1 -1
  108. package/dist/extractors/live-org/extractors/flow.js.map +1 -1
  109. package/dist/extractors/live-org/extractors/generic-metadata.d.ts.map +1 -1
  110. package/dist/extractors/live-org/extractors/generic-metadata.js.map +1 -1
  111. package/dist/extractors/live-org/extractors/generic-sobject.js.map +1 -1
  112. package/dist/extractors/live-org/extractors/lwc.d.ts.map +1 -1
  113. package/dist/extractors/live-org/extractors/lwc.js +81 -41
  114. package/dist/extractors/live-org/extractors/lwc.js.map +1 -1
  115. package/dist/extractors/live-org/extractors/mcd-baseline.d.ts.map +1 -1
  116. package/dist/extractors/live-org/extractors/mcd-baseline.js +2 -4
  117. package/dist/extractors/live-org/extractors/mcd-baseline.js.map +1 -1
  118. package/dist/extractors/live-org/extractors/object.d.ts.map +1 -1
  119. package/dist/extractors/live-org/extractors/object.js.map +1 -1
  120. package/dist/extractors/live-org/extractors/omnistudio-retrieve.d.ts.map +1 -1
  121. package/dist/extractors/live-org/extractors/omnistudio-retrieve.js.map +1 -1
  122. package/dist/extractors/live-org/extractors/omnistudio.d.ts +8 -1
  123. package/dist/extractors/live-org/extractors/omnistudio.d.ts.map +1 -1
  124. package/dist/extractors/live-org/extractors/omnistudio.js +59 -6
  125. package/dist/extractors/live-org/extractors/omnistudio.js.map +1 -1
  126. package/dist/extractors/live-org/rate-limit.d.ts +41 -15
  127. package/dist/extractors/live-org/rate-limit.d.ts.map +1 -1
  128. package/dist/extractors/live-org/rate-limit.js +185 -33
  129. package/dist/extractors/live-org/rate-limit.js.map +1 -1
  130. package/dist/extractors/live-org/vlocity/runner.d.ts.map +1 -1
  131. package/dist/extractors/live-org/vlocity/runner.js +30 -6
  132. package/dist/extractors/live-org/vlocity/runner.js.map +1 -1
  133. package/dist/ingest/__tests__/config-values.test.d.ts +2 -0
  134. package/dist/ingest/__tests__/config-values.test.d.ts.map +1 -0
  135. package/dist/ingest/__tests__/config-values.test.js +65 -0
  136. package/dist/ingest/__tests__/config-values.test.js.map +1 -0
  137. package/dist/ingest/__tests__/full-sync-deletion.test.js +11 -4
  138. package/dist/ingest/__tests__/full-sync-deletion.test.js.map +1 -1
  139. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts +10 -0
  140. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts.map +1 -0
  141. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js +251 -0
  142. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js.map +1 -0
  143. package/dist/ingest/__tests__/live-ingest.test.js.map +1 -1
  144. package/dist/ingest/__tests__/parser-dispatch.test.d.ts +2 -0
  145. package/dist/ingest/__tests__/parser-dispatch.test.d.ts.map +1 -0
  146. package/dist/ingest/__tests__/parser-dispatch.test.js +55 -0
  147. package/dist/ingest/__tests__/parser-dispatch.test.js.map +1 -0
  148. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts +2 -0
  149. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts.map +1 -0
  150. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js +134 -0
  151. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js.map +1 -0
  152. package/dist/ingest/detect-deletions-guard.d.ts +45 -0
  153. package/dist/ingest/detect-deletions-guard.d.ts.map +1 -0
  154. package/dist/ingest/detect-deletions-guard.js +63 -0
  155. package/dist/ingest/detect-deletions-guard.js.map +1 -0
  156. package/dist/ingest/live-ingest.d.ts +16 -0
  157. package/dist/ingest/live-ingest.d.ts.map +1 -1
  158. package/dist/ingest/live-ingest.js +776 -549
  159. package/dist/ingest/live-ingest.js.map +1 -1
  160. package/dist/parsers/__tests__/datatransform-structured.test.d.ts +2 -0
  161. package/dist/parsers/__tests__/datatransform-structured.test.d.ts.map +1 -0
  162. package/dist/parsers/__tests__/datatransform-structured.test.js +147 -0
  163. package/dist/parsers/__tests__/datatransform-structured.test.js.map +1 -0
  164. package/dist/parsers/__tests__/edge-provenance.test.js +4 -1
  165. package/dist/parsers/__tests__/edge-provenance.test.js.map +1 -1
  166. package/dist/parsers/__tests__/lwc-bindings.test.js +6 -3
  167. package/dist/parsers/__tests__/lwc-bindings.test.js.map +1 -1
  168. package/dist/parsers/__tests__/object-inline-fields.test.js +2 -2
  169. package/dist/parsers/__tests__/object-inline-fields.test.js.map +1 -1
  170. package/dist/parsers/__tests__/omnistudio.golden.test.js +5 -6
  171. package/dist/parsers/__tests__/omnistudio.golden.test.js.map +1 -1
  172. package/dist/parsers/__tests__/vlocity.golden.test.js +9 -13
  173. package/dist/parsers/__tests__/vlocity.golden.test.js.map +1 -1
  174. package/dist/parsers/apex/__tests__/ast-extractor.test.js +64 -4
  175. package/dist/parsers/apex/__tests__/ast-extractor.test.js.map +1 -1
  176. package/dist/parsers/apex/__tests__/empty-body.test.d.ts +2 -0
  177. package/dist/parsers/apex/__tests__/empty-body.test.d.ts.map +1 -0
  178. package/dist/parsers/apex/__tests__/empty-body.test.js +40 -0
  179. package/dist/parsers/apex/__tests__/empty-body.test.js.map +1 -0
  180. package/dist/parsers/apex/__tests__/is-test-attribute.test.js +4 -2
  181. package/dist/parsers/apex/__tests__/is-test-attribute.test.js.map +1 -1
  182. package/dist/parsers/apex/__tests__/regex-arg-count.test.js +1 -1
  183. package/dist/parsers/apex/__tests__/regex-arg-count.test.js.map +1 -1
  184. package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts +2 -0
  185. package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts.map +1 -0
  186. package/dist/parsers/apex/__tests__/regex-inloop.test.js +70 -0
  187. package/dist/parsers/apex/__tests__/regex-inloop.test.js.map +1 -0
  188. package/dist/parsers/apex/arity-resolver.d.ts.map +1 -1
  189. package/dist/parsers/apex/arity-resolver.js.map +1 -1
  190. package/dist/parsers/apex/ast-extractor.d.ts.map +1 -1
  191. package/dist/parsers/apex/ast-extractor.js +33 -1
  192. package/dist/parsers/apex/ast-extractor.js.map +1 -1
  193. package/dist/parsers/apex/class.d.ts.map +1 -1
  194. package/dist/parsers/apex/class.js +62 -3
  195. package/dist/parsers/apex/class.js.map +1 -1
  196. package/dist/parsers/apex/trigger.d.ts.map +1 -1
  197. package/dist/parsers/apex/trigger.js +10 -0
  198. package/dist/parsers/apex/trigger.js.map +1 -1
  199. package/dist/parsers/flow/__tests__/invocable-resolver.test.js.map +1 -1
  200. package/dist/parsers/flow/invocable-resolver.d.ts.map +1 -1
  201. package/dist/parsers/flow/invocable-resolver.js.map +1 -1
  202. package/dist/parsers/generic/reflection-walker.d.ts.map +1 -1
  203. package/dist/parsers/generic/reflection-walker.js +1 -3
  204. package/dist/parsers/generic/reflection-walker.js.map +1 -1
  205. package/dist/parsers/lwc/html-visitor.d.ts.map +1 -1
  206. package/dist/parsers/lwc/html-visitor.js +3 -2
  207. package/dist/parsers/lwc/html-visitor.js.map +1 -1
  208. package/dist/parsers/lwc/js-visitor.d.ts.map +1 -1
  209. package/dist/parsers/lwc/js-visitor.js +6 -2
  210. package/dist/parsers/lwc/js-visitor.js.map +1 -1
  211. package/dist/parsers/object/object.d.ts.map +1 -1
  212. package/dist/parsers/object/object.js +1 -5
  213. package/dist/parsers/object/object.js.map +1 -1
  214. package/dist/parsers/omnistudio/data-transform.d.ts.map +1 -1
  215. package/dist/parsers/omnistudio/data-transform.js +39 -6
  216. package/dist/parsers/omnistudio/data-transform.js.map +1 -1
  217. package/dist/parsers/omnistudio/integration-procedure.d.ts.map +1 -1
  218. package/dist/parsers/omnistudio/integration-procedure.js +3 -2
  219. package/dist/parsers/omnistudio/integration-procedure.js.map +1 -1
  220. package/dist/parsers/omnistudio/overlap-detector.d.ts.map +1 -1
  221. package/dist/parsers/omnistudio/overlap-detector.js +2 -9
  222. package/dist/parsers/omnistudio/overlap-detector.js.map +1 -1
  223. package/dist/parsers/omnistudio/process.d.ts.map +1 -1
  224. package/dist/parsers/omnistudio/process.js +3 -2
  225. package/dist/parsers/omnistudio/process.js.map +1 -1
  226. package/dist/parsers/omnistudio/ui-card.d.ts.map +1 -1
  227. package/dist/parsers/omnistudio/ui-card.js +3 -2
  228. package/dist/parsers/omnistudio/ui-card.js.map +1 -1
  229. package/dist/parsers/rules/custom-metadata-type.yml +7 -0
  230. package/dist/parsers/rules/custom-setting.yml +24 -0
  231. package/dist/parsers/vlocity/common.d.ts +16 -0
  232. package/dist/parsers/vlocity/common.d.ts.map +1 -1
  233. package/dist/parsers/vlocity/common.js +62 -0
  234. package/dist/parsers/vlocity/common.js.map +1 -1
  235. package/dist/parsers/vlocity/data-raptor.d.ts.map +1 -1
  236. package/dist/parsers/vlocity/data-raptor.js +43 -14
  237. package/dist/parsers/vlocity/data-raptor.js.map +1 -1
  238. package/dist/render/__tests__/sarif.test.js +1 -4
  239. package/dist/render/__tests__/sarif.test.js.map +1 -1
  240. package/dist/render/sarif.d.ts.map +1 -1
  241. package/dist/render/sarif.js +1 -3
  242. package/dist/render/sarif.js.map +1 -1
  243. package/dist/storage/__tests__/analysis-tables-migration.test.js +1 -1
  244. package/dist/storage/__tests__/graph-store.test.js +13 -0
  245. package/dist/storage/__tests__/graph-store.test.js.map +1 -1
  246. package/dist/storage/__tests__/migrations.test.js +4 -4
  247. package/dist/storage/__tests__/rename-stability.test.js.map +1 -1
  248. package/dist/storage/__tests__/sync-generation.test.d.ts +2 -0
  249. package/dist/storage/__tests__/sync-generation.test.d.ts.map +1 -0
  250. package/dist/storage/__tests__/sync-generation.test.js +159 -0
  251. package/dist/storage/__tests__/sync-generation.test.js.map +1 -0
  252. package/dist/storage/interfaces.d.ts +57 -0
  253. package/dist/storage/interfaces.d.ts.map +1 -1
  254. package/dist/storage/sqlite/graph-store.d.ts +15 -1
  255. package/dist/storage/sqlite/graph-store.d.ts.map +1 -1
  256. package/dist/storage/sqlite/graph-store.js +78 -0
  257. package/dist/storage/sqlite/graph-store.js.map +1 -1
  258. package/dist/storage/sqlite/migrations.d.ts.map +1 -1
  259. package/dist/storage/sqlite/migrations.js +19 -0
  260. package/dist/storage/sqlite/migrations.js.map +1 -1
  261. package/dist/storage/sqlite/rename-stability.d.ts +1 -1
  262. package/dist/storage/sqlite/rename-stability.d.ts.map +1 -1
  263. package/dist/storage/sqlite/rename-stability.js +2 -6
  264. package/dist/storage/sqlite/rename-stability.js.map +1 -1
  265. package/package.json +1 -1
@@ -0,0 +1,134 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { iterVlocityRecords } from "../../extractors/live-org/vlocity/runner.js";
3
+ import { parserRegistry } from "../../parsers/index.js";
4
+ import { adaptParserInput } from "../live-ingest.js";
5
+ /**
6
+ * End-to-end coverage for the runner→dispatch→parser seam that shipped
7
+ * broken: the Vlocity runner emits memberType "DataRaptor" /
8
+ * "IntegrationProcedure" / "OmniScript" / "VlocityCard", but the four rich
9
+ * parsers register under "Vlocity"-prefixed type names. adaptParserInput
10
+ * didn't map between them, so every datapack except VlocityCard fell through
11
+ * to the opaque node parser — shallow nodes, ZERO DR_/IP_/OS_ edges. The
12
+ * golden tests call parsers directly and never exercised this seam, which is
13
+ * how it stayed broken through a full live ingest.
14
+ *
15
+ * This test drives a mocked Vlocity org through the REAL runner (with child
16
+ * fetches), then through the REAL dispatch + registry lookup + parse, and
17
+ * asserts the resulting edges are the rich lineage edges — not opaque.
18
+ */
19
+ const caps = {
20
+ vlocityNamespaces: ["vlocity_cmt"],
21
+ vlocityLegacy: true,
22
+ };
23
+ const ctx = {
24
+ orgId: "00DTestVloc",
25
+ sourceUri: "test://vloc",
26
+ parseTimestamp: "2026-01-01T00:00:00.000Z",
27
+ namespace: "vlocity_cmt",
28
+ logger: { debug() { }, info() { }, warn() { }, error() { } },
29
+ };
30
+ async function collect(it) {
31
+ const out = [];
32
+ for await (const m of it)
33
+ out.push(m);
34
+ return out;
35
+ }
36
+ /** Run one runner-emitted member through the exact path live-ingest uses. */
37
+ async function dispatchAndParse(member) {
38
+ const adapted = adaptParserInput(member.ref, member.content);
39
+ expect(adapted, `no adapter for ${member.ref.memberType}`).not.toBeNull();
40
+ const parser = parserRegistry.for(adapted.type);
41
+ expect(parser, `no parser registered for ${adapted.type}`).toBeDefined();
42
+ return parser.parse(adapted.input, ctx);
43
+ }
44
+ function rels(edges) {
45
+ return new Set(edges.map((e) => e.relType));
46
+ }
47
+ describe("Vlocity runner → dispatch → parser integration", () => {
48
+ it("DataRaptor: runner child mappings become DR_READS_FIELD lineage, not opaque", async () => {
49
+ const conn = {
50
+ query: async (soql) => {
51
+ if (soql.includes("__DRBundle__c")) {
52
+ return {
53
+ records: [{ Id: "a0D1", Name: "AccountExtract", vlocity_cmt__Type__c: "Extract" }],
54
+ done: true,
55
+ };
56
+ }
57
+ if (soql.includes("__DRMapItem__c")) {
58
+ // DRMapItem correlates to its bundle by Name (no DRBundleId field).
59
+ return {
60
+ records: [
61
+ {
62
+ Id: "a0M1",
63
+ Name: "AccountExtract",
64
+ vlocity_cmt__InterfaceObjectName__c: "Account",
65
+ vlocity_cmt__InterfaceFieldAPIName__c: "Name",
66
+ vlocity_cmt__DomainObjectAPIName__c: "json",
67
+ vlocity_cmt__DomainObjectFieldAPIName__c: "Details:Name",
68
+ },
69
+ ],
70
+ done: true,
71
+ };
72
+ }
73
+ return { records: [], done: true };
74
+ },
75
+ };
76
+ const members = await collect(iterVlocityRecords(conn, caps, "00DTestVloc"));
77
+ const dr = members.find((m) => m.ref.memberType === "DataRaptor");
78
+ expect(dr).toBeDefined();
79
+ const result = await dispatchAndParse(dr);
80
+ // The decisive assertion: rich lineage edge, NOT an opaque node.
81
+ const relSet = rels(result.edges);
82
+ expect(relSet.has("DR_READS_FIELD")).toBe(true);
83
+ expect(result.edges.some((e) => String(e.dstQualifiedName) === "CustomField:Account.Name")).toBe(true);
84
+ // Node is the rich DataRaptor label, not OpaqueMetadata.
85
+ expect(result.nodes[0]?.label).toBe("DataRaptor");
86
+ });
87
+ it("IntegrationProcedure: runner element graph becomes IP_* edges", async () => {
88
+ const conn = {
89
+ query: async (soql) => {
90
+ if (soql.includes("__OmniScript__c") && soql.toLowerCase().includes("isprocedure")) {
91
+ return {
92
+ records: [{ Id: "a0I1", Name: "MyIP", vlocity_cmt__IsProcedure__c: true }],
93
+ done: true,
94
+ };
95
+ }
96
+ if (soql.includes("__Element__c")) {
97
+ return {
98
+ records: [
99
+ {
100
+ Id: "e1",
101
+ Name: "callDR",
102
+ vlocity_cmt__Type__c: "DataRaptor Extract Action",
103
+ vlocity_cmt__PropertySet__c: JSON.stringify({ bundle: "AccountExtract" }),
104
+ vlocity_cmt__OmniScriptId__c: "a0I1",
105
+ },
106
+ ],
107
+ done: true,
108
+ };
109
+ }
110
+ return { records: [], done: true };
111
+ },
112
+ };
113
+ const members = await collect(iterVlocityRecords(conn, caps, "00DTestVloc"));
114
+ const ip = members.find((m) => m.ref.memberType === "IntegrationProcedure");
115
+ expect(ip).toBeDefined();
116
+ const result = await dispatchAndParse(ip);
117
+ expect(result.nodes[0]?.label).toBe("IntegrationProcedure");
118
+ expect(rels(result.edges).has("IP_CALLS_DR")).toBe(true);
119
+ });
120
+ it("maps each runner memberType to its rich parser (none fall to opaque)", () => {
121
+ for (const [memberType, expectedParserType] of [
122
+ ["DataRaptor", "VlocityDataRaptor"],
123
+ ["IntegrationProcedure", "VlocityIntegrationProcedure"],
124
+ ["OmniScript", "VlocityOmniScript"],
125
+ ["VlocityCard", "VlocityCard"],
126
+ ]) {
127
+ const adapted = adaptParserInput({ memberType, memberName: "X" }, JSON.stringify({ Name: "X" }));
128
+ expect(adapted?.type, `${memberType} should map to ${expectedParserType}`).toBe(expectedParserType);
129
+ expect(adapted?.type).not.toBe("OpaqueMetadata");
130
+ expect(parserRegistry.for(adapted.type)).toBeDefined();
131
+ }
132
+ });
133
+ });
134
+ //# sourceMappingURL=vlocity-dispatch-integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vlocity-dispatch-integration.test.js","sourceRoot":"","sources":["../../../src/ingest/__tests__/vlocity-dispatch-integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,IAAI,GAAG;IACX,iBAAiB,EAAE,CAAC,aAAa,CAAC;IAClC,aAAa,EAAE,IAAI;CACU,CAAC;AAEhC,MAAM,GAAG,GAAiB;IACxB,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,aAAa;IACxB,cAAc,EAAE,0BAA0B;IAC1C,SAAS,EAAE,aAAa;IACxB,MAAM,EAAE,EAAE,KAAK,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,KAAK,KAAI,CAAC,EAA4B;CACnF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAI,EAAoB;IAC5C,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,gBAAgB,CAAC,MAAwD;IACtF,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,kBAAkB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,MAAM,EAAE,4BAA4B,OAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1E,OAAO,MAAO,CAAC,KAAK,CAAC,OAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,IAAI,CAAC,KAAiC;IAC7C,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBACnC,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC;wBAClF,IAAI,EAAE,IAAI;qBACX,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACpC,oEAAoE;oBACpE,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,EAAE,EAAE,MAAM;gCACV,IAAI,EAAE,gBAAgB;gCACtB,mCAAmC,EAAE,SAAS;gCAC9C,qCAAqC,EAAE,MAAM;gCAC7C,mCAAmC,EAAE,MAAM;gCAC3C,wCAAwC,EAAE,cAAc;6BACzD;yBACF;wBACD,IAAI,EAAE,IAAI;qBACX,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACrC,CAAC;SACF,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAG,CAAC,CAAC;QAC3C,iEAAiE;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CACJ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,0BAA0B,CAAC,CACpF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,yDAAyD;QACzD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACnF,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC;wBAC1E,IAAI,EAAE,IAAI;qBACX,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAClC,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,EAAE,EAAE,IAAI;gCACR,IAAI,EAAE,QAAQ;gCACd,oBAAoB,EAAE,2BAA2B;gCACjD,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;gCACzE,4BAA4B,EAAE,MAAM;6BACrC;yBACF;wBACD,IAAI,EAAE,IAAI;qBACX,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACrC,CAAC;SACF,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK,sBAAsB,CAAC,CAAC;QAC5E,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,KAAK,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI;YAC7C,CAAC,YAAY,EAAE,mBAAmB,CAAC;YACnC,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;YACvD,CAAC,YAAY,EAAE,mBAAmB,CAAC;YACnC,CAAC,aAAa,EAAE,aAAa,CAAC;SACtB,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,gBAAgB,CAC9B,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAW,EACxC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAC9B,CAAC;YACF,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,UAAU,kBAAkB,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAC7E,kBAAkB,CACnB,CAAC;YACF,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * W1.5-07 — Per-label deletion-sweep guard.
3
+ *
4
+ * The `--detect-deletions` full-sync sweep at `live-ingest.ts` used to skip
5
+ * only when `streamAborted === true`. A wedged source (W1.5-02) completes
6
+ * with `streamAborted === false`, `parseErrors === 0`, and an empty
7
+ * `touchedQnames` for its label. The set-difference sweep therefore wiped
8
+ * every node of that label — a graph-extinction risk that compounded
9
+ * catastrophically with the wedge cascade.
10
+ *
11
+ * This module encodes the per-label decision: given the prior persisted
12
+ * count, the current run's touched count, and a configurable drop-ratio
13
+ * ceiling, return either `{ proceed: true }` or `{ proceed: false, warning }`
14
+ * with a namespaced-string warning describing why the deletion was refused.
15
+ *
16
+ * Pure / no I/O — the live-ingest sweep wraps this and applies the deletion
17
+ * (or skips it) according to the verdict.
18
+ */
19
+ export interface DeletionGuardVerdict {
20
+ proceed: boolean;
21
+ /** Populated only when `proceed === false`. Format documented in
22
+ * PLAN.md §W1.5-07:
23
+ * `wedge:detect-deletions:refuse:label=<L>:reason=<R>:...`. */
24
+ warning?: string;
25
+ }
26
+ /**
27
+ * Parse the `SFGRAPH_DETECT_DELETIONS_MAX_DROP_RATIO` env var (or the value
28
+ * supplied as `raw`) and clamp to `[0, 1]`. Returns the default 0.30 when
29
+ * unset/invalid. Exported so the live-ingest call site and the tests
30
+ * stay in lockstep with the env-var contract.
31
+ */
32
+ export declare function resolveMaxDropRatio(raw: string | undefined): number;
33
+ /**
34
+ * Evaluate the deletion-sweep guard for a single label.
35
+ *
36
+ * - `priorCount === 0` → proceed (no-op anyway).
37
+ * - `priorCount > 0 && touchedCount === 0` → refuse with `reason=empty-stream`.
38
+ * - `dropRatio > maxDropRatio` → refuse with `reason=drop-ratio`.
39
+ * - Otherwise → proceed.
40
+ *
41
+ * Edge case: `touchedCount > priorCount` (new nodes created this run) — the
42
+ * raw ratio would be negative; clamped to 0 → proceed.
43
+ */
44
+ export declare function evaluateDeletionGuard(label: string, priorCount: number, touchedCount: number, maxDropRatio: number): DeletionGuardVerdict;
45
+ //# sourceMappingURL=detect-deletions-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-deletions-guard.d.ts","sourceRoot":"","sources":["../../src/ingest/detect-deletions-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB;;oEAEgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,oBAAoB,CAqBtB"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * W1.5-07 — Per-label deletion-sweep guard.
3
+ *
4
+ * The `--detect-deletions` full-sync sweep at `live-ingest.ts` used to skip
5
+ * only when `streamAborted === true`. A wedged source (W1.5-02) completes
6
+ * with `streamAborted === false`, `parseErrors === 0`, and an empty
7
+ * `touchedQnames` for its label. The set-difference sweep therefore wiped
8
+ * every node of that label — a graph-extinction risk that compounded
9
+ * catastrophically with the wedge cascade.
10
+ *
11
+ * This module encodes the per-label decision: given the prior persisted
12
+ * count, the current run's touched count, and a configurable drop-ratio
13
+ * ceiling, return either `{ proceed: true }` or `{ proceed: false, warning }`
14
+ * with a namespaced-string warning describing why the deletion was refused.
15
+ *
16
+ * Pure / no I/O — the live-ingest sweep wraps this and applies the deletion
17
+ * (or skips it) according to the verdict.
18
+ */
19
+ /**
20
+ * Parse the `SFGRAPH_DETECT_DELETIONS_MAX_DROP_RATIO` env var (or the value
21
+ * supplied as `raw`) and clamp to `[0, 1]`. Returns the default 0.30 when
22
+ * unset/invalid. Exported so the live-ingest call site and the tests
23
+ * stay in lockstep with the env-var contract.
24
+ */
25
+ export function resolveMaxDropRatio(raw) {
26
+ if (raw === undefined || raw === "")
27
+ return 0.3;
28
+ const parsed = Number.parseFloat(raw);
29
+ if (!Number.isFinite(parsed))
30
+ return 0.3;
31
+ return Math.min(1, Math.max(0, parsed));
32
+ }
33
+ /**
34
+ * Evaluate the deletion-sweep guard for a single label.
35
+ *
36
+ * - `priorCount === 0` → proceed (no-op anyway).
37
+ * - `priorCount > 0 && touchedCount === 0` → refuse with `reason=empty-stream`.
38
+ * - `dropRatio > maxDropRatio` → refuse with `reason=drop-ratio`.
39
+ * - Otherwise → proceed.
40
+ *
41
+ * Edge case: `touchedCount > priorCount` (new nodes created this run) — the
42
+ * raw ratio would be negative; clamped to 0 → proceed.
43
+ */
44
+ export function evaluateDeletionGuard(label, priorCount, touchedCount, maxDropRatio) {
45
+ if (priorCount <= 0)
46
+ return { proceed: true };
47
+ if (touchedCount === 0) {
48
+ return {
49
+ proceed: false,
50
+ warning: `wedge:detect-deletions:refuse:label=${label}:reason=empty-stream:priorCount=${priorCount}`,
51
+ };
52
+ }
53
+ const rawDropRatio = (priorCount - touchedCount) / priorCount;
54
+ const dropRatio = rawDropRatio < 0 ? 0 : rawDropRatio;
55
+ if (dropRatio > maxDropRatio) {
56
+ return {
57
+ proceed: false,
58
+ warning: `wedge:detect-deletions:refuse:label=${label}:reason=drop-ratio:dropped=${priorCount - touchedCount}:prior=${priorCount}:ratio=${dropRatio.toFixed(2)}`,
59
+ };
60
+ }
61
+ return { proceed: true };
62
+ }
63
+ //# sourceMappingURL=detect-deletions-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-deletions-guard.js","sourceRoot":"","sources":["../../src/ingest/detect-deletions-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAuB;IACzD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,UAAkB,EAClB,YAAoB,EACpB,YAAoB;IAEpB,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAE9C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,uCAAuC,KAAK,mCAAmC,UAAU,EAAE;SACrG,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,UAAU,CAAC;IAC9D,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEtD,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,uCAAuC,KAAK,8BAA8B,UAAU,GAAG,YAAY,UAAU,UAAU,UAAU,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACjK,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -2,6 +2,7 @@ import { type OrgId } from "@ryanstark24/sfgraph-shared";
2
2
  import type { Logger } from "@ryanstark24/sfgraph-shared";
3
3
  import "../parsers/index.js";
4
4
  import { type VectorSink } from "../embedding/index.js";
5
+ import type { MemberRef } from "../extractors/interfaces/metadata-source.js";
5
6
  import { type ResolveOrgDeps, type ResolvedOrg } from "../extractors/live-org/auth.js";
6
7
  import { type OrgCapabilities } from "../extractors/live-org/capabilities.js";
7
8
  import type { BetterSqlite3Database, GraphStore } from "../storage/interfaces.js";
@@ -140,5 +141,20 @@ export interface LiveIngestResult {
140
141
  */
141
142
  warnings: string[];
142
143
  }
144
+ /**
145
+ * Build the text embedded for a node's semantic vector. Beyond the
146
+ * label/qname/description baseline, this folds in CONFIG VALUES so
147
+ * `find_similar` matches on what a config artifact actually resolves to —
148
+ * a Custom Metadata record's field values, a Custom Label's text, a Custom
149
+ * Setting's rows. Without this, searching "endpoint for product push" can't
150
+ * reach `End_Point_Urls.ProductPush_PLDT` because only its name was embedded.
151
+ * Exported for tests.
152
+ */
153
+ export declare function buildEmbedText(label: string, qname: string, attributes: Record<string, unknown> | undefined): string;
154
+ /** Exported for tests — maps a RawMember to the registered parser's input shape. */
155
+ export declare function adaptParserInput(ref: MemberRef, content: string): {
156
+ type: string;
157
+ input: unknown;
158
+ } | null;
143
159
  export declare function liveIngest(opts: LiveIngestOpts): Promise<LiveIngestResult>;
144
160
  //# sourceMappingURL=live-ingest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"live-ingest.d.ts","sourceRoot":"","sources":["../../src/ingest/live-ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live-ingest.d.ts","sourceRoot":"","sources":["../../src/ingest/live-ingest.ts"],"names":[],"mappings":"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"}