@onedotmint/siftpath 0.0.0-stage → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +165 -2
- package/THIRD_PARTY_NOTICES.md +26 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +116 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +144 -0
- package/dist/client.js +130 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +107 -0
- package/dist/config.js +127 -0
- package/dist/config.js.map +1 -0
- package/dist/defaults.d.ts +38 -0
- package/dist/defaults.js +31 -0
- package/dist/defaults.js.map +1 -0
- package/dist/diagnostics.d.ts +158 -0
- package/dist/diagnostics.js +202 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.js +16 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/inputs.d.ts +25 -0
- package/dist/inputs.js +27 -0
- package/dist/inputs.js.map +1 -0
- package/dist/mcp/stdio.d.ts +2 -0
- package/dist/mcp/stdio.js +43 -0
- package/dist/mcp/stdio.js.map +1 -0
- package/dist/output.d.ts +23 -0
- package/dist/output.js +118 -0
- package/dist/output.js.map +1 -0
- package/dist/router.d.ts +20 -0
- package/dist/router.js +85 -0
- package/dist/router.js.map +1 -0
- package/dist/setup-ui.d.ts +8 -0
- package/dist/setup-ui.js +3032 -0
- package/dist/setup-ui.js.map +1 -0
- package/dist/setup.d.ts +2 -0
- package/dist/setup.js +50 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools.d.ts +35 -0
- package/dist/tools.js +17 -0
- package/dist/tools.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/docs/ARCHITECTURE.md +33 -0
- package/docs/CONFIGURATION.md +127 -0
- package/docs/DIAGNOSTICS.md +109 -0
- package/docs/MIGRATION.md +13 -0
- package/docs/PROVIDERS.md +43 -0
- package/docs/SECURITY.md +15 -0
- package/docs/TESTING.md +138 -0
- package/examples/anonymous.json +36 -0
- package/extensions/siftpath.mjs +32 -0
- package/package.json +60 -4
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type Diagnostic } from './errors.js';
|
|
3
|
+
export declare const configurationMaxBytes = 65536;
|
|
4
|
+
declare const bindingSchema: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
7
|
+
}, z.core.$strict>;
|
|
8
|
+
declare const providerSchema: z.ZodObject<{
|
|
9
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
connection: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
11
|
+
transport: z.ZodLiteral<"stdio">;
|
|
12
|
+
command: z.ZodString;
|
|
13
|
+
args: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
14
|
+
env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
15
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
16
|
+
transport: z.ZodLiteral<"http">;
|
|
17
|
+
url: z.ZodString;
|
|
18
|
+
headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
19
|
+
}, z.core.$strict>], "transport">;
|
|
20
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
search: z.ZodOptional<z.ZodObject<{
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
24
|
+
}, z.core.$strict>>;
|
|
25
|
+
read: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
name: z.ZodString;
|
|
27
|
+
arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
28
|
+
}, z.core.$strict>>;
|
|
29
|
+
}, z.core.$strict>;
|
|
30
|
+
declare const schema: z.ZodObject<{
|
|
31
|
+
version: z.ZodDefault<z.ZodLiteral<2>>;
|
|
32
|
+
credentials: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
33
|
+
providers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
34
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
35
|
+
connection: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
36
|
+
transport: z.ZodLiteral<"stdio">;
|
|
37
|
+
command: z.ZodString;
|
|
38
|
+
args: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
39
|
+
env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
40
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
41
|
+
transport: z.ZodLiteral<"http">;
|
|
42
|
+
url: z.ZodString;
|
|
43
|
+
headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
44
|
+
}, z.core.$strict>], "transport">;
|
|
45
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
search: z.ZodOptional<z.ZodObject<{
|
|
47
|
+
name: z.ZodString;
|
|
48
|
+
arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
49
|
+
}, z.core.$strict>>;
|
|
50
|
+
read: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
name: z.ZodString;
|
|
52
|
+
arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
53
|
+
}, z.core.$strict>>;
|
|
54
|
+
}, z.core.$strict>>>;
|
|
55
|
+
routes: z.ZodDefault<z.ZodObject<{
|
|
56
|
+
defaultIntent: z.ZodDefault<z.ZodEnum<{
|
|
57
|
+
general: "general";
|
|
58
|
+
semantic: "semantic";
|
|
59
|
+
research: "research";
|
|
60
|
+
}>>;
|
|
61
|
+
search: z.ZodDefault<z.ZodString>;
|
|
62
|
+
read: z.ZodDefault<z.ZodString>;
|
|
63
|
+
intents: z.ZodDefault<z.ZodObject<{
|
|
64
|
+
general: z.ZodOptional<z.ZodString>;
|
|
65
|
+
semantic: z.ZodOptional<z.ZodString>;
|
|
66
|
+
research: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, z.core.$strict>>;
|
|
68
|
+
searchFallback: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
69
|
+
readFallback: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
70
|
+
}, z.core.$strict>>;
|
|
71
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
72
|
+
providerTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
73
|
+
maxOutputChars: z.ZodDefault<z.ZodNumber>;
|
|
74
|
+
}, z.core.$strict>;
|
|
75
|
+
export type Configuration = z.infer<typeof schema>;
|
|
76
|
+
export type Provider = z.infer<typeof providerSchema>;
|
|
77
|
+
export type Binding = z.infer<typeof bindingSchema>;
|
|
78
|
+
export declare function parseConfiguration(value: unknown): Configuration;
|
|
79
|
+
export declare function configPath(env?: NodeJS.ProcessEnv): string;
|
|
80
|
+
export declare function readConfiguration(path?: string, env?: NodeJS.ProcessEnv): Promise<Configuration>;
|
|
81
|
+
/** Private user storage, never a workspace .env file; atomic replace with mode 0600. */
|
|
82
|
+
export declare function writePrivateJson(path: string, value: unknown, maxBytes?: number): Promise<void>;
|
|
83
|
+
export declare function resolveSecret(value: string, config: Configuration, env: NodeJS.ProcessEnv): string;
|
|
84
|
+
export declare function providerStatus(id: string, config: Configuration, env: NodeJS.ProcessEnv): Diagnostic;
|
|
85
|
+
export declare function diagnostics(config: Configuration, env?: NodeJS.ProcessEnv): {
|
|
86
|
+
runtime: string;
|
|
87
|
+
networkChecked: boolean;
|
|
88
|
+
providers: {
|
|
89
|
+
operations: string[];
|
|
90
|
+
provider: string;
|
|
91
|
+
code: string;
|
|
92
|
+
needs?: string[];
|
|
93
|
+
}[];
|
|
94
|
+
routes: {
|
|
95
|
+
defaultIntent: "general" | "semantic" | "research";
|
|
96
|
+
search: string;
|
|
97
|
+
read: string;
|
|
98
|
+
intents: {
|
|
99
|
+
general?: string | undefined;
|
|
100
|
+
semantic?: string | undefined;
|
|
101
|
+
research?: string | undefined;
|
|
102
|
+
};
|
|
103
|
+
searchFallback: string[];
|
|
104
|
+
readFallback: string[];
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
export {};
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { readFile, mkdir, writeFile, rename, lstat, chmod, rm } from 'node:fs/promises';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { randomUUID } from 'node:crypto';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { SiftpathError } from './errors.js';
|
|
8
|
+
import { intentSchema } from './inputs.js';
|
|
9
|
+
import { defaultProviders, defaultRoutes } from './defaults.js';
|
|
10
|
+
export const configurationMaxBytes = 65536;
|
|
11
|
+
const clean = z.string().min(1).max(4096).regex(/^[^\r\n\0]+$/);
|
|
12
|
+
const bindingSchema = z.strictObject({ name: clean, arguments: z.record(z.string(), z.unknown()).default({}) });
|
|
13
|
+
const connectionSchema = z.discriminatedUnion('transport', [
|
|
14
|
+
z.strictObject({ transport: z.literal('stdio'), command: clean.refine(value => !value.includes('${')), args: z.array(clean.refine(value => !value.includes('${'))).default([]), env: z.record(z.string(), clean).default({}) }),
|
|
15
|
+
z.strictObject({ transport: z.literal('http'), url: clean.refine(value => {
|
|
16
|
+
try {
|
|
17
|
+
const url = new URL(value);
|
|
18
|
+
return !url.username && !url.password && !url.hash && !value.includes('${') &&
|
|
19
|
+
![...url.searchParams.keys()].some(key => /api.?key|^key$|^token$|access.?token|auth|secret|credential/i.test(key)) &&
|
|
20
|
+
(url.protocol === 'https:' || url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}), headers: z.record(z.string(), clean).default({}) }),
|
|
26
|
+
]);
|
|
27
|
+
const timeout = z.number().int().min(100).max(120000);
|
|
28
|
+
const providerSchema = z.strictObject({ enabled: z.boolean().default(true), connection: connectionSchema,
|
|
29
|
+
timeoutMs: timeout.optional(), search: bindingSchema.optional(), read: bindingSchema.optional() });
|
|
30
|
+
const routesSchema = z.strictObject({ defaultIntent: intentSchema.default(defaultRoutes.defaultIntent), search: clean.default(defaultRoutes.search), read: clean.default(defaultRoutes.read),
|
|
31
|
+
intents: z.strictObject({ general: clean.optional(), semantic: clean.optional(), research: clean.optional() }).default(defaultRoutes.intents),
|
|
32
|
+
searchFallback: z.array(clean).max(10).default(defaultRoutes.searchFallback), readFallback: z.array(clean).max(10).default(defaultRoutes.readFallback) });
|
|
33
|
+
const schema = z.strictObject({ version: z.literal(2).default(2), credentials: z.record(z.string().regex(/^[A-Z][A-Z0-9_]*$/), clean).default({}),
|
|
34
|
+
providers: z.record(z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/), providerSchema).default(defaultProviders),
|
|
35
|
+
routes: routesSchema.default(defaultRoutes), timeoutMs: timeout.default(60000), providerTimeoutMs: timeout.default(20000),
|
|
36
|
+
maxOutputChars: z.number().int().min(2000).max(50000).default(16000) });
|
|
37
|
+
export function parseConfiguration(value) {
|
|
38
|
+
const parsed = schema.safeParse(value);
|
|
39
|
+
if (!parsed.success)
|
|
40
|
+
throw new SiftpathError('INVALID_CONFIG', 'Invalid configuration (version 2 required). See docs/CONFIGURATION.md; values are never echoed.');
|
|
41
|
+
const config = structuredClone(parsed.data);
|
|
42
|
+
for (const id of [config.routes.search, config.routes.read, ...Object.values(config.routes.intents), ...config.routes.searchFallback, ...config.routes.readFallback]) {
|
|
43
|
+
// Built-in routes may refer to absent optional providers; unknown custom IDs are still diagnosed by doctor.
|
|
44
|
+
if (id && !/^[a-z][a-z0-9_-]{0,63}$/.test(id))
|
|
45
|
+
throw new SiftpathError('INVALID_CONFIG', 'Invalid route provider ID.');
|
|
46
|
+
}
|
|
47
|
+
return config;
|
|
48
|
+
}
|
|
49
|
+
export function configPath(env = process.env) {
|
|
50
|
+
const override = env.SIFTPATH_CONFIG ?? env.SMARTSEARCH_CONFIG;
|
|
51
|
+
if (override)
|
|
52
|
+
return override;
|
|
53
|
+
const root = env.XDG_CONFIG_HOME || join(homedir(), '.config');
|
|
54
|
+
const current = join(root, 'siftpath', 'config.json'), legacy = join(root, 'smartsearch', 'config.json');
|
|
55
|
+
return existsSync(current) || !existsSync(legacy) ? current : legacy;
|
|
56
|
+
}
|
|
57
|
+
export async function readConfiguration(path = configPath(), env = process.env) {
|
|
58
|
+
let raw = {};
|
|
59
|
+
try {
|
|
60
|
+
const stats = await lstat(path);
|
|
61
|
+
if (!stats.isFile() || stats.isSymbolicLink() || stats.size > configurationMaxBytes)
|
|
62
|
+
throw new SiftpathError('INVALID_CONFIG', 'Configuration must be a regular JSON file of at most 64 KiB.');
|
|
63
|
+
raw = JSON.parse(await readFile(path, 'utf8'));
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error.code !== 'ENOENT') {
|
|
67
|
+
if (error instanceof SiftpathError)
|
|
68
|
+
throw error;
|
|
69
|
+
throw new SiftpathError('CONFIG_READ_FAILED', 'Cannot read configuration JSON. Check format and permissions.');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Old credentials can be reused, but old engine options must never silently change the new routes.
|
|
73
|
+
if (raw && typeof raw === 'object' && 'version' in raw && raw.version === 1) {
|
|
74
|
+
const old = raw;
|
|
75
|
+
raw = { version: 2, credentials: old.credentials ?? {}, providers: Object.fromEntries(Object.entries(defaultProviders).map(([id, provider]) => [id, { ...provider, enabled: provider.enabled && !old.disabled?.includes(id) }])) };
|
|
76
|
+
}
|
|
77
|
+
const config = parseConfiguration(raw);
|
|
78
|
+
const names = new Set([...Object.keys(config.credentials), ...[...JSON.stringify(config.providers).matchAll(/\$\{([A-Z][A-Z0-9_]*)\}/g)].map(match => match[1])]);
|
|
79
|
+
for (const name of names)
|
|
80
|
+
if (env[name]?.trim())
|
|
81
|
+
config.credentials[name] = env[name].trim();
|
|
82
|
+
return parseConfiguration(config);
|
|
83
|
+
}
|
|
84
|
+
/** Private user storage, never a workspace .env file; atomic replace with mode 0600. */
|
|
85
|
+
export async function writePrivateJson(path, value, maxBytes = Infinity) {
|
|
86
|
+
const serialized = JSON.stringify(value, null, 2) + '\n';
|
|
87
|
+
if (Buffer.byteLength(serialized) > maxBytes)
|
|
88
|
+
throw new SiftpathError('CONFIG_TOO_LARGE', 'Formatted configuration exceeds the size limit; existing file was not changed.');
|
|
89
|
+
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
90
|
+
try {
|
|
91
|
+
if ((await lstat(path)).isSymbolicLink())
|
|
92
|
+
throw new SiftpathError('UNSAFE_CONFIG_PATH', 'Refusing to replace a symbolic link.');
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (error.code !== 'ENOENT')
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
const temporary = `${path}.${randomUUID()}.tmp`;
|
|
99
|
+
await writeFile(temporary, serialized, { flag: 'wx', mode: 0o600 });
|
|
100
|
+
try {
|
|
101
|
+
await rename(temporary, path);
|
|
102
|
+
if (process.platform !== 'win32')
|
|
103
|
+
await chmod(path, 0o600);
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
await rm(temporary, { force: true });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export function resolveSecret(value, config, env) {
|
|
110
|
+
return value.replace(/\$\{([A-Z][A-Z0-9_]*)\}/g, (_, name) => env[name]?.trim() || config.credentials[name] || '');
|
|
111
|
+
}
|
|
112
|
+
export function providerStatus(id, config, env) {
|
|
113
|
+
const provider = Object.hasOwn(config.providers, id) ? config.providers[id] : undefined;
|
|
114
|
+
if (!provider)
|
|
115
|
+
return { provider: id, code: 'NOT_CONFIGURED' };
|
|
116
|
+
if (!provider.enabled)
|
|
117
|
+
return { provider: id, code: 'DISABLED' };
|
|
118
|
+
const needs = [...new Set([...JSON.stringify(provider.connection).matchAll(/\$\{([A-Z][A-Z0-9_]*)\}/g)].map(m => m[1]))]
|
|
119
|
+
.filter(name => !env[name]?.trim() && !config.credentials[name]);
|
|
120
|
+
return { provider: id, code: needs.length ? 'MISSING_CREDENTIALS' : 'READY', ...(needs.length ? { needs } : {}) };
|
|
121
|
+
}
|
|
122
|
+
export function diagnostics(config, env = process.env) {
|
|
123
|
+
const ids = new Set([...Object.keys(config.providers), config.routes.search, config.routes.read, ...Object.values(config.routes.intents),
|
|
124
|
+
...config.routes.searchFallback, ...config.routes.readFallback].filter((id) => !!id));
|
|
125
|
+
return { runtime: process.version, networkChecked: false, providers: [...ids].map(id => ({ ...providerStatus(id, config, env), operations: ['search', 'read'].filter(kind => !!config.providers[id]?.[kind]) })), routes: config.routes };
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Provider } from './config.js';
|
|
2
|
+
export declare const providerPresets: Record<string, Provider>;
|
|
3
|
+
export declare const anonymousPresets: Record<string, Provider>;
|
|
4
|
+
export declare const defaultProviders: {
|
|
5
|
+
[k: string]: {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
connection: {
|
|
8
|
+
transport: "stdio";
|
|
9
|
+
command: string;
|
|
10
|
+
args: string[];
|
|
11
|
+
env: Record<string, string>;
|
|
12
|
+
} | {
|
|
13
|
+
transport: "http";
|
|
14
|
+
url: string;
|
|
15
|
+
headers: Record<string, string>;
|
|
16
|
+
};
|
|
17
|
+
timeoutMs?: number | undefined;
|
|
18
|
+
search?: {
|
|
19
|
+
name: string;
|
|
20
|
+
arguments: Record<string, unknown>;
|
|
21
|
+
} | undefined;
|
|
22
|
+
read?: {
|
|
23
|
+
name: string;
|
|
24
|
+
arguments: Record<string, unknown>;
|
|
25
|
+
} | undefined;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export declare const defaultRoutes: {
|
|
29
|
+
defaultIntent: "general";
|
|
30
|
+
search: string;
|
|
31
|
+
read: string;
|
|
32
|
+
intents: {
|
|
33
|
+
semantic: string;
|
|
34
|
+
research: string;
|
|
35
|
+
};
|
|
36
|
+
searchFallback: string[];
|
|
37
|
+
readFallback: never[];
|
|
38
|
+
};
|
package/dist/defaults.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Official tool names/arguments were checked against upstream definitions; see docs/PROVIDERS.md.
|
|
2
|
+
export const providerPresets = {
|
|
3
|
+
brave: { enabled: true,
|
|
4
|
+
connection: { transport: 'stdio', command: 'npx', args: ['-y', '@brave/brave-search-mcp-server@2.1.4', '--transport', 'stdio'],
|
|
5
|
+
env: { BRAVE_API_KEY: '${BRAVE_API_KEY}', BRAVE_MCP_ENABLED_TOOLS: 'brave_web_search' } },
|
|
6
|
+
search: { name: 'brave_web_search', arguments: { query: '$query', count: '$maxResults' } } },
|
|
7
|
+
exa: { enabled: true,
|
|
8
|
+
connection: { transport: 'stdio', command: 'npx', args: ['-y', 'exa-mcp-server@3.4.2'], env: { EXA_API_KEY: '${EXA_API_KEY}' } },
|
|
9
|
+
search: { name: 'web_search_exa', arguments: { query: '$query', numResults: '$maxResults' } } },
|
|
10
|
+
tavily: { enabled: true, timeoutMs: 60000,
|
|
11
|
+
connection: { transport: 'stdio', command: 'npx', args: ['-y', 'tavily-mcp@0.2.22'], env: { TAVILY_API_KEY: '${TAVILY_API_KEY}' } },
|
|
12
|
+
search: { name: 'tavily_search', arguments: { query: '$query', max_results: '$maxResults', search_depth: 'basic' } } },
|
|
13
|
+
jina: { enabled: true,
|
|
14
|
+
connection: { transport: 'http', url: 'https://mcp.jina.ai/v1', headers: { Authorization: 'Bearer ${JINA_API_KEY}' } },
|
|
15
|
+
read: { name: 'read_url', arguments: { url: '$url', question: '$focus' } } },
|
|
16
|
+
firecrawl: { enabled: true, timeoutMs: 60000,
|
|
17
|
+
connection: { transport: 'stdio', command: 'npx', args: ['-y', 'firecrawl-mcp@3.33.4'], env: { FIRECRAWL_API_KEY: '${FIRECRAWL_API_KEY}' } },
|
|
18
|
+
read: { name: 'firecrawl_scrape', arguments: { url: '$url', formats: ['markdown'] } } },
|
|
19
|
+
};
|
|
20
|
+
export const anonymousPresets = {
|
|
21
|
+
exa: { ...providerPresets.exa, connection: { transport: 'http', url: 'https://mcp.exa.ai/mcp', headers: {} },
|
|
22
|
+
search: { name: 'web_search_exa', arguments: { query: '$query', objective: '$query', numResults: '$maxResults' } } },
|
|
23
|
+
jina: { ...providerPresets.jina, connection: { transport: 'http', url: 'https://mcp.jina.ai/v1', headers: {} } },
|
|
24
|
+
tavily: { ...providerPresets.tavily, connection: { transport: 'stdio', command: 'npx', args: ['-y', 'tavily-mcp@0.2.22'], env: {} } },
|
|
25
|
+
firecrawl: { ...providerPresets.firecrawl, connection: { transport: 'http', url: 'https://mcp.firecrawl.dev/v2/mcp', headers: {} },
|
|
26
|
+
read: { name: 'firecrawl_scrape', arguments: { url: '$url', formats: ['markdown'], onlyMainContent: true, objective: 'Read the supplied public webpage as Markdown.' } } },
|
|
27
|
+
};
|
|
28
|
+
export const defaultProviders = Object.fromEntries(Object.entries(providerPresets).map(([id, provider]) => [id, { ...provider, enabled: !['tavily', 'firecrawl'].includes(id) }]));
|
|
29
|
+
export const defaultRoutes = { defaultIntent: 'general', search: 'brave', read: 'jina',
|
|
30
|
+
intents: { semantic: 'exa', research: 'tavily' }, searchFallback: ['brave', 'exa'], readFallback: [] };
|
|
31
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type Configuration } from './config.js';
|
|
3
|
+
declare const testSchema: z.ZodObject<{
|
|
4
|
+
provider: z.ZodString;
|
|
5
|
+
testedAt: z.ZodISODateTime;
|
|
6
|
+
durationMs: z.ZodNumber;
|
|
7
|
+
outcome: z.ZodEnum<{
|
|
8
|
+
failed: "failed";
|
|
9
|
+
passed: "passed";
|
|
10
|
+
skipped: "skipped";
|
|
11
|
+
}>;
|
|
12
|
+
code: z.ZodOptional<z.ZodEnum<{
|
|
13
|
+
NOT_CONFIGURED: "NOT_CONFIGURED";
|
|
14
|
+
DISABLED: "DISABLED";
|
|
15
|
+
MISSING_CREDENTIALS: "MISSING_CREDENTIALS";
|
|
16
|
+
PROVIDER_TIMEOUT: "PROVIDER_TIMEOUT";
|
|
17
|
+
AUTH_FAILED: "AUTH_FAILED";
|
|
18
|
+
RATE_LIMITED: "RATE_LIMITED";
|
|
19
|
+
CONNECTION_FAILED: "CONNECTION_FAILED";
|
|
20
|
+
UPSTREAM_ERROR: "UPSTREAM_ERROR";
|
|
21
|
+
EMPTY_RESPONSE: "EMPTY_RESPONSE";
|
|
22
|
+
NO_SOURCES: "NO_SOURCES";
|
|
23
|
+
OUTPUT_LIMIT: "OUTPUT_LIMIT";
|
|
24
|
+
UNSUPPORTED_OPERATION: "UNSUPPORTED_OPERATION";
|
|
25
|
+
ABORTED: "ABORTED";
|
|
26
|
+
DISCOVERY_FAILED: "DISCOVERY_FAILED";
|
|
27
|
+
TOOL_NOT_FOUND: "TOOL_NOT_FOUND";
|
|
28
|
+
INVALID_UPSTREAM_ARGUMENTS: "INVALID_UPSTREAM_ARGUMENTS";
|
|
29
|
+
INVALID_UPSTREAM_RESPONSE: "INVALID_UPSTREAM_RESPONSE";
|
|
30
|
+
TASK_REQUIRED: "TASK_REQUIRED";
|
|
31
|
+
}>>;
|
|
32
|
+
stages: z.ZodObject<{
|
|
33
|
+
connection: z.ZodEnum<{
|
|
34
|
+
failed: "failed";
|
|
35
|
+
not_tested: "not_tested";
|
|
36
|
+
passed: "passed";
|
|
37
|
+
}>;
|
|
38
|
+
discovery: z.ZodEnum<{
|
|
39
|
+
failed: "failed";
|
|
40
|
+
not_tested: "not_tested";
|
|
41
|
+
passed: "passed";
|
|
42
|
+
}>;
|
|
43
|
+
request: z.ZodEnum<{
|
|
44
|
+
failed: "failed";
|
|
45
|
+
not_tested: "not_tested";
|
|
46
|
+
passed: "passed";
|
|
47
|
+
}>;
|
|
48
|
+
}, z.core.$strict>;
|
|
49
|
+
operations: z.ZodArray<z.ZodObject<{
|
|
50
|
+
operation: z.ZodEnum<{
|
|
51
|
+
search: "search";
|
|
52
|
+
read: "read";
|
|
53
|
+
}>;
|
|
54
|
+
state: z.ZodEnum<{
|
|
55
|
+
failed: "failed";
|
|
56
|
+
not_tested: "not_tested";
|
|
57
|
+
passed: "passed";
|
|
58
|
+
}>;
|
|
59
|
+
durationMs: z.ZodNumber;
|
|
60
|
+
code: z.ZodOptional<z.ZodEnum<{
|
|
61
|
+
NOT_CONFIGURED: "NOT_CONFIGURED";
|
|
62
|
+
DISABLED: "DISABLED";
|
|
63
|
+
MISSING_CREDENTIALS: "MISSING_CREDENTIALS";
|
|
64
|
+
PROVIDER_TIMEOUT: "PROVIDER_TIMEOUT";
|
|
65
|
+
AUTH_FAILED: "AUTH_FAILED";
|
|
66
|
+
RATE_LIMITED: "RATE_LIMITED";
|
|
67
|
+
CONNECTION_FAILED: "CONNECTION_FAILED";
|
|
68
|
+
UPSTREAM_ERROR: "UPSTREAM_ERROR";
|
|
69
|
+
EMPTY_RESPONSE: "EMPTY_RESPONSE";
|
|
70
|
+
NO_SOURCES: "NO_SOURCES";
|
|
71
|
+
OUTPUT_LIMIT: "OUTPUT_LIMIT";
|
|
72
|
+
UNSUPPORTED_OPERATION: "UNSUPPORTED_OPERATION";
|
|
73
|
+
ABORTED: "ABORTED";
|
|
74
|
+
DISCOVERY_FAILED: "DISCOVERY_FAILED";
|
|
75
|
+
TOOL_NOT_FOUND: "TOOL_NOT_FOUND";
|
|
76
|
+
INVALID_UPSTREAM_ARGUMENTS: "INVALID_UPSTREAM_ARGUMENTS";
|
|
77
|
+
INVALID_UPSTREAM_RESPONSE: "INVALID_UPSTREAM_RESPONSE";
|
|
78
|
+
TASK_REQUIRED: "TASK_REQUIRED";
|
|
79
|
+
}>>;
|
|
80
|
+
}, z.core.$strict>>;
|
|
81
|
+
}, z.core.$strict>;
|
|
82
|
+
export type ProviderTest = z.infer<typeof testSchema>;
|
|
83
|
+
export declare function testHistoryPath(path?: string): string;
|
|
84
|
+
/** A strict provider contract probe, not an equivalent execution of Router selection, fallback or focus. */
|
|
85
|
+
export declare function providerTest(id: string, config: Configuration, env?: NodeJS.ProcessEnv, caller?: AbortSignal): Promise<ProviderTest>;
|
|
86
|
+
export declare function statusReport(config: Configuration, path?: string, env?: NodeJS.ProcessEnv): Promise<{
|
|
87
|
+
warnings: string[];
|
|
88
|
+
providers: {
|
|
89
|
+
configured: boolean;
|
|
90
|
+
lastTest: {
|
|
91
|
+
provider: string;
|
|
92
|
+
testedAt: string;
|
|
93
|
+
durationMs: number;
|
|
94
|
+
outcome: "failed" | "passed" | "skipped";
|
|
95
|
+
stages: {
|
|
96
|
+
connection: "failed" | "not_tested" | "passed";
|
|
97
|
+
discovery: "failed" | "not_tested" | "passed";
|
|
98
|
+
request: "failed" | "not_tested" | "passed";
|
|
99
|
+
};
|
|
100
|
+
operations: {
|
|
101
|
+
operation: "search" | "read";
|
|
102
|
+
state: "failed" | "not_tested" | "passed";
|
|
103
|
+
durationMs: number;
|
|
104
|
+
code?: "NOT_CONFIGURED" | "DISABLED" | "MISSING_CREDENTIALS" | "PROVIDER_TIMEOUT" | "AUTH_FAILED" | "RATE_LIMITED" | "CONNECTION_FAILED" | "UPSTREAM_ERROR" | "EMPTY_RESPONSE" | "NO_SOURCES" | "OUTPUT_LIMIT" | "UNSUPPORTED_OPERATION" | "ABORTED" | "DISCOVERY_FAILED" | "TOOL_NOT_FOUND" | "INVALID_UPSTREAM_ARGUMENTS" | "INVALID_UPSTREAM_RESPONSE" | "TASK_REQUIRED" | undefined;
|
|
105
|
+
}[];
|
|
106
|
+
code?: "NOT_CONFIGURED" | "DISABLED" | "MISSING_CREDENTIALS" | "PROVIDER_TIMEOUT" | "AUTH_FAILED" | "RATE_LIMITED" | "CONNECTION_FAILED" | "UPSTREAM_ERROR" | "EMPTY_RESPONSE" | "NO_SOURCES" | "OUTPUT_LIMIT" | "UNSUPPORTED_OPERATION" | "ABORTED" | "DISCOVERY_FAILED" | "TOOL_NOT_FOUND" | "INVALID_UPSTREAM_ARGUMENTS" | "INVALID_UPSTREAM_RESPONSE" | "TASK_REQUIRED" | undefined;
|
|
107
|
+
} | null;
|
|
108
|
+
lastTestStale: boolean;
|
|
109
|
+
operations: string[];
|
|
110
|
+
provider: string;
|
|
111
|
+
code: string;
|
|
112
|
+
needs?: string[];
|
|
113
|
+
}[];
|
|
114
|
+
runtime: string;
|
|
115
|
+
networkChecked: boolean;
|
|
116
|
+
routes: {
|
|
117
|
+
defaultIntent: "general" | "semantic" | "research";
|
|
118
|
+
search: string;
|
|
119
|
+
read: string;
|
|
120
|
+
intents: {
|
|
121
|
+
general?: string | undefined;
|
|
122
|
+
semantic?: string | undefined;
|
|
123
|
+
research?: string | undefined;
|
|
124
|
+
};
|
|
125
|
+
searchFallback: string[];
|
|
126
|
+
readFallback: string[];
|
|
127
|
+
};
|
|
128
|
+
version: string;
|
|
129
|
+
ok: boolean;
|
|
130
|
+
}>;
|
|
131
|
+
export declare function testReport(config: Configuration, target: string, path?: string, env?: NodeJS.ProcessEnv, signal?: AbortSignal): Promise<{
|
|
132
|
+
version: string;
|
|
133
|
+
ok: boolean;
|
|
134
|
+
networkChecked: boolean;
|
|
135
|
+
results: {
|
|
136
|
+
configuration: string;
|
|
137
|
+
provider: string;
|
|
138
|
+
testedAt: string;
|
|
139
|
+
durationMs: number;
|
|
140
|
+
outcome: "failed" | "passed" | "skipped";
|
|
141
|
+
stages: {
|
|
142
|
+
connection: "failed" | "not_tested" | "passed";
|
|
143
|
+
discovery: "failed" | "not_tested" | "passed";
|
|
144
|
+
request: "failed" | "not_tested" | "passed";
|
|
145
|
+
};
|
|
146
|
+
operations: {
|
|
147
|
+
operation: "search" | "read";
|
|
148
|
+
state: "failed" | "not_tested" | "passed";
|
|
149
|
+
durationMs: number;
|
|
150
|
+
code?: "NOT_CONFIGURED" | "DISABLED" | "MISSING_CREDENTIALS" | "PROVIDER_TIMEOUT" | "AUTH_FAILED" | "RATE_LIMITED" | "CONNECTION_FAILED" | "UPSTREAM_ERROR" | "EMPTY_RESPONSE" | "NO_SOURCES" | "OUTPUT_LIMIT" | "UNSUPPORTED_OPERATION" | "ABORTED" | "DISCOVERY_FAILED" | "TOOL_NOT_FOUND" | "INVALID_UPSTREAM_ARGUMENTS" | "INVALID_UPSTREAM_RESPONSE" | "TASK_REQUIRED" | undefined;
|
|
151
|
+
}[];
|
|
152
|
+
code?: "NOT_CONFIGURED" | "DISABLED" | "MISSING_CREDENTIALS" | "PROVIDER_TIMEOUT" | "AUTH_FAILED" | "RATE_LIMITED" | "CONNECTION_FAILED" | "UPSTREAM_ERROR" | "EMPTY_RESPONSE" | "NO_SOURCES" | "OUTPUT_LIMIT" | "UNSUPPORTED_OPERATION" | "ABORTED" | "DISCOVERY_FAILED" | "TOOL_NOT_FOUND" | "INVALID_UPSTREAM_ARGUMENTS" | "INVALID_UPSTREAM_RESPONSE" | "TASK_REQUIRED" | undefined;
|
|
153
|
+
}[];
|
|
154
|
+
warnings: string[];
|
|
155
|
+
}>;
|
|
156
|
+
export declare function formatStatus(report: Awaited<ReturnType<typeof statusReport>>): string;
|
|
157
|
+
export declare function formatTests(report: Awaited<ReturnType<typeof testReport>>): string;
|
|
158
|
+
export {};
|