@dbx-tools/appkit-web-search 0.3.44 → 0.4.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.
@@ -0,0 +1,113 @@
1
+ /**
2
+ * The `web_search` and `web_fetch` Mastra tools.
3
+ *
4
+ * `web_search` is backed by the Databricks Model Serving native web-search
5
+ * tool: it resolves its own web-search-capable model (see `search.ts`) and
6
+ * calls the workspace serving endpoint under the caller's OBO scope, so the
7
+ * search runs as the requesting user and independently of the agent's chat
8
+ * model. `web_fetch` reads a page via got-scraping.
9
+ *
10
+ * Both are read-only and run without approval by default; each accepts an
11
+ * optional {@link ApprovalGate} (`approval`) that maps onto Mastra's
12
+ * `requireApproval`. `true` gates every call; a URL-pattern (or {@link OneOrMany}
13
+ * list) gates only calls whose URL matches - for `web_fetch` that is evaluated
14
+ * against the target URL, while `web_search` (whose result URLs aren't known
15
+ * before the call) treats a pattern gate as "always gate". `approval` falls
16
+ * back to the plugin's `approval` config when a tool omits its own.
17
+ *
18
+ * The same two tools are exposed to AppKit's own agents through the plugin's
19
+ * `ToolProvider` (see `plugin.ts`); this module is the Mastra half.
20
+ *
21
+ * @module
22
+ */
23
+ import { ValidationError } from "@databricks/appkit";
24
+ import { createTool } from "@mastra/core/tools";
25
+ import { approvalMatches, toApprovalPolicy, } from "./config.js";
26
+ import { runWebFetch } from "./fetch.js";
27
+ import { getWebSearchRuntime } from "./runtime.js";
28
+ import { webFetchRequestSchema, webFetchResultSchema, webSearchRequestSchema, webSearchResultSchema, WEB_FETCH_TOOL_DESCRIPTION, WEB_SEARCH_TOOL_DESCRIPTION, } from "./schema.js";
29
+ import { resolveWebSearchContext, runWebSearch } from "./search.js";
30
+ /**
31
+ * Validate a tool call's arguments at the runtime boundary. Mastra checks the
32
+ * input schema before dispatch, but the argument still arrives typed as
33
+ * `unknown` and the model is the one filling it in. The rejected value is not
34
+ * echoed back.
35
+ */
36
+ function parseToolInput(schema, input) {
37
+ const parsed = schema.safeParse(input);
38
+ if (!parsed.success) {
39
+ throw ValidationError.invalidValue("input", input, "arguments matching the tool's schema");
40
+ }
41
+ return parsed.data;
42
+ }
43
+ /** Resolve the effective gate: explicit tool option, else the plugin default. */
44
+ function effectiveGate(opts) {
45
+ return opts.approval === undefined
46
+ ? getWebSearchRuntime().config.approval
47
+ : toApprovalPolicy(opts.approval);
48
+ }
49
+ /**
50
+ * Build the `web_search` tool. Spread it into the agents that should be able
51
+ * to search the web.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import { webSearchTool } from "@dbx-tools/appkit-web-search";
56
+ * import { createAgent } from "@dbx-tools/appkit-mastra";
57
+ *
58
+ * const researcher = createAgent({
59
+ * instructions: "...",
60
+ * tools: () => ({ web_search: webSearchTool() }),
61
+ * });
62
+ * ```
63
+ */
64
+ export function webSearchTool(opts = {}) {
65
+ const gate = effectiveGate(opts);
66
+ return createTool({
67
+ id: opts.id ?? "web_search",
68
+ description: WEB_SEARCH_TOOL_DESCRIPTION,
69
+ inputSchema: webSearchRequestSchema,
70
+ outputSchema: webSearchResultSchema,
71
+ // A search's result URLs aren't known before the call, so a pattern gate
72
+ // is treated as "always gate".
73
+ ...(gate.mode === "none" ? {} : { requireApproval: () => true }),
74
+ execute: async (input) => {
75
+ const { config } = getWebSearchRuntime();
76
+ const request = parseToolInput(webSearchRequestSchema, input);
77
+ return runWebSearch(request, config, await resolveWebSearchContext());
78
+ },
79
+ });
80
+ }
81
+ /**
82
+ * Build the `web_fetch` tool. Spread it into the agents that should be able
83
+ * to read a page's contents.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * import { webFetchTool } from "@dbx-tools/appkit-web-search";
88
+ *
89
+ * tools: () => ({ web_fetch: webFetchTool({ approval: "*.internal.example.com" }) })
90
+ * ```
91
+ */
92
+ export function webFetchTool(opts = {}) {
93
+ const gate = effectiveGate(opts);
94
+ return createTool({
95
+ id: opts.id ?? "web_fetch",
96
+ description: WEB_FETCH_TOOL_DESCRIPTION,
97
+ inputSchema: webFetchRequestSchema,
98
+ outputSchema: webFetchResultSchema,
99
+ // A fetch knows its single target URL, so a pattern gate is evaluated
100
+ // precisely against it.
101
+ ...(gate.mode === "none"
102
+ ? {}
103
+ : {
104
+ requireApproval: (input) => gate.mode === "always" ||
105
+ approvalMatches(gate, [parseToolInput(webFetchRequestSchema, input).url]),
106
+ }),
107
+ execute: async (input) => {
108
+ const { config } = getWebSearchRuntime();
109
+ return runWebFetch(parseToolInput(webFetchRequestSchema, input), config);
110
+ },
111
+ });
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEdBR2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLDJCQUEyQixHQUM1QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpFOzs7OztHQUtHO0FBQ0gsU0FBUyxjQUFjLENBQXNCLE1BQVMsRUFBRSxLQUFjO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQWNELGlGQUFpRjtBQUNqRixTQUFTLGFBQWEsQ0FBQyxJQUEwQjtJQUMvQyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztRQUNoQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtRQUN2QyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNkIsRUFBRTtJQUMzRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUM7UUFDaEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksWUFBWTtRQUMzQixXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyx5RUFBeUU7UUFDekUsK0JBQStCO1FBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxPQUFPLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBNkIsRUFBRTtJQUMxRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUM7UUFDaEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksV0FBVztRQUMxQixXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxzRUFBc0U7UUFDdEUsd0JBQXdCO1FBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07WUFDdEIsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUM7Z0JBQ0UsZUFBZSxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDbEMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO29CQUN0QixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVFLENBQUM7UUFDTixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGB3ZWJfc2VhcmNoYCBhbmQgYHdlYl9mZXRjaGAgTWFzdHJhIHRvb2xzLlxuICpcbiAqIGB3ZWJfc2VhcmNoYCBpcyBiYWNrZWQgYnkgdGhlIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBuYXRpdmUgd2ViLXNlYXJjaFxuICogdG9vbDogaXQgcmVzb2x2ZXMgaXRzIG93biB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgKHNlZSBgc2VhcmNoLnRzYCkgYW5kXG4gKiBjYWxscyB0aGUgd29ya3NwYWNlIHNlcnZpbmcgZW5kcG9pbnQgdW5kZXIgdGhlIGNhbGxlcidzIE9CTyBzY29wZSwgc28gdGhlXG4gKiBzZWFyY2ggcnVucyBhcyB0aGUgcmVxdWVzdGluZyB1c2VyIGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBhZ2VudCdzIGNoYXRcbiAqIG1vZGVsLiBgd2ViX2ZldGNoYCByZWFkcyBhIHBhZ2UgdmlhIGdvdC1zY3JhcGluZy5cbiAqXG4gKiBCb3RoIGFyZSByZWFkLW9ubHkgYW5kIHJ1biB3aXRob3V0IGFwcHJvdmFsIGJ5IGRlZmF1bHQ7IGVhY2ggYWNjZXB0cyBhblxuICogb3B0aW9uYWwge0BsaW5rIEFwcHJvdmFsR2F0ZX0gKGBhcHByb3ZhbGApIHRoYXQgbWFwcyBvbnRvIE1hc3RyYSdzXG4gKiBgcmVxdWlyZUFwcHJvdmFsYC4gYHRydWVgIGdhdGVzIGV2ZXJ5IGNhbGw7IGEgVVJMLXBhdHRlcm4gKG9yIHtAbGluayBPbmVPck1hbnl9XG4gKiBsaXN0KSBnYXRlcyBvbmx5IGNhbGxzIHdob3NlIFVSTCBtYXRjaGVzIC0gZm9yIGB3ZWJfZmV0Y2hgIHRoYXQgaXMgZXZhbHVhdGVkXG4gKiBhZ2FpbnN0IHRoZSB0YXJnZXQgVVJMLCB3aGlsZSBgd2ViX3NlYXJjaGAgKHdob3NlIHJlc3VsdCBVUkxzIGFyZW4ndCBrbm93blxuICogYmVmb3JlIHRoZSBjYWxsKSB0cmVhdHMgYSBwYXR0ZXJuIGdhdGUgYXMgXCJhbHdheXMgZ2F0ZVwiLiBgYXBwcm92YWxgIGZhbGxzXG4gKiBiYWNrIHRvIHRoZSBwbHVnaW4ncyBgYXBwcm92YWxgIGNvbmZpZyB3aGVuIGEgdG9vbCBvbWl0cyBpdHMgb3duLlxuICpcbiAqIFRoZSBzYW1lIHR3byB0b29scyBhcmUgZXhwb3NlZCB0byBBcHBLaXQncyBvd24gYWdlbnRzIHRocm91Z2ggdGhlIHBsdWdpbidzXG4gKiBgVG9vbFByb3ZpZGVyYCAoc2VlIGBwbHVnaW4udHNgKTsgdGhpcyBtb2R1bGUgaXMgdGhlIE1hc3RyYSBoYWxmLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBjcmVhdGVUb29sIH0gZnJvbSBcIkBtYXN0cmEvY29yZS90b29sc1wiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHtcbiAgYXBwcm92YWxNYXRjaGVzLFxuICB0b0FwcHJvdmFsUG9saWN5LFxuICB0eXBlIEFwcHJvdmFsR2F0ZSxcbiAgdHlwZSBBcHByb3ZhbFBvbGljeSxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBydW5XZWJGZXRjaCB9IGZyb20gXCIuL2ZldGNoXCI7XG5pbXBvcnQgeyBnZXRXZWJTZWFyY2hSdW50aW1lIH0gZnJvbSBcIi4vcnVudGltZVwiO1xuaW1wb3J0IHtcbiAgd2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLFxuICB3ZWJGZXRjaFJlc3VsdFNjaGVtYSxcbiAgd2ViU2VhcmNoUmVxdWVzdFNjaGVtYSxcbiAgd2ViU2VhcmNoUmVzdWx0U2NoZW1hLFxuICBXRUJfRkVUQ0hfVE9PTF9ERVNDUklQVElPTixcbiAgV0VCX1NFQVJDSF9UT09MX0RFU0NSSVBUSU9OLFxufSBmcm9tIFwiLi9zY2hlbWFcIjtcbmltcG9ydCB7IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0LCBydW5XZWJTZWFyY2ggfSBmcm9tIFwiLi9zZWFyY2hcIjtcblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHRvb2wgY2FsbCdzIGFyZ3VtZW50cyBhdCB0aGUgcnVudGltZSBib3VuZGFyeS4gTWFzdHJhIGNoZWNrcyB0aGVcbiAqIGlucHV0IHNjaGVtYSBiZWZvcmUgZGlzcGF0Y2gsIGJ1dCB0aGUgYXJndW1lbnQgc3RpbGwgYXJyaXZlcyB0eXBlZCBhc1xuICogYHVua25vd25gIGFuZCB0aGUgbW9kZWwgaXMgdGhlIG9uZSBmaWxsaW5nIGl0IGluLiBUaGUgcmVqZWN0ZWQgdmFsdWUgaXMgbm90XG4gKiBlY2hvZWQgYmFjay5cbiAqL1xuZnVuY3Rpb24gcGFyc2VUb29sSW5wdXQ8UyBleHRlbmRzIHouWm9kVHlwZT4oc2NoZW1hOiBTLCBpbnB1dDogdW5rbm93bik6IHouaW5mZXI8Uz4ge1xuICBjb25zdCBwYXJzZWQgPSBzY2hlbWEuc2FmZVBhcnNlKGlucHV0KTtcbiAgaWYgKCFwYXJzZWQuc3VjY2Vzcykge1xuICAgIHRocm93IFZhbGlkYXRpb25FcnJvci5pbnZhbGlkVmFsdWUoXCJpbnB1dFwiLCBpbnB1dCwgXCJhcmd1bWVudHMgbWF0Y2hpbmcgdGhlIHRvb2wncyBzY2hlbWFcIik7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZC5kYXRhO1xufVxuXG4vKiogT3B0aW9ucyBzaGFyZWQgYnkgYm90aCB3ZWIgdG9vbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNlYXJjaFRvb2xPcHRpb25zIHtcbiAgLyoqIE92ZXJyaWRlIHRoZSB0b29sIGlkLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFwcHJvdmFsIGdhdGUgZm9yIHRoaXMgdG9vbCwgb3ZlcnJpZGluZyB0aGUgcGx1Z2luJ3MgYGFwcHJvdmFsYC4gYHRydWVgXG4gICAqIGdhdGVzIGV2ZXJ5IGNhbGw7IGEgVVJMLXBhdHRlcm4gKG9yIGxpc3QpIGdhdGVzIG9ubHkgbWF0Y2hpbmcgY2FsbHM7XG4gICAqIG9taXQgLyBgZmFsc2VgIGZvciBubyBhcHByb3ZhbC4gU2VlIHtAbGluayBBcHByb3ZhbEdhdGV9LlxuICAgKi9cbiAgYXBwcm92YWw/OiBBcHByb3ZhbEdhdGUgfCBBcHByb3ZhbFBvbGljeTtcbn1cblxuLyoqIFJlc29sdmUgdGhlIGVmZmVjdGl2ZSBnYXRlOiBleHBsaWNpdCB0b29sIG9wdGlvbiwgZWxzZSB0aGUgcGx1Z2luIGRlZmF1bHQuICovXG5mdW5jdGlvbiBlZmZlY3RpdmVHYXRlKG9wdHM6IFdlYlNlYXJjaFRvb2xPcHRpb25zKTogQXBwcm92YWxQb2xpY3kge1xuICByZXR1cm4gb3B0cy5hcHByb3ZhbCA9PT0gdW5kZWZpbmVkXG4gICAgPyBnZXRXZWJTZWFyY2hSdW50aW1lKCkuY29uZmlnLmFwcHJvdmFsXG4gICAgOiB0b0FwcHJvdmFsUG9saWN5KG9wdHMuYXBwcm92YWwpO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgd2ViX3NlYXJjaGAgdG9vbC4gU3ByZWFkIGl0IGludG8gdGhlIGFnZW50cyB0aGF0IHNob3VsZCBiZSBhYmxlXG4gKiB0byBzZWFyY2ggdGhlIHdlYi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHdlYlNlYXJjaFRvb2wgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtd2ViLXNlYXJjaFwiO1xuICogaW1wb3J0IHsgY3JlYXRlQWdlbnQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhXCI7XG4gKlxuICogY29uc3QgcmVzZWFyY2hlciA9IGNyZWF0ZUFnZW50KHtcbiAqICAgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiLFxuICogICB0b29sczogKCkgPT4gKHsgd2ViX3NlYXJjaDogd2ViU2VhcmNoVG9vbCgpIH0pLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdlYlNlYXJjaFRvb2wob3B0czogV2ViU2VhcmNoVG9vbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBnYXRlID0gZWZmZWN0aXZlR2F0ZShvcHRzKTtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwid2ViX3NlYXJjaFwiLFxuICAgIGRlc2NyaXB0aW9uOiBXRUJfU0VBUkNIX1RPT0xfREVTQ1JJUFRJT04sXG4gICAgaW5wdXRTY2hlbWE6IHdlYlNlYXJjaFJlcXVlc3RTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiB3ZWJTZWFyY2hSZXN1bHRTY2hlbWEsXG4gICAgLy8gQSBzZWFyY2gncyByZXN1bHQgVVJMcyBhcmVuJ3Qga25vd24gYmVmb3JlIHRoZSBjYWxsLCBzbyBhIHBhdHRlcm4gZ2F0ZVxuICAgIC8vIGlzIHRyZWF0ZWQgYXMgXCJhbHdheXMgZ2F0ZVwiLlxuICAgIC4uLihnYXRlLm1vZGUgPT09IFwibm9uZVwiID8ge30gOiB7IHJlcXVpcmVBcHByb3ZhbDogKCkgPT4gdHJ1ZSB9KSxcbiAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRXZWJTZWFyY2hSdW50aW1lKCk7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcGFyc2VUb29sSW5wdXQod2ViU2VhcmNoUmVxdWVzdFNjaGVtYSwgaW5wdXQpO1xuICAgICAgcmV0dXJuIHJ1bldlYlNlYXJjaChyZXF1ZXN0LCBjb25maWcsIGF3YWl0IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0KCkpO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgd2ViX2ZldGNoYCB0b29sLiBTcHJlYWQgaXQgaW50byB0aGUgYWdlbnRzIHRoYXQgc2hvdWxkIGJlIGFibGVcbiAqIHRvIHJlYWQgYSBwYWdlJ3MgY29udGVudHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB3ZWJGZXRjaFRvb2wgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtd2ViLXNlYXJjaFwiO1xuICpcbiAqIHRvb2xzOiAoKSA9PiAoeyB3ZWJfZmV0Y2g6IHdlYkZldGNoVG9vbCh7IGFwcHJvdmFsOiBcIiouaW50ZXJuYWwuZXhhbXBsZS5jb21cIiB9KSB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3ZWJGZXRjaFRvb2wob3B0czogV2ViU2VhcmNoVG9vbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBnYXRlID0gZWZmZWN0aXZlR2F0ZShvcHRzKTtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwid2ViX2ZldGNoXCIsXG4gICAgZGVzY3JpcHRpb246IFdFQl9GRVRDSF9UT09MX0RFU0NSSVBUSU9OLFxuICAgIGlucHV0U2NoZW1hOiB3ZWJGZXRjaFJlcXVlc3RTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiB3ZWJGZXRjaFJlc3VsdFNjaGVtYSxcbiAgICAvLyBBIGZldGNoIGtub3dzIGl0cyBzaW5nbGUgdGFyZ2V0IFVSTCwgc28gYSBwYXR0ZXJuIGdhdGUgaXMgZXZhbHVhdGVkXG4gICAgLy8gcHJlY2lzZWx5IGFnYWluc3QgaXQuXG4gICAgLi4uKGdhdGUubW9kZSA9PT0gXCJub25lXCJcbiAgICAgID8ge31cbiAgICAgIDoge1xuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogKGlucHV0OiB1bmtub3duKSA9PlxuICAgICAgICAgICAgZ2F0ZS5tb2RlID09PSBcImFsd2F5c1wiIHx8XG4gICAgICAgICAgICBhcHByb3ZhbE1hdGNoZXMoZ2F0ZSwgW3BhcnNlVG9vbElucHV0KHdlYkZldGNoUmVxdWVzdFNjaGVtYSwgaW5wdXQpLnVybF0pLFxuICAgICAgICB9KSxcbiAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRXZWJTZWFyY2hSdW50aW1lKCk7XG4gICAgICByZXR1cm4gcnVuV2ViRmV0Y2gocGFyc2VUb29sSW5wdXQod2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLCBpbnB1dCksIGNvbmZpZyk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ {"root":["../src/allowlist.ts","../src/config.ts","../src/defaults.ts","../src/fetch.ts","../src/html-text.ts","../src/plugin.ts","../src/provider.ts","../src/runtime.ts","../src/schema.ts","../src/scrape.ts","../src/search.ts","../src/tool.ts","../index.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -17,26 +17,30 @@
17
17
  "@mastra/core": "^1.47.0",
18
18
  "got-scraping": "^4.2.1",
19
19
  "zod": "4.3.6",
20
- "@dbx-tools/model": "0.3.44",
21
- "@dbx-tools/path": "0.3.44",
22
- "@dbx-tools/shared-model": "0.3.44",
23
- "@dbx-tools/shared-core": "0.3.44"
20
+ "@dbx-tools/path": "0.4.1",
21
+ "@dbx-tools/shared-core": "0.4.1",
22
+ "@dbx-tools/model": "0.4.1",
23
+ "@dbx-tools/shared-model": "0.4.1"
24
24
  },
25
- "main": "index.ts",
25
+ "main": "./lib/index.js",
26
26
  "license": "UNLICENSED",
27
27
  "publishConfig": {
28
28
  "access": "public"
29
29
  },
30
- "version": "0.3.44",
31
- "types": "index.ts",
30
+ "version": "0.4.1",
31
+ "types": "./lib/index.d.ts",
32
32
  "type": "module",
33
33
  "exports": {
34
- ".": "./index.ts",
34
+ ".": {
35
+ "types": "./lib/index.d.ts",
36
+ "default": "./lib/index.js"
37
+ },
35
38
  "./package.json": "./package.json"
36
39
  },
37
40
  "files": [
38
41
  "index.ts",
39
- "src"
42
+ "src",
43
+ "lib"
40
44
  ],
41
45
  "dbxToolsConfig": {
42
46
  "tags": [