@visual-layer/grounding 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,OAAO,EAEZ,KAAK,SAAS,EAMf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAKD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,cAAmB,GACxB,aAAa,CAqEf;AAwCD,iBAAS,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAI1C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAI/C;AAMD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,OAAO,EAEZ,KAAK,SAAS,EAMf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAKD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,cAAmB,GACxB,aAAa,CAwEf;AAwCD,iBAAS,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAI1C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAI/C;AAMD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/compare.js CHANGED
@@ -21,6 +21,9 @@ export function compareGraphs(expected, actual, opts = {}) {
21
21
  // applying a factor in the wrong direction).
22
22
  if (opts.transform && expSpace && actSpace) {
23
23
  const t = opts.transform;
24
+ if (!Number.isFinite(t.factor) || t.factor <= 0) {
25
+ throw transformMissing(`transform factor must be positive and finite, got ${t.factor}`);
26
+ }
24
27
  if (t.from !== actSpace || t.to !== expSpace) {
25
28
  throw transformMissing(`transform ${t.from}->${t.to} does not match actual(${actSpace})->expected(${expSpace})`);
26
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"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"}
package/dist/gate.d.ts ADDED
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Grounding gate + consensus — the decision layer that turns a ranked
3
+ * candidate list into a safe-to-act verdict.
4
+ *
5
+ * Gate = structure-first confidence + top-1/top-2 gap + warning disqualifiers.
6
+ * Pure deterministic, no model calls. The vision second-opinion is supplied
7
+ * out-of-band by the consuming agent (Claude/Codex have native vision) via
8
+ * confirm_grounding, or by a plugged VisionVerifier; this module only emits the
9
+ * "look now" signal (status === 'needs_visual_confirm').
10
+ *
11
+ * Why a gate at all: the scorer is a heuristic blend (text/role/bbox/source).
12
+ * Heuristics rank well but cannot prove the top candidate is what the user
13
+ * meant. The gate refuses to act when structure is ambiguous, and demands a
14
+ * vision second-opinion — so an action only fires when structure is confident
15
+ * OR vision confirms it. That is the route to ~100% accuracy on executed
16
+ * actions: never act on a guess.
17
+ */
18
+ import { type ScreenGraph, type Warning } from '@visual-layer/core';
19
+ import type { GroundResult, GroundCandidate } from './score.js';
20
+ export type GroundingStatus = 'accepted' | 'needs_visual_confirm' | 'rejected';
21
+ export interface GateOptions {
22
+ /** Min top-1 confidence to accept without visual confirm. Default 0.85. */
23
+ acceptConfidence?: number;
24
+ /** Min gap (top1 - top2 confidence) to accept. Default 0.2 — guards ties. */
25
+ minGap?: number;
26
+ /** Min top-1 confidence below which the verdict is rejected outright. Default 0.3. */
27
+ rejectConfidence?: number;
28
+ /** Treat duplicate_label among instruction matches as disqualifying. Default true. */
29
+ duplicateLabelBlocks?: boolean;
30
+ }
31
+ export interface GroundingVerdict {
32
+ status: GroundingStatus;
33
+ reason: string;
34
+ top?: GroundCandidate;
35
+ runnerUp?: GroundCandidate;
36
+ gap: number;
37
+ disqualifyingWarnings: Warning[];
38
+ }
39
+ export declare function gateGrounding(result: GroundResult, graph: ScreenGraph, opts?: GateOptions): GroundingVerdict;
40
+ export interface VisualVerdict {
41
+ /** Did vision confirm the proposed target is correct? */
42
+ confirmed: boolean;
43
+ /** The interactable id vision points at. Overrides gate top when set. */
44
+ interactableId?: string;
45
+ confidence?: number;
46
+ reason?: string;
47
+ }
48
+ export type ConsensusStatus = 'act' | 'blocked' | 'needs_visual_confirm';
49
+ export interface ConsensusResult {
50
+ status: ConsensusStatus;
51
+ interactableId?: string;
52
+ reason: string;
53
+ }
54
+ /**
55
+ * Combine a gate verdict with an optional vision second-opinion into the final
56
+ * action decision. accepted → act. rejected → blocked. needs_visual_confirm →
57
+ * act only if vision confirms (and points at a concrete target), else blocked.
58
+ */
59
+ export declare function buildConsensus(verdict: GroundingVerdict, visual: VisualVerdict | null): ConsensusResult;
60
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,sBAAsB,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB,EAAE,OAAO,EAAE,CAAC;CAClC;AAoBD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,WAAgB,GACrB,gBAAgB,CAkElB;AAID,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,GAAG,sBAAsB,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,aAAa,GAAG,IAAI,GAC3B,eAAe,CAsBjB"}
package/dist/gate.js ADDED
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Grounding gate + consensus — the decision layer that turns a ranked
3
+ * candidate list into a safe-to-act verdict.
4
+ *
5
+ * Gate = structure-first confidence + top-1/top-2 gap + warning disqualifiers.
6
+ * Pure deterministic, no model calls. The vision second-opinion is supplied
7
+ * out-of-band by the consuming agent (Claude/Codex have native vision) via
8
+ * confirm_grounding, or by a plugged VisionVerifier; this module only emits the
9
+ * "look now" signal (status === 'needs_visual_confirm').
10
+ *
11
+ * Why a gate at all: the scorer is a heuristic blend (text/role/bbox/source).
12
+ * Heuristics rank well but cannot prove the top candidate is what the user
13
+ * meant. The gate refuses to act when structure is ambiguous, and demands a
14
+ * vision second-opinion — so an action only fires when structure is confident
15
+ * OR vision confirms it. That is the route to ~100% accuracy on executed
16
+ * actions: never act on a guess.
17
+ */
18
+ import {} from '@visual-layer/core';
19
+ const DEFAULTS = {
20
+ acceptConfidence: 0.85,
21
+ minGap: 0.2,
22
+ rejectConfidence: 0.3,
23
+ duplicateLabelBlocks: true,
24
+ };
25
+ /**
26
+ * Structural warning codes (from the captured graph) that make the whole graph
27
+ * unsafe to act on: incomplete bbox enrichment or no interactables at all.
28
+ */
29
+ const STRUCTURAL_DISQUALIFY = new Set(['interactive_nodes_missing_bbox', 'no_interactables']);
30
+ /**
31
+ * Instruction-scoped warning codes (from the grounding result) that flag
32
+ * ambiguity for THIS instruction specifically.
33
+ */
34
+ const AMBIGUITY_DISQUALIFY = new Set(['duplicate_label', 'low_confidence']);
35
+ export function gateGrounding(result, graph, opts = {}) {
36
+ const o = { ...DEFAULTS, ...opts };
37
+ const candidates = result.candidates;
38
+ if (candidates.length === 0) {
39
+ return {
40
+ status: 'rejected',
41
+ reason: 'no candidates matched the instruction',
42
+ gap: 0,
43
+ disqualifyingWarnings: [],
44
+ };
45
+ }
46
+ const top = candidates[0];
47
+ const runnerUp = candidates[1];
48
+ const gap = runnerUp ? round3(top.confidence - runnerUp.confidence) : 1;
49
+ // Disqualifiers split by scope:
50
+ // - structural (graph.warnings): always disqualify — the data is incomplete.
51
+ // - ambiguity (result.warnings): only disqualify when duplicateLabelBlocks.
52
+ const structural = graph.warnings.filter((w) => STRUCTURAL_DISQUALIFY.has(w.code));
53
+ const ambiguity = result.warnings.filter((w) => {
54
+ if (!AMBIGUITY_DISQUALIFY.has(w.code))
55
+ return false;
56
+ if (w.code === 'duplicate_label')
57
+ return o.duplicateLabelBlocks;
58
+ return true;
59
+ });
60
+ const disqualifying = [...structural, ...ambiguity];
61
+ if (top.confidence < o.rejectConfidence) {
62
+ return {
63
+ status: 'rejected',
64
+ reason: `top confidence ${top.confidence.toFixed(2)} < reject floor ${o.rejectConfidence}`,
65
+ top,
66
+ runnerUp,
67
+ gap,
68
+ disqualifyingWarnings: disqualifying,
69
+ };
70
+ }
71
+ const confidenceOk = top.confidence >= o.acceptConfidence;
72
+ const gapOk = gap >= o.minGap;
73
+ const warningsOk = disqualifying.length === 0;
74
+ if (confidenceOk && gapOk && warningsOk) {
75
+ return {
76
+ status: 'accepted',
77
+ reason: 'structure confident and unambiguous',
78
+ top,
79
+ runnerUp,
80
+ gap,
81
+ disqualifyingWarnings: disqualifying,
82
+ };
83
+ }
84
+ const reasons = [];
85
+ if (!confidenceOk)
86
+ reasons.push(`confidence ${top.confidence.toFixed(2)} < ${o.acceptConfidence}`);
87
+ if (!gapOk)
88
+ reasons.push(`gap ${gap.toFixed(2)} < ${o.minGap} (tie)`);
89
+ if (!warningsOk)
90
+ reasons.push(`${disqualifying.length} disqualifier(s): ${disqualifying.map((w) => w.code).join(', ')}`);
91
+ return {
92
+ status: 'needs_visual_confirm',
93
+ reason: reasons.join('; '),
94
+ top,
95
+ runnerUp,
96
+ gap,
97
+ disqualifyingWarnings: disqualifying,
98
+ };
99
+ }
100
+ /**
101
+ * Combine a gate verdict with an optional vision second-opinion into the final
102
+ * action decision. accepted → act. rejected → blocked. needs_visual_confirm →
103
+ * act only if vision confirms (and points at a concrete target), else blocked.
104
+ */
105
+ export function buildConsensus(verdict, visual) {
106
+ if (verdict.status === 'accepted') {
107
+ return { status: 'act', interactableId: verdict.top?.interactableId, reason: 'structure accepted' };
108
+ }
109
+ if (verdict.status === 'rejected') {
110
+ return { status: 'blocked', reason: verdict.reason };
111
+ }
112
+ // needs_visual_confirm — vision is mandatory before acting.
113
+ if (!visual) {
114
+ return { status: 'needs_visual_confirm', reason: verdict.reason };
115
+ }
116
+ if (!visual.confirmed) {
117
+ return { status: 'blocked', reason: `vision rejected: ${visual.reason ?? 'no reason given'}` };
118
+ }
119
+ // Gate was ambiguous, so vision MUST name the target — do not silently fall
120
+ // back to the (ambiguous) structural top. The agent always has the candidate
121
+ // list with bboxes, so requiring an explicit id is safe and prevents acting
122
+ // on the very tie the gate flagged.
123
+ if (!visual.interactableId) {
124
+ return { status: 'blocked', reason: 'vision confirmed but named no target id' };
125
+ }
126
+ return { status: 'act', interactableId: visual.interactableId, reason: 'vision confirmed structure' };
127
+ }
128
+ function round3(n) {
129
+ return Math.round(n * 1000) / 1000;
130
+ }
131
+ //# sourceMappingURL=gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,5 +4,6 @@
4
4
  export * from './score.js';
5
5
  export * from './compare.js';
6
6
  export * from './eval.js';
7
- export declare const GROUNDING_VERSION = "0.1.0";
7
+ export * from './gate.js';
8
+ export declare const GROUNDING_VERSION = "1.1.1";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAE1B,eAAO,MAAM,iBAAiB,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAE1B,eAAO,MAAM,iBAAiB,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,6 @@
4
4
  export * from './score.js';
5
5
  export * from './compare.js';
6
6
  export * from './eval.js';
7
- export const GROUNDING_VERSION = '0.1.0';
7
+ export * from './gate.js';
8
+ export const GROUNDING_VERSION = '1.1.1';
8
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAE1B,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAE1B,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC"}
package/dist/score.d.ts CHANGED
@@ -19,6 +19,21 @@ export interface GroundOptions {
19
19
  minScore?: number;
20
20
  /** Weights for the composite blend. Need not sum to 1. */
21
21
  weights?: Partial<Record<keyof ScoreBreakdown, number>>;
22
+ /**
23
+ * Additive confidence bonus applied when a candidate is the SOLE token match
24
+ * for the instruction (no sibling shares a content token). Breaks ties where
25
+ * one element matches and the rest don't; identical-label duplicates stay tied
26
+ * (both match → neither unique → bonus 0 → gate escalates, as it should).
27
+ * Default 0.2.
28
+ */
29
+ uniqueBonus?: number;
30
+ /**
31
+ * Symmetric boost/penalty for ordinal/spatial cues ("top/bottom/left/right/
32
+ * first/last/2nd <label>"). When the cue resolves an ambiguous token-match
33
+ * set, the picked candidate gets +spatialBonus and its token-matcher siblings
34
+ * get -spatialBonus — opens the gate gap. Default 0.15.
35
+ */
36
+ spatialBonus?: number;
22
37
  }
23
38
  export interface GroundResult {
24
39
  candidates: GroundCandidate[];
@@ -1 +1 @@
1
- {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,cAAc,EAMpB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAaD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CAqEjH"}
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,cAAc,EAQpB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAaD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CA+HjH"}
package/dist/score.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * instruction using structure-first signals: text similarity, role match, bbox
4
4
  * visibility, source confidence. No model calls (§5 grounding responsibilities).
5
5
  */
6
- import { compareText, contains as bboxContains, hasArea, blendConfidence, warn, } from '@visual-layer/core';
6
+ import { compareText, tokenizeText, contains as bboxContains, hasArea, blendConfidence, clampConfidence, warn, } from '@visual-layer/core';
7
7
  const DEFAULT_WEIGHTS = { text: 0.6, role: 0.15, bbox: 0.1, source: 0.15 };
8
8
  const ROLE_HINTS = [
9
9
  { re: /\b(click|press|tap|hit)\b/i, roles: ['button', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'tab', 'treeitem'] },
@@ -25,33 +25,86 @@ export function groundInstruction(graph, instruction, opts = {}) {
25
25
  };
26
26
  }
27
27
  const hintedRoles = roleHintsFor(instruction);
28
+ const uniqueBonus = opts.uniqueBonus ?? 0.2;
29
+ const instrContent = contentTokens(instruction);
30
+ // Token-match set: candidates whose label shares ≥1 content token with the
31
+ // instruction (verbs/articles excluded so "click Save" matches on "save", not
32
+ // "click"). When exactly one candidate matches, it is the unique target.
33
+ const matchedIds = new Set();
34
+ for (const i of graph.interactables) {
35
+ const labelContent = contentTokens(labelFor(i));
36
+ for (const t of labelContent) {
37
+ if (instrContent.has(t)) {
38
+ matchedIds.add(i.id);
39
+ break;
40
+ }
41
+ }
42
+ }
43
+ const isUniqueTokenMatch = matchedIds.size === 1;
44
+ // Ordinal/spatial cue — resolves identical-label ties that uniqueness cannot
45
+ // (e.g. two "Save changes" buttons + "click the top Save"). Only engaged when
46
+ // the token-match set is ambiguous (≥2 matchers); a unique match is already
47
+ // resolved by the uniqueness bonus.
48
+ const spatialBonus = opts.spatialBonus ?? 0.15;
49
+ const cue = parseSpatialCue(instruction);
50
+ const tokenMatchers = graph.interactables.filter((i) => matchedIds.has(i.id));
51
+ const spatialPickId = cue && tokenMatchers.length > 1 ? pickSpatialId(tokenMatchers, cue) : null;
28
52
  const scored = graph.interactables.map((i) => {
29
53
  const label = labelFor(i);
30
54
  const text = compareText(instruction, label);
31
55
  const role = roleScore(i, hintedRoles);
32
56
  const bbox = bboxScore(i, graph.viewport);
33
57
  const source = sourceScore(i);
34
- const confidence = blendConfidence([
58
+ const unique = isUniqueTokenMatch && matchedIds.has(i.id) ? 1 : 0;
59
+ let spatialDelta = 0;
60
+ let spatial = 0;
61
+ if (spatialPickId) {
62
+ if (i.id === spatialPickId) {
63
+ spatialDelta = spatialBonus;
64
+ spatial = 1;
65
+ }
66
+ else if (matchedIds.has(i.id)) {
67
+ // suppress the cue-losing siblings so the pick's lead clears minGap
68
+ spatialDelta = -spatialBonus;
69
+ }
70
+ }
71
+ const confidence = clampConfidence(blendConfidence([
35
72
  { value: text, weight: weights.text ?? 0 },
36
73
  { value: role, weight: weights.role ?? 0 },
37
74
  { value: bbox, weight: weights.bbox ?? 0 },
38
75
  { value: source, weight: weights.source ?? 0 },
39
- ]);
40
- return { inter: i, confidence, breakdown: { text, role, bbox, source } };
76
+ ]) +
77
+ unique * uniqueBonus +
78
+ spatialDelta);
79
+ return {
80
+ inter: i,
81
+ confidence,
82
+ unique,
83
+ spatial,
84
+ breakdown: { text, role, bbox, source, unique, spatial },
85
+ };
41
86
  });
42
87
  scored.sort((a, b) => b.confidence - a.confidence);
43
- // duplicate-label detection among high scorers
88
+ // duplicate-label detection scoped to token matches. Two unrelated
89
+ // elements that merely share a label (e.g. two "Save changes" buttons on the
90
+ // page) only matter when the instruction actually targets that label; a
91
+ // duplicate that the instruction does not reference must not block a unique
92
+ // match elsewhere (e.g. "click Cancel" with two Saves present). A spatial cue
93
+ // that resolves the tie ("click the top Save") suppresses the warning — the
94
+ // ambiguity is no longer unresolved.
44
95
  const labelCounts = new Map();
45
96
  for (const s of scored) {
46
- if (s.confidence >= minScore) {
97
+ if (matchedIds.has(s.inter.id)) {
47
98
  const l = labelFor(s.inter);
48
99
  if (l)
49
100
  labelCounts.set(l, (labelCounts.get(l) ?? 0) + 1);
50
101
  }
51
102
  }
52
- for (const [label, count] of labelCounts) {
53
- if (count > 1)
54
- warnings.push(warn('duplicate_label', `"${label}" matched ${count}x`, undefined));
103
+ if (!spatialPickId) {
104
+ for (const [label, count] of labelCounts) {
105
+ if (count > 1)
106
+ warnings.push(warn('duplicate_label', `"${label}" matched ${count}x`, undefined));
107
+ }
55
108
  }
56
109
  const candidates = scored
57
110
  .filter((s) => s.confidence >= minScore)
@@ -67,6 +120,8 @@ export function groundInstruction(graph, instruction, opts = {}) {
67
120
  role: round3(s.breakdown.role),
68
121
  bbox: round3(s.breakdown.bbox),
69
122
  source: round3(s.breakdown.source),
123
+ unique: round3(s.unique),
124
+ spatial: round3(s.spatial),
70
125
  },
71
126
  sources: s.inter.source,
72
127
  }));
@@ -111,6 +166,97 @@ function sourceScore(i) {
111
166
  return 0.9;
112
167
  return 0.8;
113
168
  }
169
+ /* ---------- uniqueness signal ---------- */
170
+ // Instruction tokens that carry no target meaning (verbs/articles). Excluded
171
+ // from the uniqueness match so a verb like "click" cannot make a verb-named
172
+ // element ("Click counter") look like a target match.
173
+ const STOPWORD_TOKENS = new Set([
174
+ 'click', 'press', 'tap', 'hit', 'type', 'enter', 'input', 'fill', 'write',
175
+ 'open', 'follow', 'visit', 'go', 'select', 'choose', 'pick', 'check', 'uncheck', 'toggle',
176
+ 'the', 'a', 'an', 'and', 'or', 'to', 'on', 'in', 'at', 'of', 'for', 'with',
177
+ 'it', 'this', 'that', 'please', 'me',
178
+ ]);
179
+ function contentTokens(text) {
180
+ const out = new Set();
181
+ for (const t of tokenizeText(text)) {
182
+ if (!STOPWORD_TOKENS.has(t))
183
+ out.add(t);
184
+ }
185
+ return out;
186
+ }
187
+ /**
188
+ * Parse an ordinal/spatial cue from a natural-language instruction. Returns the
189
+ * first cue found (an instruction rarely carries two). Lowercased, word-boundary
190
+ * matched so "bottom" does not fire inside "bottomless".
191
+ */
192
+ function parseSpatialCue(instruction) {
193
+ const t = ` ${instruction.toLowerCase()} `;
194
+ const nth = t.match(/\b(\d+)(?:st|nd|rd|th)\b/);
195
+ if (nth)
196
+ return { type: 'nth', n: parseInt(nth[1], 10) };
197
+ if (/\b(first|1st)\b/.test(t))
198
+ return { type: 'first' };
199
+ if (/\b(second|2nd)\b/.test(t))
200
+ return { type: 'nth', n: 2 };
201
+ if (/\b(third|3rd)\b/.test(t))
202
+ return { type: 'nth', n: 3 };
203
+ if (/\b(last|final)\b/.test(t))
204
+ return { type: 'last' };
205
+ if (/\b(top|topmost|upper)/.test(t))
206
+ return { type: 'top' };
207
+ if (/\b(bottom|bottommost|lower)/.test(t))
208
+ return { type: 'bottom' };
209
+ if (/\b(left|leftmost)/.test(t))
210
+ return { type: 'left' };
211
+ if (/\b(right|rightmost)/.test(t))
212
+ return { type: 'right' };
213
+ return null;
214
+ }
215
+ /**
216
+ * Pick the candidate id matching the spatial cue among the given matchers.
217
+ * Reading order = sort by top edge (y), then left edge (x). Returns null when
218
+ * an ordinal index exceeds the available count (cue unresolvable → stays tied).
219
+ */
220
+ function pickSpatialId(matchers, cue) {
221
+ switch (cue.type) {
222
+ case 'top':
223
+ return extremaId(matchers, (i) => i.bbox[1], true);
224
+ case 'bottom':
225
+ return extremaId(matchers, (i) => i.bbox[1], false);
226
+ case 'left':
227
+ return extremaId(matchers, (i) => i.bbox[0], true);
228
+ case 'right':
229
+ return extremaId(matchers, (i) => i.bbox[0], false);
230
+ case 'first':
231
+ return readingOrder(matchers)[0]?.id ?? null;
232
+ case 'last': {
233
+ const order = readingOrder(matchers);
234
+ return order[order.length - 1]?.id ?? null;
235
+ }
236
+ case 'nth': {
237
+ const order = readingOrder(matchers);
238
+ return cue.n >= 1 && cue.n <= order.length ? order[cue.n - 1].id : null;
239
+ }
240
+ }
241
+ }
242
+ /** id of the element minimizing (min=true) or maximizing (min=false) `score`. */
243
+ function extremaId(items, score, min) {
244
+ if (items.length === 0)
245
+ return null;
246
+ let pick = items[0];
247
+ let best = score(pick);
248
+ for (const i of items.slice(1)) {
249
+ const v = score(i);
250
+ if ((min && v < best) || (!min && v > best)) {
251
+ best = v;
252
+ pick = i;
253
+ }
254
+ }
255
+ return pick.id;
256
+ }
257
+ function readingOrder(items) {
258
+ return [...items].sort((a, b) => a.bbox[1] - b.bbox[1] || a.bbox[0] - b.bbox[0]);
259
+ }
114
260
  function round3(n) {
115
261
  return Math.round(n * 1000) / 1000;
116
262
  }
package/dist/score.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"score.js","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"score.js","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAML,WAAW,EACX,YAAY,EACZ,QAAQ,IAAI,YAAY,EACxB,OAAO,EACP,eAAe,EACf,eAAe,EACf,IAAI,GACL,MAAM,oBAAoB,CAAC;AAwC5B,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAW,CAAC;AAEpF,MAAM,UAAU,GAAmD;IACjE,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE;IAC3H,EAAE,EAAE,EAAE,gCAAgC,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;IACzD,EAAE,EAAE,EAAE,2DAA2D,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE;IAClH,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;IACxD,EAAE,EAAE,EAAE,oCAAoC,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;IACtF,EAAE,EAAE,EAAE,sCAAsC,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EAAE;CAClG,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAkB,EAAE,WAAmB,EAAE,OAAsB,EAAE;IACjG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;IACtC,MAAM,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IAChE,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,4BAA4B,EAAE,SAAS,CAAC,CAAC;SAC3E,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;IAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAChD,2EAA2E;IAC3E,8EAA8E;IAC9E,yEAAyE;IACzE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC;IAEjD,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,oCAAoC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IAC/C,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjG,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,kBAAkB,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,EAAE,CAAC;gBAC3B,YAAY,GAAG,YAAY,CAAC;gBAC5B,OAAO,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChC,oEAAoE;gBACpE,YAAY,GAAG,CAAC,YAAY,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,eAAe,CAChC,eAAe,CAAC;YACd,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE;YAC1C,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE;YAC1C,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE;YAC1C,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;SAC/C,CAAC;YACA,MAAM,GAAG,WAAW;YACpB,YAAY,CACf,CAAC;QACF,OAAO;YACL,KAAK,EAAE,CAAC;YACR,UAAU;YACV,MAAM;YACN,OAAO;YACP,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAA2B;SAClF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAEnD,qEAAqE;IACrE,6EAA6E;IAC7E,wEAAwE;IACxE,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,qCAAqC;IACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC;gBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;YACzC,IAAI,KAAK,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,KAAK,aAAa,KAAK,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAsB,MAAM;SACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC;SACvC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;QAC1B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;QAClB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;QAClB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;QAClB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;QAChC,cAAc,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;SAC3B;QACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;KACxB,CAAC,CAAC,CAAC;IAEN,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,4BAA4B,WAAW,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9F,CAAC;SAAM,IAAI,UAAU,CAAC,CAAC,CAAE,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,4BAA4B,UAAU,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAe;IAC/B,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB;IACvC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,CAAe,EAAE,MAAuB;IACzD,IAAI,CAAC,CAAC,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC;IACxB,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC,CAAC,wCAAwC;IACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,CAAe,EAAE,QAAiC;IACnE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,GAAG,CAAC,CAAC,8BAA8B;IACzD,MAAM,MAAM,GAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,CAAe;IAClC,oCAAoC;IACpC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACpE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6CAA6C;AAE7C,6EAA6E;AAC7E,4EAA4E;AAC5E,sDAAsD;AACtD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACzE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IACzF,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM;IAC1E,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI;CACrC,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAaD;;;;GAIG;AACH,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,IAAI,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC1D,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACxD,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7D,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5D,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxD,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5D,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrE,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzD,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAiC,EAAE,GAAe;IACvE,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtD,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,KAAK,OAAO;YACV,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtD,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;QAC/C,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;QAC7C,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAAC,KAA8B,EAAE,KAAkC,EAAE,GAAY;IACjG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACrB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,CAAC,CAAC;YACT,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,KAA8B;IAClD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACrC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visual-layer/grounding",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "description": "Deterministic grounding scorer, compare_graphs, eval_grounding",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -24,7 +24,7 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@visual-layer/core": "1.0.1"
27
+ "@visual-layer/core": "1.1.0"
28
28
  },
29
29
  "scripts": {
30
30
  "build": "tsc -b",