@defai.digital/ax-cli 3.8.6 → 3.8.8
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 +28 -393
- package/config-defaults/models.yaml +0 -24
- package/config-defaults/settings.yaml +16 -16
- package/dist/agent/dependency-resolver.js +22 -1
- package/dist/agent/dependency-resolver.js.map +1 -1
- package/dist/agent/llm-agent.d.ts +23 -2
- package/dist/agent/llm-agent.js +126 -122
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/loop-detector.d.ts +70 -0
- package/dist/agent/loop-detector.js +339 -0
- package/dist/agent/loop-detector.js.map +1 -0
- package/dist/agent/progress-tracker.d.ts +94 -0
- package/dist/agent/progress-tracker.js +222 -0
- package/dist/agent/progress-tracker.js.map +1 -0
- package/dist/agent/status-reporter.js +2 -2
- package/dist/agent/status-reporter.js.map +1 -1
- package/dist/agent/subagent.js +7 -3
- package/dist/agent/subagent.js.map +1 -1
- package/dist/analyzers/architecture/project-structure-scanner.js +6 -2
- package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.js +2 -1
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/checkpoint/manager.js +18 -4
- package/dist/checkpoint/manager.js.map +1 -1
- package/dist/checkpoint/storage.d.ts +6 -0
- package/dist/checkpoint/storage.js +96 -49
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/cache.js +8 -6
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/doctor.js +19 -27
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/mcp-migrate.js +6 -5
- package/dist/commands/mcp-migrate.js.map +1 -1
- package/dist/commands/mcp.js +14 -2
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/models.js +8 -12
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/plan.js +1 -10
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/setup.js +4 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.js +40 -14
- package/dist/commands/status.js.map +1 -1
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +16 -4
- package/dist/constants.js.map +1 -1
- package/dist/hooks/hook-runner.d.ts +138 -0
- package/dist/hooks/hook-runner.js +429 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js +3 -21
- package/dist/index.js.map +1 -1
- package/dist/llm/client.d.ts +9 -0
- package/dist/llm/client.js +306 -45
- package/dist/llm/client.js.map +1 -1
- package/dist/llm/tools.js +2 -39
- package/dist/llm/tools.js.map +1 -1
- package/dist/llm/types.d.ts +1 -47
- package/dist/llm/types.js +0 -18
- package/dist/llm/types.js.map +1 -1
- package/dist/mcp/automatosx-loader.js +2 -1
- package/dist/mcp/automatosx-loader.js.map +1 -1
- package/dist/mcp/client-v2.d.ts +3 -0
- package/dist/mcp/client-v2.js +85 -19
- package/dist/mcp/client-v2.js.map +1 -1
- package/dist/mcp/config-migrator.js +3 -2
- package/dist/mcp/config-migrator.js.map +1 -1
- package/dist/mcp/config-v2.d.ts +5 -0
- package/dist/mcp/config-v2.js +26 -0
- package/dist/mcp/config-v2.js.map +1 -1
- package/dist/mcp/error-formatter.js +4 -1
- package/dist/mcp/error-formatter.js.map +1 -1
- package/dist/mcp/health.js +1 -1
- package/dist/mcp/health.js.map +1 -1
- package/dist/mcp/reconnection.js +2 -1
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/registry.js +3 -2
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/resources.js +2 -1
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/validation.js +9 -0
- package/dist/mcp/validation.js.map +1 -1
- package/dist/memory/context-store.js +4 -6
- package/dist/memory/context-store.js.map +1 -1
- package/dist/memory/types.d.ts +2 -0
- package/dist/memory/types.js +4 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/permissions/index.d.ts +6 -0
- package/dist/permissions/index.js +7 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/permission-manager.d.ts +145 -0
- package/dist/permissions/permission-manager.js +401 -0
- package/dist/permissions/permission-manager.js.map +1 -0
- package/dist/planner/plan-storage.js +3 -2
- package/dist/planner/plan-storage.js.map +1 -1
- package/dist/planner/task-planner.js +2 -1
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/planner/types.d.ts +6 -6
- package/dist/schemas/settings-schemas.d.ts +0 -14
- package/dist/schemas/settings-schemas.js +0 -10
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/schemas/tool-schemas.d.ts +2 -2
- package/dist/schemas/yaml-schemas.d.ts +15 -0
- package/dist/schemas/yaml-schemas.js +3 -0
- package/dist/schemas/yaml-schemas.js.map +1 -1
- package/dist/tools/bash.js +35 -10
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/confirmation-tool.js +3 -2
- package/dist/tools/confirmation-tool.js.map +1 -1
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.js +2 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/search.js +12 -13
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.d.ts +46 -0
- package/dist/tools/text-editor.js +455 -11
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/tools/todo-tool.js +5 -4
- package/dist/tools/todo-tool.js.map +1 -1
- package/dist/ui/components/chat-input.js +10 -1
- package/dist/ui/components/chat-input.js.map +1 -1
- package/dist/ui/components/chat-interface.js +1 -0
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +0 -6
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.js +7 -6
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.js +21 -13
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +1 -2
- package/dist/ui/utils/tool-grouper.js +4 -15
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/api-error.d.ts +61 -0
- package/dist/utils/api-error.js +176 -0
- package/dist/utils/api-error.js.map +1 -0
- package/dist/utils/audit-logger.js +2 -1
- package/dist/utils/audit-logger.js.map +1 -1
- package/dist/utils/auto-accept-logger.js +3 -3
- package/dist/utils/auto-accept-logger.js.map +1 -1
- package/dist/utils/config-loader.d.ts +3 -0
- package/dist/utils/config-loader.js +27 -2
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/encryption.js +2 -1
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/file-cache.js +4 -2
- package/dist/utils/file-cache.js.map +1 -1
- package/dist/utils/history-migration.js +5 -4
- package/dist/utils/history-migration.js.map +1 -1
- package/dist/utils/onboarding-manager.js +2 -1
- package/dist/utils/onboarding-manager.js.map +1 -1
- package/dist/utils/path-helpers.d.ts +8 -0
- package/dist/utils/path-helpers.js +35 -0
- package/dist/utils/path-helpers.js.map +1 -0
- package/dist/utils/path-security.js +3 -2
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/retry-helper.d.ts +61 -0
- package/dist/utils/retry-helper.js +206 -0
- package/dist/utils/retry-helper.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +1 -21
- package/dist/utils/settings-manager.js +2 -82
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/streaming-analyzer.d.ts +2 -13
- package/dist/utils/streaming-analyzer.js +3 -25
- package/dist/utils/streaming-analyzer.js.map +1 -1
- package/dist/utils/token-counter.d.ts +13 -1
- package/dist/utils/token-counter.js +31 -6
- package/dist/utils/token-counter.js.map +1 -1
- package/package.json +3 -2
- package/packages/schemas/README.md +1 -1
- package/packages/schemas/package.json +1 -1
- package/dist/tools/web-search/cache.d.ts +0 -62
- package/dist/tools/web-search/cache.js +0 -105
- package/dist/tools/web-search/cache.js.map +0 -1
- package/dist/tools/web-search/engines/crates.d.ts +0 -19
- package/dist/tools/web-search/engines/crates.js +0 -87
- package/dist/tools/web-search/engines/crates.js.map +0 -1
- package/dist/tools/web-search/engines/npm.d.ts +0 -18
- package/dist/tools/web-search/engines/npm.js +0 -86
- package/dist/tools/web-search/engines/npm.js.map +0 -1
- package/dist/tools/web-search/engines/pypi.d.ts +0 -18
- package/dist/tools/web-search/engines/pypi.js +0 -75
- package/dist/tools/web-search/engines/pypi.js.map +0 -1
- package/dist/tools/web-search/index.d.ts +0 -11
- package/dist/tools/web-search/index.js +0 -11
- package/dist/tools/web-search/index.js.map +0 -1
- package/dist/tools/web-search/router.d.ts +0 -34
- package/dist/tools/web-search/router.js +0 -245
- package/dist/tools/web-search/router.js.map +0 -1
- package/dist/tools/web-search/types.d.ts +0 -45
- package/dist/tools/web-search/types.js +0 -6
- package/dist/tools/web-search/types.js.map +0 -1
- package/dist/tools/web-search/web-search-tool.d.ts +0 -51
- package/dist/tools/web-search/web-search-tool.js +0 -246
- package/dist/tools/web-search/web-search-tool.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../../../src/tools/web-search/engines/npm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PyPI (Python Package Index) Search Engine
|
|
3
|
-
* Free, unlimited search for Python packages
|
|
4
|
-
* No API key required
|
|
5
|
-
*/
|
|
6
|
-
import type { SearchEngine, WebSearchResult, SearchOptions } from "../types.js";
|
|
7
|
-
export declare class PyPISearch implements SearchEngine {
|
|
8
|
-
readonly name = "pypi";
|
|
9
|
-
private baseUrl;
|
|
10
|
-
private timeout;
|
|
11
|
-
/**
|
|
12
|
-
* Always available - no API key required
|
|
13
|
-
*/
|
|
14
|
-
isAvailable(): boolean;
|
|
15
|
-
search(query: string, options?: SearchOptions): Promise<WebSearchResult[]>;
|
|
16
|
-
private formatResult;
|
|
17
|
-
private createSnippet;
|
|
18
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PyPI (Python Package Index) Search Engine
|
|
3
|
-
* Free, unlimited search for Python packages
|
|
4
|
-
* No API key required
|
|
5
|
-
*/
|
|
6
|
-
import axios from "axios";
|
|
7
|
-
// Note: PyPI's search API is being rebuilt, so we use direct package lookup instead
|
|
8
|
-
export class PyPISearch {
|
|
9
|
-
name = "pypi";
|
|
10
|
-
baseUrl = "https://pypi.org/pypi";
|
|
11
|
-
timeout = 10000; // 10 second timeout
|
|
12
|
-
/**
|
|
13
|
-
* Always available - no API key required
|
|
14
|
-
*/
|
|
15
|
-
isAvailable() {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
async search(query, options) {
|
|
19
|
-
try {
|
|
20
|
-
// PyPI's official search is being rebuilt, so we use direct package lookup
|
|
21
|
-
// Try to fetch package info directly
|
|
22
|
-
const packageResponse = await axios.get(`${this.baseUrl}/${encodeURIComponent(query)}/json`, {
|
|
23
|
-
timeout: options?.timeout || this.timeout,
|
|
24
|
-
validateStatus: (status) => status === 200 || status === 404,
|
|
25
|
-
});
|
|
26
|
-
if (packageResponse.status === 404) {
|
|
27
|
-
// Package not found, return empty results
|
|
28
|
-
return [];
|
|
29
|
-
}
|
|
30
|
-
return this.formatResult(packageResponse.data);
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
// Return empty results on error rather than failing
|
|
34
|
-
// PyPI search is a best-effort feature
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
formatResult(data) {
|
|
39
|
-
if (!data.info)
|
|
40
|
-
return [];
|
|
41
|
-
const info = data.info;
|
|
42
|
-
return [
|
|
43
|
-
{
|
|
44
|
-
title: info.name,
|
|
45
|
-
url: `https://pypi.org/project/${info.name}/`,
|
|
46
|
-
snippet: this.createSnippet(info),
|
|
47
|
-
source: this.name,
|
|
48
|
-
relevanceScore: 100, // Exact match
|
|
49
|
-
publishedDate: info.release_date,
|
|
50
|
-
metadata: {
|
|
51
|
-
version: info.version,
|
|
52
|
-
author: info.author,
|
|
53
|
-
license: info.license,
|
|
54
|
-
homepage: info.home_page || info.project_urls?.Homepage,
|
|
55
|
-
requiresPython: info.requires_python,
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
];
|
|
59
|
-
}
|
|
60
|
-
createSnippet(info) {
|
|
61
|
-
const parts = [];
|
|
62
|
-
if (info.summary) {
|
|
63
|
-
parts.push(info.summary);
|
|
64
|
-
}
|
|
65
|
-
parts.push(`v${info.version}`);
|
|
66
|
-
if (info.author) {
|
|
67
|
-
parts.push(`by ${info.author}`);
|
|
68
|
-
}
|
|
69
|
-
if (info.license) {
|
|
70
|
-
parts.push(`License: ${info.license}`);
|
|
71
|
-
}
|
|
72
|
-
return parts.join(" • ");
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=pypi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pypi.js","sourceRoot":"","sources":["../../../../src/tools/web-search/engines/pypi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,oFAAoF;AAEpF,MAAM,OAAO,UAAU;IACL,IAAI,GAAG,MAAM,CAAC;IACtB,OAAO,GAAG,uBAAuB,CAAC;IAClC,OAAO,GAAG,KAAK,CAAC,CAAC,oBAAoB;IAE7C;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAAuB;QAEvB,IAAI,CAAC;YACH,2EAA2E;YAC3E,qCAAqC;YACrC,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,CACrC,GAAG,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,OAAO,EACnD;gBACE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO;gBACzC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;aAC7D,CACF,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,0CAA0C;gBAC1C,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,oDAAoD;YACpD,uCAAuC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAS;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO;YACL;gBACE,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,GAAG,EAAE,4BAA4B,IAAI,CAAC,IAAI,GAAG;gBAC7C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACjC,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,cAAc,EAAE,GAAG,EAAE,cAAc;gBACnC,aAAa,EAAE,IAAI,CAAC,YAAY;gBAChC,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,QAAQ,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ;oBACvD,cAAc,EAAE,IAAI,CAAC,eAAe;iBACrC;aACF;SACF,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,IAAS;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Search Module
|
|
3
|
-
* Exports all web search functionality
|
|
4
|
-
*/
|
|
5
|
-
export { WebSearchTool } from "./web-search-tool.js";
|
|
6
|
-
export { WebSearchRouter } from "./router.js";
|
|
7
|
-
export { SearchCache } from "./cache.js";
|
|
8
|
-
export { NpmSearch } from "./engines/npm.js";
|
|
9
|
-
export { PyPISearch } from "./engines/pypi.js";
|
|
10
|
-
export { CratesSearch } from "./engines/crates.js";
|
|
11
|
-
export type { WebSearchResult, SearchOptions, SearchIntent, SearchEngine, SearchEngineResponse, } from "./types.js";
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Search Module
|
|
3
|
-
* Exports all web search functionality
|
|
4
|
-
*/
|
|
5
|
-
export { WebSearchTool } from "./web-search-tool.js";
|
|
6
|
-
export { WebSearchRouter } from "./router.js";
|
|
7
|
-
export { SearchCache } from "./cache.js";
|
|
8
|
-
export { NpmSearch } from "./engines/npm.js";
|
|
9
|
-
export { PyPISearch } from "./engines/pypi.js";
|
|
10
|
-
export { CratesSearch } from "./engines/crates.js";
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/web-search/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Search Router
|
|
3
|
-
* Detects query intent and routes to appropriate search engines
|
|
4
|
-
*/
|
|
5
|
-
import type { SearchEngine, SearchIntent } from "./types.js";
|
|
6
|
-
export declare class WebSearchRouter {
|
|
7
|
-
private npmEngine;
|
|
8
|
-
private pypiEngine;
|
|
9
|
-
private cratesEngine;
|
|
10
|
-
private readonly technicalKeywords;
|
|
11
|
-
private readonly codeKeywords;
|
|
12
|
-
private readonly packageKeywords;
|
|
13
|
-
private readonly pythonKeywords;
|
|
14
|
-
private readonly rustKeywords;
|
|
15
|
-
private readonly newsKeywords;
|
|
16
|
-
constructor();
|
|
17
|
-
/**
|
|
18
|
-
* Detect the intent of a search query
|
|
19
|
-
*/
|
|
20
|
-
detectIntent(query: string): SearchIntent;
|
|
21
|
-
/**
|
|
22
|
-
* Select the best search engines for a given intent
|
|
23
|
-
*/
|
|
24
|
-
selectEngines(intent: SearchIntent): SearchEngine[];
|
|
25
|
-
/**
|
|
26
|
-
* Get all available engines
|
|
27
|
-
*/
|
|
28
|
-
getAvailableEngines(): SearchEngine[];
|
|
29
|
-
/**
|
|
30
|
-
* Check if any search engine is available
|
|
31
|
-
* Always returns true because package search engines require no API key
|
|
32
|
-
*/
|
|
33
|
-
hasAvailableEngines(): boolean;
|
|
34
|
-
}
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Search Router
|
|
3
|
-
* Detects query intent and routes to appropriate search engines
|
|
4
|
-
*/
|
|
5
|
-
import { NpmSearch } from "./engines/npm.js";
|
|
6
|
-
import { PyPISearch } from "./engines/pypi.js";
|
|
7
|
-
import { CratesSearch } from "./engines/crates.js";
|
|
8
|
-
export class WebSearchRouter {
|
|
9
|
-
npmEngine;
|
|
10
|
-
pypiEngine;
|
|
11
|
-
cratesEngine;
|
|
12
|
-
// Keywords for intent detection
|
|
13
|
-
technicalKeywords = [
|
|
14
|
-
"error",
|
|
15
|
-
"exception",
|
|
16
|
-
"bug",
|
|
17
|
-
"fix",
|
|
18
|
-
"debug",
|
|
19
|
-
"troubleshoot",
|
|
20
|
-
"code",
|
|
21
|
-
"function",
|
|
22
|
-
"method",
|
|
23
|
-
"class",
|
|
24
|
-
"api",
|
|
25
|
-
"library",
|
|
26
|
-
"framework",
|
|
27
|
-
"npm",
|
|
28
|
-
"package",
|
|
29
|
-
"install",
|
|
30
|
-
"configure",
|
|
31
|
-
"implementation",
|
|
32
|
-
"syntax",
|
|
33
|
-
"typescript",
|
|
34
|
-
"javascript",
|
|
35
|
-
"python",
|
|
36
|
-
"java",
|
|
37
|
-
"rust",
|
|
38
|
-
"go",
|
|
39
|
-
];
|
|
40
|
-
codeKeywords = [
|
|
41
|
-
"code",
|
|
42
|
-
"example",
|
|
43
|
-
"implementation",
|
|
44
|
-
"snippet",
|
|
45
|
-
"sample",
|
|
46
|
-
"github",
|
|
47
|
-
"repository",
|
|
48
|
-
"source",
|
|
49
|
-
"function",
|
|
50
|
-
"class",
|
|
51
|
-
"how to",
|
|
52
|
-
"tutorial",
|
|
53
|
-
];
|
|
54
|
-
packageKeywords = [
|
|
55
|
-
"package",
|
|
56
|
-
"npm",
|
|
57
|
-
"library",
|
|
58
|
-
"module",
|
|
59
|
-
"install",
|
|
60
|
-
"dependency",
|
|
61
|
-
"dependencies",
|
|
62
|
-
"node_modules",
|
|
63
|
-
"yarn",
|
|
64
|
-
"pnpm",
|
|
65
|
-
];
|
|
66
|
-
pythonKeywords = [
|
|
67
|
-
"python",
|
|
68
|
-
"pip",
|
|
69
|
-
"pypi",
|
|
70
|
-
"django",
|
|
71
|
-
"flask",
|
|
72
|
-
"fastapi",
|
|
73
|
-
"pandas",
|
|
74
|
-
"numpy",
|
|
75
|
-
"pytest",
|
|
76
|
-
"virtualenv",
|
|
77
|
-
"conda",
|
|
78
|
-
"poetry",
|
|
79
|
-
];
|
|
80
|
-
rustKeywords = [
|
|
81
|
-
"rust",
|
|
82
|
-
"cargo",
|
|
83
|
-
"crate",
|
|
84
|
-
"crates.io",
|
|
85
|
-
"rustc",
|
|
86
|
-
"tokio",
|
|
87
|
-
"serde",
|
|
88
|
-
"actix",
|
|
89
|
-
"wasm",
|
|
90
|
-
];
|
|
91
|
-
newsKeywords = [
|
|
92
|
-
"news",
|
|
93
|
-
"latest",
|
|
94
|
-
"today",
|
|
95
|
-
"yesterday",
|
|
96
|
-
"recent",
|
|
97
|
-
"update",
|
|
98
|
-
"announcement",
|
|
99
|
-
"release",
|
|
100
|
-
"2025",
|
|
101
|
-
"2024",
|
|
102
|
-
"current",
|
|
103
|
-
"breaking",
|
|
104
|
-
"trending",
|
|
105
|
-
];
|
|
106
|
-
constructor() {
|
|
107
|
-
this.npmEngine = new NpmSearch(); // Always available (no API key)
|
|
108
|
-
this.pypiEngine = new PyPISearch(); // Always available (no API key)
|
|
109
|
-
this.cratesEngine = new CratesSearch(); // Always available (no API key)
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Detect the intent of a search query
|
|
113
|
-
*/
|
|
114
|
-
detectIntent(query) {
|
|
115
|
-
const lowerQuery = query.toLowerCase();
|
|
116
|
-
const words = lowerQuery.split(/\s+/);
|
|
117
|
-
let technicalScore = 0;
|
|
118
|
-
let codeScore = 0;
|
|
119
|
-
let newsScore = 0;
|
|
120
|
-
let packageScore = 0;
|
|
121
|
-
let pythonScore = 0;
|
|
122
|
-
let rustScore = 0;
|
|
123
|
-
// Count keyword matches
|
|
124
|
-
for (const word of words) {
|
|
125
|
-
if (this.technicalKeywords.some((kw) => word.includes(kw))) {
|
|
126
|
-
technicalScore++;
|
|
127
|
-
}
|
|
128
|
-
if (this.codeKeywords.some((kw) => word.includes(kw))) {
|
|
129
|
-
codeScore++;
|
|
130
|
-
}
|
|
131
|
-
if (this.newsKeywords.some((kw) => word.includes(kw))) {
|
|
132
|
-
newsScore++;
|
|
133
|
-
}
|
|
134
|
-
if (this.packageKeywords.some((kw) => word.includes(kw))) {
|
|
135
|
-
packageScore++;
|
|
136
|
-
}
|
|
137
|
-
if (this.pythonKeywords.some((kw) => word.includes(kw))) {
|
|
138
|
-
pythonScore++;
|
|
139
|
-
}
|
|
140
|
-
if (this.rustKeywords.some((kw) => word.includes(kw))) {
|
|
141
|
-
rustScore++;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// Determine primary intent
|
|
145
|
-
let type = "general";
|
|
146
|
-
let confidence = 0.5; // Default confidence
|
|
147
|
-
let language = undefined;
|
|
148
|
-
// Detect language first
|
|
149
|
-
if (pythonScore > 0 && pythonScore >= rustScore) {
|
|
150
|
-
language = "python";
|
|
151
|
-
}
|
|
152
|
-
else if (rustScore > 0 && rustScore > pythonScore) {
|
|
153
|
-
language = "rust";
|
|
154
|
-
}
|
|
155
|
-
else if (packageScore > 0) {
|
|
156
|
-
language = "javascript"; // npm implies JavaScript
|
|
157
|
-
}
|
|
158
|
-
// Package search takes priority if npm keywords detected
|
|
159
|
-
if (packageScore > 0 || pythonScore > 0 || rustScore > 0) {
|
|
160
|
-
type = "technical"; // Packages are technical
|
|
161
|
-
confidence = Math.min((packageScore + pythonScore + rustScore) / words.length + 0.6, 1.0);
|
|
162
|
-
}
|
|
163
|
-
else if (newsScore > 0) {
|
|
164
|
-
type = "news";
|
|
165
|
-
confidence = Math.min(newsScore / words.length + 0.5, 1.0);
|
|
166
|
-
}
|
|
167
|
-
else if (codeScore > technicalScore) {
|
|
168
|
-
type = "code";
|
|
169
|
-
confidence = Math.min(codeScore / words.length + 0.5, 1.0);
|
|
170
|
-
}
|
|
171
|
-
else if (technicalScore > 0) {
|
|
172
|
-
type = "technical";
|
|
173
|
-
confidence = Math.min(technicalScore / words.length + 0.5, 1.0);
|
|
174
|
-
}
|
|
175
|
-
return {
|
|
176
|
-
type,
|
|
177
|
-
requiresTechnical: technicalScore > 0 || packageScore > 0 || pythonScore > 0 || rustScore > 0,
|
|
178
|
-
requiresCode: codeScore > 0,
|
|
179
|
-
requiresNews: newsScore > 0,
|
|
180
|
-
confidence,
|
|
181
|
-
language,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Select the best search engines for a given intent
|
|
186
|
-
*/
|
|
187
|
-
selectEngines(intent) {
|
|
188
|
-
const engines = [];
|
|
189
|
-
// Check if query contains package keywords - prioritize language-specific search
|
|
190
|
-
const hasPackageIntent = intent.requiresTechnical && intent.confidence > 0.6;
|
|
191
|
-
// Select engines based on intent type
|
|
192
|
-
switch (intent.type) {
|
|
193
|
-
case "technical":
|
|
194
|
-
case "code":
|
|
195
|
-
// Route to language-specific package search
|
|
196
|
-
if (hasPackageIntent && intent.language) {
|
|
197
|
-
if (intent.language === "python") {
|
|
198
|
-
engines.push(this.pypiEngine); // Python packages
|
|
199
|
-
}
|
|
200
|
-
else if (intent.language === "rust") {
|
|
201
|
-
engines.push(this.cratesEngine); // Rust crates
|
|
202
|
-
}
|
|
203
|
-
else if (intent.language === "javascript") {
|
|
204
|
-
engines.push(this.npmEngine); // npm packages
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else if (hasPackageIntent) {
|
|
208
|
-
// Default to npm if language not detected
|
|
209
|
-
engines.push(this.npmEngine);
|
|
210
|
-
}
|
|
211
|
-
break;
|
|
212
|
-
case "news":
|
|
213
|
-
case "general":
|
|
214
|
-
default:
|
|
215
|
-
// Default to npm for general queries (always available)
|
|
216
|
-
engines.push(this.npmEngine);
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
// Package search as ultimate fallback (always available, no API key needed)
|
|
220
|
-
// Prefer npm as it's most commonly used
|
|
221
|
-
if (engines.length === 0) {
|
|
222
|
-
engines.push(this.npmEngine);
|
|
223
|
-
}
|
|
224
|
-
return engines;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Get all available engines
|
|
228
|
-
*/
|
|
229
|
-
getAvailableEngines() {
|
|
230
|
-
const engines = [];
|
|
231
|
-
// Package search engines are always available (no API key required)
|
|
232
|
-
engines.push(this.npmEngine);
|
|
233
|
-
engines.push(this.pypiEngine);
|
|
234
|
-
engines.push(this.cratesEngine);
|
|
235
|
-
return engines;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Check if any search engine is available
|
|
239
|
-
* Always returns true because package search engines require no API key
|
|
240
|
-
*/
|
|
241
|
-
hasAvailableEngines() {
|
|
242
|
-
return true; // npm, PyPI, and crates.io search are always available
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
//# sourceMappingURL=router.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/tools/web-search/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,eAAe;IAClB,SAAS,CAAY;IACrB,UAAU,CAAa;IACvB,YAAY,CAAe;IAEnC,gCAAgC;IACf,iBAAiB,GAAG;QACnC,OAAO;QACP,WAAW;QACX,KAAK;QACL,KAAK;QACL,OAAO;QACP,cAAc;QACd,MAAM;QACN,UAAU;QACV,QAAQ;QACR,OAAO;QACP,KAAK;QACL,SAAS;QACT,WAAW;QACX,KAAK;QACL,SAAS;QACT,SAAS;QACT,WAAW;QACX,gBAAgB;QAChB,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAC;IAEe,YAAY,GAAG;QAC9B,MAAM;QACN,SAAS;QACT,gBAAgB;QAChB,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,UAAU;QACV,OAAO;QACP,QAAQ;QACR,UAAU;KACX,CAAC;IAEe,eAAe,GAAG;QACjC,SAAS;QACT,KAAK;QACL,SAAS;QACT,QAAQ;QACR,SAAS;QACT,YAAY;QACZ,cAAc;QACd,cAAc;QACd,MAAM;QACN,MAAM;KACP,CAAC;IAEe,cAAc,GAAG;QAChC,QAAQ;QACR,KAAK;QACL,MAAM;QACN,QAAQ;QACR,OAAO;QACP,SAAS;QACT,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,OAAO;QACP,QAAQ;KACT,CAAC;IAEe,YAAY,GAAG;QAC9B,MAAM;QACN,OAAO;QACP,OAAO;QACP,WAAW;QACX,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC;IAEe,YAAY,GAAG;QAC9B,MAAM;QACN,QAAQ;QACR,OAAO;QACP,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,SAAS;QACT,MAAM;QACN,MAAM;QACN,SAAS;QACT,UAAU;QACV,UAAU;KACX,CAAC;IAEF;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC,gCAAgC;QAClE,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC,CAAC,gCAAgC;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC,CAAC,gCAAgC;IAC1E,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAAa;QACxB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,wBAAwB;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC3D,cAAc,EAAE,CAAC;YACnB,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtD,SAAS,EAAE,CAAC;YACd,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtD,SAAS,EAAE,CAAC;YACd,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACzD,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACxD,WAAW,EAAE,CAAC;YAChB,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtD,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,GAAyB,SAAS,CAAC;QAC3C,IAAI,UAAU,GAAG,GAAG,CAAC,CAAC,qBAAqB;QAC3C,IAAI,QAAQ,GAA6B,SAAS,CAAC;QAEnD,wBAAwB;QACxB,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAChD,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,WAAW,EAAE,CAAC;YACpD,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,QAAQ,GAAG,YAAY,CAAC,CAAC,yBAAyB;QACpD,CAAC;QAED,yDAAyD;QACzD,IAAI,YAAY,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACzD,IAAI,GAAG,WAAW,CAAC,CAAC,yBAAyB;YAC7C,UAAU,GAAG,IAAI,CAAC,GAAG,CACnB,CAAC,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,EAC7D,GAAG,CACJ,CAAC;QACJ,CAAC;aAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,GAAG,MAAM,CAAC;YACd,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,SAAS,GAAG,cAAc,EAAE,CAAC;YACtC,IAAI,GAAG,MAAM,CAAC;YACd,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,WAAW,CAAC;YACnB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;QAED,OAAO;YACL,IAAI;YACJ,iBAAiB,EACf,cAAc,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC;YAC5E,YAAY,EAAE,SAAS,GAAG,CAAC;YAC3B,YAAY,EAAE,SAAS,GAAG,CAAC;YAC3B,UAAU;YACV,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAoB;QAChC,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,iFAAiF;QACjF,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;QAE7E,sCAAsC;QACtC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,WAAW,CAAC;YACjB,KAAK,MAAM;gBACT,4CAA4C;gBAC5C,IAAI,gBAAgB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB;oBACnD,CAAC;yBAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;wBACtC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc;oBACjD,CAAC;yBAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;wBAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;oBAC/C,CAAC;gBACH,CAAC;qBAAM,IAAI,gBAAgB,EAAE,CAAC;oBAC5B,0CAA0C;oBAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,MAAM;YAER,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf;gBACE,wDAAwD;gBACxD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,MAAM;QACV,CAAC;QAED,4EAA4E;QAC5E,wCAAwC;QACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,oEAAoE;QACpE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,CAAC,uDAAuD;IACtE,CAAC;CACF"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Search Types
|
|
3
|
-
* Common interfaces and types for web search functionality
|
|
4
|
-
*/
|
|
5
|
-
export interface WebSearchResult {
|
|
6
|
-
title: string;
|
|
7
|
-
url: string;
|
|
8
|
-
snippet: string;
|
|
9
|
-
source: string;
|
|
10
|
-
relevanceScore?: number;
|
|
11
|
-
publishedDate?: string;
|
|
12
|
-
metadata?: Record<string, any>;
|
|
13
|
-
}
|
|
14
|
-
export interface SearchOptions {
|
|
15
|
-
maxResults?: number;
|
|
16
|
-
includeAnswer?: boolean;
|
|
17
|
-
searchDepth?: "basic" | "advanced";
|
|
18
|
-
freshness?: "day" | "week" | "month" | "year";
|
|
19
|
-
includeDomains?: string[];
|
|
20
|
-
excludeDomains?: string[];
|
|
21
|
-
timeout?: number;
|
|
22
|
-
}
|
|
23
|
-
export interface SearchIntent {
|
|
24
|
-
type: "general" | "technical" | "news" | "code";
|
|
25
|
-
requiresTechnical: boolean;
|
|
26
|
-
requiresCode: boolean;
|
|
27
|
-
requiresNews: boolean;
|
|
28
|
-
confidence: number;
|
|
29
|
-
language?: "javascript" | "python" | "rust";
|
|
30
|
-
}
|
|
31
|
-
export interface SearchEngine {
|
|
32
|
-
name: string;
|
|
33
|
-
search(query: string, options?: SearchOptions): Promise<WebSearchResult[]>;
|
|
34
|
-
isAvailable(): boolean;
|
|
35
|
-
getQuota?(): {
|
|
36
|
-
remaining: number;
|
|
37
|
-
limit: number;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
export interface SearchEngineResponse {
|
|
41
|
-
results: WebSearchResult[];
|
|
42
|
-
answer?: string;
|
|
43
|
-
totalResults?: number;
|
|
44
|
-
query: string;
|
|
45
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/web-search/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Search Tool
|
|
3
|
-
* Main tool for web search functionality in AX CLI
|
|
4
|
-
*/
|
|
5
|
-
import type { ToolResult } from "../../types/index.js";
|
|
6
|
-
import type { SearchOptions } from "./types.js";
|
|
7
|
-
export declare class WebSearchTool {
|
|
8
|
-
private router;
|
|
9
|
-
private cache;
|
|
10
|
-
private readonly DEFAULT_MAX_RESULTS;
|
|
11
|
-
private readonly MAX_RESULTS_LIMIT;
|
|
12
|
-
private readonly MAX_PARALLEL_ENGINES;
|
|
13
|
-
constructor();
|
|
14
|
-
/**
|
|
15
|
-
* Search the web for information
|
|
16
|
-
*/
|
|
17
|
-
search(query: string, options?: SearchOptions): Promise<ToolResult>;
|
|
18
|
-
/**
|
|
19
|
-
* Sanitize search query to prevent injection attacks
|
|
20
|
-
*/
|
|
21
|
-
private sanitizeQuery;
|
|
22
|
-
/**
|
|
23
|
-
* Aggregate and deduplicate results from multiple search engines
|
|
24
|
-
*/
|
|
25
|
-
private aggregateResults;
|
|
26
|
-
/**
|
|
27
|
-
* Get bonus score for specific search engines
|
|
28
|
-
*/
|
|
29
|
-
private getSourceBonus;
|
|
30
|
-
/**
|
|
31
|
-
* Format search results for display
|
|
32
|
-
*/
|
|
33
|
-
private formatResults;
|
|
34
|
-
/**
|
|
35
|
-
* Get cache statistics (for debugging/monitoring)
|
|
36
|
-
*/
|
|
37
|
-
getCacheStats(): {
|
|
38
|
-
keys: number;
|
|
39
|
-
hits: number;
|
|
40
|
-
misses: number;
|
|
41
|
-
hitRate: number;
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Clear search cache
|
|
45
|
-
*/
|
|
46
|
-
clearCache(): void;
|
|
47
|
-
/**
|
|
48
|
-
* Check if web search is available
|
|
49
|
-
*/
|
|
50
|
-
isAvailable(): boolean;
|
|
51
|
-
}
|