@x12i/memorix-hippox 1.0.1 → 1.1.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.
package/README.md CHANGED
@@ -1,18 +1,42 @@
1
1
  # @x12i/memorix-hippox
2
2
 
3
- Memorix Hippox stores reusable contextual links between Memorix object types. Operators can define property-based joins without pre-modeled schema relations, simulate match quality on sampled data, approve links into long-term memory, and resolve bounded context into `jobMemory.context`.
3
+ Memorix Hippox stores reusable contextual links between Memorix object types. Operators can discover join keys from sampled data, define property-based joins without pre-modeled schema relations, simulate match quality, approve links into long-term memory, and resolve bounded context into `jobMemory.context`.
4
+
5
+ See [memorix-format.md §13](../docs/memorix-format.md) and [memorix-fomat-additions.md §K](../docs/memorix-fomat-additions.md) for how Hippox fits the Memorix 2.0 record model (`data`, `associatedData`, `index.recordLinks`, `sourceFacts`).
4
6
 
5
7
  ## Database
6
8
 
7
9
  Approved and draft links persist in Mongo database **`memorix-hippox`** (collection **`context-links`** by default).
8
10
 
9
- | Variable | Default |
10
- |----------|---------|
11
- | `MEMORIX_HIPPOX_DB` | `memorix-hippox` |
12
- | `MEMORIX_HIPPOX_COLLECTION` | `context-links` |
13
- | `MEMORIX_HIPPOX_SIMULATION_LIMIT` | `1000` |
14
- | `MEMORIX_HIPPOX_SIMULATION_EXAMPLES_LIMIT` | `25` |
15
- | `MEMORIX_CONTEXT_LIST_LIMIT` | `25` |
11
+ | Variable | Default | Purpose |
12
+ |----------|---------|---------|
13
+ | `MEMORIX_HIPPOX_DB` | `memorix-hippox` | Hippox Mongo database |
14
+ | `MEMORIX_HIPPOX_COLLECTION` | `context-links` | Context links collection |
15
+ | `MEMORIX_HIPPOX_SIMULATION_LIMIT` | `1000` | Max records sampled per side during simulation |
16
+ | `MEMORIX_HIPPOX_SIMULATION_EXAMPLES_LIMIT` | `25` | Max example matches/misses in simulation summary |
17
+ | `MEMORIX_CONTEXT_LIST_LIMIT` | `25` | Default list retrieval limit at resolve time |
18
+ | `MEMORIX_HIPPOX_DISCOVERY_SAMPLE_LIMIT` | `1000` | Max records sampled per side during join discovery |
19
+ | `MEMORIX_HIPPOX_DISCOVERY_DISTINCT_CAP` | `500` | Max distinct source values per value probe |
20
+ | `MEMORIX_HIPPOX_DISCOVERY_MAX_PAIRS` | `200` | Max source×target field pairs to evaluate |
21
+ | `MEMORIX_HIPPOX_DISCOVERY_MIN_COVERAGE` | `0.05` | Minimum field coverage to include in discovery |
22
+ | `MEMORIX_HIPPOX_DISCOVERY_MIN_PAIR_SCORE` | `0.15` | Minimum score for join candidates / recommended join |
23
+ | `MEMORIX_HIPPOX_DISCOVERY_CACHE_TTL_MS` | `300000` | In-memory join-discovery cache TTL per pair |
24
+ | `MEMORIX_HIPPOX_DISCOVERY_MAX_CANDIDATES` | `50` | Max entries in `joinCandidates` |
25
+
26
+ ## Path conventions (Memorix 2.0)
27
+
28
+ Join paths are **dot paths from the document root**, consistent with entity descriptor relations:
29
+
30
+ ```json
31
+ { "sourcePath": "data.subnetId", "targetPath": "data.id", "operator": "eq" }
32
+ ```
33
+
34
+ Discovery walks the content-type `dataRoot` (default `data`) and returns paths with the `data.` prefix.
35
+
36
+ Record identity and sorting support both Memorix 2.0 and legacy shapes:
37
+
38
+ - IDs: `identity.recordId`, `identity.targetId`, then legacy `entityId` / `recordId` / `_id`
39
+ - Latest record: `data.scopedAt`, then `lifecycle.capturedAt` / `lifecycle.modifiedAt`, then root timestamps
16
40
 
17
41
  ## Example: assets → subnets (record context)
18
42
 
@@ -43,18 +67,26 @@ Resolved output:
43
67
  }
44
68
  ```
45
69
 
70
+ Materializing this into a snapshot's `associatedData` block is a separate assembly step; Hippox resolve returns transient job context.
71
+
46
72
  ## HTTP routes
47
73
 
48
74
  When mounted through `memorix-schema-api`:
49
75
 
50
76
  | Method | Path | Purpose |
51
77
  |--------|------|---------|
52
- | `GET` | `/api/hippox/links?sourceObjectType=assets` | List draft + approved links |
78
+ | `GET` | `/api/hippox/links?sourceObjectType=assets` | List draft + simulated + approved links |
53
79
  | `POST` | `/api/hippox/links` | Create draft link |
80
+ | `GET` | `/api/hippox/join-discovery?sourceObjectType=…&targetObjectType=…` | Rank join fields and recommend default pair |
81
+ | `POST` | `/api/hippox/join-discovery` | Same as GET with body parameters |
54
82
  | `POST` | `/api/hippox/links/simulate` | Simulate unsaved definition |
55
83
  | `POST` | `/api/hippox/links/:id/simulate` | Simulate + persist summary |
56
84
  | `POST` | `/api/hippox/links/:id/approve` | Approve simulated link |
57
- | `POST` | `/api/hippox/context/resolve` | Resolve runtime context |
85
+ | `POST` | `/api/hippox/context/resolve` | Resolve runtime context from approved links |
86
+
87
+ ### Join discovery response (summary)
88
+
89
+ Returns ranked `sourceFields`, `targetFields`, `joinCandidates`, and `recommendedJoin` for UI dropdowns. Seeds from Memorix schema relations and previously approved Hippox links. Discovery is ephemeral (optional in-memory cache); only approved links persist.
58
90
 
59
91
  ## Programmatic usage
60
92
 
@@ -65,11 +97,19 @@ import { HippoxService } from '@x12i/memorix-hippox';
65
97
  const { client } = await createMemorixRetrievalStackFromEnv();
66
98
  const hippox = await HippoxService.create({ retrieval: client });
67
99
 
100
+ const discovery = await hippox.discoverJoinCandidates({
101
+ sourceObjectType: 'assets',
102
+ targetObjectType: 'subnets',
103
+ });
104
+
68
105
  const draft = await hippox.createDraftLink({
69
106
  sourceObjectType: 'assets',
70
107
  targetObjectType: 'subnets',
71
108
  direction: 'downstream',
72
- join: [{ sourcePath: 'data.subnetId', targetPath: 'data.id' }],
109
+ join: [discovery.recommendedJoin ?? {
110
+ sourcePath: 'data.subnetId',
111
+ targetPath: 'data.id',
112
+ }],
73
113
  retrieval: { type: 'record', outputMode: 'data' },
74
114
  });
75
115
 
@@ -78,7 +118,7 @@ await hippox.approveLink(draft.id);
78
118
 
79
119
  const resolved = await hippox.resolveContextInput({
80
120
  sourceObjectType: 'assets',
81
- sourceRecordId: 'asset-123',
121
+ sourceRecordId: 'entity:asset:10.100.18.64',
82
122
  linkIds: [draft.id],
83
123
  });
84
124
  ```
@@ -89,8 +129,17 @@ Use `resolveMixedContext()` to resolve Hippox links and legacy `JobContextLink`
89
129
 
90
130
  ## Retrieval types
91
131
 
92
- - **record** — single best match (default latest `data.scopedAt`)
132
+ - **record** — single best match (default latest `data.scopedAt` or `lifecycle.capturedAt`)
93
133
  - **list** — bounded array (mandatory limit)
94
134
  - **aggregate** — flat per-property value counts
95
135
 
96
136
  Output modes: `data` (default), `record`, `dataWithRecordId`.
137
+
138
+ ## Relationship to other Memorix layers
139
+
140
+ | Layer | Hippox role |
141
+ |-------|-------------|
142
+ | `sourceFacts.resolver.component: "memorix-hippox"` | value resolution rules (enum/lookup) — separate from context links |
143
+ | `index.recordLinks` | schema-declared indexed relations |
144
+ | `associatedData` | readable materialized join output on snapshots |
145
+ | `jobMemory.context` | runtime output of `context/resolve` |
@@ -1 +1 @@
1
- {"version":3,"file":"collection-resolver.d.ts","sourceRoot":"","sources":["../src/collection-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAQtE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAmC9D,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,sBAAsB,EACjC,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,CAAC,CAYtC;AASD,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE;IACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1B,GACL,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAiBpC;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,2BAA2B,EACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,CASjB;AA6BD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,sBAAsB,EACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsBlC"}
1
+ {"version":3,"file":"collection-resolver.d.ts","sourceRoot":"","sources":["../src/collection-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAQtE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAmC9D,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,sBAAsB,EACjC,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,CAAC,CAYtC;AASD,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE;IACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1B,GACL,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAiBpC;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,2BAA2B,EACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,CASjB;AA6BD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,sBAAsB,EACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6BlC"}
@@ -109,7 +109,14 @@ export async function loadSourceRecord(retrieval, objectType, params) {
109
109
  binding: entityBinding,
110
110
  contentType: binding.contentType,
111
111
  query: {
112
- $or: [{ _id: recordId }, { recordId }, { entityId: recordId }, { eventId: recordId }],
112
+ $or: [
113
+ { _id: recordId },
114
+ { recordId },
115
+ { entityId: recordId },
116
+ { eventId: recordId },
117
+ { 'identity.recordId': recordId },
118
+ { 'identity.targetId': recordId },
119
+ ],
113
120
  },
114
121
  limit: 1,
115
122
  });
@@ -1 +1 @@
1
- {"version":3,"file":"collection-resolver.js","sourceRoot":"","sources":["../src/collection-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection-resolver.js","sourceRoot":"","sources":["../src/collection-resolver.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -4,6 +4,13 @@ declare const DEFAULT_HIPPOX_COLLECTION = "context-links";
4
4
  declare const DEFAULT_SIMULATION_LIMIT = 1000;
5
5
  declare const DEFAULT_SIMULATION_EXAMPLES_LIMIT = 25;
6
6
  declare const DEFAULT_CONTEXT_LIST_LIMIT = 25;
7
+ declare const DEFAULT_DISCOVERY_SAMPLE_LIMIT = 1000;
8
+ declare const DEFAULT_DISCOVERY_DISTINCT_CAP = 500;
9
+ declare const DEFAULT_DISCOVERY_MAX_PAIRS = 200;
10
+ declare const DEFAULT_DISCOVERY_MIN_COVERAGE = 0.05;
11
+ declare const DEFAULT_DISCOVERY_MIN_PAIR_SCORE = 0.15;
12
+ declare const DEFAULT_DISCOVERY_CACHE_TTL_MS = 300000;
13
+ declare const DEFAULT_DISCOVERY_MAX_CANDIDATES = 50;
7
14
  export declare function loadHippoxConfig(processEnv?: NodeJS.ProcessEnv): HippoxConfig;
8
- export { DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, };
15
+ export { DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, DEFAULT_DISCOVERY_SAMPLE_LIMIT, DEFAULT_DISCOVERY_DISTINCT_CAP, DEFAULT_DISCOVERY_MAX_PAIRS, DEFAULT_DISCOVERY_MIN_COVERAGE, DEFAULT_DISCOVERY_MIN_PAIR_SCORE, DEFAULT_DISCOVERY_CACHE_TTL_MS, DEFAULT_DISCOVERY_MAX_CANDIDATES, };
9
16
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,QAAA,MAAM,iBAAiB,mBAAmB,CAAC;AAC3C,QAAA,MAAM,yBAAyB,kBAAkB,CAAC;AAClD,QAAA,MAAM,wBAAwB,OAAO,CAAC;AACtC,QAAA,MAAM,iCAAiC,KAAK,CAAC;AAC7C,QAAA,MAAM,0BAA0B,KAAK,CAAC;AAStC,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAW1F;AAED,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,GAC3B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,QAAA,MAAM,iBAAiB,mBAAmB,CAAC;AAC3C,QAAA,MAAM,yBAAyB,kBAAkB,CAAC;AAClD,QAAA,MAAM,wBAAwB,OAAO,CAAC;AACtC,QAAA,MAAM,iCAAiC,KAAK,CAAC;AAC7C,QAAA,MAAM,0BAA0B,KAAK,CAAC;AACtC,QAAA,MAAM,8BAA8B,OAAO,CAAC;AAC5C,QAAA,MAAM,8BAA8B,MAAM,CAAC;AAC3C,QAAA,MAAM,2BAA2B,MAAM,CAAC;AACxC,QAAA,MAAM,8BAA8B,OAAO,CAAC;AAC5C,QAAA,MAAM,gCAAgC,OAAO,CAAC;AAC9C,QAAA,MAAM,8BAA8B,SAAU,CAAC;AAC/C,QAAA,MAAM,gCAAgC,KAAK,CAAC;AAgB5C,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAuC1F;AAED,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,GACjC,CAAC"}
package/dist/config.js CHANGED
@@ -3,6 +3,13 @@ const DEFAULT_HIPPOX_COLLECTION = 'context-links';
3
3
  const DEFAULT_SIMULATION_LIMIT = 1000;
4
4
  const DEFAULT_SIMULATION_EXAMPLES_LIMIT = 25;
5
5
  const DEFAULT_CONTEXT_LIST_LIMIT = 25;
6
+ const DEFAULT_DISCOVERY_SAMPLE_LIMIT = 1000;
7
+ const DEFAULT_DISCOVERY_DISTINCT_CAP = 500;
8
+ const DEFAULT_DISCOVERY_MAX_PAIRS = 200;
9
+ const DEFAULT_DISCOVERY_MIN_COVERAGE = 0.05;
10
+ const DEFAULT_DISCOVERY_MIN_PAIR_SCORE = 0.15;
11
+ const DEFAULT_DISCOVERY_CACHE_TTL_MS = 300_000;
12
+ const DEFAULT_DISCOVERY_MAX_CANDIDATES = 50;
6
13
  function parsePositiveInt(raw, fallback) {
7
14
  if (!raw?.trim())
8
15
  return fallback;
@@ -11,6 +18,14 @@ function parsePositiveInt(raw, fallback) {
11
18
  return fallback;
12
19
  return Math.floor(n);
13
20
  }
21
+ function parseNonNegativeNumber(raw, fallback) {
22
+ if (!raw?.trim())
23
+ return fallback;
24
+ const n = Number(raw);
25
+ if (!Number.isFinite(n) || n < 0)
26
+ return fallback;
27
+ return n;
28
+ }
14
29
  export function loadHippoxConfig(processEnv = process.env) {
15
30
  return {
16
31
  dbName: processEnv.MEMORIX_HIPPOX_DB?.trim() || DEFAULT_HIPPOX_DB,
@@ -18,7 +33,14 @@ export function loadHippoxConfig(processEnv = process.env) {
18
33
  simulationLimit: parsePositiveInt(processEnv.MEMORIX_HIPPOX_SIMULATION_LIMIT, DEFAULT_SIMULATION_LIMIT),
19
34
  simulationExamplesLimit: parsePositiveInt(processEnv.MEMORIX_HIPPOX_SIMULATION_EXAMPLES_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT),
20
35
  contextListLimit: parsePositiveInt(processEnv.MEMORIX_CONTEXT_LIST_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT),
36
+ discoverySampleLimit: parsePositiveInt(processEnv.MEMORIX_HIPPOX_DISCOVERY_SAMPLE_LIMIT, DEFAULT_DISCOVERY_SAMPLE_LIMIT),
37
+ discoveryDistinctCap: parsePositiveInt(processEnv.MEMORIX_HIPPOX_DISCOVERY_DISTINCT_CAP, DEFAULT_DISCOVERY_DISTINCT_CAP),
38
+ discoveryMaxPairs: parsePositiveInt(processEnv.MEMORIX_HIPPOX_DISCOVERY_MAX_PAIRS, DEFAULT_DISCOVERY_MAX_PAIRS),
39
+ discoveryMinCoverage: parseNonNegativeNumber(processEnv.MEMORIX_HIPPOX_DISCOVERY_MIN_COVERAGE, DEFAULT_DISCOVERY_MIN_COVERAGE),
40
+ discoveryMinPairScore: parseNonNegativeNumber(processEnv.MEMORIX_HIPPOX_DISCOVERY_MIN_PAIR_SCORE, DEFAULT_DISCOVERY_MIN_PAIR_SCORE),
41
+ discoveryCacheTtlMs: parsePositiveInt(processEnv.MEMORIX_HIPPOX_DISCOVERY_CACHE_TTL_MS, DEFAULT_DISCOVERY_CACHE_TTL_MS),
42
+ discoveryMaxCandidates: parsePositiveInt(processEnv.MEMORIX_HIPPOX_DISCOVERY_MAX_CANDIDATES, DEFAULT_DISCOVERY_MAX_CANDIDATES),
21
43
  };
22
44
  }
23
- export { DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, };
45
+ export { DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, DEFAULT_DISCOVERY_SAMPLE_LIMIT, DEFAULT_DISCOVERY_DISTINCT_CAP, DEFAULT_DISCOVERY_MAX_PAIRS, DEFAULT_DISCOVERY_MIN_COVERAGE, DEFAULT_DISCOVERY_MIN_PAIR_SCORE, DEFAULT_DISCOVERY_CACHE_TTL_MS, DEFAULT_DISCOVERY_MAX_CANDIDATES, };
24
46
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAClD,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAC7C,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAEtC,SAAS,gBAAgB,CAAC,GAAuB,EAAE,QAAgB;IACjE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAgC,OAAO,CAAC,GAAG;IAC1E,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,iBAAiB;QACjE,cAAc,EAAE,UAAU,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,yBAAyB;QACzF,eAAe,EAAE,gBAAgB,CAAC,UAAU,CAAC,+BAA+B,EAAE,wBAAwB,CAAC;QACvG,uBAAuB,EAAE,gBAAgB,CACvC,UAAU,CAAC,wCAAwC,EACnD,iCAAiC,CAClC;QACD,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;KACtG,CAAC;AACJ,CAAC;AAED,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,GAC3B,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAClD,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAC7C,MAAM,0BAA0B,GAAG,EAAE,CAAC;AACtC,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAC5C,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAC3C,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAC5C,MAAM,gCAAgC,GAAG,IAAI,CAAC;AAC9C,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAC/C,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAE5C,SAAS,gBAAgB,CAAC,GAAuB,EAAE,QAAgB;IACjE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAuB,EAAE,QAAgB;IACvE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAgC,OAAO,CAAC,GAAG;IAC1E,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,iBAAiB;QACjE,cAAc,EAAE,UAAU,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,yBAAyB;QACzF,eAAe,EAAE,gBAAgB,CAAC,UAAU,CAAC,+BAA+B,EAAE,wBAAwB,CAAC;QACvG,uBAAuB,EAAE,gBAAgB,CACvC,UAAU,CAAC,wCAAwC,EACnD,iCAAiC,CAClC;QACD,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;QACrG,oBAAoB,EAAE,gBAAgB,CACpC,UAAU,CAAC,qCAAqC,EAChD,8BAA8B,CAC/B;QACD,oBAAoB,EAAE,gBAAgB,CACpC,UAAU,CAAC,qCAAqC,EAChD,8BAA8B,CAC/B;QACD,iBAAiB,EAAE,gBAAgB,CACjC,UAAU,CAAC,kCAAkC,EAC7C,2BAA2B,CAC5B;QACD,oBAAoB,EAAE,sBAAsB,CAC1C,UAAU,CAAC,qCAAqC,EAChD,8BAA8B,CAC/B;QACD,qBAAqB,EAAE,sBAAsB,CAC3C,UAAU,CAAC,uCAAuC,EAClD,gCAAgC,CACjC;QACD,mBAAmB,EAAE,gBAAgB,CACnC,UAAU,CAAC,qCAAqC,EAChD,8BAA8B,CAC/B;QACD,sBAAsB,EAAE,gBAAgB,CACtC,UAAU,CAAC,uCAAuC,EAClD,gCAAgC,CACjC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,GACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-routes.d.ts","sourceRoot":"","sources":["../../src/http/register-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,aAAa,EAA2B,MAAM,eAAe,CAAC;AAGvE,MAAM,MAAM,cAAc,GAAG;IAE3B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,OAAO,CAAC;IACjE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,OAAO,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAWF,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,sBAAsB,EACjC,OAAO,GAAE,2BAAgC,GACxC,IAAI,CAkFN"}
1
+ {"version":3,"file":"register-routes.d.ts","sourceRoot":"","sources":["../../src/http/register-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,aAAa,EAA2B,MAAM,eAAe,CAAC;AAGvE,MAAM,MAAM,cAAc,GAAG;IAE3B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,OAAO,CAAC;IACjE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,OAAO,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAWF,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,sBAAsB,EACjC,OAAO,GAAE,2BAAgC,GACxC,IAAI,CA0IN"}
@@ -86,5 +86,50 @@ export function registerHippoxRoutes(app, retrieval, options = {}) {
86
86
  return sendError(reply, err, 400);
87
87
  }
88
88
  });
89
+ const handleJoinDiscovery = async (input, reply) => {
90
+ if (!input.sourceObjectType?.trim() || !input.targetObjectType?.trim()) {
91
+ return reply.code(400).send({ error: 'sourceObjectType and targetObjectType are required' });
92
+ }
93
+ try {
94
+ const service = await getService();
95
+ return await service.discoverJoinCandidates({
96
+ sourceObjectType: input.sourceObjectType.trim(),
97
+ targetObjectType: input.targetObjectType.trim(),
98
+ sourceContentType: input.sourceContentType?.trim() || undefined,
99
+ targetContentType: input.targetContentType?.trim() || undefined,
100
+ direction: input.direction,
101
+ sampleLimit: input.sampleLimit,
102
+ });
103
+ }
104
+ catch (err) {
105
+ return sendError(reply, err);
106
+ }
107
+ };
108
+ app.get(`${base}/join-discovery`, async (req, reply) => {
109
+ const q = req.query;
110
+ const rawSampleLimit = q.sampleLimit?.trim();
111
+ const parsedSampleLimit = rawSampleLimit ? Number(rawSampleLimit) : undefined;
112
+ return handleJoinDiscovery({
113
+ sourceObjectType: q.sourceObjectType ?? '',
114
+ targetObjectType: q.targetObjectType ?? '',
115
+ sourceContentType: q.sourceContentType,
116
+ targetContentType: q.targetContentType,
117
+ direction: q.direction,
118
+ sampleLimit: parsedSampleLimit !== undefined && Number.isFinite(parsedSampleLimit)
119
+ ? parsedSampleLimit
120
+ : undefined,
121
+ }, reply);
122
+ });
123
+ app.post(`${base}/join-discovery`, async (req, reply) => {
124
+ const body = (req.body ?? {});
125
+ return handleJoinDiscovery({
126
+ sourceObjectType: body.sourceObjectType ?? '',
127
+ targetObjectType: body.targetObjectType ?? '',
128
+ sourceContentType: body.sourceContentType,
129
+ targetContentType: body.targetContentType,
130
+ direction: body.direction,
131
+ sampleLimit: body.sampleLimit,
132
+ }, reply);
133
+ });
89
134
  }
90
135
  //# sourceMappingURL=register-routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-routes.js","sourceRoot":"","sources":["../../src/http/register-routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAcvE,SAAS,SAAS,CAAC,KAAmB,EAAE,GAAY,EAAE,cAAc,GAAG,GAAG;IACxE,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;IACpE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,GAAmB,EACnB,SAAiC,EACjC,UAAuC,EAAE;IAEzC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClE,IAAI,cAAc,GAAkC,OAAO,CAAC,OAAO;QACjE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAClC,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,UAAU,GAAG,KAAK,IAA4B,EAAE;QACpD,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QAC1E,MAAM,CAAC,GAAG,GAAG,CAAC,KAAsC,CAAC;QACrD,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAqB,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,OAAO,MAAM,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,iBAAiB,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QACpF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAqB,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,OAAO,MAAM,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,qBAAqB,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QACxF,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAwB,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,OAAO,MAAM,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,oBAAoB,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QACvF,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAwB,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,OAAO,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,kBAAkB,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QACrF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAG3B,CAAC;QACF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;gBACpC,OAAO,MAAM,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"register-routes.js","sourceRoot":"","sources":["../../src/http/register-routes.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- export type { LinkDirection, LinkStatus, JoinOperator, FilterOperator, OutputMode, RetrievalType, JoinMapping, FixedFilter, SortSpec, RecordRetrieval, ListRetrieval, AggregateRetrieval, ContextLinkRetrieval, ContextLink, ContextLinkInput, IndexRecommendation, SimulationWarning, PropertyMatchQuality, SimulationExampleMatch, SimulationExampleMiss, SimulationSummary, ResolveContextInput, ResolveContextResult, HippoxConfig, ObjectTypeCollectionBinding, } from './types.js';
2
- export { loadHippoxConfig, DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, } from './config.js';
3
- export { readPath, readRecordId, isDateLike, coerceDateValue, sortSpecsToMongo, extractDataPayload, formatOutputRecord, } from './paths.js';
1
+ export type { LinkDirection, LinkStatus, JoinOperator, FilterOperator, OutputMode, RetrievalType, JoinMapping, FixedFilter, SortSpec, RecordRetrieval, ListRetrieval, AggregateRetrieval, ContextLinkRetrieval, ContextLink, ContextLinkInput, IndexRecommendation, SimulationWarning, PropertyMatchQuality, SimulationExampleMatch, SimulationExampleMiss, SimulationSummary, ResolveContextInput, ResolveContextResult, HippoxConfig, ObjectTypeCollectionBinding, InferredFieldType, JoinDiscoveryField, JoinDiscoveryCandidateSignals, JoinDiscoveryCandidate, JoinDiscoveryRecommendedJoin, JoinDiscoveryWarning, JoinDiscoveryResult, JoinDiscoveryInput, } from './types.js';
2
+ export { loadHippoxConfig, DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, DEFAULT_DISCOVERY_SAMPLE_LIMIT, DEFAULT_DISCOVERY_DISTINCT_CAP, DEFAULT_DISCOVERY_MAX_PAIRS, DEFAULT_DISCOVERY_MIN_COVERAGE, DEFAULT_DISCOVERY_MIN_PAIR_SCORE, DEFAULT_DISCOVERY_CACHE_TTL_MS, DEFAULT_DISCOVERY_MAX_CANDIDATES, } from './config.js';
3
+ export { readPath, readRecordId, readObjectType, isDateLike, coerceDateValue, sortSpecsToMongo, extractDataPayload, formatOutputRecord, } from './paths.js';
4
4
  export { compileFixedFilter, compileFixedFilters, compileJoinClause, buildTargetQueryFromLink, buildFixedOnlyQuery, } from './filters.js';
5
5
  export { validateContextLinkInput, defaultRecordRetrieval, defaultListRetrieval, contextKeyForLink, detectContextKeyCollisions, HippoxValidationError, } from './validation.js';
6
6
  export { resolveObjectTypeCollection, readObjectTypeDocuments, countObjectTypeDocuments, loadSourceRecord, } from './collection-resolver.js';
7
7
  export { HippoxStore, createHippoxStore } from './store.js';
8
8
  export { simulateContextLink, type SimulateContextLinkOptions } from './simulate.js';
9
+ export { discoverJoinCandidates, clearJoinDiscoveryCache, computeValueHitRate, computeNameSimilarity, computePairScore, sourceNameHintScore, targetNameHintScore, isScalarJoinable, normalizeScalarValue, classifyValue, type DiscoverJoinCandidatesOptions, } from './join-discovery.js';
9
10
  export { resolveContext, type ResolveContextOptions } from './resolve.js';
10
11
  export { resolveMixedContext, hippoxLinkFromRelationCandidate, type ResolveMixedContextInput, type ResolveMixedContextOptions, } from './legacy-bridge.js';
11
12
  export { recommendIndexesForLink } from './index-recommendations.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAChC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,KAAK,6BAA6B,GACnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAChC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
- export { loadHippoxConfig, DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, } from './config.js';
2
- export { readPath, readRecordId, isDateLike, coerceDateValue, sortSpecsToMongo, extractDataPayload, formatOutputRecord, } from './paths.js';
1
+ export { loadHippoxConfig, DEFAULT_HIPPOX_DB, DEFAULT_HIPPOX_COLLECTION, DEFAULT_SIMULATION_LIMIT, DEFAULT_SIMULATION_EXAMPLES_LIMIT, DEFAULT_CONTEXT_LIST_LIMIT, DEFAULT_DISCOVERY_SAMPLE_LIMIT, DEFAULT_DISCOVERY_DISTINCT_CAP, DEFAULT_DISCOVERY_MAX_PAIRS, DEFAULT_DISCOVERY_MIN_COVERAGE, DEFAULT_DISCOVERY_MIN_PAIR_SCORE, DEFAULT_DISCOVERY_CACHE_TTL_MS, DEFAULT_DISCOVERY_MAX_CANDIDATES, } from './config.js';
2
+ export { readPath, readRecordId, readObjectType, isDateLike, coerceDateValue, sortSpecsToMongo, extractDataPayload, formatOutputRecord, } from './paths.js';
3
3
  export { compileFixedFilter, compileFixedFilters, compileJoinClause, buildTargetQueryFromLink, buildFixedOnlyQuery, } from './filters.js';
4
4
  export { validateContextLinkInput, defaultRecordRetrieval, defaultListRetrieval, contextKeyForLink, detectContextKeyCollisions, HippoxValidationError, } from './validation.js';
5
5
  export { resolveObjectTypeCollection, readObjectTypeDocuments, countObjectTypeDocuments, loadSourceRecord, } from './collection-resolver.js';
6
6
  export { HippoxStore, createHippoxStore } from './store.js';
7
7
  export { simulateContextLink } from './simulate.js';
8
+ export { discoverJoinCandidates, clearJoinDiscoveryCache, computeValueHitRate, computeNameSimilarity, computePairScore, sourceNameHintScore, targetNameHintScore, isScalarJoinable, normalizeScalarValue, classifyValue, } from './join-discovery.js';
8
9
  export { resolveContext } from './resolve.js';
9
10
  export { resolveMixedContext, hippoxLinkFromRelationCandidate, } from './legacy-bridge.js';
10
11
  export { recommendIndexesForLink } from './index-recommendations.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAmC,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,+BAA+B,GAGhC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAA6B,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAyD,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoCA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAmC,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,+BAA+B,GAGhC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAA6B,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAyD,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { MemorixRetrievalClient } from '@x12i/memorix-retrieval';
2
+ import type { HippoxStore } from './store.js';
3
+ import type { InferredFieldType, JoinDiscoveryInput, JoinDiscoveryResult } from './types.js';
4
+ export type DiscoverJoinCandidatesOptions = {
5
+ retrieval: MemorixRetrievalClient;
6
+ store?: HippoxStore;
7
+ input: JoinDiscoveryInput;
8
+ processEnv?: NodeJS.ProcessEnv;
9
+ };
10
+ type PairProbe = {
11
+ sourcePath: string;
12
+ targetPath: string;
13
+ valueHitRate: number;
14
+ sourceCoverage: number;
15
+ targetCoverage: number;
16
+ targetUniqueness: number;
17
+ nameSimilarity: number;
18
+ schemaRelationBoost: number;
19
+ approvedLinkBoost: number;
20
+ sourceType: InferredFieldType;
21
+ targetType: InferredFieldType;
22
+ };
23
+ export declare function clearJoinDiscoveryCache(): void;
24
+ export declare function discoverJoinCandidates(options: DiscoverJoinCandidatesOptions): Promise<JoinDiscoveryResult>;
25
+ export declare function isScalarJoinable(value: unknown): boolean;
26
+ export declare function normalizeScalarValue(value: unknown): string | null;
27
+ export declare function classifyValue(value: unknown): InferredFieldType;
28
+ export declare function computeValueHitRate(sourceValues: string[], targetValues: Set<string>): number;
29
+ export declare function computeNameSimilarity(sourcePath: string, targetPath: string, targetObjectType: string): number;
30
+ export declare function sourceNameHintScore(path: string, targetObjectType: string): number;
31
+ export declare function targetNameHintScore(path: string, sourceObjectType: string): number;
32
+ export declare function computePairScore(probe: PairProbe): number;
33
+ export {};
34
+ //# sourceMappingURL=join-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join-discovery.d.ts","sourceRoot":"","sources":["../src/join-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAUtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EACV,iBAAiB,EAGjB,kBAAkB,EAClB,mBAAmB,EAIpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,sBAAsB,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,CAAC;AAyBF,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAaF,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,mBAAmB,CAAC,CA0K9B;AAkLD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKxD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CASlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAS/D;AAqKD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAO7F;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAeR;AAYD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAUlF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAQlF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAiBzD"}