sentienceapi 0.92.2 → 0.93.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 (43) hide show
  1. package/README.md +152 -54
  2. package/dist/actions.d.ts +33 -1
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +81 -3
  5. package/dist/actions.js.map +1 -1
  6. package/dist/agent-runtime.d.ts +190 -0
  7. package/dist/agent-runtime.d.ts.map +1 -0
  8. package/dist/agent-runtime.js +257 -0
  9. package/dist/agent-runtime.js.map +1 -0
  10. package/dist/canonicalization.d.ts +126 -0
  11. package/dist/canonicalization.d.ts.map +1 -0
  12. package/dist/canonicalization.js +161 -0
  13. package/dist/canonicalization.js.map +1 -0
  14. package/dist/index.d.ts +4 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +19 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/ordinal.d.ts +90 -0
  19. package/dist/ordinal.d.ts.map +1 -0
  20. package/dist/ordinal.js +249 -0
  21. package/dist/ordinal.js.map +1 -0
  22. package/dist/snapshot-diff.d.ts +8 -15
  23. package/dist/snapshot-diff.d.ts.map +1 -1
  24. package/dist/snapshot-diff.js +38 -43
  25. package/dist/snapshot-diff.js.map +1 -1
  26. package/dist/snapshot.js +2 -0
  27. package/dist/snapshot.js.map +1 -1
  28. package/dist/tracing/indexer.d.ts.map +1 -1
  29. package/dist/tracing/indexer.js +3 -46
  30. package/dist/tracing/indexer.js.map +1 -1
  31. package/dist/tracing/types.d.ts +19 -0
  32. package/dist/tracing/types.d.ts.map +1 -1
  33. package/dist/types.d.ts +8 -0
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/verification.d.ts +177 -0
  36. package/dist/verification.d.ts.map +1 -0
  37. package/dist/verification.js +315 -0
  38. package/dist/verification.js.map +1 -0
  39. package/package.json +1 -1
  40. package/src/extension/injected_api.js +9 -2
  41. package/src/extension/manifest.json +1 -1
  42. package/src/extension/pkg/sentience_core_bg.wasm +0 -0
  43. package/src/extension/release.json +47 -46
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAE7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAGvD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,CAAC,EAAE,MAAM,CAAC;IAEV,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IAEX,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IAEf,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IAEZ,6BAA6B;IAC7B,IAAI,EAAE,cAAc,CAAC;IAErB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -31,6 +31,13 @@ export interface Element {
31
31
  ml_probability?: number;
32
32
  ml_score?: number;
33
33
  diff_status?: 'ADDED' | 'REMOVED' | 'MODIFIED' | 'MOVED';
34
+ center_x?: number;
35
+ center_y?: number;
36
+ doc_y?: number;
37
+ group_key?: string;
38
+ group_index?: number;
39
+ href?: string;
40
+ in_dominant_group?: boolean;
34
41
  }
35
42
  export interface Snapshot {
36
43
  status: 'success' | 'error';
@@ -42,6 +49,7 @@ export interface Snapshot {
42
49
  screenshot_format?: 'png' | 'jpeg';
43
50
  error?: string;
44
51
  requires_license?: boolean;
52
+ dominant_group_key?: string;
45
53
  }
46
54
  /**
47
55
  * Metadata for a stored screenshot.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Verification primitives for agent assertion loops.
3
+ *
4
+ * This module provides assertion predicates and outcome types for runtime verification
5
+ * in agent loops. Assertions evaluate against the current browser state (snapshot/url)
6
+ * and record results into the trace.
7
+ *
8
+ * Key concepts:
9
+ * - AssertOutcome: Result of evaluating an assertion
10
+ * - AssertContext: Context provided to assertion predicates (snapshot, url, stepId)
11
+ * - Predicate: Callable that takes context and returns outcome
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { urlMatches, exists, AssertContext } from './verification';
16
+ *
17
+ * // Create predicates
18
+ * const onSearchPage = urlMatches(/\/s\?k=/);
19
+ * const resultsLoaded = exists("text~'Results'");
20
+ *
21
+ * // Evaluate against context
22
+ * const ctx: AssertContext = { snapshot, url: "https://example.com/s?k=shoes" };
23
+ * const outcome = onSearchPage(ctx);
24
+ * console.log(outcome.passed); // true
25
+ * ```
26
+ */
27
+ import { Snapshot, QuerySelector } from './types';
28
+ /**
29
+ * Result of evaluating an assertion predicate.
30
+ */
31
+ export interface AssertOutcome {
32
+ /** Whether the assertion passed */
33
+ passed: boolean;
34
+ /** Human-readable explanation (especially useful when failed) */
35
+ reason: string;
36
+ /** Additional structured data for debugging/display */
37
+ details: Record<string, any>;
38
+ }
39
+ /**
40
+ * Context provided to assertion predicates.
41
+ *
42
+ * Provides access to current browser state without requiring
43
+ * the predicate to know about browser internals.
44
+ */
45
+ export interface AssertContext {
46
+ /** Current page snapshot (may be null if not taken) */
47
+ snapshot: Snapshot | null;
48
+ /** Current page URL */
49
+ url: string | null;
50
+ /** Current step identifier (for trace correlation) */
51
+ stepId: string | null;
52
+ }
53
+ /**
54
+ * Type alias for assertion predicates.
55
+ * A predicate takes context and returns an outcome.
56
+ */
57
+ export type Predicate = (ctx: AssertContext) => AssertOutcome;
58
+ /**
59
+ * Create a predicate that checks if current URL matches a regex pattern.
60
+ *
61
+ * @param pattern - Regular expression pattern or string to match against URL
62
+ * @returns Predicate function that evaluates URL matching
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const pred = urlMatches(/\/search\?q=/);
67
+ * const ctx = { snapshot: null, url: "https://example.com/search?q=shoes", stepId: null };
68
+ * const outcome = pred(ctx);
69
+ * console.log(outcome.passed); // true
70
+ * ```
71
+ */
72
+ export declare function urlMatches(pattern: string | RegExp): Predicate;
73
+ /**
74
+ * Create a predicate that checks if current URL contains a substring.
75
+ *
76
+ * @param substring - String to search for in URL
77
+ * @returns Predicate function that evaluates URL containment
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * const pred = urlContains("/cart");
82
+ * const ctx = { snapshot: null, url: "https://example.com/cart/checkout", stepId: null };
83
+ * const outcome = pred(ctx);
84
+ * console.log(outcome.passed); // true
85
+ * ```
86
+ */
87
+ export declare function urlContains(substring: string): Predicate;
88
+ /**
89
+ * Create a predicate that checks if elements matching selector exist.
90
+ *
91
+ * Uses the SDK's query engine to find matching elements.
92
+ *
93
+ * @param selector - Semantic selector string (e.g., "role=button text~'Sign in'")
94
+ * @returns Predicate function that evaluates element existence
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const pred = exists("text~'Results'");
99
+ * // Will check if snapshot contains elements with "Results" in text
100
+ * ```
101
+ */
102
+ export declare function exists(selector: QuerySelector): Predicate;
103
+ /**
104
+ * Create a predicate that checks that NO elements match the selector.
105
+ *
106
+ * Useful for asserting that error messages, loading spinners, etc. are gone.
107
+ *
108
+ * @param selector - Semantic selector string
109
+ * @returns Predicate function that evaluates element non-existence
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const pred = notExists("text~'Loading'");
114
+ * // Will pass if no elements contain "Loading" text
115
+ * ```
116
+ */
117
+ export declare function notExists(selector: QuerySelector): Predicate;
118
+ /**
119
+ * Create a predicate that checks the number of matching elements.
120
+ *
121
+ * @param selector - Semantic selector string
122
+ * @param options - Count constraints
123
+ * @returns Predicate function that evaluates element count
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * const pred = elementCount("role=button", { minCount: 1, maxCount: 5 });
128
+ * // Will pass if 1-5 buttons found
129
+ * ```
130
+ */
131
+ export declare function elementCount(selector: QuerySelector, options?: {
132
+ minCount?: number;
133
+ maxCount?: number;
134
+ }): Predicate;
135
+ /**
136
+ * Create a predicate that passes only if ALL sub-predicates pass.
137
+ *
138
+ * @param predicates - Predicate functions to combine with AND logic
139
+ * @returns Combined predicate
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const pred = allOf(urlContains("/cart"), exists("text~'Checkout'"));
144
+ * // Will pass only if both conditions are true
145
+ * ```
146
+ */
147
+ export declare function allOf(...predicates: Predicate[]): Predicate;
148
+ /**
149
+ * Create a predicate that passes if ANY sub-predicate passes.
150
+ *
151
+ * @param predicates - Predicate functions to combine with OR logic
152
+ * @returns Combined predicate
153
+ *
154
+ * @example
155
+ * ```typescript
156
+ * const pred = anyOf(exists("text~'Success'"), exists("text~'Complete'"));
157
+ * // Will pass if either condition is true
158
+ * ```
159
+ */
160
+ export declare function anyOf(...predicates: Predicate[]): Predicate;
161
+ /**
162
+ * Create a predicate from a custom function.
163
+ *
164
+ * @param checkFn - Function that takes AssertContext and returns boolean
165
+ * @param label - Label for debugging/display
166
+ * @returns Predicate wrapping the custom function
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * const pred = custom(
171
+ * (ctx) => ctx.snapshot !== null && ctx.snapshot.elements.length > 10,
172
+ * "has_many_elements"
173
+ * );
174
+ * ```
175
+ */
176
+ export declare function custom(checkFn: (ctx: AssertContext) => boolean, label?: string): Predicate;
177
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../src/verification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAUlD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,uBAAuB;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sDAAsD;IACtD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,aAAa,CAAC;AAE9D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAY9D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAUxD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,CAoBzD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,CAoB5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,SAAS,CA0CX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,GAAG,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,CAoB3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,GAAG,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,CAwB3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,EACxC,KAAK,GAAE,MAAiB,GACvB,SAAS,CAiBX"}
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ /**
3
+ * Verification primitives for agent assertion loops.
4
+ *
5
+ * This module provides assertion predicates and outcome types for runtime verification
6
+ * in agent loops. Assertions evaluate against the current browser state (snapshot/url)
7
+ * and record results into the trace.
8
+ *
9
+ * Key concepts:
10
+ * - AssertOutcome: Result of evaluating an assertion
11
+ * - AssertContext: Context provided to assertion predicates (snapshot, url, stepId)
12
+ * - Predicate: Callable that takes context and returns outcome
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { urlMatches, exists, AssertContext } from './verification';
17
+ *
18
+ * // Create predicates
19
+ * const onSearchPage = urlMatches(/\/s\?k=/);
20
+ * const resultsLoaded = exists("text~'Results'");
21
+ *
22
+ * // Evaluate against context
23
+ * const ctx: AssertContext = { snapshot, url: "https://example.com/s?k=shoes" };
24
+ * const outcome = onSearchPage(ctx);
25
+ * console.log(outcome.passed); // true
26
+ * ```
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.urlMatches = urlMatches;
30
+ exports.urlContains = urlContains;
31
+ exports.exists = exists;
32
+ exports.notExists = notExists;
33
+ exports.elementCount = elementCount;
34
+ exports.allOf = allOf;
35
+ exports.anyOf = anyOf;
36
+ exports.custom = custom;
37
+ const query_1 = require("./query");
38
+ /**
39
+ * Convert QuerySelector to string for display/logging.
40
+ */
41
+ function selectorToString(selector) {
42
+ return typeof selector === 'string' ? selector : JSON.stringify(selector);
43
+ }
44
+ /**
45
+ * Create a predicate that checks if current URL matches a regex pattern.
46
+ *
47
+ * @param pattern - Regular expression pattern or string to match against URL
48
+ * @returns Predicate function that evaluates URL matching
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const pred = urlMatches(/\/search\?q=/);
53
+ * const ctx = { snapshot: null, url: "https://example.com/search?q=shoes", stepId: null };
54
+ * const outcome = pred(ctx);
55
+ * console.log(outcome.passed); // true
56
+ * ```
57
+ */
58
+ function urlMatches(pattern) {
59
+ const rx = typeof pattern === 'string' ? new RegExp(pattern) : pattern;
60
+ return (ctx) => {
61
+ const url = ctx.url || '';
62
+ const ok = rx.test(url);
63
+ return {
64
+ passed: ok,
65
+ reason: ok ? '' : `url did not match pattern: ${pattern}`,
66
+ details: { pattern: String(pattern), url: url.substring(0, 200) },
67
+ };
68
+ };
69
+ }
70
+ /**
71
+ * Create a predicate that checks if current URL contains a substring.
72
+ *
73
+ * @param substring - String to search for in URL
74
+ * @returns Predicate function that evaluates URL containment
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const pred = urlContains("/cart");
79
+ * const ctx = { snapshot: null, url: "https://example.com/cart/checkout", stepId: null };
80
+ * const outcome = pred(ctx);
81
+ * console.log(outcome.passed); // true
82
+ * ```
83
+ */
84
+ function urlContains(substring) {
85
+ return (ctx) => {
86
+ const url = ctx.url || '';
87
+ const ok = url.includes(substring);
88
+ return {
89
+ passed: ok,
90
+ reason: ok ? '' : `url does not contain: ${substring}`,
91
+ details: { substring, url: url.substring(0, 200) },
92
+ };
93
+ };
94
+ }
95
+ /**
96
+ * Create a predicate that checks if elements matching selector exist.
97
+ *
98
+ * Uses the SDK's query engine to find matching elements.
99
+ *
100
+ * @param selector - Semantic selector string (e.g., "role=button text~'Sign in'")
101
+ * @returns Predicate function that evaluates element existence
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const pred = exists("text~'Results'");
106
+ * // Will check if snapshot contains elements with "Results" in text
107
+ * ```
108
+ */
109
+ function exists(selector) {
110
+ const selectorStr = selectorToString(selector);
111
+ return (ctx) => {
112
+ const snap = ctx.snapshot;
113
+ if (!snap) {
114
+ return {
115
+ passed: false,
116
+ reason: 'no snapshot available',
117
+ details: { selector: selectorStr },
118
+ };
119
+ }
120
+ const matches = (0, query_1.query)(snap, selector);
121
+ const ok = matches.length > 0;
122
+ return {
123
+ passed: ok,
124
+ reason: ok ? '' : `no elements matched selector: ${selectorStr}`,
125
+ details: { selector: selectorStr, matched: matches.length },
126
+ };
127
+ };
128
+ }
129
+ /**
130
+ * Create a predicate that checks that NO elements match the selector.
131
+ *
132
+ * Useful for asserting that error messages, loading spinners, etc. are gone.
133
+ *
134
+ * @param selector - Semantic selector string
135
+ * @returns Predicate function that evaluates element non-existence
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const pred = notExists("text~'Loading'");
140
+ * // Will pass if no elements contain "Loading" text
141
+ * ```
142
+ */
143
+ function notExists(selector) {
144
+ const selectorStr = selectorToString(selector);
145
+ return (ctx) => {
146
+ const snap = ctx.snapshot;
147
+ if (!snap) {
148
+ return {
149
+ passed: false,
150
+ reason: 'no snapshot available',
151
+ details: { selector: selectorStr },
152
+ };
153
+ }
154
+ const matches = (0, query_1.query)(snap, selector);
155
+ const ok = matches.length === 0;
156
+ return {
157
+ passed: ok,
158
+ reason: ok ? '' : `found ${matches.length} elements matching: ${selectorStr}`,
159
+ details: { selector: selectorStr, matched: matches.length },
160
+ };
161
+ };
162
+ }
163
+ /**
164
+ * Create a predicate that checks the number of matching elements.
165
+ *
166
+ * @param selector - Semantic selector string
167
+ * @param options - Count constraints
168
+ * @returns Predicate function that evaluates element count
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * const pred = elementCount("role=button", { minCount: 1, maxCount: 5 });
173
+ * // Will pass if 1-5 buttons found
174
+ * ```
175
+ */
176
+ function elementCount(selector, options = {}) {
177
+ const { minCount = 0, maxCount } = options;
178
+ const selectorStr = selectorToString(selector);
179
+ return (ctx) => {
180
+ const snap = ctx.snapshot;
181
+ if (!snap) {
182
+ return {
183
+ passed: false,
184
+ reason: 'no snapshot available',
185
+ details: { selector: selectorStr, minCount, maxCount },
186
+ };
187
+ }
188
+ const matches = (0, query_1.query)(snap, selector);
189
+ const count = matches.length;
190
+ let ok = count >= minCount;
191
+ if (maxCount !== undefined) {
192
+ ok = ok && count <= maxCount;
193
+ }
194
+ let reason = '';
195
+ if (!ok) {
196
+ if (maxCount !== undefined) {
197
+ reason = `expected ${minCount}-${maxCount} elements, found ${count}`;
198
+ }
199
+ else {
200
+ reason = `expected at least ${minCount} elements, found ${count}`;
201
+ }
202
+ }
203
+ return {
204
+ passed: ok,
205
+ reason,
206
+ details: {
207
+ selector: selectorStr,
208
+ matched: count,
209
+ minCount,
210
+ maxCount,
211
+ },
212
+ };
213
+ };
214
+ }
215
+ /**
216
+ * Create a predicate that passes only if ALL sub-predicates pass.
217
+ *
218
+ * @param predicates - Predicate functions to combine with AND logic
219
+ * @returns Combined predicate
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * const pred = allOf(urlContains("/cart"), exists("text~'Checkout'"));
224
+ * // Will pass only if both conditions are true
225
+ * ```
226
+ */
227
+ function allOf(...predicates) {
228
+ return (ctx) => {
229
+ const failedReasons = [];
230
+ const allDetails = [];
231
+ for (const p of predicates) {
232
+ const outcome = p(ctx);
233
+ allDetails.push(outcome.details);
234
+ if (!outcome.passed) {
235
+ failedReasons.push(outcome.reason);
236
+ }
237
+ }
238
+ const ok = failedReasons.length === 0;
239
+ return {
240
+ passed: ok,
241
+ reason: failedReasons.join('; '),
242
+ details: { subPredicates: allDetails, failedCount: failedReasons.length },
243
+ };
244
+ };
245
+ }
246
+ /**
247
+ * Create a predicate that passes if ANY sub-predicate passes.
248
+ *
249
+ * @param predicates - Predicate functions to combine with OR logic
250
+ * @returns Combined predicate
251
+ *
252
+ * @example
253
+ * ```typescript
254
+ * const pred = anyOf(exists("text~'Success'"), exists("text~'Complete'"));
255
+ * // Will pass if either condition is true
256
+ * ```
257
+ */
258
+ function anyOf(...predicates) {
259
+ return (ctx) => {
260
+ const allReasons = [];
261
+ const allDetails = [];
262
+ for (let i = 0; i < predicates.length; i++) {
263
+ const outcome = predicates[i](ctx);
264
+ allDetails.push(outcome.details);
265
+ if (outcome.passed) {
266
+ return {
267
+ passed: true,
268
+ reason: '',
269
+ details: { subPredicates: allDetails, matchedAtIndex: i },
270
+ };
271
+ }
272
+ allReasons.push(outcome.reason);
273
+ }
274
+ return {
275
+ passed: false,
276
+ reason: `none of ${predicates.length} predicates passed: ${allReasons.join('; ')}`,
277
+ details: { subPredicates: allDetails },
278
+ };
279
+ };
280
+ }
281
+ /**
282
+ * Create a predicate from a custom function.
283
+ *
284
+ * @param checkFn - Function that takes AssertContext and returns boolean
285
+ * @param label - Label for debugging/display
286
+ * @returns Predicate wrapping the custom function
287
+ *
288
+ * @example
289
+ * ```typescript
290
+ * const pred = custom(
291
+ * (ctx) => ctx.snapshot !== null && ctx.snapshot.elements.length > 10,
292
+ * "has_many_elements"
293
+ * );
294
+ * ```
295
+ */
296
+ function custom(checkFn, label = 'custom') {
297
+ return (ctx) => {
298
+ try {
299
+ const ok = checkFn(ctx);
300
+ return {
301
+ passed: ok,
302
+ reason: ok ? '' : `custom check '${label}' returned false`,
303
+ details: { label },
304
+ };
305
+ }
306
+ catch (e) {
307
+ return {
308
+ passed: false,
309
+ reason: `custom check '${label}' raised exception: ${e}`,
310
+ details: { label, error: String(e) },
311
+ };
312
+ }
313
+ };
314
+ }
315
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../src/verification.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sentienceapi",
3
- "version": "0.92.2",
3
+ "version": "0.93.0",
4
4
  "description": "TypeScript SDK for Sentience AI Agent Browser Automation",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -323,6 +323,12 @@
323
323
  if (!el.getBoundingClientRect) return;
324
324
  const rect = el.getBoundingClientRect();
325
325
  if (rect.width < 5 || rect.height < 5) return;
326
+ if ("span" === el.tagName.toLowerCase()) {
327
+ if (el.closest("a")) return;
328
+ const childLink = el.querySelector("a[href]");
329
+ if (childLink && childLink.href) return;
330
+ options.debug && el.className && el.className.includes("titleline");
331
+ }
326
332
  window.sentience_registry[idx] = el;
327
333
  const semanticText = function(el, options = {}) {
328
334
  if (!el) return {
@@ -439,14 +445,15 @@
439
445
  inferred_label: semanticText?.source && ![ "explicit_aria_label", "input_value", "img_alt", "inner_text" ].includes(semanticText.source) ? toSafeString(semanticText.text) : null,
440
446
  label_source: semanticText?.source || null,
441
447
  inferred_role: inferredRole ? toSafeString(inferredRole) : null,
442
- href: toSafeString(el.href || el.getAttribute("href") || null),
448
+ href: toSafeString(el.href || el.getAttribute("href") || el.closest && el.closest("a")?.href || null),
443
449
  class: toSafeString(getClassName(el)),
444
450
  value: void 0 !== el.value ? toSafeString(el.value) : toSafeString(el.getAttribute("value")),
445
451
  checked: void 0 !== el.checked ? String(el.checked) : null
446
452
  },
447
453
  text: toSafeString(textVal),
448
454
  in_viewport: inView,
449
- is_occluded: occluded
455
+ is_occluded: occluded,
456
+ scroll_y: window.scrollY
450
457
  });
451
458
  });
452
459
  const allRawElements = [ ...rawData ];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Sentience Semantic Visual Grounding Extractor",
4
- "version": "2.2.0",
4
+ "version": "2.4.0",
5
5
  "description": "Extract semantic visual grounding data from web pages",
6
6
  "permissions": ["activeTab", "scripting"],
7
7
  "host_permissions": ["<all_urls>"],