@aigentyc/mcp 0.4.0 → 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.
- package/AGENTS.md +1 -1
- package/README.md +1 -1
- package/context7.json +1 -1
- package/dist/cli.js +8 -54
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +9 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +11 -3
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/llms-full.txt +27 -4
- package/dist/tools/embed.js +2 -2
- package/dist/tools/embed.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/projects.d.ts +4 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +164 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/scrapers.d.ts +4 -0
- package/dist/tools/scrapers.d.ts.map +1 -0
- package/dist/tools/scrapers.js +218 -0
- package/dist/tools/scrapers.js.map +1 -0
- package/dist/verify.d.ts +22 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +59 -0
- package/dist/verify.js.map +1 -0
- package/llms.txt +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -224,5 +224,5 @@ Requires npm credentials with publish rights on `@aigentyc`.
|
|
|
224
224
|
## Where to ask for help
|
|
225
225
|
|
|
226
226
|
- Bugs / feature requests → file in this repo
|
|
227
|
-
- Questions about the **platform** (`app.aigentyc.
|
|
227
|
+
- Questions about the **platform** (`app.aigentyc.ai`) → main monorepo
|
|
228
228
|
- Questions about embedding a chat UI → `@aigentyc/chat-sdk`
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @aigentyc/mcp
|
|
2
2
|
|
|
3
|
-
Model Context Protocol server for [aiGentyc](https://aigentyc.
|
|
3
|
+
Model Context Protocol server for [aiGentyc](https://aigentyc.ai) — lets
|
|
4
4
|
Claude Code, Cursor, Windsurf, and any other MCP-compatible agent drive the
|
|
5
5
|
content/authoring side of your aiGentyc project (documents, crawling, data
|
|
6
6
|
stores, custom tools, config, backups, …) without clicking through the
|
package/context7.json
CHANGED
package/dist/cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import { parseArgs } from "node:util";
|
|
|
3
3
|
import { assertSafePerms, configPath, DEFAULT_BASE_URL, loadConfig, saveConfig, upsertProfile, } from "./config.js";
|
|
4
4
|
import { installCommand } from "./install-cmd.js";
|
|
5
5
|
import { runStdioServer } from "./server.js";
|
|
6
|
+
import { verifyKey } from "./verify.js";
|
|
6
7
|
async function main() {
|
|
7
8
|
const [cmd, ...rest] = process.argv.slice(2);
|
|
8
9
|
switch (cmd) {
|
|
@@ -57,6 +58,7 @@ LOGIN OPTIONS
|
|
|
57
58
|
--api-key <k> aiGentyc API key (tyco_pk_...)
|
|
58
59
|
--project-id <p> Project UUID the key is scoped to
|
|
59
60
|
--profile <name> Named profile (default: "default")
|
|
61
|
+
--label <text> Friendly display name for switching between projects
|
|
60
62
|
--base-url <url> Dashboard base URL (default: ${DEFAULT_BASE_URL})
|
|
61
63
|
--no-activate Do not set this profile as active
|
|
62
64
|
--allow-insecure Dev-only: allow plaintext HTTP to non-loopback hosts
|
|
@@ -97,6 +99,7 @@ async function loginCmd(argv) {
|
|
|
97
99
|
"api-key": { type: "string" },
|
|
98
100
|
"project-id": { type: "string" },
|
|
99
101
|
profile: { type: "string", default: "default" },
|
|
102
|
+
label: { type: "string" },
|
|
100
103
|
"base-url": { type: "string", default: DEFAULT_BASE_URL },
|
|
101
104
|
"no-activate": { type: "boolean", default: false },
|
|
102
105
|
"allow-insecure": { type: "boolean", default: false },
|
|
@@ -108,68 +111,19 @@ async function loginCmd(argv) {
|
|
|
108
111
|
console.error("login requires both --api-key and --project-id. See --help.");
|
|
109
112
|
process.exit(2);
|
|
110
113
|
}
|
|
111
|
-
// Verify the key
|
|
112
|
-
// same base URL, so POST /api/auth/api-keys/verify works. In local dev,
|
|
113
|
-
// auth is on a different port and we get a 404 — fall back to pinging the
|
|
114
|
-
// dashboard documents endpoint, which is the canonical authenticated surface.
|
|
114
|
+
// Verify the key before saving (shared with the projects_add MCP tool).
|
|
115
115
|
const baseUrl = values["base-url"].replace(/\/$/, "");
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
try {
|
|
120
|
-
const res = await fetch(verifyUrl, {
|
|
121
|
-
method: "POST",
|
|
122
|
-
headers: { "Content-Type": "application/json" },
|
|
123
|
-
body: JSON.stringify({ key: apiKey }),
|
|
124
|
-
});
|
|
125
|
-
if (res.status === 404) {
|
|
126
|
-
// Auth endpoint not at this origin (dev). Fall through to dashboard ping.
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
const body = (await res.json().catch(() => ({})));
|
|
130
|
-
if (!res.ok || !body.valid) {
|
|
131
|
-
console.error(`Key verification failed: ${body.error || `HTTP ${res.status}`}`);
|
|
132
|
-
process.exit(1);
|
|
133
|
-
}
|
|
134
|
-
if (body.projectId && body.projectId !== projectId) {
|
|
135
|
-
console.error(`API key is scoped to project ${body.projectId}, not ${projectId}. Refusing to save.`);
|
|
136
|
-
process.exit(1);
|
|
137
|
-
}
|
|
138
|
-
verified = true;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
catch (err) {
|
|
142
|
-
console.error(`Could not reach ${verifyUrl}: ${err.message}`);
|
|
116
|
+
const result = await verifyKey({ baseUrl, projectId, apiKey });
|
|
117
|
+
if (!result.ok) {
|
|
118
|
+
console.error(`${result.error} Refusing to save.`);
|
|
143
119
|
process.exit(1);
|
|
144
120
|
}
|
|
145
|
-
if (!verified) {
|
|
146
|
-
// Dashboard ping fallback.
|
|
147
|
-
try {
|
|
148
|
-
const res = await fetch(pingUrl, {
|
|
149
|
-
method: "GET",
|
|
150
|
-
headers: { Authorization: `Bearer ${apiKey}` },
|
|
151
|
-
});
|
|
152
|
-
if (res.status === 401) {
|
|
153
|
-
console.error("Key rejected by dashboard (401). Refusing to save.");
|
|
154
|
-
process.exit(1);
|
|
155
|
-
}
|
|
156
|
-
if (res.status === 403) {
|
|
157
|
-
console.error("Key accepted but not authorized for this project (403). Refusing to save.");
|
|
158
|
-
process.exit(1);
|
|
159
|
-
}
|
|
160
|
-
// 200 or 404 (project not found) → key was accepted by auth layer.
|
|
161
|
-
}
|
|
162
|
-
catch (err) {
|
|
163
|
-
console.error(`Could not reach ${pingUrl}: ${err.message}`);
|
|
164
|
-
process.exit(1);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
121
|
const allowInsecure = !!values["allow-insecure"];
|
|
168
122
|
if (allowInsecure) {
|
|
169
123
|
console.warn("WARNING: --allow-insecure is enabled. Plaintext HTTP will be permitted. Use for local dev only.");
|
|
170
124
|
}
|
|
171
125
|
const existing = await loadConfig();
|
|
172
|
-
const next = upsertProfile(existing, values.profile, { baseUrl, projectId, apiKey, allowInsecure }, !values["no-activate"]);
|
|
126
|
+
const next = upsertProfile(existing, values.profile, { baseUrl, projectId, apiKey, label: values.label, allowInsecure }, !values["no-activate"]);
|
|
173
127
|
await saveConfig(next);
|
|
174
128
|
console.log(`Saved profile "${values.profile}" → ${configPath()} (active: ${next.activeProfile})`);
|
|
175
129
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import type { ProfileConfig } from "./config.js";
|
|
2
2
|
export interface DashboardClient {
|
|
3
|
-
profile
|
|
3
|
+
/** The profile this client currently targets. Mutated via `useProfile`. */
|
|
4
|
+
readonly profile: ProfileConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Re-point the client at a different project (apiKey + baseUrl + projectId).
|
|
7
|
+
* Every subsequent request uses the new credential, so all tools switch
|
|
8
|
+
* projects without re-registering or restarting the server.
|
|
9
|
+
*/
|
|
10
|
+
useProfile(profile: ProfileConfig): void;
|
|
4
11
|
get<T = unknown>(path: string, query?: Record<string, unknown>): Promise<T>;
|
|
5
12
|
post<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
6
13
|
put<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
7
14
|
patch<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
8
15
|
delete<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
9
16
|
}
|
|
10
|
-
export declare function createClient(
|
|
17
|
+
export declare function createClient(initial: ProfileConfig): DashboardClient;
|
|
11
18
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACzC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,eAAe,CA+FpE"}
|
package/dist/client.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { AigentycError, httpStatusToCode } from "./errors.js";
|
|
3
|
-
export function createClient(
|
|
4
|
-
|
|
3
|
+
export function createClient(initial) {
|
|
4
|
+
// Mutable so `useProfile` can swap projects mid-session. Read fresh on every
|
|
5
|
+
// request — never capture baseUrl/apiKey in a closure at create time.
|
|
6
|
+
let profile = initial;
|
|
5
7
|
async function request(method, path, opts = {}) {
|
|
8
|
+
const baseUrl = profile.baseUrl.replace(/\/$/, "");
|
|
6
9
|
const url = new URL(baseUrl + path);
|
|
7
10
|
if (opts.query) {
|
|
8
11
|
for (const [k, v] of Object.entries(opts.query)) {
|
|
@@ -54,7 +57,12 @@ export function createClient(profile) {
|
|
|
54
57
|
return payload;
|
|
55
58
|
}
|
|
56
59
|
return {
|
|
57
|
-
profile
|
|
60
|
+
get profile() {
|
|
61
|
+
return profile;
|
|
62
|
+
},
|
|
63
|
+
useProfile(next) {
|
|
64
|
+
profile = next;
|
|
65
|
+
},
|
|
58
66
|
get: (path, query) => request("GET", path, { query }),
|
|
59
67
|
post: (path, body) => request("POST", path, { body }),
|
|
60
68
|
put: (path, body) => request("PUT", path, { body }),
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ export interface ProfileConfig {
|
|
|
2
2
|
baseUrl: string;
|
|
3
3
|
projectId: string;
|
|
4
4
|
apiKey: string;
|
|
5
|
+
/**
|
|
6
|
+
* Friendly display name for this project, used when listing/switching
|
|
7
|
+
* projects in a conversation. Falls back to the profile key when absent.
|
|
8
|
+
*/
|
|
9
|
+
label?: string;
|
|
5
10
|
/**
|
|
6
11
|
* When true, the client will allow plaintext HTTP to non-loopback hosts.
|
|
7
12
|
* Dev-only — never enable in production.
|
|
@@ -21,6 +26,11 @@ export declare function configPath(): string;
|
|
|
21
26
|
export declare function loadConfig(): Promise<AigentycConfig | null>;
|
|
22
27
|
export declare function requireConfig(): Promise<AigentycConfig>;
|
|
23
28
|
export declare function getActiveProfile(cfg: AigentycConfig): ProfileConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Switch the active profile to `name` (validating it exists). Returns a new
|
|
31
|
+
* config object — callers persist it with saveConfig to survive restarts.
|
|
32
|
+
*/
|
|
33
|
+
export declare function setActiveProfile(cfg: AigentycConfig, name: string): AigentycConfig;
|
|
24
34
|
/**
|
|
25
35
|
* Persist config with 0600 perms. Refuses to overwrite wider perms without fix.
|
|
26
36
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED,QAAA,MAAM,gBAAgB,4BAA4B,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAOD,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAYjE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC,CAQ7D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,aAAa,CAUnE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAUrD;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,GAAG,IAAI,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,OAAO,GAClB,cAAc,CAOhB;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED,QAAA,MAAM,gBAAgB,4BAA4B,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAOD,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAYjE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC,CAQ7D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,aAAa,CAUnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,GACX,cAAc,CAOhB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAUrD;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,GAAG,IAAI,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,OAAO,GAClB,cAAc,CAOhB;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -45,6 +45,16 @@ export function getActiveProfile(cfg) {
|
|
|
45
45
|
}
|
|
46
46
|
return profile;
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Switch the active profile to `name` (validating it exists). Returns a new
|
|
50
|
+
* config object — callers persist it with saveConfig to survive restarts.
|
|
51
|
+
*/
|
|
52
|
+
export function setActiveProfile(cfg, name) {
|
|
53
|
+
if (!cfg.profiles[name]) {
|
|
54
|
+
throw new Error(`Profile '${name}' not found. Available: ${Object.keys(cfg.profiles).join(", ") || "(none)"}`);
|
|
55
|
+
}
|
|
56
|
+
return { activeProfile: name, profiles: cfg.profiles };
|
|
57
|
+
}
|
|
48
58
|
/**
|
|
49
59
|
* Persist config with 0600 perms. Refuses to overwrite wider perms without fix.
|
|
50
60
|
*/
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/llms-full.txt
CHANGED
|
@@ -8,7 +8,7 @@ This file is the deep reference for AI coding tools (Cursor, Claude Code, Windsu
|
|
|
8
8
|
|
|
9
9
|
# @aigentyc/mcp
|
|
10
10
|
|
|
11
|
-
Model Context Protocol server for [aiGentyc](https://aigentyc.
|
|
11
|
+
Model Context Protocol server for [aiGentyc](https://aigentyc.ai) — lets
|
|
12
12
|
Claude Code, Cursor, Windsurf, and any other MCP-compatible agent drive the
|
|
13
13
|
content/authoring side of your aiGentyc project (documents, crawling, data
|
|
14
14
|
stores, custom tools, config, backups, …) without clicking through the
|
|
@@ -370,7 +370,7 @@ Requires npm credentials with publish rights on `@aigentyc`.
|
|
|
370
370
|
## Where to ask for help
|
|
371
371
|
|
|
372
372
|
- Bugs / feature requests → file in this repo
|
|
373
|
-
- Questions about the **platform** (`app.aigentyc.
|
|
373
|
+
- Questions about the **platform** (`app.aigentyc.ai`) → main monorepo
|
|
374
374
|
- Questions about embedding a chat UI → `@aigentyc/chat-sdk`
|
|
375
375
|
|
|
376
376
|
---
|
|
@@ -561,7 +561,7 @@ config_update({ patch: { systemPrompt: "You are the support agent for ACME..." }
|
|
|
561
561
|
|
|
562
562
|
## Versioning
|
|
563
563
|
|
|
564
|
-
Server (`@aigentyc/mcp` on npm) and platform (`app.aigentyc.
|
|
564
|
+
Server (`@aigentyc/mcp` on npm) and platform (`app.aigentyc.ai`) version independently. The platform maintains backward compatibility with older MCP releases — endpoints aren't broken without deprecation.
|
|
565
565
|
|
|
566
566
|
---
|
|
567
567
|
|
|
@@ -570,7 +570,7 @@ Server (`@aigentyc/mcp` on npm) and platform (`app.aigentyc.com`) version indepe
|
|
|
570
570
|
All MCP tools registered at server startup, grouped by domain prefix. Use these names verbatim when invoking via an MCP client.
|
|
571
571
|
|
|
572
572
|
|
|
573
|
-
_Total tools: **
|
|
573
|
+
_Total tools: **144**_
|
|
574
574
|
|
|
575
575
|
|
|
576
576
|
### `aigentyc`
|
|
@@ -802,6 +802,29 @@ _Total tools: **131**_
|
|
|
802
802
|
| `personas_upsert` | Upsert a chat persona identified by `key`. If a persona with that key exists it is patched, otherwise a new one is created. The persona defines tone, response length, language style, and custom instructions for the chat agent when this persona is active. |
|
|
803
803
|
| `personas_delete` | Delete a persona by key. Destructive. |
|
|
804
804
|
|
|
805
|
+
### `projects`
|
|
806
|
+
|
|
807
|
+
| tool | description |
|
|
808
|
+
| ---- | ----------- |
|
|
809
|
+
| `projects_list` | List every project (profile) configured locally, with its name, label, and projectId, and which one is currently active. Call this first when the user refers to a project by name so you can switch to it with projects_use. |
|
|
810
|
+
| `projects_current` | Return the project all other tools currently target (name, label, projectId, baseUrl). |
|
|
811
|
+
| `projects_use` | Switch the project that every other tool targets. Accepts a profile name, a projectId, or a label. The switch persists across restarts and stays in effect until changed. Use this when the user says 'work on project X'. Returns a get-started snapshot of the project you switched to. |
|
|
812
|
+
| `projects_add` | Save a new project locally so you can switch to it later without leaving the conversation. The API key is project-scoped and stored in ~/.aigentyc/config.json with 0600 permissions. The key is verified against the backend before saving. By default the new project becomes active immediately. |
|
|
813
|
+
|
|
814
|
+
### `scrapers`
|
|
815
|
+
|
|
816
|
+
| tool | description |
|
|
817
|
+
| ---- | ----------- |
|
|
818
|
+
| `scrapers_list` | List every scraper in the project with its name, start URL, schedule, destinations, and enabled state. Secrets (customHeaders) are never returned. |
|
|
819
|
+
| `scrapers_get` | Fetch one scraper including its full `config` recipe (so it can be edited or re-run). customHeaders are never returned. |
|
|
820
|
+
| `scrapers_create` | Create a scraper. `config.url` and `config.container.selector` are required — build the recipe with scrapers_infer_selectors (or the browser extension) first. Automation: set `cronExpression` for scheduled runs and/or `webhookEnabled` for URL-triggered runs. With neither, it's a saved config you fire manually via scrapers_trigger. Set `destinations.dataStoreId` and/or `destinations.kb` to route results. |
|
|
821
|
+
| `scrapers_update` | Update any subset of a scraper's fields. Changing cronExpression/enabled keeps the backing schedule job in sync. Omitted fields keep their stored values; enabling webhookEnabled mints a token if none exists. |
|
|
822
|
+
| `scrapers_delete` | Delete a scraper and its backing schedule job. Destructive — re-invoke with confirm=true. |
|
|
823
|
+
| `scrapers_trigger` | Enqueue an immediate (manual) run of the scraper's backing job and return its queueId. Fails if the scraper is disabled or has no execution job configured. |
|
|
824
|
+
| `scrapers_runs_list` | Return recent execution attempts (status, durations, errors) plus permanently-failed dead-letter entries for the scraper's job. Empty when the scraper has never run. |
|
|
825
|
+
| `scrapers_run_retry` | Re-queue a dead-letter (permanently failed) run by its queueId. Get queueIds from scrapers_runs_list's `deadLetter` array. |
|
|
826
|
+
| `scrapers_infer_selectors` | Given an HTML fragment of a repeating list, infer the container selector and per-field relative selectors (key, label, type, selector) to build a scrape `config`. Synchronous/interactive. Requires the project to have an OpenAI API key configured. |
|
|
827
|
+
|
|
805
828
|
### `tools`
|
|
806
829
|
|
|
807
830
|
| tool | description |
|
package/dist/tools/embed.js
CHANGED
|
@@ -5,7 +5,7 @@ import { z } from "zod";
|
|
|
5
5
|
import { pid, projectIdArg } from "./helpers.js";
|
|
6
6
|
import { defineTool } from "./types.js";
|
|
7
7
|
const SUPPORTED_FRAMEWORKS = ["next", "vite", "react", "html"];
|
|
8
|
-
const PUBLIC_API_DEFAULT = "https://app.aigentyc.
|
|
8
|
+
const PUBLIC_API_DEFAULT = "https://app.aigentyc.ai";
|
|
9
9
|
function snippet(framework, projectId, apiEndpoint, apiKey) {
|
|
10
10
|
// If the caller passed an apiKey, inline it. Otherwise emit an env-var
|
|
11
11
|
// placeholder so the embed works on third-party domains out of the box.
|
|
@@ -20,7 +20,7 @@ function snippet(framework, projectId, apiEndpoint, apiKey) {
|
|
|
20
20
|
"The CSS import is required — the widget renders unstyled without it.",
|
|
21
21
|
apiKey
|
|
22
22
|
? "apiKey was inlined in the snippet. For client-side code, prefer reading from an env var so you can rotate keys without rebuilding."
|
|
23
|
-
: "**apiKey is required for embeds on domains other than app.aigentyc.
|
|
23
|
+
: "**apiKey is required for embeds on domains other than app.aigentyc.ai.** Generate a project-scoped key from your Aigentyc dashboard (Settings → API Keys) and set it in your env: `NEXT_PUBLIC_AIGENTYC_API_KEY` (Next.js) or `VITE_AIGENTYC_API_KEY` (Vite). Without it, `/api/kb/chat` returns 401.",
|
|
24
24
|
"Make sure your project's origin allowlist (dashboard → Settings → API Keys → Allowed Origins) includes your embed domain (e.g. https://your-app.com). Otherwise the API rejects the request even with a valid key.",
|
|
25
25
|
];
|
|
26
26
|
const common = {
|
package/dist/tools/embed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/tools/embed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAqBtD,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAExE,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/tools/embed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAqBtD,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAExE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AASrD,SAAS,OAAO,CACd,SAAoB,EACpB,SAAiB,EACjB,WAAmB,EACnB,MAA0B;IAE1B,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,iBAAiB,MAAM,KAAK;QAC9B,CAAC,CAAC,2DAA2D,CAAC;IAChE,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,iBAAiB,MAAM,KAAK;QAC9B,CAAC,CAAC,wDAAwD,CAAC;IAE7D,MAAM,WAAW,GAAG;QAClB,0DAA0D;QAC1D,sEAAsE;QACtE,MAAM;YACJ,CAAC,CAAC,oIAAoI;YACtI,CAAC,CAAC,uSAAuS;QAC3S,oNAAoN;KACrN,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,gCAAgC;QACzC,SAAS,EAAE,+CAA+C;QAC1D,KAAK,EAAE,WAAW;KACnB,CAAC;IAEF,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO;gBACL,GAAG,MAAM;gBACT,IAAI,EAAE;;;;;;;;mBAQK,SAAS;qBACP,WAAW;EAC9B,UAAU;;EAEV;aACK,CAAC;QACJ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO;gBACL,GAAG,MAAM;gBACT,IAAI,EAAE;;;;;;;mBAOK,SAAS;qBACP,WAAW;EAC9B,cAAc;;EAEd;aACK,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,OAAO,EACL,2GAA2G;gBAC7G,IAAI,EAAE,2FAA2F;gBACjG,KAAK,EAAE;oBACL,sEAAsE;iBACvE;aACF,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,GAAG,IAAI,kBAAkB,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAuB;IAChD,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,uDAAuD;YAC9D,WAAW,EACT,2VAA2V;YAC7V,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;YAClD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,kBAAkB,SAAS,cAAc,CAAC,CAAC;YAC/D,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,8CAA8C;YACrD,WAAW,EACT,4ZAA4Z;YAC9Z,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,YAAY;gBACvB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,qLAAqL,CACtL;aACJ,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACjE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3E,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS;oBACT,WAAW;oBACX,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;oBACpC,GAAG,KAAK;iBACT,CAAC;YACJ,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,+BAA+B;YACtC,WAAW,EACT,wbAAwb;YAC1b,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,YAAY;gBACvB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,0JAA0J,CAC3J;aACJ,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEjE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAK5B,kBAAkB,SAAS,cAAc,CAAC,CAAC;gBAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE3E,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBACrB,QAAQ,CAAC,IAAI,CACX,qGAAqG,CACtG,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;oBACnC,QAAQ,CAAC,IAAI,CACX,sFAAsF,CACvF,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,QAAQ,CAAC,IAAI,CACX,oTAAoT,CACrT,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,KAAK,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS;oBACT,WAAW;oBACX,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;oBACpC,oBAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;oBACpD,QAAQ;oBACR,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,GAAG,KAAK;iBACT,CAAC;YACJ,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,2DAA2D;YAClE,WAAW,EACT,qQAAqQ;YACvQ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,YAAY;gBACvB,WAAW,EAAE,CAAC;qBACX,MAAM,EAAE;qBACR,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,CACP,mGAAmG,CACpG;gBACH,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBACxD,OAAO,EAAE,CAAC;qBACP,OAAO,EAAE;qBACT,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CACP,uFAAuF,CACxF;aACJ,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAE9C,kEAAkE;gBAClE,iEAAiE;gBACjE,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3C,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CACnD,CAAC;gBACF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACxC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAClC,CAAC;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO;wBACL,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,yBAAyB,QAAQ,oBAAoB,OAAO,CAAC,GAAG,EAAE,gBAAgB,OAAO,EAAE,IAAI;qBACvG,CAAC;gBACJ,CAAC;gBAED,MAAM,OAAO,GAAG,KAAK,CAAC;gBACtB,MAAM,OAAO,GAAG;oBACd,QAAQ;oBACR,sBAAsB;oBACtB,IAAI,CAAC,WAAW;oBAChB,IAAI;oBACJ,cAAc,IAAI,CAAC,QAAQ,EAAE;oBAC7B,gBAAgB,SAAS,EAAE;iBAC5B,CAAC;gBACF,MAAM,WAAW,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAEtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO;wBACL,UAAU,EAAE,KAAK;wBACjB,MAAM,EACJ,yHAAyH;wBAC3H,QAAQ,EAAE,WAAW;wBACrB,WAAW,EAAE,QAAQ;wBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC;gBACJ,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO;oBACL,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC;oBAC7B,WAAW,EAAE,QAAQ;oBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,OAAO,EAAE,WAAW;oBACpB,QAAQ,EAAE,MAAM,CAAC,IAAI;oBACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;oBAClC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;oBAClC,SAAS,EAAE;wBACT,MAAM,IAAI,CAAC,WAAW,EAAE;wBACxB,aAAa;wBACb,aAAa;qBACd;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,IAAc;IAEd,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;YACnC,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;YACnC,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAsBpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CAgC3D"}
|
package/dist/tools/index.js
CHANGED
|
@@ -16,9 +16,13 @@ import { linkSourcesTools } from "./link_sources.js";
|
|
|
16
16
|
import { miscTools } from "./misc.js";
|
|
17
17
|
import { pageQuestionsTools } from "./page_questions.js";
|
|
18
18
|
import { personasTools } from "./personas.js";
|
|
19
|
+
import { projectsTools } from "./projects.js";
|
|
20
|
+
import { scrapersTools } from "./scrapers.js";
|
|
19
21
|
import { toolsCrudTools } from "./tools_crud.js";
|
|
20
22
|
export function allTools(client) {
|
|
21
23
|
return [
|
|
24
|
+
// Project switching — connect once, then "work on project X" (no re-init).
|
|
25
|
+
...projectsTools(client),
|
|
22
26
|
// End-to-end discovery + embedding entry points (call these first).
|
|
23
27
|
...embedTools(client),
|
|
24
28
|
// Content authoring
|
|
@@ -28,6 +32,7 @@ export function allTools(client) {
|
|
|
28
32
|
...linkSourcesTools(client),
|
|
29
33
|
...pageQuestionsTools(client),
|
|
30
34
|
...dataStoresTools(client),
|
|
35
|
+
...scrapersTools(client),
|
|
31
36
|
// Custom tools / flows
|
|
32
37
|
...toolsCrudTools(client),
|
|
33
38
|
// Forms (forms + option sources + provider integrations)
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,UAAU,QAAQ,CAAC,MAAuB;IAC9C,OAAO;QACL,oEAAoE;QACpE,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,oBAAoB;QACpB,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,GAAG,YAAY,CAAC,MAAM,CAAC;QACvB,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC7B,GAAG,eAAe,CAAC,MAAM,CAAC;QAC1B,uBAAuB;QACvB,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,yDAAyD;QACzD,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,GAAG,sBAAsB,CAAC,MAAM,CAAC;QACjC,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC5B,WAAW;QACX,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC7B,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,cAAc;QACd,GAAG,WAAW,CAAC,MAAM,CAAC;QACtB,GAAG,YAAY,CAAC,MAAM,CAAC;QACvB,uBAAuB;QACvB,GAAG,SAAS,CAAC,MAAM,CAAC;QACpB,GAAG,SAAS,CAAC,MAAM,CAAC;QACpB,GAAG,cAAc,CAAC,MAAM,CAAC;KAC1B,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,UAAU,QAAQ,CAAC,MAAuB;IAC9C,OAAO;QACL,2EAA2E;QAC3E,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,oEAAoE;QACpE,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,oBAAoB;QACpB,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,GAAG,YAAY,CAAC,MAAM,CAAC;QACvB,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC7B,GAAG,eAAe,CAAC,MAAM,CAAC;QAC1B,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,uBAAuB;QACvB,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,yDAAyD;QACzD,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,GAAG,sBAAsB,CAAC,MAAM,CAAC;QACjC,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC5B,WAAW;QACX,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC7B,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,cAAc;QACd,GAAG,WAAW,CAAC,MAAM,CAAC;QACtB,GAAG,YAAY,CAAC,MAAM,CAAC;QACvB,uBAAuB;QACvB,GAAG,SAAS,CAAC,MAAM,CAAC;QACpB,GAAG,SAAS,CAAC,MAAM,CAAC;QACpB,GAAG,cAAc,CAAC,MAAM,CAAC;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAapD,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAqBtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CA6JhE"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DEFAULT_BASE_URL, loadConfig, requireConfig, saveConfig, setActiveProfile, upsertProfile, } from "../config.js";
|
|
3
|
+
import { AigentycError } from "../errors.js";
|
|
4
|
+
import { verifyKey } from "../verify.js";
|
|
5
|
+
import { defineTool } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Resolve a profile by its name, projectId, or (case-insensitive) label so the
|
|
8
|
+
* agent can switch using whatever the user said ("beta", "proj_123", ...).
|
|
9
|
+
*/
|
|
10
|
+
function resolveProfile(cfg, query) {
|
|
11
|
+
if (cfg.profiles[query])
|
|
12
|
+
return { name: query, profile: cfg.profiles[query] };
|
|
13
|
+
for (const [name, p] of Object.entries(cfg.profiles)) {
|
|
14
|
+
if (p.projectId === query)
|
|
15
|
+
return { name, profile: p };
|
|
16
|
+
}
|
|
17
|
+
const q = query.toLowerCase();
|
|
18
|
+
for (const [name, p] of Object.entries(cfg.profiles)) {
|
|
19
|
+
if (p.label && p.label.toLowerCase() === q)
|
|
20
|
+
return { name, profile: p };
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
export function projectsTools(client) {
|
|
25
|
+
return [
|
|
26
|
+
defineTool({
|
|
27
|
+
name: "projects_list",
|
|
28
|
+
title: "List configured projects you can switch between",
|
|
29
|
+
description: "List every project (profile) configured locally, with its name, label, and projectId, and which one is currently active. Call this first when the user refers to a project by name so you can switch to it with projects_use.",
|
|
30
|
+
inputSchema: z.object({}),
|
|
31
|
+
handler: async () => {
|
|
32
|
+
const cfg = await requireConfig();
|
|
33
|
+
return {
|
|
34
|
+
active: cfg.activeProfile,
|
|
35
|
+
projects: Object.entries(cfg.profiles).map(([name, p]) => ({
|
|
36
|
+
name,
|
|
37
|
+
label: p.label,
|
|
38
|
+
projectId: p.projectId,
|
|
39
|
+
baseUrl: p.baseUrl,
|
|
40
|
+
isActive: name === cfg.activeProfile,
|
|
41
|
+
})),
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
}),
|
|
45
|
+
defineTool({
|
|
46
|
+
name: "projects_current",
|
|
47
|
+
title: "Show the currently active project",
|
|
48
|
+
description: "Return the project all other tools currently target (name, label, projectId, baseUrl).",
|
|
49
|
+
inputSchema: z.object({}),
|
|
50
|
+
handler: async () => {
|
|
51
|
+
const cfg = await requireConfig();
|
|
52
|
+
const p = cfg.profiles[cfg.activeProfile];
|
|
53
|
+
return {
|
|
54
|
+
name: cfg.activeProfile,
|
|
55
|
+
label: p?.label,
|
|
56
|
+
projectId: p?.projectId,
|
|
57
|
+
baseUrl: p?.baseUrl,
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
defineTool({
|
|
62
|
+
name: "projects_use",
|
|
63
|
+
title: "Switch the active project for all subsequent tools",
|
|
64
|
+
description: "Switch the project that every other tool targets. Accepts a profile name, a projectId, or a label. The switch persists across restarts and stays in effect until changed. Use this when the user says 'work on project X'. Returns a get-started snapshot of the project you switched to.",
|
|
65
|
+
inputSchema: z.object({
|
|
66
|
+
project: z
|
|
67
|
+
.string()
|
|
68
|
+
.min(1)
|
|
69
|
+
.describe("Which project to switch to: a profile name, projectId, or label. See projects_list."),
|
|
70
|
+
}),
|
|
71
|
+
handler: async ({ project }) => {
|
|
72
|
+
const cfg = await requireConfig();
|
|
73
|
+
const match = resolveProfile(cfg, project);
|
|
74
|
+
if (!match) {
|
|
75
|
+
throw new AigentycError("NOT_FOUND", `No configured project matches "${project}". Available: ${Object.keys(cfg.profiles).join(", ") || "(none)"}. Add one with projects_add.`);
|
|
76
|
+
}
|
|
77
|
+
// Swap the live credential (apiKey + baseUrl + projectId) and persist.
|
|
78
|
+
client.useProfile(match.profile);
|
|
79
|
+
await saveConfig(setActiveProfile(cfg, match.name));
|
|
80
|
+
let getStarted;
|
|
81
|
+
try {
|
|
82
|
+
getStarted = await client.get(`/api/dashboard/${match.profile.projectId}/get-started`);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
getStarted = {
|
|
86
|
+
note: "Switched, but could not load get-started.",
|
|
87
|
+
error: err instanceof Error ? err.message : String(err),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
switchedTo: match.name,
|
|
92
|
+
label: match.profile.label,
|
|
93
|
+
projectId: match.profile.projectId,
|
|
94
|
+
getStarted,
|
|
95
|
+
};
|
|
96
|
+
},
|
|
97
|
+
}),
|
|
98
|
+
defineTool({
|
|
99
|
+
name: "projects_add",
|
|
100
|
+
title: "Connect a new project (one-time) and optionally switch to it",
|
|
101
|
+
description: "Save a new project locally so you can switch to it later without leaving the conversation. The API key is project-scoped and stored in ~/.aigentyc/config.json with 0600 permissions. The key is verified against the backend before saving. By default the new project becomes active immediately.",
|
|
102
|
+
inputSchema: z.object({
|
|
103
|
+
name: z
|
|
104
|
+
.string()
|
|
105
|
+
.min(1)
|
|
106
|
+
.describe("Profile name to save this project under (used to switch)."),
|
|
107
|
+
projectId: z.string().min(1).describe("The project's ID."),
|
|
108
|
+
apiKey: z
|
|
109
|
+
.string()
|
|
110
|
+
.min(1)
|
|
111
|
+
.describe("Project-scoped API key (e.g. tyco_...)."),
|
|
112
|
+
baseUrl: z
|
|
113
|
+
.string()
|
|
114
|
+
.url()
|
|
115
|
+
.optional()
|
|
116
|
+
.describe(`Backend base URL. Defaults to ${DEFAULT_BASE_URL}.`),
|
|
117
|
+
label: z
|
|
118
|
+
.string()
|
|
119
|
+
.optional()
|
|
120
|
+
.describe("Friendly display name used when listing/switching."),
|
|
121
|
+
allowInsecure: z
|
|
122
|
+
.boolean()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe("Allow plaintext HTTP to non-loopback hosts. Dev only."),
|
|
125
|
+
activate: z
|
|
126
|
+
.boolean()
|
|
127
|
+
.optional()
|
|
128
|
+
.describe("Switch to this project after adding. Default true."),
|
|
129
|
+
}),
|
|
130
|
+
handler: async (args) => {
|
|
131
|
+
const baseUrl = (args.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, "");
|
|
132
|
+
const result = await verifyKey({
|
|
133
|
+
baseUrl,
|
|
134
|
+
projectId: args.projectId,
|
|
135
|
+
apiKey: args.apiKey,
|
|
136
|
+
});
|
|
137
|
+
if (!result.ok) {
|
|
138
|
+
throw new AigentycError("UNAUTHORIZED", `${result.error ?? "Key verification failed."} Refusing to save.`);
|
|
139
|
+
}
|
|
140
|
+
const profile = {
|
|
141
|
+
baseUrl,
|
|
142
|
+
projectId: args.projectId,
|
|
143
|
+
apiKey: args.apiKey,
|
|
144
|
+
label: args.label,
|
|
145
|
+
allowInsecure: args.allowInsecure,
|
|
146
|
+
};
|
|
147
|
+
const activate = args.activate !== false;
|
|
148
|
+
const existing = await loadConfig();
|
|
149
|
+
const next = upsertProfile(existing, args.name, profile, activate);
|
|
150
|
+
await saveConfig(next);
|
|
151
|
+
if (activate)
|
|
152
|
+
client.useProfile(profile);
|
|
153
|
+
return {
|
|
154
|
+
added: args.name,
|
|
155
|
+
label: profile.label,
|
|
156
|
+
projectId: profile.projectId,
|
|
157
|
+
activeProfile: next.activeProfile,
|
|
158
|
+
activated: activate,
|
|
159
|
+
};
|
|
160
|
+
},
|
|
161
|
+
}),
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrapers.d.ts","sourceRoot":"","sources":["../../src/tools/scrapers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAoEtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CAiLhE"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { pid, projectIdArg } from "./helpers.js";
|
|
3
|
+
import { defineTool } from "./types.js";
|
|
4
|
+
// Scrapers store a ScrapeConfig (the "recipe", normally built by the
|
|
5
|
+
// aigentyc-scraper browser extension) plus execution metadata: where results
|
|
6
|
+
// land (destinations), how to dedup (upsertKey), and when to run (cron /
|
|
7
|
+
// webhook / manual). Creating one provisions a backing cron-service job, so
|
|
8
|
+
// trigger + run history flow through that job.
|
|
9
|
+
const scrapeConfig = z
|
|
10
|
+
.object({
|
|
11
|
+
url: z.string().url().describe("The list/grid page URL to scrape."),
|
|
12
|
+
container: z
|
|
13
|
+
.object({
|
|
14
|
+
selector: z
|
|
15
|
+
.string()
|
|
16
|
+
.min(1)
|
|
17
|
+
.describe("CSS selector matching EVERY repeating item on the page."),
|
|
18
|
+
})
|
|
19
|
+
.passthrough()
|
|
20
|
+
.describe("How to find the repeating items. Use scrapers_infer_selectors to build this."),
|
|
21
|
+
})
|
|
22
|
+
.passthrough()
|
|
23
|
+
.describe("The scrape recipe. Beyond url + container.selector it carries per-field selectors and options (extra keys preserved verbatim).");
|
|
24
|
+
const destinations = z
|
|
25
|
+
.object({
|
|
26
|
+
dataStoreId: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Data store the scraped rows are upserted into."),
|
|
30
|
+
kb: z
|
|
31
|
+
.boolean()
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("When true, scraped content is also pushed into the knowledge base."),
|
|
34
|
+
})
|
|
35
|
+
.describe("Where scraped results land. Empty = saved config only.");
|
|
36
|
+
// Fields shared by create + update. Required-ness differs, so create overrides
|
|
37
|
+
// `config` to be mandatory below.
|
|
38
|
+
const sharedFields = {
|
|
39
|
+
name: z.string().optional().describe("Display name. Defaults to the start URL."),
|
|
40
|
+
config: scrapeConfig.optional(),
|
|
41
|
+
upsertKey: z
|
|
42
|
+
.string()
|
|
43
|
+
.nullable()
|
|
44
|
+
.optional()
|
|
45
|
+
.describe("Field key used to dedup rows across runs. null = append-only."),
|
|
46
|
+
destinations: destinations.optional(),
|
|
47
|
+
cronExpression: z
|
|
48
|
+
.string()
|
|
49
|
+
.nullable()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("5-field cron for scheduled runs. null/omit = no schedule (manual/webhook only)."),
|
|
52
|
+
timezone: z.string().optional().describe("IANA timezone for the cron. Default UTC."),
|
|
53
|
+
webhookEnabled: z
|
|
54
|
+
.boolean()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("Mint a per-scraper webhook token so runs can be triggered by URL."),
|
|
57
|
+
customHeaders: z
|
|
58
|
+
.record(z.string())
|
|
59
|
+
.nullable()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("Headers sent on each fetch (e.g. auth). Stored encrypted; never echoed back."),
|
|
62
|
+
enabled: z.boolean().optional().describe("Whether scheduled runs fire. Default true."),
|
|
63
|
+
};
|
|
64
|
+
export function scrapersTools(client) {
|
|
65
|
+
return [
|
|
66
|
+
defineTool({
|
|
67
|
+
name: "scrapers_list",
|
|
68
|
+
title: "List scrapers",
|
|
69
|
+
description: "List every scraper in the project with its name, start URL, schedule, destinations, and enabled state. Secrets (customHeaders) are never returned.",
|
|
70
|
+
inputSchema: z.object({ projectId: projectIdArg }),
|
|
71
|
+
handler: async (args) => {
|
|
72
|
+
const projectId = pid(client, args.projectId);
|
|
73
|
+
return client.get(`/api/dashboard/${projectId}/scrapers`);
|
|
74
|
+
},
|
|
75
|
+
}),
|
|
76
|
+
defineTool({
|
|
77
|
+
name: "scrapers_get",
|
|
78
|
+
title: "Get a scraper",
|
|
79
|
+
description: "Fetch one scraper including its full `config` recipe (so it can be edited or re-run). customHeaders are never returned.",
|
|
80
|
+
inputSchema: z.object({
|
|
81
|
+
projectId: projectIdArg,
|
|
82
|
+
scraperId: z.string().min(1),
|
|
83
|
+
}),
|
|
84
|
+
handler: async (args) => {
|
|
85
|
+
const projectId = pid(client, args.projectId);
|
|
86
|
+
return client.get(`/api/dashboard/${projectId}/scrapers/${encodeURIComponent(args.scraperId)}`);
|
|
87
|
+
},
|
|
88
|
+
}),
|
|
89
|
+
defineTool({
|
|
90
|
+
name: "scrapers_create",
|
|
91
|
+
title: "Create a scraper",
|
|
92
|
+
description: [
|
|
93
|
+
"Create a scraper. `config.url` and `config.container.selector` are required — build the recipe with scrapers_infer_selectors (or the browser extension) first.",
|
|
94
|
+
"",
|
|
95
|
+
"Automation: set `cronExpression` for scheduled runs and/or `webhookEnabled` for URL-triggered runs. With neither, it's a saved config you fire manually via scrapers_trigger.",
|
|
96
|
+
"Set `destinations.dataStoreId` and/or `destinations.kb` to route results.",
|
|
97
|
+
].join("\n"),
|
|
98
|
+
inputSchema: z.object({
|
|
99
|
+
projectId: projectIdArg,
|
|
100
|
+
...sharedFields,
|
|
101
|
+
config: scrapeConfig,
|
|
102
|
+
}),
|
|
103
|
+
handler: async (args) => {
|
|
104
|
+
const { projectId: rawPid, ...body } = args;
|
|
105
|
+
const projectId = pid(client, rawPid);
|
|
106
|
+
return client.post(`/api/dashboard/${projectId}/scrapers`, body);
|
|
107
|
+
},
|
|
108
|
+
}),
|
|
109
|
+
defineTool({
|
|
110
|
+
name: "scrapers_update",
|
|
111
|
+
title: "Update a scraper",
|
|
112
|
+
description: "Update any subset of a scraper's fields. Changing cronExpression/enabled keeps the backing schedule job in sync. Omitted fields keep their stored values; enabling webhookEnabled mints a token if none exists.",
|
|
113
|
+
inputSchema: z.object({
|
|
114
|
+
projectId: projectIdArg,
|
|
115
|
+
scraperId: z.string().min(1),
|
|
116
|
+
...sharedFields,
|
|
117
|
+
}),
|
|
118
|
+
handler: async (args) => {
|
|
119
|
+
const { projectId: rawPid, scraperId, ...body } = args;
|
|
120
|
+
const projectId = pid(client, rawPid);
|
|
121
|
+
return client.put(`/api/dashboard/${projectId}/scrapers/${encodeURIComponent(scraperId)}`, body);
|
|
122
|
+
},
|
|
123
|
+
}),
|
|
124
|
+
defineTool({
|
|
125
|
+
name: "scrapers_delete",
|
|
126
|
+
title: "Delete a scraper",
|
|
127
|
+
description: "Delete a scraper and its backing schedule job. Destructive — re-invoke with confirm=true.",
|
|
128
|
+
inputSchema: z.object({
|
|
129
|
+
projectId: projectIdArg,
|
|
130
|
+
scraperId: z.string().min(1),
|
|
131
|
+
confirm: z.boolean().default(false),
|
|
132
|
+
}),
|
|
133
|
+
handler: async (args) => {
|
|
134
|
+
if (!args.confirm) {
|
|
135
|
+
return {
|
|
136
|
+
deleted: false,
|
|
137
|
+
reason: "Destructive. Re-invoke with confirm=true.",
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const projectId = pid(client, args.projectId);
|
|
141
|
+
return client.delete(`/api/dashboard/${projectId}/scrapers/${encodeURIComponent(args.scraperId)}`);
|
|
142
|
+
},
|
|
143
|
+
}),
|
|
144
|
+
defineTool({
|
|
145
|
+
name: "scrapers_trigger",
|
|
146
|
+
title: "Run a scraper now",
|
|
147
|
+
description: "Enqueue an immediate (manual) run of the scraper's backing job and return its queueId. Fails if the scraper is disabled or has no execution job configured.",
|
|
148
|
+
inputSchema: z.object({
|
|
149
|
+
projectId: projectIdArg,
|
|
150
|
+
scraperId: z.string().min(1),
|
|
151
|
+
}),
|
|
152
|
+
handler: async (args) => {
|
|
153
|
+
const projectId = pid(client, args.projectId);
|
|
154
|
+
return client.post(`/api/dashboard/${projectId}/scrapers/${encodeURIComponent(args.scraperId)}/trigger`);
|
|
155
|
+
},
|
|
156
|
+
}),
|
|
157
|
+
defineTool({
|
|
158
|
+
name: "scrapers_runs_list",
|
|
159
|
+
title: "List scraper run history",
|
|
160
|
+
description: "Return recent execution attempts (status, durations, errors) plus permanently-failed dead-letter entries for the scraper's job. Empty when the scraper has never run.",
|
|
161
|
+
inputSchema: z.object({
|
|
162
|
+
projectId: projectIdArg,
|
|
163
|
+
scraperId: z.string().min(1),
|
|
164
|
+
}),
|
|
165
|
+
handler: async (args) => {
|
|
166
|
+
const projectId = pid(client, args.projectId);
|
|
167
|
+
return client.get(`/api/dashboard/${projectId}/scrapers/${encodeURIComponent(args.scraperId)}/runs`);
|
|
168
|
+
},
|
|
169
|
+
}),
|
|
170
|
+
defineTool({
|
|
171
|
+
name: "scrapers_run_retry",
|
|
172
|
+
title: "Retry a failed scraper run",
|
|
173
|
+
description: "Re-queue a dead-letter (permanently failed) run by its queueId. Get queueIds from scrapers_runs_list's `deadLetter` array.",
|
|
174
|
+
inputSchema: z.object({
|
|
175
|
+
projectId: projectIdArg,
|
|
176
|
+
scraperId: z.string().min(1),
|
|
177
|
+
queueId: z.string().min(1).describe("Dead-letter entry id to retry."),
|
|
178
|
+
}),
|
|
179
|
+
handler: async (args) => {
|
|
180
|
+
const projectId = pid(client, args.projectId);
|
|
181
|
+
return client.post(`/api/dashboard/${projectId}/scrapers/${encodeURIComponent(args.scraperId)}/runs`, { queueId: args.queueId });
|
|
182
|
+
},
|
|
183
|
+
}),
|
|
184
|
+
defineTool({
|
|
185
|
+
name: "scrapers_infer_selectors",
|
|
186
|
+
title: "Infer scraper selectors from HTML",
|
|
187
|
+
description: [
|
|
188
|
+
"Given an HTML fragment of a repeating list, infer the container selector and per-field relative selectors (key, label, type, selector) to build a scrape `config`.",
|
|
189
|
+
"Synchronous/interactive. Requires the project to have an OpenAI API key configured.",
|
|
190
|
+
].join("\n"),
|
|
191
|
+
inputSchema: z.object({
|
|
192
|
+
projectId: projectIdArg,
|
|
193
|
+
html: z
|
|
194
|
+
.string()
|
|
195
|
+
.min(1)
|
|
196
|
+
.describe("HTML fragment of the list/grid (truncated to ~15k chars server-side)."),
|
|
197
|
+
sample: z
|
|
198
|
+
.object({
|
|
199
|
+
selector: z.string().optional(),
|
|
200
|
+
tagName: z.string().optional(),
|
|
201
|
+
text: z.string().optional(),
|
|
202
|
+
})
|
|
203
|
+
.optional()
|
|
204
|
+
.describe("The example element the user clicked inside one item."),
|
|
205
|
+
mode: z
|
|
206
|
+
.enum(["container", "fields"])
|
|
207
|
+
.optional()
|
|
208
|
+
.describe("Restrict inference to just the container or just the fields."),
|
|
209
|
+
}),
|
|
210
|
+
handler: async (args) => {
|
|
211
|
+
const { projectId: rawPid, ...body } = args;
|
|
212
|
+
const projectId = pid(client, rawPid);
|
|
213
|
+
return client.post(`/api/dashboard/${projectId}/scraper/infer-selectors`, body);
|
|
214
|
+
},
|
|
215
|
+
}),
|
|
216
|
+
];
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=scrapers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrapers.js","sourceRoot":"","sources":["../../src/tools/scrapers.ts"],"names":[],"mappings":"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"}
|
package/dist/verify.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify a project-scoped API key against a backend, shared by the `login`
|
|
3
|
+
* CLI command and the `projects_add` MCP tool so both apply the same checks.
|
|
4
|
+
*
|
|
5
|
+
* In production the auth-service is fronted at the same origin, so
|
|
6
|
+
* POST /api/auth/api-keys/verify works. In local dev that endpoint 404s, so
|
|
7
|
+
* we fall back to pinging the dashboard documents route — the canonical
|
|
8
|
+
* authenticated surface — and infer acceptance from the status code.
|
|
9
|
+
*/
|
|
10
|
+
export interface VerifyResult {
|
|
11
|
+
ok: boolean;
|
|
12
|
+
/** projectId the key is scoped to, when the verify endpoint reported one. */
|
|
13
|
+
scopedProjectId?: string;
|
|
14
|
+
/** Human-readable reason when ok is false. */
|
|
15
|
+
error?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function verifyKey(args: {
|
|
18
|
+
baseUrl: string;
|
|
19
|
+
projectId: string;
|
|
20
|
+
apiKey: string;
|
|
21
|
+
}): Promise<VerifyResult>;
|
|
22
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,YAAY,CAAC,CA+DxB"}
|
package/dist/verify.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export async function verifyKey(args) {
|
|
2
|
+
const baseUrl = args.baseUrl.replace(/\/$/, "");
|
|
3
|
+
const verifyUrl = `${baseUrl}/api/auth/api-keys/verify`;
|
|
4
|
+
const pingUrl = `${baseUrl}/api/dashboard/${encodeURIComponent(args.projectId)}/documents?pageSize=1`;
|
|
5
|
+
// 1. auth-service verify endpoint (production path).
|
|
6
|
+
try {
|
|
7
|
+
const res = await fetch(verifyUrl, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: { "Content-Type": "application/json" },
|
|
10
|
+
body: JSON.stringify({ key: args.apiKey }),
|
|
11
|
+
});
|
|
12
|
+
if (res.status !== 404) {
|
|
13
|
+
const body = (await res.json().catch(() => ({})));
|
|
14
|
+
if (!res.ok || !body.valid) {
|
|
15
|
+
return { ok: false, error: body.error || `HTTP ${res.status}` };
|
|
16
|
+
}
|
|
17
|
+
if (body.projectId && body.projectId !== args.projectId) {
|
|
18
|
+
return {
|
|
19
|
+
ok: false,
|
|
20
|
+
scopedProjectId: body.projectId,
|
|
21
|
+
error: `API key is scoped to project ${body.projectId}, not ${args.projectId}.`,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return { ok: true, scopedProjectId: body.projectId };
|
|
25
|
+
}
|
|
26
|
+
// 404 → auth endpoint not at this origin (dev). Fall through to ping.
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
return {
|
|
30
|
+
ok: false,
|
|
31
|
+
error: `Could not reach ${verifyUrl}: ${err.message}`,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// 2. Dashboard ping fallback (dev path).
|
|
35
|
+
try {
|
|
36
|
+
const res = await fetch(pingUrl, {
|
|
37
|
+
method: "GET",
|
|
38
|
+
headers: { Authorization: `Bearer ${args.apiKey}` },
|
|
39
|
+
});
|
|
40
|
+
if (res.status === 401) {
|
|
41
|
+
return { ok: false, error: "Key rejected by dashboard (401)." };
|
|
42
|
+
}
|
|
43
|
+
if (res.status === 403) {
|
|
44
|
+
return {
|
|
45
|
+
ok: false,
|
|
46
|
+
error: "Key accepted but not authorized for this project (403).",
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// 200 or 404 (project not found) → key was accepted by the auth layer.
|
|
50
|
+
return { ok: true };
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
return {
|
|
54
|
+
ok: false,
|
|
55
|
+
error: `Could not reach ${pingUrl}: ${err.message}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAI/B;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,GAAG,OAAO,2BAA2B,CAAC;IACxD,MAAM,OAAO,GAAG,GAAG,OAAO,kBAAkB,kBAAkB,CAC5D,IAAI,CAAC,SAAS,CACf,uBAAuB,CAAC;IAEzB,qDAAqD;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAI/C,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YAClE,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,eAAe,EAAE,IAAI,CAAC,SAAS;oBAC/B,KAAK,EAAE,gCAAgC,IAAI,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,GAAG;iBAChF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACvD,CAAC;QACD,sEAAsE;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,mBAAmB,SAAS,KAAM,GAAa,CAAC,OAAO,EAAE;SACjE,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YAC/B,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE;SACpD,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;QAClE,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,yDAAyD;aACjE,CAAC;QACJ,CAAC;QACD,uEAAuE;QACvE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,mBAAmB,OAAO,KAAM,GAAa,CAAC,OAAO,EAAE;SAC/D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/llms.txt
CHANGED
|
@@ -182,4 +182,4 @@ config_update({ patch: { systemPrompt: "You are the support agent for ACME..." }
|
|
|
182
182
|
|
|
183
183
|
## Versioning
|
|
184
184
|
|
|
185
|
-
Server (`@aigentyc/mcp` on npm) and platform (`app.aigentyc.
|
|
185
|
+
Server (`@aigentyc/mcp` on npm) and platform (`app.aigentyc.ai`) version independently. The platform maintains backward compatibility with older MCP releases — endpoints aren't broken without deprecation.
|